Merge branch 'master' into 'master'

- Updated ExploreEffect to make the stack description account for cards that target other cards to explore.

See merge request core-developers/forge!44
This commit is contained in:
Michael Kamensky
2018-01-07 05:15:01 +00:00
16 changed files with 115 additions and 8 deletions

View File

@@ -12,6 +12,8 @@ import forge.game.player.PlayerController;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType; import forge.game.trigger.TriggerType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Lang;
import forge.util.TextUtil;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -26,7 +28,20 @@ public class ExploreEffect extends SpellAbilityEffect {
@Override @Override
protected String getStackDescription(SpellAbility sa) { protected String getStackDescription(SpellAbility sa) {
final Card host = sa.getHostCard(); final Card host = sa.getHostCard();
return host.getName() + " explores."; final StringBuilder sb = new StringBuilder();
List<Card> tgt = getTargetCards(sa);
List<String> 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) /* (non-Javadoc)

View File

@@ -1,7 +1,7 @@
Name:Bident of Thassa Name:Bident of Thassa
ManaCost:2 U U ManaCost:2 U U
Types:Legendary Enchantment Artifact 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 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. 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. 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.

View File

@@ -5,7 +5,7 @@ K:Enchant creature
K:Totem armor K:Totem armor
A:SP$ Attach | Cost$ 2 G | ValidTgts$ Creature | AILogic$ Pump 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." 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:SnakeUmbraDraw:DB$Draw | Defined$ You | NumCards$ 1
SVar:Picture:http://www.wizards.com/global/images/magic/general/snake_umbra.jpg 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.) 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.)

View File

@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ U | ValidTgts$ Creature | AILogic$ Pump 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." 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 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. 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 SVar:TrigSac:DB$ Sacrifice | SacValid$ Self

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -1,7 +1,8 @@
Name:Soul of the Rapids Name:Soul of the Rapids
ManaCost:3 U U ManaCost:3 U U
Types:Creature Elemental Types:Creature Elemental
PT:3/2
K:Flying K:Flying
K:Hexproof K:Hexproof
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.) Oracle:Flying\nHexproof (This creature can't be the target of spells or abilities your opponents control.)
PT:3/2

View File

@@ -1,5 +1,6 @@
Name:Sworn Guardian Name:Sworn Guardian
ManaCost:1 U ManaCost:1 U
Types:Creature Merfolk Warrior Types:Creature Merfolk Warrior
Oracle:
PT:1/3 PT:1/3
SVar:Picture:http://www.wizards.com/global/images/magic/general/sworn_guardian.jpg
Oracle:

View File

@@ -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.

View File

@@ -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.