From 9f9cb3327fa63d0ef4fec18da5f3aedd06423dca Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 22 Mar 2021 08:53:40 -0400 Subject: [PATCH] [IKO] fixed Kaheera, the Orphanguard not correctly counting changelings --- Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java | 6 ++---- Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java | 2 +- Mage.Sets/src/mage/cards/m/MistformUltimus.java | 6 ++---- Mage/src/main/java/mage/MageObjectImpl.java | 4 ++++ .../mage/abilities/keyword/ChangelingAbility.java | 11 +++++++++-- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java b/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java index 91aeeab5fc..ad413e81a6 100644 --- a/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java +++ b/Mage.Sets/src/mage/cards/d/DrJuliusJumblemorph.java @@ -2,15 +2,13 @@ package mage.cards.d; import mage.MageInt; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; -import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.InfoEffect; -import mage.abilities.effects.common.continuous.IsAllCreatureTypesSourceEffect; +import mage.abilities.keyword.ChangelingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ComparisonType; import mage.constants.SuperType; -import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -34,7 +32,7 @@ public final class DrJuliusJumblemorph extends CardImpl { this.toughness = new MageInt(4); // Dr. Julius Jumblemorph is every creature type (even if this card isn't on the battlefield). - this.addAbility(new SimpleStaticAbility(Zone.ALL, new IsAllCreatureTypesSourceEffect())); + this.addAbility(new ChangelingAbility(false)); // Whenever a host enters the battlefield under your control, you may search your library and/or graveyard for a card with augment and combine it with that host. If you search your library this way, shuffle it. // TODO: Host currently isn't implemented, so this ability currently would never trigger diff --git a/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java b/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java index 08e50fa704..5220c04e96 100644 --- a/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java +++ b/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java @@ -93,7 +93,7 @@ enum KaheeraTheOrphanguardCompanionCondition implements CompanionCondition { ); private static boolean checkTypes(Card card) { - return subtypes.stream().anyMatch(subtype -> card.getSubtype().contains(subtype)); + return subtypes.stream().anyMatch(subtype -> card.hasSubtype(subtype, null)); } @Override diff --git a/Mage.Sets/src/mage/cards/m/MistformUltimus.java b/Mage.Sets/src/mage/cards/m/MistformUltimus.java index 11090369dd..d4e8c44122 100644 --- a/Mage.Sets/src/mage/cards/m/MistformUltimus.java +++ b/Mage.Sets/src/mage/cards/m/MistformUltimus.java @@ -1,14 +1,12 @@ package mage.cards.m; import mage.MageInt; -import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.common.continuous.IsAllCreatureTypesSourceEffect; +import mage.abilities.keyword.ChangelingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.constants.Zone; import java.util.UUID; @@ -26,7 +24,7 @@ public final class MistformUltimus extends CardImpl { this.toughness = new MageInt(3); // Mistform Ultimus is every creature type. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new IsAllCreatureTypesSourceEffect())); + this.addAbility(new ChangelingAbility(false)); } private MistformUltimus(final MistformUltimus card) { diff --git a/Mage/src/main/java/mage/MageObjectImpl.java b/Mage/src/main/java/mage/MageObjectImpl.java index 0e77ca1074..4673d1f160 100644 --- a/Mage/src/main/java/mage/MageObjectImpl.java +++ b/Mage/src/main/java/mage/MageObjectImpl.java @@ -9,6 +9,7 @@ import mage.abilities.costs.mana.ManaCosts; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.Effect; +import mage.abilities.keyword.ChangelingAbility; import mage.abilities.mana.ActivatedManaAbilityImpl; import mage.abilities.text.TextPart; import mage.abilities.text.TextPartSubType; @@ -291,6 +292,9 @@ public abstract class MageObjectImpl implements MageObject { @Override public boolean isAllCreatureTypes(Game game) { + if (game == null) { + return this.getAbilities().containsClass(ChangelingAbility.class); + } return this.getSubtype(game).isAllCreatureTypes(); } diff --git a/Mage/src/main/java/mage/abilities/keyword/ChangelingAbility.java b/Mage/src/main/java/mage/abilities/keyword/ChangelingAbility.java index 2be76663b5..e83311c586 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ChangelingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ChangelingAbility.java @@ -4,7 +4,6 @@ import mage.abilities.StaticAbility; import mage.abilities.effects.common.continuous.IsAllCreatureTypesSourceEffect; import mage.constants.Zone; - /** * October 1, 2012 * 702.71. Changeling @@ -16,17 +15,25 @@ import mage.constants.Zone; */ public class ChangelingAbility extends StaticAbility { + private final boolean changelingText; + public ChangelingAbility() { + this(true); + } + + public ChangelingAbility(boolean changelingText) { super(Zone.ALL, new IsAllCreatureTypesSourceEffect()); + this.changelingText = changelingText; } private ChangelingAbility(final ChangelingAbility ability) { super(ability); + this.changelingText = ability.changelingText; } @Override public String getRule() { - return "Changeling (This card is every creature type.)"; + return changelingText ? "Changeling (This card is every creature type.)" : super.getRule(); } @Override