Convert SpellAbility keywords to costs tag system

This commit is contained in:
Steven Knipe 2023-11-16 14:39:13 -08:00
parent f3d5faf199
commit ad873863fa
6 changed files with 9 additions and 62 deletions

View file

@ -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<Integer> blitzActivations = (List<Integer>) 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);
}
}

View file

@ -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<Integer> 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);
}
}

View file

@ -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<Integer> 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);
}
}

View file

@ -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<Integer> blitzActivations;
if (obj != null) {
blitzActivations = (List<Integer>) 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;
}
}

View file

@ -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<Integer> spectacleActivations = (List<Integer>) 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;

View file

@ -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<Integer> 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;