mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 21:12:04 -08:00
subtypes part 2
This commit is contained in:
parent
c44c301f5b
commit
19db21c672
651 changed files with 1538 additions and 1255 deletions
|
|
@ -83,7 +83,7 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl {
|
|||
private String subTypeNames(Set<SubType> subTypes) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (SubType subType: subTypes) {
|
||||
sb.append(subType).append(" or ");
|
||||
sb.append(subType.getDescription()).append(" or ");
|
||||
}
|
||||
return sb.substring(0, sb.length() - 4);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,92 +6,133 @@ import java.util.Set;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
public enum SubType {
|
||||
ARCANE("Arcane", SubTypeSet.SpellType),
|
||||
TRAP("Trap", SubTypeSet.SpellType),
|
||||
ARCANE("Arcane", SubTypeSet.SpellType, false),
|
||||
TRAP("Trap", SubTypeSet.SpellType, false),
|
||||
|
||||
FOREST("Forest", SubTypeSet.BasicLandType),
|
||||
ISLAND("Island", SubTypeSet.BasicLandType),
|
||||
MOUNTAIN("Mountain", SubTypeSet.BasicLandType),
|
||||
PLAINS("Plains", SubTypeSet.BasicLandType),
|
||||
SWAMP("Swamp", SubTypeSet.BasicLandType),
|
||||
DESERT("Desert", SubTypeSet.NonBasicLandType),
|
||||
GATE("Gate", SubTypeSet.NonBasicLandType),
|
||||
LOCUS("Locus", SubTypeSet.NonBasicLandType),
|
||||
URZAS("Urza's", SubTypeSet.NonBasicLandType),
|
||||
MINE("Mine", SubTypeSet.NonBasicLandType),
|
||||
POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType),
|
||||
TOWER("Tower", SubTypeSet.NonBasicLandType),
|
||||
FOREST("Forest", SubTypeSet.BasicLandType, false),
|
||||
ISLAND("Island", SubTypeSet.BasicLandType, false),
|
||||
MOUNTAIN("Mountain", SubTypeSet.BasicLandType, false),
|
||||
PLAINS("Plains", SubTypeSet.BasicLandType, false),
|
||||
SWAMP("Swamp", SubTypeSet.BasicLandType, false),
|
||||
DESERT("Desert", SubTypeSet.NonBasicLandType, false),
|
||||
GATE("Gate", SubTypeSet.NonBasicLandType, false),
|
||||
LAIR("Lair", SubTypeSet.NonBasicLandType, false),
|
||||
LOCUS("Locus", SubTypeSet.NonBasicLandType, false),
|
||||
URZAS("Urza's", SubTypeSet.NonBasicLandType, false),
|
||||
MINE("Mine", SubTypeSet.NonBasicLandType, false),
|
||||
POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType, false),
|
||||
TOWER("Tower", SubTypeSet.NonBasicLandType, false),
|
||||
|
||||
AURA("Aura", SubTypeSet.EchanemtType),
|
||||
CARTOUCHE("Cartouche", SubTypeSet.EchanemtType),
|
||||
SHRINE("Shrine", SubTypeSet.EchanemtType),
|
||||
AURA("Aura", SubTypeSet.EnchantmentType, false),
|
||||
CARTOUCHE("Cartouche", SubTypeSet.EnchantmentType, false),
|
||||
CURSE("Curse", SubTypeSet.EnchantmentType, false),
|
||||
SHRINE("Shrine", SubTypeSet.EnchantmentType, false),
|
||||
|
||||
EQUIPMENT("Equipment", SubTypeSet.ArtifactType),
|
||||
FORTIFICATION("Fortification", SubTypeSet.ArtifactType),
|
||||
VEHICLE("Vehicle", SubTypeSet.ArtifactType),
|
||||
CLUE("Clue", SubTypeSet.ArtifactType, false),
|
||||
EQUIPMENT("Equipment", SubTypeSet.ArtifactType, false),
|
||||
FORTIFICATION("Fortification", SubTypeSet.ArtifactType, false),
|
||||
VEHICLE("Vehicle", SubTypeSet.ArtifactType, false),
|
||||
|
||||
ALLY("Ally", SubTypeSet.CreatureType),
|
||||
ARTIFICER("Artificer", SubTypeSet.CreatureType),
|
||||
ASSASSIN("Assassin", SubTypeSet.CreatureType),
|
||||
BARBARION("Barbarian", SubTypeSet.CreatureType),
|
||||
BEAST("Beast", SubTypeSet.CreatureType),
|
||||
BERSERKER("Berserker", SubTypeSet.CreatureType),
|
||||
BIRD("Bird", SubTypeSet.CreatureType),
|
||||
CAT("Cat", SubTypeSet.CreatureType),
|
||||
CEPHALID("Cephalid", SubTypeSet.CreatureType),
|
||||
CLERIC("Cleric", SubTypeSet.CreatureType),
|
||||
DEMON("Demon", SubTypeSet.CreatureType),
|
||||
DRAGON("Dragon", SubTypeSet.CreatureType),
|
||||
DROID("Droid", SubTypeSet.CreatureType),
|
||||
DWARF("Dwarf", SubTypeSet.CreatureType),
|
||||
ELDRAZI("Eldrazi", SubTypeSet.CreatureType),
|
||||
ELEMENTAL("Elemental", SubTypeSet.CreatureType),
|
||||
ELF("Elf", SubTypeSet.CreatureType),
|
||||
FAERIE("Faerie", SubTypeSet.CreatureType),
|
||||
FOX("Fox", SubTypeSet.CreatureType),
|
||||
FUNGUS("Fungus", SubTypeSet.CreatureType),
|
||||
GIANT("Giant", SubTypeSet.CreatureType),
|
||||
GOAT("Goat", SubTypeSet.CreatureType),
|
||||
GOBLIN("Goblin", SubTypeSet.CreatureType),
|
||||
GORGON("Gorgon", SubTypeSet.CreatureType),
|
||||
HUMAN("Human", SubTypeSet.CreatureType),
|
||||
KITHKIN("Kithkin", SubTypeSet.CreatureType),
|
||||
KNIGHT("Knight", SubTypeSet.CreatureType),
|
||||
KOBOLD("Kobold", SubTypeSet.CreatureType),
|
||||
GOLEM("Golem", SubTypeSet.CreatureType),
|
||||
KAVU("Kavu", SubTypeSet.CreatureType),
|
||||
MERCENARY("Mercenary", SubTypeSet.CreatureType),
|
||||
MERFOLK("Merfolk", SubTypeSet.CreatureType),
|
||||
MINION("Minion", SubTypeSet.CreatureType),
|
||||
MYR("Myr", SubTypeSet.CreatureType),
|
||||
NINJA("Ninja",SubTypeSet.CreatureType),
|
||||
OGRE("Ogre", SubTypeSet.CreatureType),
|
||||
ORC("Orc", SubTypeSet.CreatureType),
|
||||
PENTAVITE("Pentavite", SubTypeSet.CreatureType),
|
||||
PRISM("Prism", SubTypeSet.CreatureType),
|
||||
RAT("Rat", SubTypeSet.CreatureType),
|
||||
REBEL("Rebel", SubTypeSet.CreatureType),
|
||||
SAPROLING("Saproling", SubTypeSet.CreatureType),
|
||||
SCION("Scion", SubTypeSet.CreatureType),
|
||||
SERVO("Servo", SubTypeSet.CreatureType),
|
||||
SHAMAN("Shaman", SubTypeSet.CreatureType),
|
||||
SKELETON("Skeleton", SubTypeSet.CreatureType),
|
||||
SLIVER("Sliver", SubTypeSet.CreatureType),
|
||||
SNAKE("Snake", SubTypeSet.CreatureType),
|
||||
SOLDIER("Soldier", SubTypeSet.CreatureType),
|
||||
SPIRIT("Spirit", SubTypeSet.CreatureType),
|
||||
SQUIRREL("Squirrel", SubTypeSet.CreatureType),
|
||||
THOPTER("Thopter", SubTypeSet.CreatureType),
|
||||
THRULL("Thrull", SubTypeSet.CreatureType),
|
||||
TREEFOLK("Treefolk", SubTypeSet.CreatureType),
|
||||
TROOPER("Trooper", SubTypeSet.CreatureType),
|
||||
VAMPIRE("Vampire", SubTypeSet.CreatureType),
|
||||
WALL("Wall", SubTypeSet.CreatureType),
|
||||
WARRIOR("Warrior", SubTypeSet.CreatureType),
|
||||
WEREWOLF("Werewolf", SubTypeSet.CreatureType),
|
||||
WIZARD("Wizard", SubTypeSet.CreatureType),
|
||||
WOLF("Wolf", SubTypeSet.CreatureType),
|
||||
ZOMBIE("Zombie", SubTypeSet.CreatureType);
|
||||
ALLY("Ally", SubTypeSet.CreatureType, false),
|
||||
ANGEL("Angel", SubTypeSet.CreatureType, false),
|
||||
ARTIFICER("Artificer", SubTypeSet.CreatureType, false),
|
||||
ASSEMBLY_WORKER("Assembly-Worker", SubTypeSet.CreatureType, false),
|
||||
ASSASSIN("Assassin", SubTypeSet.CreatureType, false),
|
||||
ATOG("Atog", SubTypeSet.CreatureType, false),
|
||||
AUROCHS("Aurochs", SubTypeSet.CreatureType, false),
|
||||
BARBARIAN("Barbarian", SubTypeSet.CreatureType, false),
|
||||
BAT("Bat", SubTypeSet.CreatureType, false),
|
||||
BEAST("Beast", SubTypeSet.CreatureType, false),
|
||||
BERSERKER("Berserker", SubTypeSet.CreatureType, false),
|
||||
BIRD("Bird", SubTypeSet.CreatureType, false),
|
||||
BLINKMOTH("Blinkmoth", SubTypeSet.CreatureType, false),
|
||||
CARIBOU("Caribou", SubTypeSet.CreatureType, false),
|
||||
CAT("Cat", SubTypeSet.CreatureType, false),
|
||||
CEPHALID("Cephalid", SubTypeSet.CreatureType, false),
|
||||
CENTAUR("Centaur" ,SubTypeSet.CreatureType, false),
|
||||
CLERIC("Cleric", SubTypeSet.CreatureType, false),
|
||||
DEMON("Demon", SubTypeSet.CreatureType, false),
|
||||
DRAGON("Dragon", SubTypeSet.CreatureType, false),
|
||||
DRUID("Druid", SubTypeSet.CreatureType, false),
|
||||
DROID("Droid", SubTypeSet.CreatureType, true),
|
||||
DWARF("Dwarf", SubTypeSet.CreatureType, false),
|
||||
ELDRAZI("Eldrazi", SubTypeSet.CreatureType, false),
|
||||
ELEMENTAL("Elemental", SubTypeSet.CreatureType, false),
|
||||
ELEPHANT("Elephant", SubTypeSet.CreatureType, false),
|
||||
ELF("Elf", SubTypeSet.CreatureType, false),
|
||||
FAERIE("Faerie", SubTypeSet.CreatureType, false),
|
||||
FLAGBEARER("Flagbearer", SubTypeSet.CreatureType, false),
|
||||
FOX("Fox", SubTypeSet.CreatureType, false),
|
||||
FUNGUS("Fungus", SubTypeSet.CreatureType, false),
|
||||
GIANT("Giant", SubTypeSet.CreatureType, false),
|
||||
GOAT("Goat", SubTypeSet.CreatureType, false),
|
||||
GOBLIN("Goblin", SubTypeSet.CreatureType, false),
|
||||
GORGON("Gorgon", SubTypeSet.CreatureType, false),
|
||||
GRIFFIN("Griffin", SubTypeSet.CreatureType, false),
|
||||
HOMUNCULUS("Homunculus", SubTypeSet.CreatureType, false),
|
||||
HORROR("Horror", SubTypeSet.CreatureType, false),
|
||||
HUMAN("Human", SubTypeSet.CreatureType, false),
|
||||
HUNTER("Hunter", SubTypeSet.CreatureType, false),
|
||||
INSECT("Insect", SubTypeSet.CreatureType, false),
|
||||
JEDI("Jedi", SubTypeSet.CreatureType, true),
|
||||
KITHKIN("Kithkin", SubTypeSet.CreatureType, false),
|
||||
KNIGHT("Knight", SubTypeSet.CreatureType, false),
|
||||
KOBOLD("Kobold", SubTypeSet.CreatureType, false),
|
||||
KOR("Kor", SubTypeSet.CreatureType, false),
|
||||
GOLEM("Golem", SubTypeSet.CreatureType, false),
|
||||
KAVU("Kavu", SubTypeSet.CreatureType, false),
|
||||
MERCENARY("Mercenary", SubTypeSet.CreatureType, false),
|
||||
MERFOLK("Merfolk", SubTypeSet.CreatureType, false),
|
||||
MINION("Minion", SubTypeSet.CreatureType, false),
|
||||
MINOTAUR("Minotaur", SubTypeSet.CreatureType, false),
|
||||
MOONFOLK("Moonfolk", SubTypeSet.CreatureType, false),
|
||||
MYR("Myr", SubTypeSet.CreatureType, false),
|
||||
NINJA("Ninja", SubTypeSet.CreatureType, false),
|
||||
OGRE("Ogre", SubTypeSet.CreatureType, false),
|
||||
ORC("Orc", SubTypeSet.CreatureType, false),
|
||||
PENTAVITE("Pentavite", SubTypeSet.CreatureType, false),
|
||||
PLANT("Plant", SubTypeSet.CreatureType, false),
|
||||
PRISM("Prism", SubTypeSet.CreatureType, false),
|
||||
RAT("Rat", SubTypeSet.CreatureType, false),
|
||||
REBEL("Rebel", SubTypeSet.CreatureType, false),
|
||||
ROGUE("Rogue", SubTypeSet.CreatureType, false),
|
||||
SAPROLING("Saproling", SubTypeSet.CreatureType, false),
|
||||
SAMURAI("Samurai", SubTypeSet.CreatureType, false),
|
||||
SCARECROW("Scarecrow", SubTypeSet.CreatureType, false),
|
||||
SCION("Scion", SubTypeSet.CreatureType, false),
|
||||
SERF("Serf", SubTypeSet.CreatureType, false),
|
||||
SERVO("Servo", SubTypeSet.CreatureType, false),
|
||||
SHAMAN("Shaman", SubTypeSet.CreatureType, false),
|
||||
SKELETON("Skeleton", SubTypeSet.CreatureType, false),
|
||||
SLIVER("Sliver", SubTypeSet.CreatureType, false),
|
||||
SNAKE("Snake", SubTypeSet.CreatureType, false),
|
||||
SOLDIER("Soldier", SubTypeSet.CreatureType, false),
|
||||
SPIDER("Spider", SubTypeSet.CreatureType, false),
|
||||
SPIRIT("Spirit", SubTypeSet.CreatureType, false),
|
||||
SQUIRREL("Squirrel", SubTypeSet.CreatureType, false),
|
||||
STARSHIP("Starship", SubTypeSet.CreatureType, true),
|
||||
THOPTER("Thopter", SubTypeSet.CreatureType, false),
|
||||
THRULL("Thrull", SubTypeSet.CreatureType, false),
|
||||
TREEFOLK("Treefolk", SubTypeSet.CreatureType, false),
|
||||
TROOPER("Trooper", SubTypeSet.CreatureType, true),
|
||||
VAMPIRE("Vampire", SubTypeSet.CreatureType, false),
|
||||
WALL("Wall", SubTypeSet.CreatureType, false),
|
||||
WARRIOR("Warrior", SubTypeSet.CreatureType, false),
|
||||
WEREWOLF("Werewolf", SubTypeSet.CreatureType, false),
|
||||
WIZARD("Wizard", SubTypeSet.CreatureType, false),
|
||||
WOLF("Wolf", SubTypeSet.CreatureType, false),
|
||||
ZOMBIE("Zombie", SubTypeSet.CreatureType, false),
|
||||
|
||||
AJANI("Ajani", SubTypeSet.PlaneswalkerType, false),
|
||||
CHANDRA("Chandra", SubTypeSet.PlaneswalkerType, false),
|
||||
GIDEON("Gideon", SubTypeSet.PlaneswalkerType, false),
|
||||
JACE("Jace", SubTypeSet.PlaneswalkerType, false),
|
||||
KARN("Karn", SubTypeSet.PlaneswalkerType, false),
|
||||
LILIANA("Liliana", SubTypeSet.PlaneswalkerType, false),
|
||||
NISSA("Nissa", SubTypeSet.PlaneswalkerType, false),
|
||||
TAMIYO("Tamiyo", SubTypeSet.PlaneswalkerType, false),
|
||||
TEZZERET("Tezzeret", SubTypeSet.PlaneswalkerType, false),
|
||||
UGIN("Ugin", SubTypeSet.PlaneswalkerType, false);
|
||||
|
||||
private final SubTypeSet subTypeSet;
|
||||
|
||||
|
|
@ -101,27 +142,34 @@ public enum SubType {
|
|||
|
||||
private final String description;
|
||||
|
||||
SubType(String description, SubTypeSet subTypeSet) {
|
||||
private final boolean customSet;
|
||||
|
||||
SubType(String description, SubTypeSet subTypeSet, boolean customSet) {
|
||||
this.description = description;
|
||||
this.subTypeSet = subTypeSet;
|
||||
this.customSet = customSet;
|
||||
}
|
||||
|
||||
public static SubType byDescription(String subtype) {
|
||||
public static SubType byDescription(String subType) {
|
||||
for (SubType s : values()) {
|
||||
if (s.getDescription().equals(subtype)) {
|
||||
if (s.getDescription().equals(subType)) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("no subtype for " + subtype + " exists");
|
||||
throw new IllegalArgumentException("no subtype for " + subType + " exists");
|
||||
}
|
||||
|
||||
public SubTypeSet getSubTypeSet() {
|
||||
return subTypeSet;
|
||||
}
|
||||
|
||||
public static Set<String> getCreatureTypes() {
|
||||
public static Set<String> getCreatureTypes(boolean customSet) {
|
||||
|
||||
return Arrays.stream(values()).filter(p -> p.getSubTypeSet() == SubTypeSet.CreatureType).map(SubType::getDescription).collect(Collectors.toSet());
|
||||
return Arrays.stream(values()).filter(s -> s.customSet == customSet).filter(p -> p.getSubTypeSet() == SubTypeSet.CreatureType).map(SubType::getDescription).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public static Set<String> getBasicLands(boolean customSet) {
|
||||
return Arrays.stream(values()).filter(s->s.customSet == customSet).filter(p->p.getSubTypeSet() == SubTypeSet.BasicLandType).map(SubType::getDescription).collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ public enum SubTypeSet {
|
|||
SpellType,
|
||||
BasicLandType,
|
||||
NonBasicLandType,
|
||||
EchanemtType,
|
||||
ArtifactType
|
||||
EnchantmentType,
|
||||
ArtifactType,
|
||||
PlaneswalkerType
|
||||
}
|
||||
|
|
@ -44,6 +44,10 @@ public class SubtypePredicate implements Predicate<MageObject> {
|
|||
this.subtype = subtype;
|
||||
}
|
||||
|
||||
public SubtypePredicate(String subtype){
|
||||
this.subtype = SubType.byDescription(subtype);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(MageObject input, Game game) {
|
||||
return input.hasSubtype(subtype.getDescription(), game);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue