*StaticAbility shares some functionality with Trigger and ReplacementEffect, extend their base instead of duplicating code

This commit is contained in:
Hellfish
2014-02-09 14:42:39 +00:00
parent 94783575cc
commit c4e1552b8b
24 changed files with 126 additions and 175 deletions

2
.gitattributes vendored
View File

@@ -245,6 +245,7 @@ forge-game/src/main/java/forge/ai/ability/UnattachAllAi.java -text
forge-game/src/main/java/forge/ai/ability/UntapAi.java -text
forge-game/src/main/java/forge/ai/ability/UntapAllAi.java -text
forge-game/src/main/java/forge/ai/ability/ZoneExchangeAi.java -text
forge-game/src/main/java/forge/game/CardTraitBase.java -text
forge-game/src/main/java/forge/game/Game.java -text
forge-game/src/main/java/forge/game/GameAction.java svneol=native#text/plain
forge-game/src/main/java/forge/game/GameActionUtil.java svneol=native#text/plain
@@ -265,7 +266,6 @@ forge-game/src/main/java/forge/game/Match.java -text
forge-game/src/main/java/forge/game/PlanarDice.java -text
forge-game/src/main/java/forge/game/StaticEffect.java svneol=native#text/plain
forge-game/src/main/java/forge/game/StaticEffects.java svneol=native#text/plain
forge-game/src/main/java/forge/game/TriggerReplacementBase.java -text
forge-game/src/main/java/forge/game/ability/AbilityApiBased.java -text
forge-game/src/main/java/forge/game/ability/AbilityFactory.java svneol=native#text/plain
forge-game/src/main/java/forge/game/ability/AbilityUtils.java -text

View File

@@ -19,8 +19,8 @@ package forge.ai;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import forge.game.CardTraitBase;
import forge.game.GameEntity;
import forge.game.TriggerReplacementBase;
import forge.game.card.Card;
import forge.game.card.CardLists;
import forge.game.card.CardPredicates;
@@ -235,14 +235,14 @@ public class AiBlockController {
if (mode == TriggerType.DamageDone) {
if ((!trigParams.containsKey("ValidSource")
|| TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), attacker))
|| CardTraitBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), attacker))
&& attacker.getNetCombatDamage() > 0
&& (!trigParams.containsKey("ValidTarget")
|| TriggerReplacementBase.matchesValid(combat.getDefenderByAttacker(attacker), trigParams.get("ValidTarget").split(","), attacker))) {
|| CardTraitBase.matchesValid(combat.getDefenderByAttacker(attacker), trigParams.get("ValidTarget").split(","), attacker))) {
value += 50;
}
} else if (mode == TriggerType.AttackerUnblocked) {
if (TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), attacker)) {
if (CardTraitBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), attacker)) {
value += 50;
}
}

View File

