Simplify Transform triggers, fix Wildsong Howler

This commit is contained in:
Steven Knipe 2025-08-12 23:35:52 -07:00
parent 16c789aaf7
commit 84a7e9f5b8
3 changed files with 26 additions and 21 deletions

View file

@ -1,6 +1,5 @@
package org.mage.test.cards.abilities.keywords;
import mage.cards.s.SpringOfEternalPeace;
import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.Zone;
@ -384,7 +383,6 @@ public class TransformTest extends CardTestPlayerBase {
assertPowerToughness(playerA, "Huntmaster of the Fells", 2, 2);
assertTappedCount("Plains", true, 2);
assertTappedCount("Wastes", true, 1);
}
@Test
@ -413,8 +411,32 @@ public class TransformTest extends CardTestPlayerBase {
assertPermanentCount(playerA, "Ravager of the Fells", 0);
assertPermanentCount(playerA, "Huntmaster of the Fells", 1);
assertPowerToughness(playerA, "Huntmaster of the Fells", 2, 2);
}
@Test
public void testWildsongHowlerTrigger() {
// The only Daybound/Nightbound card with a Transforms trigger on the back side
removeAllCardsFromLibrary(playerA);
addCard(Zone.HAND, playerA, "Howlpack Piper", 2); // Creature {2}{R}{G}
addCard(Zone.LIBRARY, playerA, "Silvercoat Lion", 50);
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Howlpack Piper");
setChoice(playerA, true); //Transform trigger
addTarget(playerA, "Silvercoat Lion");
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Howlpack Piper");
setChoice(playerA, true); //ETB trigger
addTarget(playerA, "Silvercoat Lion");
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
setStrictChooseMode(true);
execute();
assertPermanentCount(playerA, "Wildsong Howler", 2);
assertPermanentCount(playerA, "Howlpack Piper", 0); // They should be both transformed
assertHandCount(playerA, "Silvercoat Lion", 3);
assertHandCount(playerA, 3); //The two Silvercoat Lions from triggers and 1 from natural card draw
}
/**

View file

@ -5,7 +5,6 @@ import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
/**
* @author TheElk801
@ -41,10 +40,6 @@ public class TransformIntoSourceTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (!event.getTargetId().equals(this.getSourceId())) {
return false;
}
Permanent permanent = getSourcePermanentIfItStillExists(game);
return permanent != null && permanent.isTransformed();
return event.getTargetId().equals(this.getSourceId());
}
}

View file

@ -5,13 +5,11 @@ import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
/**
* @author TheElk801
*/
public class TransformsOrEntersTriggeredAbility extends TriggeredAbilityImpl {
public TransformsOrEntersTriggeredAbility(Effect effect, boolean optional) {
super(Zone.BATTLEFIELD, effect, optional);
setTriggerPhrase("Whenever this creature enters or transforms into {this}, ");
@ -34,16 +32,6 @@ public class TransformsOrEntersTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (!event.getTargetId().equals(this.getSourceId())) {
return false;
}
switch (event.getType()) {
case TRANSFORMED:
Permanent permanent = getSourcePermanentIfItStillExists(game);
return permanent != null && !permanent.isTransformed();
case ENTERS_THE_BATTLEFIELD:
return true;
}
return false;
return event.getTargetId().equals(this.getSourceId());
}
}