From 265cf408f9cee292c706a4124fc5d4cd80f39d3d Mon Sep 17 00:00:00 2001 From: igoudt Date: Sat, 13 May 2017 23:34:28 +0200 Subject: [PATCH] change getSubtype(game).contains(..) to hasSubtype(..) to include check on Changelings --- Mage.Sets/src/mage/cards/a/AetherCharge.java | 2 +- Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java | 4 ++-- Mage.Sets/src/mage/cards/c/CaptivatingVampire.java | 2 +- Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java | 2 +- Mage.Sets/src/mage/cards/d/DeathcultRogue.java | 2 +- Mage.Sets/src/mage/cards/d/DismissIntoDream.java | 2 +- Mage.Sets/src/mage/cards/d/DralnusCrusade.java | 2 +- Mage.Sets/src/mage/cards/e/EssenceFlux.java | 2 +- Mage.Sets/src/mage/cards/g/GisaAndGeralf.java | 2 +- Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java | 2 +- Mage.Sets/src/mage/cards/l/LifeAndLimb.java | 8 ++------ Mage.Sets/src/mage/cards/m/MephidrossVampire.java | 2 +- Mage.Sets/src/mage/cards/n/NecromancersStockpile.java | 2 +- Mage.Sets/src/mage/cards/n/NissaSageAnimist.java | 4 +--- Mage.Sets/src/mage/cards/p/PhantasmalImage.java | 4 ++-- Mage.Sets/src/mage/cards/s/SageOfFables.java | 2 +- Mage.Sets/src/mage/cards/s/SilverfurPartisan.java | 2 +- Mage.Sets/src/mage/cards/s/SirensCall.java | 2 +- Mage.Sets/src/mage/cards/t/TimeToReflect.java | 4 ++-- Mage.Sets/src/mage/cards/v/Venom.java | 4 ++-- Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java | 2 +- Mage.Sets/src/mage/cards/w/WarrenPilferers.java | 2 +- .../continuous/BecomesBlackZombieAdditionEffect.java | 2 +- 23 files changed, 28 insertions(+), 34 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AetherCharge.java b/Mage.Sets/src/mage/cards/a/AetherCharge.java index b859d417491..b95db50cb69 100644 --- a/Mage.Sets/src/mage/cards/a/AetherCharge.java +++ b/Mage.Sets/src/mage/cards/a/AetherCharge.java @@ -96,7 +96,7 @@ class AetherChargeTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent permanent = game.getPermanent(event.getTargetId()); - if (permanent.isCreature() && permanent.getSubtype(game).contains("Beast") + if (permanent.isCreature() && permanent.hasSubtype("Beast", game) && permanent.getControllerId().equals(this.controllerId)) { Effect effect = this.getEffects().get(0); effect.setValue("damageSource", event.getTargetId()); diff --git a/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java b/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java index 262ff5fb86f..aa154e9ea4b 100644 --- a/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java +++ b/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java @@ -113,8 +113,8 @@ class BoldwyrIntimidatorEffect extends RestrictionEffect { public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { if (attacker != null && blocker != null) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - if (sourcePermanent != null && attacker.getSubtype(game).contains("Warrior")) { - return !blocker.getSubtype(game).contains("Coward"); + if (sourcePermanent != null && attacker.hasSubtype("Warrior", game)) { + return !blocker.hasSubtype("Coward", game); } } return true; diff --git a/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java b/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java index 66aa69cfffd..cd2a49fa268 100644 --- a/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java +++ b/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java @@ -119,7 +119,7 @@ class CaptivatingVampireEffect extends ContinuousEffectImpl { break; case TypeChangingEffects_4: if (sublayer == SubLayer.NA) { - if (!permanent.getSubtype(game).contains("Vampire")) { + if (!permanent.hasSubtype("Vampire", game)) { permanent.getSubtype(game).add("Vampire"); } } diff --git a/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java b/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java index e1af3fc89e5..d56ef448322 100644 --- a/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java +++ b/Mage.Sets/src/mage/cards/c/CemeteryRecruitment.java @@ -89,7 +89,7 @@ class CemeteryRecruitmentEffect extends OneShotEffect { Card card = game.getCard(targetPointer.getFirst(game, source)); if (card != null) { if (controller.moveCards(card, Zone.HAND, source, game) - && card.getSubtype(game).contains("Zombie")) { + && card.hasSubtype("Zombie", game)) { controller.drawCards(1, game); } } diff --git a/Mage.Sets/src/mage/cards/d/DeathcultRogue.java b/Mage.Sets/src/mage/cards/d/DeathcultRogue.java index 84f42cd8ad6..46f878ad635 100644 --- a/Mage.Sets/src/mage/cards/d/DeathcultRogue.java +++ b/Mage.Sets/src/mage/cards/d/DeathcultRogue.java @@ -91,7 +91,7 @@ class DeathcultRogueRestrictionEffect extends RestrictionEffect { @Override public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker.getSubtype(game).contains("Rogue")) { + if (blocker.hasSubtype("Rogue", game)) { return true; } return false; diff --git a/Mage.Sets/src/mage/cards/d/DismissIntoDream.java b/Mage.Sets/src/mage/cards/d/DismissIntoDream.java index 1e10a1e0e28..132f5803356 100644 --- a/Mage.Sets/src/mage/cards/d/DismissIntoDream.java +++ b/Mage.Sets/src/mage/cards/d/DismissIntoDream.java @@ -101,7 +101,7 @@ class DismissIntoDreamEffect extends ContinuousEffectImpl { object.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()), source.getSourceId(), game); break; case TypeChangingEffects_4: - if (!object.getSubtype(game).contains("Illusion")) { + if (!object.hasSubtype("Illusion", game)) { object.getSubtype(game).add("Illusion"); } break; diff --git a/Mage.Sets/src/mage/cards/d/DralnusCrusade.java b/Mage.Sets/src/mage/cards/d/DralnusCrusade.java index 6b43bc1b23a..0edc15e4a7c 100755 --- a/Mage.Sets/src/mage/cards/d/DralnusCrusade.java +++ b/Mage.Sets/src/mage/cards/d/DralnusCrusade.java @@ -79,7 +79,7 @@ class DralnusCrusadeEffect extends ContinuousEffectImpl { for (Permanent permanent : game.getState().getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, source.getControllerId(), source.getSourceId(), game)) { switch (layer) { case TypeChangingEffects_4: - if (!permanent.getSubtype(game).contains("Zombie")) { + if (!permanent.hasSubtype("Zombie", game)) { permanent.getSubtype(game).add("Zombie"); } break; diff --git a/Mage.Sets/src/mage/cards/e/EssenceFlux.java b/Mage.Sets/src/mage/cards/e/EssenceFlux.java index 38dac44b053..f3c0bef5bc1 100644 --- a/Mage.Sets/src/mage/cards/e/EssenceFlux.java +++ b/Mage.Sets/src/mage/cards/e/EssenceFlux.java @@ -124,7 +124,7 @@ class EssenceFluxEffect extends OneShotEffect { controller.moveCards(cardsToBattlefield.getCards(game), Zone.BATTLEFIELD, source, game, false, false, true, null); for (UUID cardId : cardsToBattlefield) { Permanent permanent = game.getPermanent(cardId); - if (permanent != null && permanent.getSubtype(game).contains("Spirit")) { + if (permanent != null && permanent.hasSubtype("Spirit", game)) { Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); effect.setTargetPointer(new FixedTarget(permanent, game)); return effect.apply(game, source); diff --git a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java index 68fc4291ae0..8ca97c61d8d 100644 --- a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java +++ b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java @@ -168,7 +168,7 @@ class GisaAndGeralfWatcher extends Watcher { public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.GRAVEYARD) { Spell spell = (Spell) game.getObject(event.getTargetId()); - if (spell.isCreature() && spell.getSubtype(game).contains("Zombie")) { + if (spell.isCreature() && spell.hasSubtype("Zombie", game)) { abilityUsed = true; } } diff --git a/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java b/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java index c45e74a5c1f..6fe07964e2e 100644 --- a/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java +++ b/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java @@ -140,7 +140,7 @@ class DragonCreatureCardPredicate implements Predicate { @Override public boolean apply(Card input, Game game) { return input.isCreature() - && input.getSubtype(game).contains("Dragon"); + && input.hasSubtype("Dragon", game); } @Override diff --git a/Mage.Sets/src/mage/cards/l/LifeAndLimb.java b/Mage.Sets/src/mage/cards/l/LifeAndLimb.java index dc0708ef3dc..aadf632181b 100644 --- a/Mage.Sets/src/mage/cards/l/LifeAndLimb.java +++ b/Mage.Sets/src/mage/cards/l/LifeAndLimb.java @@ -99,16 +99,12 @@ class LifeAndLimbEffect extends ContinuousEffectImpl { for (Permanent permanent : game.getState().getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { switch (layer) { case TypeChangingEffects_4: - if (!permanent.isCreature()) { permanent.addCardType(CardType.CREATURE); - } - if (!permanent.getSubtype(game).contains("Saproling")) { + if (!permanent.hasSubtype("Saproling", game)) { permanent.getSubtype(game).add("Saproling"); } - if (!permanent.isLand()) { permanent.addCardType(CardType.LAND); - } - if (!permanent.getSubtype(game).contains("Forest")) { + if (!permanent.hasSubtype("Forest", game)) { permanent.getSubtype(game).add("Forest"); } break; diff --git a/Mage.Sets/src/mage/cards/m/MephidrossVampire.java b/Mage.Sets/src/mage/cards/m/MephidrossVampire.java index 6fca4df2943..6d6d108c020 100644 --- a/Mage.Sets/src/mage/cards/m/MephidrossVampire.java +++ b/Mage.Sets/src/mage/cards/m/MephidrossVampire.java @@ -117,7 +117,7 @@ class MephidrossVampireEffect extends ContinuousEffectImpl { creature.addAbility(new DealsDamageToACreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, false, false), source.getSourceId(), game); break; case TypeChangingEffects_4: - if (!creature.getSubtype(game).contains("Vampire")) { + if (!creature.hasSubtype("Vampire", game)) { creature.getSubtype(game).add("Vampire"); } break; diff --git a/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java b/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java index 38697f24844..deeacfcf47f 100644 --- a/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java +++ b/Mage.Sets/src/mage/cards/n/NecromancersStockpile.java @@ -97,7 +97,7 @@ class NecromancersStockpileDiscardTargetCost extends CostImpl { if (card == null) { return false; } - isZombieCard = card.getSubtype(game).contains("Zombie"); + isZombieCard = card.hasSubtype("Zombie", game); paid |= player.discard(card, null, game); } diff --git a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java index 8cee85476ce..6f5d6854612 100644 --- a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java +++ b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java @@ -145,10 +145,8 @@ class NissaSageAnimistMinusSevenEffect extends ContinuousEffectImpl { if (permanent != null) { switch (layer) { case TypeChangingEffects_4: - if (!permanent.isCreature()) { permanent.addCardType(CardType.CREATURE); - } - if (!permanent.getSubtype(game).contains("Elemental")) { + if (!permanent.hasSubtype("Elemental", game)) { permanent.getSubtype(game).add("Elemental"); } break; diff --git a/Mage.Sets/src/mage/cards/p/PhantasmalImage.java b/Mage.Sets/src/mage/cards/p/PhantasmalImage.java index e7e9809f7f4..74c3b8d1b14 100644 --- a/Mage.Sets/src/mage/cards/p/PhantasmalImage.java +++ b/Mage.Sets/src/mage/cards/p/PhantasmalImage.java @@ -55,7 +55,7 @@ public class PhantasmalImage extends CardImpl { ApplyToPermanent phantasmalImageApplier = new ApplyToPermanent() { @Override public boolean apply(Game game, Permanent permanent, Ability source, UUID copyToObjectId) { - if (!permanent.getSubtype(game).contains("Illusion")) { + if (!permanent.hasSubtype("Illusion", game)) { permanent.getSubtype(game).add("Illusion"); } // Add directly because the created permanent is only used to copy from, so there is no need to add the ability to e.g. TriggeredAbilities @@ -66,7 +66,7 @@ public class PhantasmalImage extends CardImpl { @Override public boolean apply(Game game, MageObject mageObject, Ability source, UUID copyToObjectId) { - if (!mageObject.getSubtype(game).contains("Illusion")) { + if (!mageObject.hasSubtype("Illusion", game)) { mageObject.getSubtype(game).add("Illusion"); } // Add directly because the created permanent is only used to copy from, so there is no need to add the ability to e.g. TriggeredAbilities diff --git a/Mage.Sets/src/mage/cards/s/SageOfFables.java b/Mage.Sets/src/mage/cards/s/SageOfFables.java index 8f8b69733f1..c01ac0f01ca 100644 --- a/Mage.Sets/src/mage/cards/s/SageOfFables.java +++ b/Mage.Sets/src/mage/cards/s/SageOfFables.java @@ -102,7 +102,7 @@ class SageOfFablesReplacementEffect extends ReplacementEffectImpl { Permanent creature = ((EntersTheBattlefieldEvent) event).getTarget(); return creature != null && creature.getControllerId().equals(source.getControllerId()) && creature.isCreature() - && creature.getSubtype(game).contains("Wizard") + && creature.hasSubtype("Wizard", game) && !event.getTargetId().equals(source.getSourceId()); } diff --git a/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java b/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java index a5e9708dd6e..2b648f426bc 100644 --- a/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java +++ b/Mage.Sets/src/mage/cards/s/SilverfurPartisan.java @@ -99,7 +99,7 @@ class CreaturesYouControlBecomesTargetTriggeredAbility extends TriggeredAbilityI @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent permanent = game.getPermanent(event.getTargetId()); - if (permanent != null && permanent.getControllerId().equals(this.controllerId) && (permanent.getSubtype(game).contains("Wolf") || permanent.getSubtype(game).contains("Werewolf"))) { + if (permanent != null && permanent.getControllerId().equals(this.controllerId) && (permanent.hasSubtype("Wolf", game) || permanent.hasSubtype("Werewolf", game))) { MageObject object = game.getObject(event.getSourceId()); if (object != null && object instanceof Spell) { Card c = (Spell) object; diff --git a/Mage.Sets/src/mage/cards/s/SirensCall.java b/Mage.Sets/src/mage/cards/s/SirensCall.java index e92fc7079f3..b37c988f973 100644 --- a/Mage.Sets/src/mage/cards/s/SirensCall.java +++ b/Mage.Sets/src/mage/cards/s/SirensCall.java @@ -141,7 +141,7 @@ class SirensCallDestroyEffect extends OneShotEffect { } // Walls are safe. - if (permanent.getSubtype(game).contains("Wall")) { + if (permanent.hasSubtype("Wall", game)) { continue; } // Creatures that attacked are safe. diff --git a/Mage.Sets/src/mage/cards/t/TimeToReflect.java b/Mage.Sets/src/mage/cards/t/TimeToReflect.java index 112b440a2d4..f63283a8409 100644 --- a/Mage.Sets/src/mage/cards/t/TimeToReflect.java +++ b/Mage.Sets/src/mage/cards/t/TimeToReflect.java @@ -118,10 +118,10 @@ class BlockedOrWasBlockedByAZombieWatcher extends Watcher { @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { - if (game.getPermanent(event.getTargetId()).getSubtype(game).contains("Zombie")) { + if (game.getPermanent(event.getTargetId()).hasSubtype("Zombie", game)) { this.blockedOrWasBlockedByAZombieWatcher.add(new MageObjectReference(event.getSourceId(), game)); } - if (game.getPermanent(event.getSourceId()).getSubtype(game).contains("Zombie")) { + if (game.getPermanent(event.getSourceId()).hasSubtype( "Zombie", game)) { this.blockedOrWasBlockedByAZombieWatcher.add(new MageObjectReference(event.getTargetId(), game)); } } diff --git a/Mage.Sets/src/mage/cards/v/Venom.java b/Mage.Sets/src/mage/cards/v/Venom.java index d9be09396dc..cedb4690878 100644 --- a/Mage.Sets/src/mage/cards/v/Venom.java +++ b/Mage.Sets/src/mage/cards/v/Venom.java @@ -112,13 +112,13 @@ class VenomTriggeredAbility extends TriggeredAbilityImpl { Permanent enchantedCreature = game.getPermanent(enchantment.getAttachedTo()); if (enchantedCreature != null) { if (blocker != null && !Objects.equals(blocker, enchantedCreature) - && !blocker.getSubtype(game).contains("Wall") + && !blocker.hasSubtype("Wall", game) && Objects.equals(blocked, enchantedCreature)) { this.getEffects().get(0).setTargetPointer(new FixedTarget(blocker.getId())); return true; } if (blocker != null && Objects.equals(blocker, enchantedCreature) - && !blocked.getSubtype(game).contains("Wall")) { + && !blocked.hasSubtype("Wall", game)) { this.getEffects().get(0).setTargetPointer(new FixedTarget(blocked.getId())); return true; } diff --git a/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java b/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java index 55abd6a36f6..5f2c8e813d2 100644 --- a/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java +++ b/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java @@ -102,7 +102,7 @@ class VizierOfManyFacesApplyToPermanent extends ApplyToPermanent { for (MageObjectReference mor : watcher.getEmbalmedThisTurnCards()) { if (mor.getSourceId().equals(originalCardId) && game.getState().getZoneChangeCounter(originalCardId) == mor.getZoneChangeCounter()) { permanent.getManaCost().clear(); - if (!permanent.getSubtype(game).contains("Zombie")) { + if (!permanent.hasSubtype("Zombie", game)) { permanent.getSubtype(game).add("Zombie"); } permanent.getColor(game).setColor(ObjectColor.WHITE); diff --git a/Mage.Sets/src/mage/cards/w/WarrenPilferers.java b/Mage.Sets/src/mage/cards/w/WarrenPilferers.java index 1dcc59545ee..f6250944edc 100644 --- a/Mage.Sets/src/mage/cards/w/WarrenPilferers.java +++ b/Mage.Sets/src/mage/cards/w/WarrenPilferers.java @@ -96,7 +96,7 @@ class WarrenPilferersReturnEffect extends OneShotEffect { Card card = game.getCard(source.getFirstTarget()); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); - if (card.getSubtype(game).contains("Goblin")) { + if (card.hasSubtype("Goblin", game)) { game.addEffect(new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.EndOfTurn), source); } return true; diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBlackZombieAdditionEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBlackZombieAdditionEffect.java index 0030052e48a..212be8591b4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBlackZombieAdditionEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBlackZombieAdditionEffect.java @@ -66,7 +66,7 @@ public class BecomesBlackZombieAdditionEffect extends ContinuousEffectImpl { switch (layer) { case TypeChangingEffects_4: if (sublayer == SubLayer.NA) { - if (!creature.getSubtype(game).contains("Zombie")) { + if (!creature.hasSubtype("Zombie", game)) { creature.getSubtype(game).add("Zombie"); } }