@@ -1201,7 +1201,7 @@ public class ComputerUtil {
for (final Card c : all) {
if (c.isEquipment()) {
for (StaticAbility stAb : c.getStaticAbilities()) {
HashMap<String, String> params = stAb.getMapParams();
Map<String, String> params = stAb.getMapParams();
if ("Continuous".equals(params.get("Mode")) && params.containsKey("AddKeyword")
&& params.get("AddKeyword").contains("Haste") && c.getEquippingCard() == null) {
return true;

View File

@@ -18,10 +18,10 @@
package forge.ai;
import com.google.common.base.Predicate;
import forge.game.CardTraitBase;
import forge.game.Game;
import forge.game.GameEntity;
import forge.game.GlobalRuleChange;
import forge.game.TriggerReplacementBase;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType;
@@ -628,9 +628,9 @@ public class ComputerUtilCombat {
return false; // The trigger should have triggered already
}
if (trigParams.containsKey("ValidCard")) {
if (!TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), source)
&& !(combat.isAttacking(source) && TriggerReplacementBase.matchesValid(source,
trigParams.get("ValidCard").split(","), source)
if (!CardTraitBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), source)
&& !(combat.isAttacking(source) && CardTraitBase.matchesValid(source,
trigParams.get("ValidCard").split(","), source)
&& !trigParams.containsKey("Alone"))) {
return false;
}
@@ -641,7 +641,7 @@ public class ComputerUtilCombat {
if ((defender == null) && mode == TriggerType.AttackerUnblocked) {
willTrigger = true;
if (trigParams.containsKey("ValidCard")) {
if (!TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), source)) {
if (!CardTraitBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), source)) {
return false;
}
}
@@ -663,7 +663,7 @@ public class ComputerUtilCombat {
return false;
}
}
if (!TriggerReplacementBase.matchesValid(attacker, validBlocked.split(","), source)) {
if (!CardTraitBase.matchesValid(attacker, validBlocked.split(","), source)) {
return false;
}
}
@@ -677,35 +677,35 @@ public class ComputerUtilCombat {
return false;
}
}
if (!TriggerReplacementBase.matchesValid(defender, validBlocker.split(","), source)) {
if (!CardTraitBase.matchesValid(defender, validBlocker.split(","), source)) {
return false;
}
}
} else if (mode == TriggerType.AttackerBlocked) {
willTrigger = true;
if (trigParams.containsKey("ValidBlocker")) {
if (!TriggerReplacementBase.matchesValid(defender, trigParams.get("ValidBlocker").split(","), source)) {
if (!CardTraitBase.matchesValid(defender, trigParams.get("ValidBlocker").split(","), source)) {
return false;
}
}
if (trigParams.containsKey("ValidCard")) {
if (!TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), source)) {
if (!CardTraitBase.matchesValid(attacker, trigParams.get("ValidCard").split(","), source)) {
return false;
}
}
} else if (mode == TriggerType.DamageDone) {
willTrigger = true;
if (trigParams.containsKey("ValidSource")) {
if (TriggerReplacementBase.matchesValid(defender, trigParams.get("ValidSource").split(","), source)
if (CardTraitBase.matchesValid(defender, trigParams.get("ValidSource").split(","), source)
&& defender.getNetCombatDamage() > 0
&& (!trigParams.containsKey("ValidTarget")
|| TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidTarget").split(","), source))) {
|| CardTraitBase.matchesValid(attacker, trigParams.get("ValidTarget").split(","), source))) {
return true;
}
if (TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), source)
if (CardTraitBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), source)
&& attacker.getNetCombatDamage() > 0
&& (!trigParams.containsKey("ValidTarget")
|| TriggerReplacementBase.matchesValid(defender, trigParams.get("ValidTarget").split(","), source))) {
|| CardTraitBase.matchesValid(defender, trigParams.get("ValidTarget").split(","), source))) {
return true;
}
}
@@ -759,7 +759,7 @@ public class ComputerUtilCombat {
final List<Card> cardList = game.getCardsIn(ZoneType.Battlefield);
for (final Card card : cardList) {
for (final StaticAbility stAb : card.getStaticAbilities()) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
if (!params.get("Mode").equals("Continuous")) {
continue;
}
@@ -1054,7 +1054,7 @@ public class ComputerUtilCombat {
final List<Card> cardList = game.getCardsIn(ZoneType.Battlefield);
for (final Card card : cardList) {
for (final StaticAbility stAb : card.getStaticAbilities()) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
if (!params.get("Mode").equals("Continuous")) {
continue;
}
@@ -1220,7 +1220,7 @@ public class ComputerUtilCombat {
final List<Card> cardList = game.getCardsIn(ZoneType.Battlefield);
for (final Card card : cardList) {
for (final StaticAbility stAb : card.getStaticAbilities()) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
if (!params.get("Mode").equals("Continuous")) {
continue;
}

View File

@@ -154,7 +154,7 @@ public class AttachAi extends SpellAbilityAi {
String type = "";
for (final StaticAbility stAb : attachSource.getStaticAbilities()) {
final HashMap<String, String> stab = stAb.getMapParams();
final Map<String, String> stab = stAb.getMapParams();
if (stab.get("Mode").equals("Continuous") && stab.containsKey("AddType")) {
type = stab.get("AddType");
}

View File

@@ -45,7 +45,7 @@ public class PermanentCreatureAi extends SpellAbilityAi {
for(Card c : cards) {
ArrayList<StaticAbility> statics = c.getStaticAbilities();
for(StaticAbility s : statics) {
final Map<String, String> stabMap = s.getMapParams();
final Map<String, String> stabMap = s.parseParams();
if (!stabMap.get("Mode").equals("Continuous")) {
continue;

View File

@@ -19,7 +19,7 @@ import java.util.*;
* Provides the matchesValid function to both classes.
*
*/
public abstract class TriggerReplacementBase {
public abstract class CardTraitBase {
/** The host card. */
protected Card hostCard;
@@ -75,6 +75,11 @@ public abstract class TriggerReplacementBase {
return this.mapParams;
}
public final void setMapParams(Map<String,String> params) {
this.mapParams.clear();
this.mapParams.putAll(params);
}
/**
* Checks if is intrinsic.
*

View File

@@ -153,7 +153,7 @@ public class GameAction {
for (final Trigger trigger : copied.getTriggers()) {
trigger.setHostCard(copied);
}
for (final TriggerReplacementBase repl : copied.getReplacementEffects()) {
for (final CardTraitBase repl : copied.getReplacementEffects()) {
repl.setHostCard(copied);
}
if (c.getName().equals("Skullbriar, the Walking Grave")) {

View File

@@ -24,6 +24,7 @@ import forge.game.spellability.SpellAbility;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -44,7 +45,7 @@ public class StaticEffect {
private HashMap<Card, Integer> xValueMap = new HashMap<Card, Integer>();
private String chosenType;
private HashMap<String, String> mapParams = new HashMap<String, String>();
private Map<String, String> mapParams = new HashMap<String, String>();
// for P/T
private final HashMap<Card, String> originalPT = new HashMap<Card, String>();
@@ -845,7 +846,7 @@ public class StaticEffect {
* @param params
* a HashMap
*/
public final void setParams(final HashMap<String, String> params) {
public final void setParams(final Map<String, String> params) {
this.mapParams = params;
}
@@ -854,7 +855,7 @@ public class StaticEffect {
*
* @return the params
*/
public final HashMap<String, String> getParams() {
public final Map<String, String> getParams() {
return this.mapParams;
}

View File

@@ -80,7 +80,7 @@ public class StaticEffects {
private final List<Card> removeStaticEffect(final StaticEffect se) {
final List<Card> affectedCards = se.getAffectedCards();
final ArrayList<Player> affectedPlayers = se.getAffectedPlayers();
final HashMap<String, String> params = se.getParams();
final Map<String, String> params = se.getParams();
int powerBonus = 0;
String addP = "";
@@ -223,7 +223,7 @@ public class StaticEffects {
for (final StaticAbility stA : affectedCard.getStaticAbilities()) {
stA.setTemporarilySuppressed(false);
}
for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) {
for (final CardTraitBase rE : affectedCard.getReplacementEffects()) {
rE.setTemporarilySuppressed(false);
}
}

View File

@@ -1,8 +1,8 @@
package forge.game.ability.effects;
import forge.Command;
import forge.game.CardTraitBase;
import forge.game.Game;
import forge.game.TriggerReplacementBase;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
@@ -237,7 +237,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
// give back suppressed replacement effects
for (final TriggerReplacementBase re : removedReplacements) {
for (final CardTraitBase re : removedReplacements) {
re.setTemporarilySuppressed(false);
}
}

View File

@@ -1,8 +1,8 @@
package forge.game.ability.effects;
import forge.Command;
import forge.game.CardTraitBase;
import forge.game.Game;
import forge.game.TriggerReplacementBase;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
@@ -272,7 +272,7 @@ public class AnimateEffect extends AnimateEffectBase {
}
// give back suppressed replacement effects
for (final TriggerReplacementBase re : removedReplacements) {
for (final CardTraitBase re : removedReplacements) {
re.setTemporarilySuppressed(false);
}
}

View File

@@ -20,7 +20,7 @@ public class UnattachAllEffect extends SpellAbilityEffect {
if (o instanceof Card) {
final Card c = (Card) o;
if (cardToUnattach.isAura()) {
//final boolean gainControl = "GainControl".equals(af.getMapParams().get("AILogic"));
//final boolean gainControl = "GainControl".equals(af.parseParams().get("AILogic"));
//AbilityFactoryAttach.handleUnattachAura(cardToUnattach, c, gainControl);
} else if (cardToUnattach.isEquipment()) {
if (cardToUnattach.isEquipping() && c.getEquippedBy().contains(cardToUnattach)) {

View File

@@ -17,8 +17,8 @@
*/
package forge.game.replacement;
import forge.game.CardTraitBase;
import forge.game.Game;
import forge.game.TriggerReplacementBase;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
import forge.game.card.CardFactoryUtil;
@@ -35,7 +35,7 @@ import java.util.Map;
* TODO: Write javadoc for this type.
*
*/
public abstract class ReplacementEffect extends TriggerReplacementBase {
public abstract class ReplacementEffect extends CardTraitBase {
private ReplacementLayer layer = ReplacementLayer.None;

View File

@@ -18,6 +18,7 @@
package forge.game.staticability;
import forge.card.MagicColor;
import forge.game.CardTraitBase;
import forge.game.GameEntity;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
@@ -36,44 +37,10 @@ import java.util.Map;
/**
* The Class StaticAbility.
*/
public class StaticAbility {
private Card hostCard = null;
private HashMap<String, String> params = new HashMap<String, String>();
public class StaticAbility extends CardTraitBase {
private int layer = 0;
/** The temporarily suppressed. */
private boolean temporarilySuppressed = false;
/** The suppressed. */
private final boolean suppressed = false;
private boolean temporary = false;
/**
* <p>
* getHostCard.
* </p>
*
* @return a {@link forge.game.card.Card} object.
*/
public final Card getHostCard() {
return this.hostCard;
}
/**
* <p>
* Getter for the field <code>mapParams</code>.
* </p>
*
* @return a {@link java.util.HashMap} object.
*/
public final HashMap<String, String> getMapParams() {
return this.params;
}
// *******************************************************
/**
@@ -87,7 +54,7 @@ public class StaticAbility {
* a {@link forge.game.card.Card} object.
* @return a {@link java.util.HashMap} object.
*/
public final HashMap<String, String> getMapParams(final String abString, final Card hostCard) {
public final HashMap<String, String> parseParams(final String abString, final Card hostCard) {
final HashMap<String, String> mapParameters = new HashMap<String, String>();
if (!(abString.length() > 0)) {
@@ -134,41 +101,41 @@ public class StaticAbility {
*/
public final int generateLayer() {
if (!this.params.get("Mode").equals("Continuous")) {
if (!this.mapParams.get("Mode").equals("Continuous")) {
return 0;
}
if (this.params.containsKey("GainControl")) {
if (this.mapParams.containsKey("GainControl")) {
return 2;
}
if (this.params.containsKey("AddType") || this.params.containsKey("RemoveType")
|| this.params.containsKey("RemoveCardTypes") || this.params.containsKey("RemoveSubTypes")
|| this.params.containsKey("RemoveSuperTypes") || this.params.containsKey("RemoveCreatureTypes")) {
if (this.mapParams.containsKey("AddType") || this.mapParams.containsKey("RemoveType")
|| this.mapParams.containsKey("RemoveCardTypes") || this.mapParams.containsKey("RemoveSubTypes")
|| this.mapParams.containsKey("RemoveSuperTypes") || this.mapParams.containsKey("RemoveCreatureTypes")) {
return 4;
}
if (this.params.containsKey("AddColor") || this.params.containsKey("RemoveColor")
|| this.params.containsKey("SetColor")) {
if (this.mapParams.containsKey("AddColor") || this.mapParams.containsKey("RemoveColor")
|| this.mapParams.containsKey("SetColor")) {
return 5;
}
if (this.params.containsKey("RemoveAllAbilities") || this.params.containsKey("GainsAbilitiesOf")) {
if (this.mapParams.containsKey("RemoveAllAbilities") || this.mapParams.containsKey("GainsAbilitiesOf")) {
return 6; // Layer 6
}
if (this.params.containsKey("AddKeyword") || this.params.containsKey("AddAbility")
|| this.params.containsKey("AddTrigger") || this.params.containsKey("RemoveTriggers")
|| this.params.containsKey("RemoveKeyword") || this.params.containsKey("AddReplacementEffects")) {
if (this.mapParams.containsKey("AddKeyword") || this.mapParams.containsKey("AddAbility")
|| this.mapParams.containsKey("AddTrigger") || this.mapParams.containsKey("RemoveTriggers")
|| this.mapParams.containsKey("RemoveKeyword") || this.mapParams.containsKey("AddReplacementEffects")) {
return 7; // Layer 6 (dependent)
}
if (this.params.containsKey("CharacteristicDefining")) {
if (this.mapParams.containsKey("CharacteristicDefining")) {
return 8; // Layer 7a
}
if (this.params.containsKey("AddPower") || this.params.containsKey("AddToughness")
|| this.params.containsKey("SetPower") || this.params.containsKey("SetToughness")) {
if (this.mapParams.containsKey("AddPower") || this.mapParams.containsKey("AddToughness")
|| this.mapParams.containsKey("SetPower") || this.mapParams.containsKey("SetToughness")) {
return 9; // This is the collection of 7b and 7c
}
@@ -184,8 +151,8 @@ public class StaticAbility {
*/
@Override
public final String toString() {
if (this.params.containsKey("Description") && !this.isSuppressed()) {
return this.params.get("Description").replace("CARDNAME", this.hostCard.getName());
if (this.mapParams.containsKey("Description") && !this.isSuppressed()) {
return this.mapParams.get("Description").replace("CARDNAME", this.hostCard.getName());
} else {
return "";
}
@@ -201,7 +168,7 @@ public class StaticAbility {
* the host
*/
public StaticAbility(final String params, final Card host) {
this.params = this.getMapParams(params, host);
this.mapParams.putAll(this.parseParams(params, host));
this.hostCard = host;
this.layer = this.generateLayer();
}
@@ -215,9 +182,8 @@ public class StaticAbility {
* the host
*/
public StaticAbility(final HashMap<String, String> params, final Card host) {
this.params = new HashMap<String, String>();
for (final Map.Entry<String, String> entry : params.entrySet()) {
this.params.put(entry.getKey(), entry.getValue());
this.mapParams.put(entry.getKey(), entry.getValue());
}
this.layer = this.generateLayer();
this.hostCard = host;
@@ -234,7 +200,7 @@ public class StaticAbility {
public final List<Card> applyAbility(final String mode) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return null;
}
@@ -269,7 +235,7 @@ public class StaticAbility {
final boolean isCombat, final boolean isTest) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return in;
}
@@ -299,7 +265,7 @@ public class StaticAbility {
public final boolean applyAbility(final String mode, final Card card, final Player player) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return false;
}
@@ -336,7 +302,7 @@ public class StaticAbility {
public final boolean applyAbility(final String mode, final Card card, final SpellAbility spellAbility) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return false;
}
@@ -369,7 +335,7 @@ public class StaticAbility {
public final void applyAbility(final String mode, final SpellAbility sa, final ManaCostBeingPaid originalCost) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return;
}
@@ -400,7 +366,7 @@ public class StaticAbility {
public final boolean applyAbility(final String mode, final Card card) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return false;
}
@@ -433,7 +399,7 @@ public class StaticAbility {
public final boolean applyAbility(final String mode, final Card card, final GameEntity target) {
// don't apply the ability if it hasn't got the right mode
if (!this.params.get("Mode").equals(mode)) {
if (!this.mapParams.get("Mode").equals(mode)) {
return false;
}
@@ -449,14 +415,14 @@ public class StaticAbility {
}
public final Cost getAttackCost(final Card attacker, final GameEntity target) {
if (this.isSuppressed() || !params.get("Mode").equals("CantAttackUnless") || !this.checkConditions()) {
if (this.isSuppressed() || !mapParams.get("Mode").equals("CantAttackUnless") || !this.checkConditions()) {
return null;
}
return StaticAbilityCantAttackBlock.getAttackCost(this, attacker, target);
}
public final Cost getBlockCost(final Card blocker, final Card attacker) {
if (this.isSuppressed() || !params.get("Mode").equals("CantBlockUnless") || !this.checkConditions()) {
if (this.isSuppressed() || !mapParams.get("Mode").equals("CantBlockUnless") || !this.checkConditions()) {
return null;
}
return StaticAbilityCantAttackBlock.getBlockCost(this, blocker, attacker);
@@ -474,9 +440,9 @@ public class StaticAbility {
return false;
}
if (this.params.containsKey("EffectZone")) {
if (!this.params.get("EffectZone").equals("All")
&& !ZoneType.listValueOf(this.params.get("EffectZone"))
if (this.mapParams.containsKey("EffectZone")) {
if (!this.mapParams.get("EffectZone").equals("All")
&& !ZoneType.listValueOf(this.mapParams.get("EffectZone"))
.contains(controller.getGame().getZoneOf(this.hostCard).getZoneType())) {
return false;
}
@@ -486,7 +452,7 @@ public class StaticAbility {
}
}
String condition = params.get("Condition");
String condition = mapParams.get("Condition");
if (null != condition) {
if (condition.equals("Threshold") && !controller.hasThreshold()) return false;
if (condition.equals("Hellbent") && !controller.hasHellbent()) return false;
@@ -515,33 +481,33 @@ public class StaticAbility {
}
}
if (this.params.containsKey("OpponentAttackedWithCreatureThisTurn")
if (this.mapParams.containsKey("OpponentAttackedWithCreatureThisTurn")
&& !controller.getOpponent().getAttackedWithCreatureThisTurn()) {
return false;
}
if (this.params.containsKey("Phases")) {
List<PhaseType> phases = PhaseType.parseRange(this.params.get("Phases"));
if (this.mapParams.containsKey("Phases")) {
List<PhaseType> phases = PhaseType.parseRange(this.mapParams.get("Phases"));
if (!phases.contains(controller.getGame().getPhaseHandler().getPhase())) {
return false;
}
}
if (this.params.containsKey("TopCardOfLibraryIs")) {
if (this.mapParams.containsKey("TopCardOfLibraryIs")) {
if (controller.getCardsIn(ZoneType.Library).isEmpty()) {
return false;
}
final Card topCard = controller.getCardsIn(ZoneType.Library).get(0);
if (!topCard.isValid(this.params.get("TopCardOfLibraryIs").split(","), controller, this.hostCard)) {
if (!topCard.isValid(this.mapParams.get("TopCardOfLibraryIs").split(","), controller, this.hostCard)) {
return false;
}
}
if (this.params.containsKey("CheckSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.params.get("CheckSVar"), null);
if (this.mapParams.containsKey("CheckSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.mapParams.get("CheckSVar"), null);
String comparator = "GE1";
if (this.params.containsKey("SVarCompare")) {
comparator = this.params.get("SVarCompare");
if (this.mapParams.containsKey("SVarCompare")) {
comparator = this.mapParams.get("SVarCompare");
}
final String svarOperator = comparator.substring(0, 2);
final String svarOperand = comparator.substring(2);
@@ -553,11 +519,11 @@ public class StaticAbility {
return true;
}
if (this.params.containsKey("CheckSecondSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.params.get("CheckSecondSVar"), null);
if (this.mapParams.containsKey("CheckSecondSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.mapParams.get("CheckSecondSVar"), null);
String comparator = "GE1";
if (this.params.containsKey("SecondSVarCompare")) {
comparator = this.params.get("SecondSVarCompare");
if (this.mapParams.containsKey("SecondSVarCompare")) {
comparator = this.mapParams.get("SecondSVarCompare");
}
final String svarOperator = comparator.substring(0, 2);
final String svarOperand = comparator.substring(2);
@@ -569,11 +535,11 @@ public class StaticAbility {
return true;
}
if (this.params.containsKey("CheckThirdSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.params.get("CheckThirdSVar"), null);
if (this.mapParams.containsKey("CheckThirdSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.mapParams.get("CheckThirdSVar"), null);
String comparator = "GE1";
if (this.params.containsKey("ThirdSVarCompare")) {
comparator = this.params.get("ThirdSVarCompare");
if (this.mapParams.containsKey("ThirdSVarCompare")) {
comparator = this.mapParams.get("ThirdSVarCompare");
}
final String svarOperator = comparator.substring(0, 2);
final String svarOperand = comparator.substring(2);
@@ -585,11 +551,11 @@ public class StaticAbility {
return true;
}
if (this.params.containsKey("CheckFourthSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.params.get("CheckFourthSVar"), null);
if (this.mapParams.containsKey("CheckFourthSVar")) {
final int sVar = AbilityUtils.calculateAmount(this.hostCard, this.mapParams.get("CheckFourthSVar"), null);
String comparator = "GE1";
if (this.params.containsKey("FourthSVarCompare")) {
comparator = this.params.get("FourthSVarCompare");
if (this.mapParams.containsKey("FourthSVarCompare")) {
comparator = this.mapParams.get("FourthSVarCompare");
}
final String svarOperator = comparator.substring(0, 2);
final String svarOperand = comparator.substring(2);
@@ -602,24 +568,6 @@ public class StaticAbility {
return true;
}
/**
* Sets the temporarily suppressed.
*
* @param supp
* the new temporarily suppressed
*/
public final void setTemporarilySuppressed(final boolean supp) {
this.temporarilySuppressed = supp;
}
/**
* Checks if is suppressed.
*
* @return true, if is suppressed
*/
public final boolean isSuppressed() {
return (this.suppressed || this.temporarilySuppressed);
}
/**
* @return the layer
@@ -635,11 +583,4 @@ public class StaticAbility {
this.layer = layer;
}
public void setTemporarily(boolean b) {
this.temporary = b;
}
public boolean isTemporary() {
return this.temporary;
}
} // end class StaticEffectFactory

View File

@@ -23,6 +23,7 @@ import forge.game.card.CardFactoryUtil;
import forge.game.cost.Cost;
import java.util.HashMap;
import java.util.Map;
/**
* The Class StaticAbility_CantBeCast.
@@ -39,7 +40,7 @@ public class StaticAbilityCantAttackBlock {
* @return a Cost
*/
public static boolean applyCantAttackAbility(final StaticAbility stAb, final Card card, final GameEntity target) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("ValidCard")
@@ -65,7 +66,7 @@ public class StaticAbilityCantAttackBlock {
* @return a Cost
*/
public static Cost getAttackCost(final StaticAbility stAb, final Card card, final GameEntity target) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("ValidCard")
@@ -101,7 +102,7 @@ public class StaticAbilityCantAttackBlock {
* @return a Cost
*/
public static Cost getBlockCost(final StaticAbility stAb, final Card blocker, final GameEntity attacker) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("ValidCard")

View File

@@ -24,6 +24,7 @@ import forge.game.zone.ZoneType;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* The Class StaticAbility_CantBeCast.
@@ -42,7 +43,7 @@ public class StaticAbilityCantBeCast {
* @return true, if successful
*/
public static boolean applyCantBeCastAbility(final StaticAbility stAb, final Card card, final Player activator) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("ValidCard")
@@ -82,7 +83,7 @@ public class StaticAbilityCantBeCast {
*/
public static boolean applyCantBeActivatedAbility(final StaticAbility staticAbility, final Card card,
final SpellAbility spellAbility) {
final HashMap<String, String> params = staticAbility.getMapParams();
final Map<String, String> params = staticAbility.getMapParams();
final Card hostCard = staticAbility.getHostCard();
final Player activator = spellAbility.getActivatingPlayer();
@@ -119,7 +120,7 @@ public class StaticAbilityCantBeCast {
* @return true, if successful
*/
public static boolean applyCantPlayLandAbility(final StaticAbility stAb, final Card card, final Player player) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("ValidCard")

View File

@@ -23,6 +23,7 @@ import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
import java.util.HashMap;
import java.util.Map;
/**
* The Class StaticAbilityCantTarget.
@@ -42,7 +43,7 @@ public class StaticAbilityCantTarget {
*/
public static boolean applyCantTargetAbility(final StaticAbility staticAbility, final Card card,
final SpellAbility spellAbility) {
final HashMap<String, String> params = staticAbility.getMapParams();
final Map<String, String> params = staticAbility.getMapParams();
final Card hostCard = staticAbility.getHostCard();
final Card source = spellAbility.getSourceCard();
final Player activator = spellAbility.getActivatingPlayer();

View File

@@ -41,10 +41,7 @@ import forge.game.zone.ZoneType;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.*;
/**
* The Class StaticAbility_Continuous.
@@ -61,7 +58,7 @@ public class StaticAbilityContinuous {
*
*/
public static List<Card> applyContinuousAbility(final StaticAbility stAb) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
final StaticEffect se = new StaticEffect(hostCard);
@@ -515,7 +512,7 @@ public class StaticAbilityContinuous {
final String costcmc = Integer.toString(affectedCard.getCMC());
s = s.replace("ConvertedManaCost", costcmc);
}
affectedCard.addStaticAbility(s).setTemporarily(true);
affectedCard.addStaticAbility(s).setTemporary(true);
}
}
@@ -534,7 +531,7 @@ public class StaticAbilityContinuous {
for (final StaticAbility stA : affectedCard.getStaticAbilities()) {
stA.setTemporarilySuppressed(true);
}
for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) {
for (final CardTraitBase rE : affectedCard.getReplacementEffects()) {
rE.setTemporarilySuppressed(true);
}
}
@@ -544,7 +541,7 @@ public class StaticAbilityContinuous {
}
private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
final Player controller = hostCard.getController();
@@ -566,7 +563,7 @@ public class StaticAbilityContinuous {
}
private static List<Card> getAffectedCards(final StaticAbility stAb) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
final Game game = hostCard.getGame();
final Player controller = hostCard.getController();

View File

@@ -30,6 +30,7 @@ import forge.game.zone.ZoneType;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* The Class StaticAbility_CantBeCast.
@@ -47,7 +48,7 @@ public class StaticAbilityCostChange {
* a ManaCost
*/
public static void applyRaiseCostAbility(final StaticAbility staticAbility, final SpellAbility sa, final ManaCostBeingPaid manaCost) {
final HashMap<String, String> params = staticAbility.getMapParams();
final Map<String, String> params = staticAbility.getMapParams();
final Card hostCard = staticAbility.getHostCard();
final Player activator = sa.getActivatingPlayer();
final Card card = sa.getSourceCard();
@@ -198,7 +199,7 @@ public class StaticAbilityCostChange {
if (manaCost.toString().equals("{0}")) {
return;
}
final HashMap<String, String> params = staticAbility.getMapParams();
final Map<String, String> params = staticAbility.getMapParams();
final Card hostCard = staticAbility.getHostCard();
final Player activator = sa.getActivatingPlayer();
final Card card = sa.getSourceCard();

View File

@@ -20,6 +20,7 @@ package forge.game.staticability;
import forge.game.card.Card;
import java.util.HashMap;
import java.util.Map;
/**
* The Class StaticAbility_CantBeCast.
@@ -36,7 +37,7 @@ public class StaticAbilityETBTapped {
* @return true, if successful
*/
public static boolean applyETBTappedAbility(final StaticAbility stAb, final Card card) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("ValidCard")

View File

@@ -22,6 +22,7 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import java.util.HashMap;
import java.util.Map;
/**
* The Class StaticAbility_CantBeCast.
@@ -40,7 +41,7 @@ public class StaticAbilityMayLookAt {
* @return true, if successful
*/
public static boolean applyMayLookAtAbility(final StaticAbility stAb, final Card card, final Player player) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
if (params.containsKey("Affected")

View File

@@ -22,6 +22,7 @@ import forge.game.card.Card;
import forge.game.card.CardFactoryUtil;
import java.util.HashMap;
import java.util.Map;
/**
* The Class StaticAbility_PreventDamage.
@@ -45,7 +46,7 @@ public class StaticAbilityPreventDamage {
*/
public static int applyPreventDamageAbility(final StaticAbility stAb, final Card source, final GameEntity target,
final int damage, final boolean isCombat, final boolean isTest) {
final HashMap<String, String> params = stAb.getMapParams();
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
int restDamage = damage;

View File

@@ -17,8 +17,8 @@
*/
package forge.game.trigger;
import forge.game.CardTraitBase;
import forge.game.Game;
import forge.game.TriggerReplacementBase;
import forge.game.card.Card;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
@@ -41,7 +41,7 @@ import java.util.Map;
* @author Forge
* @version $Id$
*/
public abstract class Trigger extends TriggerReplacementBase {
public abstract class Trigger extends CardTraitBase {
/** Constant <code>nextID=0</code>. */
private static int nextID = 0;