diff --git a/.gitattributes b/.gitattributes index aa42fcd906d..6949ac4ed07 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9122,6 +9122,7 @@ res/cardsfolder/s/scuttling_death.txt svneol=native#text/plain res/cardsfolder/s/scuzzback_marauders.txt svneol=native#text/plain res/cardsfolder/s/scuzzback_scrapper.txt svneol=native#text/plain res/cardsfolder/s/scythe_of_the_wretched.txt -text +res/cardsfolder/s/scythe_specter.txt -text res/cardsfolder/s/scythe_tiger.txt -text res/cardsfolder/s/sea_drake.txt svneol=native#text/plain res/cardsfolder/s/sea_eagle.txt svneol=native#text/plain diff --git a/res/cardsfolder/s/scythe_specter.txt b/res/cardsfolder/s/scythe_specter.txt new file mode 100644 index 00000000000..5a5dad80826 --- /dev/null +++ b/res/cardsfolder/s/scythe_specter.txt @@ -0,0 +1,14 @@ +Name:Scythe Specter +ManaCost:4 B B +Types:Creature Specter +PT:4/4 +K:Flying +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDiscard | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, each opponent discards a card. Each player who discarded a card with the highest converted mana cost among cards discarded this way loses life equal to that converted mana cost. +SVar:TrigDiscard:AB$ Discard | Cost$ 0 | Mode$ TgtChoose | NumCards$ 1 | Defined$ Player.Opponent | RememberDiscarded$ True | SubAbility$ DBRepeatLoseLife +SVar:DBRepeatLoseLife:DB$ RepeatEach | UseImprinted$ True | RepeatCards$ Card.greatestRememberedCMC | Zone$ Battlefield,Graveyard,Exile,Library,Hand | RepeatSubAbility$ DBLoseLife | SubAbility$ DBCleanup +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | References$ X | Defined$ ImprintedController +SVar:X:Imprinted$CardManaCost +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/scythe_specter.jpg +Oracle:Flying\nWhenever Scythe Specter deals combat damage to a player, each opponent discards a card. Each player who discarded a card with the highest converted mana cost among cards discarded this way loses life equal to that converted mana cost. +SetInfo:COM Rare \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index d9d2909b8d6..aaca6ed70c3 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -7102,6 +7102,27 @@ public class Card extends GameEntity implements Comparable { } } } + } else if (property.startsWith("greatestRememberedCMC")) { + final List list = new ArrayList(); + for (final Object o : source.getRemembered()) { + if (o instanceof Card) { + list.add(Singletons.getModel().getGame().getCardState((Card) o)); + } + } + if (!list.contains(this)) { + return false; + } + for (final Card crd : list) { + if (crd.getRules() != null && crd.getRules().getSplitType() == CardSplitType.Split) { + if (crd.getCMC(Card.SplitCMCMode.LeftSplitCMC) > this.getCMC() || crd.getCMC(Card.SplitCMCMode.RightSplitCMC) > this.getCMC()) { + return false; + } + } else { + if (crd.getCMC() > this.getCMC()) { + return false; + } + } + } } else if (property.startsWith("lowestCMC")) { final List list = Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield); for (final Card crd : list) { diff --git a/src/main/java/forge/card/ability/AbilityUtils.java b/src/main/java/forge/card/ability/AbilityUtils.java index 09e877e7fa4..c466e5318bd 100644 --- a/src/main/java/forge/card/ability/AbilityUtils.java +++ b/src/main/java/forge/card/ability/AbilityUtils.java @@ -731,6 +731,10 @@ public class AbilityUtils { players.add(((Card) rem).getController()); } } + } else if (defined.equals("ImprintedController")) { + for (final Card rem : card.getImprinted()) { + players.add(rem.getController()); + } } else if (defined.startsWith("Triggered")) { final SpellAbility root = sa.getRootAbility(); Object o = null; diff --git a/src/main/java/forge/card/ability/effects/RepeatEachEffect.java b/src/main/java/forge/card/ability/effects/RepeatEachEffect.java index 7d4eaea5d9c..9dd4c4b151a 100644 --- a/src/main/java/forge/card/ability/effects/RepeatEachEffect.java +++ b/src/main/java/forge/card/ability/effects/RepeatEachEffect.java @@ -1,5 +1,6 @@ package forge.card.ability.effects; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -39,8 +40,12 @@ public class RepeatEachEffect extends SpellAbilityEffect { List repeatCards = null; if (sa.hasParam("RepeatCards")) { - ZoneType zone = sa.hasParam("Zone") ? ZoneType.smartValueOf(sa.getParam("Zone")) : ZoneType.Battlefield; - + List zone = new ArrayList(); + if (sa.hasParam("Zone")) { + zone = ZoneType.listValueOf(sa.getParam("Zone")); + } else { + zone.add(ZoneType.Battlefield); + } repeatCards = CardLists.getValidCards(game.getCardsIn(zone), sa.getParam("RepeatCards"), source.getController(), source); loopOverCards = true;