From 2d4012229917e354bdd52cdc01e140f7434a6d50 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 7 Sep 2011 12:52:07 +0000 Subject: [PATCH] - Continuous static abilities can now add keywords to players. - Added Ivory Mask. --- .gitattributes | 1 + res/cardsfolder/i/ivory_mask.txt | 12 ++++++ src/main/java/forge/StaticEffect.java | 8 ++++ src/main/java/forge/StaticEffects.java | 10 +++++ .../StaticAbility_Continuous.java | 37 +++++++++++++++++++ 5 files changed, 68 insertions(+) create mode 100644 res/cardsfolder/i/ivory_mask.txt diff --git a/.gitattributes b/.gitattributes index 269d370c855..f701442d7e9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3878,6 +3878,7 @@ res/cardsfolder/i/ivory_crane_netsuke.txt svneol=native#text/plain res/cardsfolder/i/ivory_cup.txt svneol=native#text/plain res/cardsfolder/i/ivory_giant.txt svneol=native#text/plain res/cardsfolder/i/ivory_guardians.txt svneol=native#text/plain +res/cardsfolder/i/ivory_mask.txt -text res/cardsfolder/i/ivory_tower.txt svneol=native#text/plain res/cardsfolder/i/ivy_dancer.txt svneol=native#text/plain res/cardsfolder/i/ivy_elemental.txt svneol=native#text/plain diff --git a/res/cardsfolder/i/ivory_mask.txt b/res/cardsfolder/i/ivory_mask.txt new file mode 100644 index 00000000000..3cd6a4f5650 --- /dev/null +++ b/res/cardsfolder/i/ivory_mask.txt @@ -0,0 +1,12 @@ +Name:Ivory Mask +ManaCost:2 W W +Types:Enchantment +Text:no text +S:Mode$ Continuous | Affected$ You | AddKeyword$ Shroud | Description$ You have shroud. (You can't be the target of spells or abilities.) +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/ivory_mask.jpg +SetInfo:8ED|Rare|http://magiccards.info/scans/en/8e/27.jpg +SetInfo:MMQ|Rare|http://magiccards.info/scans/en/mm/24.jpg +SetInfo:9ED|Rare|http://magiccards.info/scans/en/9e/23.jpg +Oracle:You have shroud. (You can't be the target of spells or abilities.) +End \ No newline at end of file diff --git a/src/main/java/forge/StaticEffect.java b/src/main/java/forge/StaticEffect.java index 2f55ff15c01..32de8a449eb 100644 --- a/src/main/java/forge/StaticEffect.java +++ b/src/main/java/forge/StaticEffect.java @@ -16,6 +16,7 @@ public class StaticEffect { private Card source = new Card(); private int keywordNumber = 0; private CardList affectedCards = new CardList(); + private ArrayList affectedPlayers = new ArrayList(); private int xValue = 0; private int yValue = 0; private long timestamp = -1; @@ -596,7 +597,14 @@ public class StaticEffect { public void setAffectedCards(CardList list) { affectedCards = list; } + + public ArrayList getAffectedPlayers() { + return affectedPlayers; + } + public void setAffectedPlayers(ArrayList list) { + affectedPlayers = list; + } /** *

Setter for the field xValue.

* diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java index c68c57526e4..ef0ac23e200 100644 --- a/src/main/java/forge/StaticEffects.java +++ b/src/main/java/forge/StaticEffects.java @@ -53,6 +53,7 @@ public class StaticEffects { */ final void removeStaticEffect(final StaticEffect se) { CardList affectedCards = se.getAffectedCards(); + ArrayList affectedPlayers = se.getAffectedPlayers(); HashMap params = se.getParams(); int powerBonus = 0; @@ -98,6 +99,15 @@ public class StaticEffects { addColors = CardUtil.getShortColorsString( new ArrayList(Arrays.asList(params.get("SetColor").split(" & ")))); } + + //modify players + for (Player p : affectedPlayers) { + + // add keywords + if (addKeywords != null) + for (String keyword : addKeywords) + p.removeKeyword(keyword); + } //modify the affected card for (int i = 0; i < affectedCards.size(); i++) { diff --git a/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java b/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java index 1d07c7ea2ff..87c823d7ebf 100644 --- a/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java +++ b/src/main/java/forge/card/staticAbility/StaticAbility_Continuous.java @@ -25,8 +25,10 @@ public class StaticAbility_Continuous { StaticEffect se = new StaticEffect(); CardList affectedCards = getAffectedCards(stAb); + ArrayList affectedPlayers = getAffectedPlayers(stAb); se.setAffectedCards(affectedCards); + se.setAffectedPlayers(affectedPlayers); se.setParams(params); se.setTimestamp(hostCard.getTimestamp()); AllZone.getStaticEffects().addStaticEffect(se); @@ -144,6 +146,15 @@ public class StaticAbility_Continuous { sVars[i] = hostCard.getSVar(sVars[i]); addTriggers = sVars; } + + //modify players + for (Player p : affectedPlayers) { + + // add keywords + if (addKeywords != null) + for (String keyword : addKeywords) + p.addKeyword(keyword); + } //start modifying the cards for (int i = 0; i < affectedCards.size(); i++) { @@ -215,6 +226,32 @@ public class StaticAbility_Continuous { } } + private static ArrayList getAffectedPlayers(StaticAbility stAb) { + HashMap params = stAb.getMapParams(); + Card hostCard = stAb.getHostCard(); + Player controller = hostCard.getController(); + + ArrayList players = new ArrayList(); + + if(!params.containsKey("Affected")) { + return players; + } + + String[] strngs = params.get("Affected").split(","); + + for (String str : strngs) { + if(str.equals("Player") || str.equals("You")) { + players.add(controller); + } + + if(str.equals("Player") || str.equals("Opponent")) { + players.add(controller.getOpponent()); + } + } + + return players; + } + private static CardList getAffectedCards(StaticAbility stAb) { HashMap params = stAb.getMapParams(); Card hostCard = stAb.getHostCard();