From 32c52578e2aace2ae81b0de5081012acad79a9c6 Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 30 Dec 2013 00:56:08 +0000 Subject: [PATCH] - Added Bludgeon Brawl --- .gitattributes | 1 + .../res/cardsfolder/b/bludgeon_brawl.txt | 8 ++++++++ .../src/main/java/forge/game/GameAction.java | 18 +++++++++++------ .../main/java/forge/game/StaticEffects.java | 2 +- .../src/main/java/forge/game/card/Card.java | 6 +++--- .../game/staticability/StaticAbility.java | 9 +++++++++ .../StaticAbilityContinuous.java | 20 +++++++++++++++++++ 7 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 forge-gui/res/cardsfolder/b/bludgeon_brawl.txt diff --git a/.gitattributes b/.gitattributes index d83e8de0a4c..9dd4ef0e571 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1302,6 +1302,7 @@ forge-gui/res/cardsfolder/b/bloodthrone_vampire.txt svneol=native#text/plain forge-gui/res/cardsfolder/b/bloom_tender.txt -text forge-gui/res/cardsfolder/b/blossoming_wreath.txt svneol=native#text/plain forge-gui/res/cardsfolder/b/blowfly_infestation.txt -text +forge-gui/res/cardsfolder/b/bludgeon_brawl.txt -text forge-gui/res/cardsfolder/b/blue_elemental_blast.txt svneol=native#text/plain forge-gui/res/cardsfolder/b/blue_mana_battery.txt svneol=native#text/plain forge-gui/res/cardsfolder/b/blue_scarab.txt svneol=native#text/plain diff --git a/forge-gui/res/cardsfolder/b/bludgeon_brawl.txt b/forge-gui/res/cardsfolder/b/bludgeon_brawl.txt new file mode 100644 index 00000000000..1e4ad6a5a51 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bludgeon_brawl.txt @@ -0,0 +1,8 @@ +Name:Bludgeon Brawl +ManaCost:2 R +Types:Enchantment +S:Mode$ Continuous | Affected$ Artifact.nonCreature+nonEquipment | AddAbility$ BrawlEquip | AddType$ Equipment | AddStaticAbility$ EquipPump | Description$ Each noncreature, non-Equipment artifact is an Equipment with equip X and "Equipped creature gets +X/+0," where X is that artifact's converted mana cost. +SVar:BrawlEquip:AB$ Attach | Cost$ ConvertedManaCost | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SorcerySpeed$ True | Equip$ True | AILogic$ Pump | IsPresent$ Card.Self+nonCreature | PrecostDesc$ Equip | SpellDescription$ (Attach to target creature you control. Equip only as a sorcery.) +SVar:EquipPump:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ ConvertedManaCost | Description$ Equipped creature gets +X/+0, where X is CARDNAME's converted mana cost. +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/bludgeon_brawl.jpg \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/game/GameAction.java b/forge-gui/src/main/java/forge/game/GameAction.java index 0cc5488bbb5..ce6e1c16660 100644 --- a/forge-gui/src/main/java/forge/game/GameAction.java +++ b/forge-gui/src/main/java/forge/game/GameAction.java @@ -702,11 +702,16 @@ public class GameAction { // search for cards with static abilities final List allCards = game.getCardsInGame(); final ArrayList staticAbilities = new ArrayList(); - for (final Card card : allCards) { - for (StaticAbility sa : card.getStaticAbilities()) { - if (sa.getMapParams().get("Mode").equals("Continuous")) { - staticAbilities.add(sa); - } + for (final Card c : allCards) { + for (int i = 0; i < c.getStaticAbilities().size(); i++) { + StaticAbility stAb = c.getCharacteristics().getStaticAbilities().get(i); + if (stAb.getMapParams().get("Mode").equals("Continuous")) { + staticAbilities.add(stAb); + } + if (stAb.isTemporary()) { + c.getCharacteristics().getStaticAbilities().remove(i); + i--; + } } } @@ -992,7 +997,8 @@ public class GameAction { final Card equippedCreature = c.getEquipping().get(0); if (!equippedCreature.isCreature() || !equippedCreature.isInPlay() || !equippedCreature.canBeEquippedBy(c) - || (equippedCreature.isPhasedOut() && !c.isPhasedOut())) { + || (equippedCreature.isPhasedOut() && !c.isPhasedOut()) + || !c.isEquipment()) { c.unEquipCard(equippedCreature); checkAgain = true; } diff --git a/forge-gui/src/main/java/forge/game/StaticEffects.java b/forge-gui/src/main/java/forge/game/StaticEffects.java index b03e81eb6a2..4abb80b7fc4 100644 --- a/forge-gui/src/main/java/forge/game/StaticEffects.java +++ b/forge-gui/src/main/java/forge/game/StaticEffects.java @@ -60,7 +60,7 @@ public class StaticEffects { clearedCards.addAll(this.removeStaticEffect(se)); } this.staticEffects.clear(); - + return clearedCards; } diff --git a/forge-gui/src/main/java/forge/game/card/Card.java b/forge-gui/src/main/java/forge/game/card/Card.java index 2015da89ad4..d6451424090 100644 --- a/forge-gui/src/main/java/forge/game/card/Card.java +++ b/forge-gui/src/main/java/forge/game/card/Card.java @@ -4652,15 +4652,15 @@ public class Card extends GameEntity implements Comparable { * @param s * the s */ - public final void addStaticAbility(final String s) { - + public final StaticAbility addStaticAbility(final String s) { if (s.trim().length() != 0) { final StaticAbility stAb = new StaticAbility(s, this); this.getCharacteristics().getStaticAbilities().add(stAb); + return stAb; } + return null; } - public final boolean isPermanent() { return !(this.isInstant() || this.isSorcery() || this.isImmutable()); } diff --git a/forge-gui/src/main/java/forge/game/staticability/StaticAbility.java b/forge-gui/src/main/java/forge/game/staticability/StaticAbility.java index d203f7aa5fd..31e587630c6 100644 --- a/forge-gui/src/main/java/forge/game/staticability/StaticAbility.java +++ b/forge-gui/src/main/java/forge/game/staticability/StaticAbility.java @@ -50,6 +50,8 @@ public class StaticAbility { /** The suppressed. */ private final boolean suppressed = false; + private boolean temporary = false; + /** *

