diff --git a/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java index 4d6ea7aeb34..1fcb9d94925 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java @@ -12,6 +12,8 @@ import forge.game.player.PlayerController; import forge.game.spellability.SpellAbility; import forge.game.trigger.TriggerType; import forge.game.zone.ZoneType; +import forge.util.Lang; +import forge.util.TextUtil; import java.util.List; import java.util.Map; @@ -26,7 +28,20 @@ public class ExploreEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final Card host = sa.getHostCard(); - return host.getName() + " explores."; + final StringBuilder sb = new StringBuilder(); + + List tgt = getTargetCards(sa); + List tgtNames = Lists.newArrayList(); + for (Card c : tgt) { + tgtNames.add(c.getName()); + } + + sb.append(Lang.joinHomogenous(tgtNames)); + sb.append(" "); + sb.append(tgtNames.size() > 1 ? "explore" : "explores"); + sb.append(". "); + + return sb.toString(); } /* (non-Javadoc) diff --git a/forge-gui/res/cardsfolder/b/bident_of_thassa.txt b/forge-gui/res/cardsfolder/b/bident_of_thassa.txt index 74c74ff15b6..ee8bedb98ed 100644 --- a/forge-gui/res/cardsfolder/b/bident_of_thassa.txt +++ b/forge-gui/res/cardsfolder/b/bident_of_thassa.txt @@ -1,7 +1,7 @@ Name:Bident of Thassa ManaCost:2 U U Types:Legendary Enchantment Artifact -T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a creature you control deals combat damage to an opponent, you may draw a card. +T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a creature you control deals combat damage to a player, you may draw a card. SVar:TrigDraw:DB$ Draw | NumCards$ 1 A:AB$ Effect | Cost$ 1 U T | StaticAbilities$ MustAttack | References$ MustAttack | SpellDescription$ Creatures your opponents control attack this turn if able. SVar:MustAttack:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ Creatures your opponents control attack this turn if able. diff --git a/forge-gui/res/cardsfolder/s/snake_umbra.txt b/forge-gui/res/cardsfolder/s/snake_umbra.txt index 0a6fc359008..8a29e6ec17a 100644 --- a/forge-gui/res/cardsfolder/s/snake_umbra.txt +++ b/forge-gui/res/cardsfolder/s/snake_umbra.txt @@ -5,7 +5,7 @@ K:Enchant creature K:Totem armor A:SP$ Attach | Cost$ 2 G | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddPower$ 1 | AddToughness$ 1 | AddTrigger$ TriggerDamageDone | AddSVar$ SnakeUmbraDraw | Description$ Enchanted creature gets +1/+1 and has "Whenever this creature deals damage to an opponent, you may draw a card." -SVar:TriggerDamageDone:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | OptionalDecider$ You | Execute$ SnakeUmbraDraw | TriggerDescription$ Whenever enchanted creature deals damage to an opponent, you may draw a card. +SVar:TriggerDamageDone:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | OptionalDecider$ You | Execute$ SnakeUmbraDraw | TriggerDescription$ Whenever this creature deals damage to an opponent, you may draw a card. SVar:SnakeUmbraDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/snake_umbra.jpg Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has "Whenever this creature deals damage to an opponent, you may draw a card."\nTotem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) diff --git a/forge-gui/res/cardsfolder/upcoming/curious_obsession.txt b/forge-gui/res/cardsfolder/upcoming/curious_obsession.txt index 0327a8cea7c..3720b801e16 100644 --- a/forge-gui/res/cardsfolder/upcoming/curious_obsession.txt +++ b/forge-gui/res/cardsfolder/upcoming/curious_obsession.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ U | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddPower$ 1 | AddToughness$ 1 | AddTrigger$ TriggerDamageDone | AddSVar$ CuriousObsessionDraw | Description$ Enchanted creature gets +1/+1 and has "Whenever this creature deals damage to an opponent, you may draw a card." -SVar:TriggerDamageDone:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | OptionalDecider$ You | Execute$ CuriousObsessionDraw | TriggerDescription$ Whenever enchanted creature deals damage to an opponent, you may draw a card. +SVar:TriggerDamageDone:Mode$ DamageDone | ValidSource$ Card.Self | CombatDamage$ True | ValidTarget$ Player | OptionalDecider$ You | Execute$ CuriousObsessionDraw | TriggerDescription$ Whenever this creature deals combat damage to a player, you may draw a card. SVar:CuriousObsessionDraw:DB$Draw | Defined$ You | NumCards$ 1 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ At the beginning of your end step, if you didn't attack with a creature this turn, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice | SacValid$ Self diff --git a/forge-gui/res/cardsfolder/upcoming/kitesail_corsair.txt b/forge-gui/res/cardsfolder/upcoming/kitesail_corsair.txt new file mode 100644 index 00000000000..8ee2c70c259 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kitesail_corsair.txt @@ -0,0 +1,7 @@ +Name:Kitesail Corsair +ManaCost:1 U +Types:Creature Human Pirate +PT:2/1 +S:Mode$ Continuous | Affected$ Card.Self+attacking | AddKeyword$ Flying | Description$ CARDNAME has flying as long as it's attacking. +SVar:Picture:http://www.wizards.com/global/images/magic/general/kitesail_corsair.jpg +Oracle:Kitesail Corsair has flying as long as it's attacking. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/mist_cloaked_herald.txt b/forge-gui/res/cardsfolder/upcoming/mist_cloaked_herald.txt new file mode 100644 index 00000000000..abfd6e3b412 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mist_cloaked_herald.txt @@ -0,0 +1,7 @@ +Name:Mist-Cloaked Herald +ManaCost:U +Types:Creature Merfolk Warrior +PT:1/1 +K:Unblockable +SVar:Picture:http://www.wizards.com/global/images/magic/general/mist_cloaked_herald.jpg +Oracle:Mist-Cloaked Herald can't be blocked. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/nezahal_primal_tide.txt b/forge-gui/res/cardsfolder/upcoming/nezahal_primal_tide.txt new file mode 100644 index 00000000000..a44e719c492 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nezahal_primal_tide.txt @@ -0,0 +1,13 @@ +Name:Nezahal, Primal Tide +ManaCost:5 U U +Types:Legendary Creature Elder Dinosaur +PT:7/7 +K:CARDNAME can't be countered. +S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size. +T:Mode$ SpellCast | TriggerZones$ Battlefield | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ Opponent | Execute$ TrigDraw | TriggerDescription$ Whenever an opponent casts a noncreature spell, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +A:AB$ ChangeZone | Cost$ Discard<3/Card> | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ DelTrig | SpellDescription$ Exile CARDNAME. Return it to the battlefield tapped under its owner's control at the beginning of the next end step. +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | TriggerDescription$ Return CARDNAME to the battlefield tapped under its owner's control. +SVar:TrigReturn:DB$ ChangeZone | Defined$ Self | Origin$ Exile | Destination$ Battlefield | Tapped$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/nezahal_primal_tide.jpg +Oracle:Nezahal, Primal Tide can't be countered.\nYou have no maximum hand size.\nWhenever an opponent casts a noncreature spell, draw a card.\nDiscard three cards: Exile Nezahal. Return it to the battlefield tapped under its owner's control at the beginning of the next end step. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/river_darter.txt b/forge-gui/res/cardsfolder/upcoming/river_darter.txt new file mode 100644 index 00000000000..98bbcf7f88c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/river_darter.txt @@ -0,0 +1,7 @@ +Name:River Darter +ManaCost:2 U +Types:Creature Merfolk Warrior +PT:2/3 +K:CantBeBlockedBy Creature.Dinosaur +SVar:Picture:http://www.wizards.com/global/images/magic/general/river_darter.jpg +Oracle:River Darter can't be blocked by Dinosaurs. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/riverwise_augur.txt b/forge-gui/res/cardsfolder/upcoming/riverwise_augur.txt new file mode 100644 index 00000000000..5cdd28de1ac --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/riverwise_augur.txt @@ -0,0 +1,9 @@ +Name:Riverwise Augur +ManaCost:3 U +Types:Creature Merfolk Wizard +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw three cards, then put two cards from your hand on top of your library in any order. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 3 | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ChangeZone | Origin$ Hand | Destination$ Library | ChangeNum$ 2 | Mandatory$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/riverwise_augur.jpg +Oracle:When Riverwise Augur enters the battlefield, draw three cards, then put two cards from your hand on top of your library in any order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/sea_legs.txt b/forge-gui/res/cardsfolder/upcoming/sea_legs.txt new file mode 100644 index 00000000000..ab1af8d4b84 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sea_legs.txt @@ -0,0 +1,11 @@ +Name:Sea Legs +ManaCost:U +Types:Enchantment Aura +K:Flash +K:Enchant creature +A:SP$ Attach | Cost$ U | ValidTgts$ Creature | AILogic$ SpecificCard +S:Mode$ Continuous | Affected$ Creature.EnchantedBy+Pirate | AddToughness$ 2 | Description$ Enchanted creature gets +0/+2 as long as it's a Pirate. Otherwise, it gets -2/-0. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy+nonPirate | AddPower$ -2 +DeckNeeds:Type$Pirate +SVar:Picture:http://www.wizards.com/global/images/magic/general/sea_legs.jpg +Oracle:Flash\nEnchant creature\nEnchanted creature gets +0/+2 as long as it's a Pirate. Otherwise, it gets -2/-0. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/seafloor_oracle.txt b/forge-gui/res/cardsfolder/upcoming/seafloor_oracle.txt new file mode 100644 index 00000000000..e77e7fc887f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/seafloor_oracle.txt @@ -0,0 +1,8 @@ +Name:Seafloor Oracle +ManaCost:2 U U +Types:Creature Merfolk Wizard +PT:2/3 +T:Mode$ DamageDone | ValidSource$ Permanent.Merfolk+YouCtrl | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a Merfolk you control deals combat damage to a player, draw a card. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/seafloor_oracle.jpg +Oracle:Whenever a Merfolk you control deals combat damage to a player, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/siren_reaver.txt b/forge-gui/res/cardsfolder/upcoming/siren_reaver.txt new file mode 100644 index 00000000000..e45883c5634 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/siren_reaver.txt @@ -0,0 +1,9 @@ +Name:Siren Reaver +ManaCost:3 U +Types:Creature Siren Pirate +PT:3/2 +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | CheckSVar$ RaidTest | SVarCompare$ GE1 | Description$ Raid — CARDNAME costs {1} less to cast if you attacked with a creature this turn. +K:Flying +SVar:RaidTest:Count$AttackersDeclared +SVar:Picture:http://www.wizards.com/global/images/magic/general/siren_reaver.jpg +Oracle:Raid — Siren Reaver costs {1} less to cast if you attacked with a creature this turn.\nFlying diff --git a/forge-gui/res/cardsfolder/upcoming/soul_of_the_rapids.txt b/forge-gui/res/cardsfolder/upcoming/soul_of_the_rapids.txt index f6c57fccfae..0afca5a64dc 100644 --- a/forge-gui/res/cardsfolder/upcoming/soul_of_the_rapids.txt +++ b/forge-gui/res/cardsfolder/upcoming/soul_of_the_rapids.txt @@ -1,7 +1,8 @@ Name:Soul of the Rapids ManaCost:3 U U Types:Creature Elemental +PT:3/2 K:Flying K:Hexproof -Oracle:Flying\nHexproof (This creature can't be the target of spells or abilities your opponents control.) -PT:3/2 \ No newline at end of file +SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_of_the_rapids.jpg +Oracle:Flying\nHexproof (This creature can't be the target of spells or abilities your opponents control.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/sworn_guardian.txt b/forge-gui/res/cardsfolder/upcoming/sworn_guardian.txt index 90271844736..c6ccdc7a8e2 100644 --- a/forge-gui/res/cardsfolder/upcoming/sworn_guardian.txt +++ b/forge-gui/res/cardsfolder/upcoming/sworn_guardian.txt @@ -1,5 +1,6 @@ Name:Sworn Guardian ManaCost:1 U Types:Creature Merfolk Warrior -Oracle: -PT:1/3 \ No newline at end of file +PT:1/3 +SVar:Picture:http://www.wizards.com/global/images/magic/general/sworn_guardian.jpg +Oracle: \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/warkite_marauder.txt b/forge-gui/res/cardsfolder/upcoming/warkite_marauder.txt new file mode 100644 index 00000000000..26e11f2a6e1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/warkite_marauder.txt @@ -0,0 +1,9 @@ +Name:Warkite Marauder +ManaCost:1 U +Types:Creature Human Pirate +PT:2/1 +K:Flying +T:Mode$ Attacks | ValidCard$ Creature.Self | Execute$ TrigAnimate | TriggerDescription$ Whenever CARDNAME attacks, target creature defending player controls loses all abilities and has base power and toughness 0/1 until end of turn. +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | Power$ 0 | Toughness$ 1 | RemoveAllAbilities$ True | IsCurse$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/warkite_marauder.jpg +Oracle:Flying\nWhenever Warkite Marauder attacks, target creature defending player controls loses all abilities and has base power and toughness 0/1 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/waterknot.txt b/forge-gui/res/cardsfolder/upcoming/waterknot.txt new file mode 100644 index 00000000000..925ea25d6f9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/waterknot.txt @@ -0,0 +1,10 @@ +Name:Waterknot +ManaCost:1 U U +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 1 U U | ValidTgts$ Creature | AILogic$ KeepTapped +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, tap enchanted creature. +SVar:TrigTap:DB$ Tap | Defined$ Enchanted +S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Enchanted creature doesn't untap during its controller's untap step. +SVar:Picture:http://www.wizards.com/global/images/magic/general/waterknot.jpg +Oracle:Enchant creature\nWhen Waterknot enters the battlefield, tap enchanted creature.\nEnchanted creature doesn't untap during its controller's untap step. \ No newline at end of file