From 454747b6c815575ccc340e7ebc64cf30692caea5 Mon Sep 17 00:00:00 2001 From: Sloth Date: Tue, 13 Sep 2011 12:39:24 +0000 Subject: [PATCH] - HIDDEN keywords will now be treated differently by continuous static abilities. --- res/cardsfolder/a/an_zerrin_ruins.txt | 2 +- src/main/java/forge/GameAction.java | 2 +- src/main/java/forge/StaticEffects.java | 11 +++++++++++ .../java/forge/card/staticAbility/StaticAbility.java | 5 ++++- .../card/staticAbility/StaticAbility_Continuous.java | 12 ++++++++++++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/res/cardsfolder/a/an_zerrin_ruins.txt b/res/cardsfolder/a/an_zerrin_ruins.txt index 31d4b3a092d..34854504d07 100644 --- a/res/cardsfolder/a/an_zerrin_ruins.txt +++ b/res/cardsfolder/a/an_zerrin_ruins.txt @@ -4,7 +4,7 @@ Types:Enchantment Text:no text T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ ChooseCT | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, choose a creature type. SVar:ChooseCT:AB$ ChooseType | Cost$ 0 | Defined$ You | Type$ Creature | AILogic$ MostProminentHumanControls -S:Mode$ Continuous | Affected$ Creature.ChosenType | AddKeyword$ HIDDEN CARDNAME doesn't untap during your untap step. | Description$ Creatures of the chosen type don't untap during their controllers' untap steps. +S:Mode$ Continuous | Affected$ Creature.ChosenType | AddHiddenKeyword$ HIDDEN CARDNAME doesn't untap during your untap step. | Description$ Creatures of the chosen type don't untap during their controllers' untap steps. SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/an_zerrin_ruins.jpg diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index e8767146f6f..caf95b900f8 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -681,7 +681,7 @@ public class GameAction { cardsWithStAbs.reverse(); //roughly timestamp order //apply continuous effects - for (int layer = 4; layer < 10; layer++) { + for (int layer = 4; layer < 11; layer++) { for (Card card : cardsWithStAbs) { ArrayList staticAbilities = card.getStaticAbilities(); for (StaticAbility stAb : staticAbilities) { diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java index 5e77db89b20..c3550bf36cd 100644 --- a/src/main/java/forge/StaticEffects.java +++ b/src/main/java/forge/StaticEffects.java @@ -61,6 +61,7 @@ public class StaticEffects { int toughnessBonus = 0; boolean setPT = false; String[] addKeywords = null; + String[] addHiddenKeywords = null; String addColors = null; if (params.containsKey("SetPower") || params.containsKey("SetToughness")) { @@ -86,6 +87,10 @@ public class StaticEffects { toughnessBonus = Integer.valueOf(params.get("AddToughness")); } } + + if (params.containsKey("AddHiddenKeyword")) { + addHiddenKeywords = params.get("AddHiddenKeyword").split(" & "); + } if (params.containsKey("AddColor")) { addColors = CardUtil.getShortColorsString( @@ -137,6 +142,12 @@ public class StaticEffects { } } + if(addHiddenKeywords != null) { + for (String k : addHiddenKeywords) { + affectedCard.removeExtrinsicKeyword(k); + } + } + //remove abilities if (params.containsKey("RemoveAllAbilities")) { ArrayList abilities = affectedCard.getSpellAbilities(); diff --git a/src/main/java/forge/card/staticAbility/StaticAbility.java b/src/main/java/forge/card/staticAbility/StaticAbility.java index 29a59e01cac..7c60fd8a8de 100644 --- a/src/main/java/forge/card/staticAbility/StaticAbility.java +++ b/src/main/java/forge/card/staticAbility/StaticAbility.java @@ -102,7 +102,10 @@ public class StaticAbility { if(mapParams.containsKey("AddPower") || mapParams.containsKey("AddToughness") || mapParams.containsKey("SetPower") || mapParams.containsKey("SetToughness")) - return 9; // This is the collection of 7b and 7c + return 9; //This is the collection of 7b and 7c + + if(mapParams.containsKey("AddHiddenKeyword")) + return 10; // rules change // Layer 1, 2 & 3 are not supported diff --git a/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java b/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java index 60867a4a6e3..be81f14def2 100644 --- a/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java +++ b/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java @@ -43,6 +43,7 @@ public class StaticAbility_Continuous { int setPower = -1; int setToughness = -1; String[] addKeywords = null; + String[] addHiddenKeywords = null; String[] removeKeywords = null; String[] addAbilities = null; String[] addSVars = null; @@ -98,6 +99,10 @@ public class StaticAbility_Continuous { addKeywords = params.get("AddKeyword").split(" & "); } + if (params.containsKey("AddHiddenKeyword")) { + addHiddenKeywords = params.get("AddHiddenKeyword").split(" & "); + } + if (params.containsKey("RemoveKeyword")) { removeKeywords = params.get("RemoveKeyword").split(" & "); } @@ -208,6 +213,13 @@ public class StaticAbility_Continuous { if (addKeywords != null || removeKeywords != null || removeAllAbilities) { affectedCard.addChangedCardKeywords(addKeywords, removeKeywords, removeAllAbilities, hostCard.getTimestamp()); } + + // add HIDDEN keywords + if(addHiddenKeywords != null) { + for (String k : addHiddenKeywords) { + affectedCard.addExtrinsicKeyword(k); + } + } // add abilities if (addAbilities != null) {