* getHostCard. @@ -633,4 +635,11 @@ public class StaticAbility { this.layer = layer; } + public void setTemporarily(boolean b) { + this.temporary = b; + } + public boolean isTemporary() { + return this.temporary; + } + } // end class StaticEffectFactory diff --git a/forge-gui/src/main/java/forge/game/staticability/StaticAbilityContinuous.java b/forge-gui/src/main/java/forge/game/staticability/StaticAbilityContinuous.java index be266f40908..0b699a6e6f4 100644 --- a/forge-gui/src/main/java/forge/game/staticability/StaticAbilityContinuous.java +++ b/forge-gui/src/main/java/forge/game/staticability/StaticAbilityContinuous.java @@ -98,6 +98,7 @@ public class StaticAbilityContinuous { String[] removeTypes = null; String addColors = null; String[] addTriggers = null; + String[] addStatics = null; ArrayList addFullAbs = null; boolean removeAllAbilities = false; boolean removeSuperTypes = false; @@ -277,6 +278,14 @@ public class StaticAbilityContinuous { addTriggers = sVars; } + if (params.containsKey("AddStaticAbility")) { + final String[] sVars = params.get("AddStaticAbility").split(" & "); + for (int i = 0; i < sVars.length; i++) { + sVars[i] = hostCard.getSVar(sVars[i]); + } + addStatics = sVars; + } + if (params.containsKey("GainsAbilitiesOf")) { final String[] valids = params.get("GainsAbilitiesOf").split(","); ArrayList validZones = new ArrayList(); @@ -471,6 +480,17 @@ public class StaticAbilityContinuous { } } + // add static abilities + if (addStatics != null) { + for (String s : addStatics) { + if (s.contains("ConvertedManaCost")) { + final String costcmc = Integer.toString(affectedCard.getCMC()); + s = s.replace("ConvertedManaCost", costcmc); + } + affectedCard.addStaticAbility(s).setTemporarily(true); + } + } + // remove triggers if (params.containsKey("RemoveTriggers") || removeAllAbilities) { for (final Trigger trigger : affectedCard.getTriggers()) {