*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/UntapAi.java -text
forge-game/src/main/java/forge/ai/ability/UntapAllAi.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/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/Game.java -text
forge-game/src/main/java/forge/game/GameAction.java svneol=native#text/plain 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 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/PlanarDice.java -text
forge-game/src/main/java/forge/game/StaticEffect.java svneol=native#text/plain 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/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/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/AbilityFactory.java svneol=native#text/plain
forge-game/src/main/java/forge/game/ability/AbilityUtils.java -text 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.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import forge.game.CardTraitBase;
import forge.game.GameEntity; import forge.game.GameEntity;
import forge.game.TriggerReplacementBase;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardLists; import forge.game.card.CardLists;
import forge.game.card.CardPredicates; import forge.game.card.CardPredicates;
@@ -235,14 +235,14 @@ public class AiBlockController {
if (mode == TriggerType.DamageDone) { if (mode == TriggerType.DamageDone) {
if ((!trigParams.containsKey("ValidSource") if ((!trigParams.containsKey("ValidSource")
|| TriggerReplacementBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), attacker)) || CardTraitBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), attacker))
&& attacker.getNetCombatDamage() > 0 && attacker.getNetCombatDamage() > 0
&& (!trigParams.containsKey("ValidTarget") && (!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; value += 50;
} }
} else if (mode == TriggerType.AttackerUnblocked) { } 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; value += 50;
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -153,7 +153,7 @@ public class GameAction {
for (final Trigger trigger : copied.getTriggers()) { for (final Trigger trigger : copied.getTriggers()) {
trigger.setHostCard(copied); trigger.setHostCard(copied);
} }
for (final TriggerReplacementBase repl : copied.getReplacementEffects()) { for (final CardTraitBase repl : copied.getReplacementEffects()) {
repl.setHostCard(copied); repl.setHostCard(copied);
} }
if (c.getName().equals("Skullbriar, the Walking Grave")) { 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
@@ -44,7 +45,7 @@ public class StaticEffect {
private HashMap<Card, Integer> xValueMap = new HashMap<Card, Integer>(); private HashMap<Card, Integer> xValueMap = new HashMap<Card, Integer>();
private String chosenType; private String chosenType;
private HashMap<String, String> mapParams = new HashMap<String, String>(); private Map<String, String> mapParams = new HashMap<String, String>();
// for P/T // for P/T
private final HashMap<Card, String> originalPT = new HashMap<Card, String>(); private final HashMap<Card, String> originalPT = new HashMap<Card, String>();
@@ -845,7 +846,7 @@ public class StaticEffect {
* @param params * @param params
* a HashMap * a HashMap
*/ */
public final void setParams(final HashMap<String, String> params) { public final void setParams(final Map<String, String> params) {
this.mapParams = params; this.mapParams = params;
} }
@@ -854,7 +855,7 @@ public class StaticEffect {
* *
* @return the params * @return the params
*/ */
public final HashMap<String, String> getParams() { public final Map<String, String> getParams() {
return this.mapParams; return this.mapParams;
} }

View File

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

View File

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

View File

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

View File

@@ -20,7 +20,7 @@ public class UnattachAllEffect extends SpellAbilityEffect {
if (o instanceof Card) { if (o instanceof Card) {
final Card c = (Card) o; final Card c = (Card) o;
if (cardToUnattach.isAura()) { 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); //AbilityFactoryAttach.handleUnattachAura(cardToUnattach, c, gainControl);
} else if (cardToUnattach.isEquipment()) { } else if (cardToUnattach.isEquipment()) {
if (cardToUnattach.isEquipping() && c.getEquippedBy().contains(cardToUnattach)) { if (cardToUnattach.isEquipping() && c.getEquippedBy().contains(cardToUnattach)) {

View File

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

View File

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

View File

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

View File

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

View File

@@ -23,6 +23,7 @@ import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
/** /**
* The Class StaticAbilityCantTarget. * The Class StaticAbilityCantTarget.
@@ -42,7 +43,7 @@ public class StaticAbilityCantTarget {
*/ */
public static boolean applyCantTargetAbility(final StaticAbility staticAbility, final Card card, public static boolean applyCantTargetAbility(final StaticAbility staticAbility, final Card card,
final SpellAbility spellAbility) { final SpellAbility spellAbility) {
final HashMap<String, String> params = staticAbility.getMapParams(); final Map<String, String> params = staticAbility.getMapParams();
final Card hostCard = staticAbility.getHostCard(); final Card hostCard = staticAbility.getHostCard();
final Card source = spellAbility.getSourceCard(); final Card source = spellAbility.getSourceCard();
final Player activator = spellAbility.getActivatingPlayer(); 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.StringUtils;
import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.lang3.text.WordUtils;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
/** /**
* The Class StaticAbility_Continuous. * The Class StaticAbility_Continuous.
@@ -61,7 +58,7 @@ public class StaticAbilityContinuous {
* *
*/ */
public static List<Card> applyContinuousAbility(final StaticAbility stAb) { 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 Card hostCard = stAb.getHostCard();
final StaticEffect se = new StaticEffect(hostCard); final StaticEffect se = new StaticEffect(hostCard);
@@ -515,7 +512,7 @@ public class StaticAbilityContinuous {
final String costcmc = Integer.toString(affectedCard.getCMC()); final String costcmc = Integer.toString(affectedCard.getCMC());
s = s.replace("ConvertedManaCost", costcmc); 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()) { for (final StaticAbility stA : affectedCard.getStaticAbilities()) {
stA.setTemporarilySuppressed(true); stA.setTemporarilySuppressed(true);
} }
for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) { for (final CardTraitBase rE : affectedCard.getReplacementEffects()) {
rE.setTemporarilySuppressed(true); rE.setTemporarilySuppressed(true);
} }
} }
@@ -544,7 +541,7 @@ public class StaticAbilityContinuous {
} }
private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) { 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 Card hostCard = stAb.getHostCard();
final Player controller = hostCard.getController(); final Player controller = hostCard.getController();
@@ -566,7 +563,7 @@ public class StaticAbilityContinuous {
} }
private static List<Card> getAffectedCards(final StaticAbility stAb) { 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 Card hostCard = stAb.getHostCard();
final Game game = hostCard.getGame(); final Game game = hostCard.getGame();
final Player controller = hostCard.getController(); final Player controller = hostCard.getController();

View File

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

View File

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

View File

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

View File

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

View File

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