From ad873863faeedeb378c223c3a171592bb2c10181 Mon Sep 17 00:00:00 2001 From: Steven Knipe Date: Thu, 16 Nov 2023 14:39:13 -0800 Subject: [PATCH] Convert SpellAbility keywords to costs tag system --- .../condition/common/BlitzedCondition.java | 6 ++---- .../condition/common/SpectacleCondition.java | 16 ++-------------- .../condition/common/SurgedCondition.java | 16 ++-------------- .../mage/abilities/keyword/BlitzAbility.java | 13 +------------ .../mage/abilities/keyword/SpectacleAbility.java | 10 +--------- .../mage/abilities/keyword/SurgeAbility.java | 10 +--------- 6 files changed, 9 insertions(+), 62 deletions(-) diff --git a/Mage/src/main/java/mage/abilities/condition/common/BlitzedCondition.java b/Mage/src/main/java/mage/abilities/condition/common/BlitzedCondition.java index 220410a074d..af06ff401ec 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/BlitzedCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/BlitzedCondition.java @@ -4,8 +4,7 @@ import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.abilities.keyword.BlitzAbility; import mage.game.Game; - -import java.util.List; +import mage.util.CardUtil; /** * @author TheElk801 @@ -15,7 +14,6 @@ public enum BlitzedCondition implements Condition { @Override public boolean apply(Game game, Ability source) { - List blitzActivations = (List) game.getState().getValue(BlitzAbility.BLITZ_ACTIVATION_VALUE_KEY + source.getSourceId()); - return blitzActivations != null && blitzActivations.contains(game.getState().getZoneChangeCounter(source.getSourceId())); + return CardUtil.checkSourceCostsTagExists(game, source, BlitzAbility.BLITZ_ACTIVATION_VALUE_KEY); } } diff --git a/Mage/src/main/java/mage/abilities/condition/common/SpectacleCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SpectacleCondition.java index 80824119441..5a9370e416b 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/SpectacleCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/SpectacleCondition.java @@ -4,11 +4,8 @@ package mage.abilities.condition.common; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.abilities.keyword.SpectacleAbility; -import mage.constants.AbilityType; import mage.game.Game; - -import java.util.ArrayList; -import java.util.List; +import mage.util.CardUtil; /** * @author TheElk801 @@ -19,15 +16,6 @@ public enum SpectacleCondition implements Condition { @Override public boolean apply(Game game, Ability source) { - if (source.getAbilityType() == AbilityType.TRIGGERED) { - @SuppressWarnings("unchecked") - List spectacleActivations = (ArrayList) game.getState().getValue(SpectacleAbility.SPECTACLE_ACTIVATION_VALUE_KEY + source.getSourceId()); - if (spectacleActivations != null) { - return spectacleActivations.contains(game.getState().getZoneChangeCounter(source.getSourceId()) - 1); - } - return false; - } else { - return source instanceof SpectacleAbility; - } + return CardUtil.checkSourceCostsTagExists(game, source, SpectacleAbility.SPECTACLE_ACTIVATION_VALUE_KEY); } } diff --git a/Mage/src/main/java/mage/abilities/condition/common/SurgedCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SurgedCondition.java index f15a8906ca5..8b65ebdc690 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/SurgedCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/SurgedCondition.java @@ -4,11 +4,8 @@ package mage.abilities.condition.common; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.abilities.keyword.SurgeAbility; -import mage.constants.AbilityType; import mage.game.Game; - -import java.util.ArrayList; -import java.util.List; +import mage.util.CardUtil; /** * @@ -20,15 +17,6 @@ public enum SurgedCondition implements Condition { @Override public boolean apply(Game game, Ability source) { - if (source.getAbilityType() == AbilityType.TRIGGERED) { - @SuppressWarnings("unchecked") - List surgeActivations = (ArrayList) game.getState().getValue(SurgeAbility.SURGE_ACTIVATION_VALUE_KEY + source.getSourceId()); - if (surgeActivations != null) { - return surgeActivations.contains(game.getState().getZoneChangeCounter(source.getSourceId()) - 1); - } - return false; - } else { - return source instanceof SurgeAbility; - } + return CardUtil.checkSourceCostsTagExists(game, source, SurgeAbility.SURGE_ACTIVATION_VALUE_KEY); } } diff --git a/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java b/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java index b66f7d87682..409c1688d03 100644 --- a/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java @@ -19,9 +19,6 @@ import mage.constants.TimingRule; import mage.game.Game; import mage.target.targetpointer.FixedTarget; -import java.util.ArrayList; -import java.util.List; - /** * @author TheElk801 */ @@ -80,15 +77,7 @@ public class BlitzAbility extends SpellAbility { if (!super.activate(game, noMana)) { return false; } - Object obj = game.getState().getValue(BLITZ_ACTIVATION_VALUE_KEY + getSourceId()); - List blitzActivations; - if (obj != null) { - blitzActivations = (List) obj; - } else { - blitzActivations = new ArrayList<>(); - game.getState().setValue(BLITZ_ACTIVATION_VALUE_KEY + getSourceId(), blitzActivations); - } - blitzActivations.add(game.getState().getZoneChangeCounter(getSourceId())); + this.setCostsTag(BLITZ_ACTIVATION_VALUE_KEY, null); return true; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/SpectacleAbility.java b/Mage/src/main/java/mage/abilities/keyword/SpectacleAbility.java index 73348425595..0216e6acfb9 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SpectacleAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SpectacleAbility.java @@ -10,8 +10,6 @@ import mage.constants.SpellAbilityType; import mage.constants.Zone; import mage.game.Game; -import java.util.ArrayList; -import java.util.List; import java.util.UUID; /** @@ -55,15 +53,9 @@ public class SpectacleAbility extends SpellAbility { } @Override - @SuppressWarnings("unchecked") public boolean activate(Game game, boolean noMana) { if (super.activate(game, noMana)) { - List spectacleActivations = (List) game.getState().getValue(SPECTACLE_ACTIVATION_VALUE_KEY + getSourceId()); - if (spectacleActivations == null) { - spectacleActivations = new ArrayList<>(); // zoneChangeCounter - game.getState().setValue(SPECTACLE_ACTIVATION_VALUE_KEY + getSourceId(), spectacleActivations); - } - spectacleActivations.add(game.getState().getZoneChangeCounter(getSourceId())); + this.setCostsTag(SPECTACLE_ACTIVATION_VALUE_KEY,null); return true; } return false; diff --git a/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java b/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java index cb643afa040..3a677762d67 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SurgeAbility.java @@ -10,8 +10,6 @@ import mage.game.Game; import mage.players.Player; import mage.watchers.common.CastSpellLastTurnWatcher; -import java.util.ArrayList; -import java.util.List; import java.util.UUID; /** @@ -65,15 +63,9 @@ public class SurgeAbility extends SpellAbility { } @Override - @SuppressWarnings("unchecked") public boolean activate(Game game, boolean noMana) { if (super.activate(game, noMana)) { - List surgeActivations = (ArrayList) game.getState().getValue(SURGE_ACTIVATION_VALUE_KEY + getSourceId()); - if (surgeActivations == null) { - surgeActivations = new ArrayList<>(); // zoneChangeCounter - game.getState().setValue(SURGE_ACTIVATION_VALUE_KEY + getSourceId(), surgeActivations); - } - surgeActivations.add(game.getState().getZoneChangeCounter(getSourceId())); + this.setCostsTag(SURGE_ACTIVATION_VALUE_KEY, null); return true; } return false;