From 26605220f77615cb53295c5dd9a62664f12f5e68 Mon Sep 17 00:00:00 2001 From: xenohedron Date: Sat, 4 Nov 2023 17:07:22 -0400 Subject: [PATCH] cleanup custom source untapped conditions --- .../src/mage/cards/g/GenesisChamber.java | 23 +------- .../src/mage/cards/n/NimAbomination.java | 30 ++--------- Mage.Sets/src/mage/cards/u/UWing.java | 27 ++-------- .../SourceTappedBeforeUntapStepCondition.java | 52 ------------------- .../common/SourceTappedCondition.java | 6 ++- 5 files changed, 16 insertions(+), 122 deletions(-) delete mode 100644 Mage/src/main/java/mage/abilities/condition/common/SourceTappedBeforeUntapStepCondition.java diff --git a/Mage.Sets/src/mage/cards/g/GenesisChamber.java b/Mage.Sets/src/mage/cards/g/GenesisChamber.java index ee632e42c8b..d1f5b457ff9 100644 --- a/Mage.Sets/src/mage/cards/g/GenesisChamber.java +++ b/Mage.Sets/src/mage/cards/g/GenesisChamber.java @@ -3,7 +3,7 @@ package mage.cards.g; import mage.abilities.Ability; import mage.abilities.TriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; -import mage.abilities.condition.Condition; +import mage.abilities.condition.common.SourceTappedCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -30,7 +30,7 @@ public final class GenesisChamber extends CardImpl { // Whenever a nontoken creature enters the battlefield, if Genesis Chamber is untapped, that creature's controller creates a 1/1 colorless Myr artifact creature token. TriggeredAbility ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GenesisChamberEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, - SourceUntappedCondition.instance, + SourceTappedCondition.UNTAPPED, "Whenever a nontoken creature enters the battlefield, " + "if {this} is untapped, " + "that creature's controller creates a 1/1 colorless Myr artifact creature token")); @@ -46,25 +46,6 @@ public final class GenesisChamber extends CardImpl { } } -enum SourceUntappedCondition implements Condition { - - instance; - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); - if (permanent != null) { - return !permanent.isTapped(); - } - return false; - } - - @Override - public String toString() { - return "if {this} is untapped"; - } -} - class GenesisChamberEffect extends OneShotEffect { public GenesisChamberEffect() { diff --git a/Mage.Sets/src/mage/cards/n/NimAbomination.java b/Mage.Sets/src/mage/cards/n/NimAbomination.java index 2b1fa56df56..90361da4dfb 100644 --- a/Mage.Sets/src/mage/cards/n/NimAbomination.java +++ b/Mage.Sets/src/mage/cards/n/NimAbomination.java @@ -1,11 +1,8 @@ - package mage.cards.n; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; -import mage.abilities.condition.Condition; +import mage.abilities.condition.common.SourceTappedCondition; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -13,8 +10,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; -import mage.game.Game; -import mage.game.permanent.Permanent; + +import java.util.UUID; /** * @@ -31,7 +28,7 @@ public final class NimAbomination extends CardImpl { // At the beginning of your end step, if Nim Abomination is untapped, you lose 3 life. this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeSourceControllerEffect(3), - TargetController.YOU, SourceUntappedCondition.instance, false)); + TargetController.YOU, SourceTappedCondition.UNTAPPED, false)); } private NimAbomination(final NimAbomination card) { @@ -43,22 +40,3 @@ public final class NimAbomination extends CardImpl { return new NimAbomination(this); } } - -enum SourceUntappedCondition implements Condition { - - instance; - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getBattlefield().getPermanent(source.getSourceId()); - if (permanent != null) { - return !permanent.isTapped(); - } - return false; - } - - @Override - public String toString() { - return "if {this} is untapped"; - } -} diff --git a/Mage.Sets/src/mage/cards/u/UWing.java b/Mage.Sets/src/mage/cards/u/UWing.java index ceb7c92a7ca..fca29bd22e7 100644 --- a/Mage.Sets/src/mage/cards/u/UWing.java +++ b/Mage.Sets/src/mage/cards/u/UWing.java @@ -1,22 +1,19 @@ package mage.cards.u; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.condition.Condition; import mage.abilities.condition.common.SourceTappedCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.SpaceflightAbility; -import mage.constants.Duration; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; -import mage.game.Game; -import mage.game.permanent.Permanent; + +import java.util.UUID; /** * @@ -44,7 +41,7 @@ public final class UWing extends CardImpl { // As long as U-Wing is untapped, it gets +0/+1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(0, 1, Duration.WhileOnBattlefield), - SourceUntappedCondition.instance, + SourceTappedCondition.UNTAPPED, "As long as {this} is untapped, it gets +0/+1"))); } @@ -57,17 +54,3 @@ public final class UWing extends CardImpl { return new UWing(this); } } - -enum SourceUntappedCondition implements Condition { - - instance; - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getBattlefield().getPermanent(source.getSourceId()); - if (permanent != null) { - return !permanent.isTapped(); - } - return false; - } -} diff --git a/Mage/src/main/java/mage/abilities/condition/common/SourceTappedBeforeUntapStepCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SourceTappedBeforeUntapStepCondition.java deleted file mode 100644 index 098b5a7e20a..00000000000 --- a/Mage/src/main/java/mage/abilities/condition/common/SourceTappedBeforeUntapStepCondition.java +++ /dev/null @@ -1,52 +0,0 @@ - - -package mage.abilities.condition.common; - -import mage.abilities.Ability; -import mage.abilities.condition.Condition; -import mage.constants.PhaseStep; -import mage.constants.TurnPhase; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.game.turn.Step; - -import java.util.UUID; - -/** - * - * @author spjspj - */ - -public class SourceTappedBeforeUntapStepCondition implements Condition { - - UUID permanentId = null; - boolean permanentWasTappedBeforeUntapStep = false; - int lastTurnNum = -1; - - - - public void setPermanentId(UUID permanentId) { - this.permanentId = permanentId; - } - - @Override - public boolean apply(Game game, Ability source) { - TurnPhase turnPhase = game.getTurn().getPhase().getType(); - Step step = game.getPhase().getStep(); - Permanent permanent = game.getBattlefield().getPermanent(permanentId); - - if (permanent != null) { - if (lastTurnNum != game.getTurnNum() && turnPhase == TurnPhase.BEGINNING) { - lastTurnNum = game.getTurnNum(); - permanentWasTappedBeforeUntapStep = permanent.isTapped(); - } - - if (step.getType() == PhaseStep.UNTAP) { - return permanentWasTappedBeforeUntapStep; - } else { - return permanent.isTapped(); - } - } - return false; - } -} diff --git a/Mage/src/main/java/mage/abilities/condition/common/SourceTappedCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SourceTappedCondition.java index 6f63e20f2b8..85bed5e44c3 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/SourceTappedCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/SourceTappedCondition.java @@ -9,7 +9,6 @@ import mage.game.permanent.Permanent; * @author LevelX2 */ - public enum SourceTappedCondition implements Condition { TAPPED(true), UNTAPPED(false); @@ -24,4 +23,9 @@ public enum SourceTappedCondition implements Condition { Permanent permanent = game.getBattlefield().getPermanent(source.getSourceId()); return permanent != null && permanent.isTapped() == tapped; } + + @Override + public String toString() { + return "{this} is " + (tapped ? "tapped" : "untapped"); + } }