From f38e8e546f53e194db95b501845c8ae1d9b759f5 Mon Sep 17 00:00:00 2001 From: swordshine Date: Sun, 8 Jun 2014 13:28:53 +0000 Subject: [PATCH] - Added Grave Scrabbler --- .gitattributes | 1 + .../forge/game/ability/effects/PlayEffect.java | 2 +- forge-game/src/main/java/forge/game/card/Card.java | 14 ++++++++++++++ .../java/forge/game/spellability/SpellAbility.java | 10 ---------- forge-gui/res/cardsfolder/g/grave_scrabbler.txt | 9 +++++++++ .../res/cardsfolder/o/order_of_succession.txt | 3 ++- .../java/forge/player/HumanPlaySpellAbility.java | 4 ++-- 7 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 forge-gui/res/cardsfolder/g/grave_scrabbler.txt diff --git a/.gitattributes b/.gitattributes index 915a9ae0512..86c324d5df2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6186,6 +6186,7 @@ forge-gui/res/cardsfolder/g/grave_exchange.txt -text forge-gui/res/cardsfolder/g/grave_pact.txt svneol=native#text/plain forge-gui/res/cardsfolder/g/grave_peril.txt svneol=native#text/plain forge-gui/res/cardsfolder/g/grave_robbers.txt svneol=native#text/plain +forge-gui/res/cardsfolder/g/grave_scrabbler.txt -text forge-gui/res/cardsfolder/g/grave_servitude.txt -text forge-gui/res/cardsfolder/g/grave_shell_scarab.txt svneol=native#text/plain forge-gui/res/cardsfolder/g/grave_titan.txt svneol=native#text/plain diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java index 7d4d1e79281..371276e989d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java @@ -212,7 +212,7 @@ public class PlayEffect extends SpellAbilityEffect { } else if (sa.hasParam("PlayMadness")) { Cost abCost = new Cost(sa.getParam("PlayMadness"), false); tgtSA = tgtSA.copyWithDefinedCost(abCost); - tgtSA.setMadness(true); + tgtSA.getHostCard().setMadness(true); } if (tgtSA.usesTargeting() && !optional) { diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 140914293f8..c35194ad293 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -156,6 +156,7 @@ public class Card extends GameEntity implements Comparable { private boolean suspendCast = false; private boolean suspend = false; private boolean tributed = false; + private boolean madness = false; private boolean phasedOut = false; private boolean directlyPhasedOut = true; @@ -5796,6 +5797,10 @@ public class Card extends GameEntity implements Comparable { if (this.tributed) { return false; } + } else if (property.startsWith("madness")) { + if (!this.madness) { + return false; + } } else if (property.contains("Paired")) { if (property.contains("With")) { // PairedWith if (!this.isPaired() || this.pairedWith != source) { @@ -7903,6 +7908,15 @@ public class Card extends GameEntity implements Comparable { this.tributed = b; } + // Madness + public boolean isMadness() { + return madness; + } + + public void setMadness(boolean madness) { + this.madness = madness; + } + /** *

* Setter for the field monstrous. diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 2a19323ffb4..e933ed356ca 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -114,7 +114,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit private List tappedForConvoke = new ArrayList(); private Card sacrificedAsOffering = null; private int conspireInstances = 0; - private boolean madness = false; private HashMap sVars = new HashMap(); @@ -1721,15 +1720,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit return this.conspireInstances; } // End of Conspire methods - // Madness - public boolean isMadness() { - return madness; - } - - public void setMadness(boolean madness) { - this.madness = madness; - } - public boolean isCumulativeupkeep() { return cumulativeupkeep; } diff --git a/forge-gui/res/cardsfolder/g/grave_scrabbler.txt b/forge-gui/res/cardsfolder/g/grave_scrabbler.txt new file mode 100644 index 00000000000..832d3b1c6f4 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/grave_scrabbler.txt @@ -0,0 +1,9 @@ +Name:Grave Scrabbler +ManaCost:3 B +Types:Creature Zombie +PT:2/2 +K:Madness:1 B +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+madness | Execute$ TrigReturn | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, if its madness cost was paid, you may return target creature card from a graveyard to its owner's hand. +SVar:TrigReturn:AB$ ChangeZone | Cost$ 0 | ValidTgts$ Creature | Origin$ Graveyard | Destination$ Hand +SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_scrabbler.jpg +Oracle:Madness {1}{B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)\nWhen Grave Scrabbler enters the battlefield, if its madness cost was paid, you may return target creature card from a graveyard to its owner's hand. diff --git a/forge-gui/res/cardsfolder/o/order_of_succession.txt b/forge-gui/res/cardsfolder/o/order_of_succession.txt index 781da7ee79d..ee1dfe79ae6 100644 --- a/forge-gui/res/cardsfolder/o/order_of_succession.txt +++ b/forge-gui/res/cardsfolder/o/order_of_succession.txt @@ -5,4 +5,5 @@ A:SP$ ChooseDirection | Cost$ 3 U | SubAbility$ DBRepeat | AILogic$ GainControl SVar:DBRepeat:DB$ RepeatEach | RepeatSubAbility$ DBGainControl | RecordChoice$ True | ChooseCard$ Creature | FilterControlledBy$ NextPlayerInChosenDirection SVar:DBGainControl:DB$ GainControl | NewController$ Remembered | AllValid$ Card.IsImprinted SVar:RemAIDeck:True -SVar:Picture:http://www.wizards.com/global/images/magic/general/order_of_succession.jpg \ No newline at end of file +SVar:Picture:http://www.wizards.com/global/images/magic/general/order_of_succession.jpg +Oracle:Choose left or right. Starting with you and proceeding in the chosen direction, each player chooses a creature controlled by the next player in that direction. Each player gains control of the creature he or she chose. diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index 57a5cff676e..60d7ea53c4f 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -97,10 +97,10 @@ public class HumanPlaySpellAbility { if (!prerequisitesMet) { if (!ability.isTrigger()) { rollbackAbility(fromZone, zonePosition); - if (ability.isMadness()) { + if (ability.getHostCard().isMadness()) { // if a player failed to play madness cost, move the card to graveyard game.getAction().moveToGraveyard(c); - ability.setMadness(false); + ability.getHostCard().setMadness(false); } else if (ability.getHostCard().isBestowed()) { ability.getHostCard().unanimateBestow(); }