From 8c66788dfb79f3c0789bf3b5c876b0eaabb55b08 Mon Sep 17 00:00:00 2001 From: swordshine Date: Thu, 19 Jun 2014 05:53:37 +0000 Subject: [PATCH] - Added Dead Ringers --- .gitattributes | 1 + .../spellability/SpellAbilityCondition.java | 23 +++++++++++++++++++ .../spellability/SpellAbilityVariables.java | 12 ++++++++++ .../main/java/forge/game/zone/MagicStack.java | 7 ++++++ forge-gui/res/cardsfolder/d/dead_ringers.txt | 8 +++++++ 5 files changed, 51 insertions(+) create mode 100644 forge-gui/res/cardsfolder/d/dead_ringers.txt diff --git a/.gitattributes b/.gitattributes index 765bad25b3f..3080963a322 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3896,6 +3896,7 @@ forge-gui/res/cardsfolder/d/dead_gone.txt -text forge-gui/res/cardsfolder/d/dead_iron_sledge.txt svneol=native#text/plain forge-gui/res/cardsfolder/d/dead_reckoning.txt -text svneol=unset#text/plain forge-gui/res/cardsfolder/d/dead_reveler.txt -text +forge-gui/res/cardsfolder/d/dead_ringers.txt -text forge-gui/res/cardsfolder/d/dead_weight.txt -text forge-gui/res/cardsfolder/d/deadapult.txt svneol=native#text/plain forge-gui/res/cardsfolder/d/deadbridge_chant.txt -text diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java index 3c283857e12..4a5e22b18dc 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java @@ -24,12 +24,16 @@ import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardFactoryUtil; import forge.game.card.CardLists; +import forge.game.card.CardUtil; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.util.Expressions; + import org.apache.commons.lang3.StringUtils; +import com.google.common.collect.Iterables; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -153,6 +157,10 @@ public class SpellAbilityCondition extends SpellAbilityVariables { } } + if (params.containsKey("ConditionShareAllColors")) { + this.setShareAllColors(params.get("ConditionShareAllColors")); + } + if (params.containsKey("ConditionManaSpent")) { this.setManaSpent(params.get("ConditionManaSpent")); } @@ -209,6 +217,21 @@ public class SpellAbilityCondition extends SpellAbilityVariables { } } + if (this.getShareAllColors() != null) { + List tgts = AbilityUtils.getDefinedCards(sa.getHostCard(), this.getShareAllColors(), sa); + Card first = Iterables.getFirst(tgts, null); + if (first == null) { + return false; + } else { + byte firstColor = CardUtil.getColors(first).getColor(); + for (Card c : tgts) { + if (CardUtil.getColors(c).getColor() != firstColor) { + return false; + } + } + } + } + if (this.isSorcerySpeed() && !activator.canCastSorcery()) { return false; } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java index 9bc2f2ba5c0..34cba441e25 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java @@ -72,6 +72,7 @@ public class SpellAbilityVariables { this.metalcraft = sav.isThreshold(); this.hellbent = sav.isHellbent(); this.allTargetsLegal = sav.isAllTargetsLegal(); + this.shareAllColors = sav.getShareAllColors(); this.prowlTypes = new ArrayList(sav.getProwlTypes()); this.isPresent = sav.getIsPresent(); this.presentCompare = sav.getPresentCompare(); @@ -187,6 +188,9 @@ public class SpellAbilityVariables { /** The life amount. */ private String lifeAmount = "GE1"; + /** The shareAllColors. */ + private String shareAllColors = null; + /** The mana spent. */ private String manaSpent = ""; @@ -722,6 +726,14 @@ public class SpellAbilityVariables { return this.hellbent; } + public String getShareAllColors() { + return shareAllColors; + } + + public void setShareAllColors(String shareAllColors) { + this.shareAllColors = shareAllColors; + } + /** * Checks if is pw ability. * diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index a284761c6a9..27217a15f81 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -684,6 +684,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable