mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
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:
@@ -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)
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
7
forge-gui/res/cardsfolder/upcoming/kitesail_corsair.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/kitesail_corsair.txt
Normal 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.
|
||||||
@@ -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.
|
||||||
13
forge-gui/res/cardsfolder/upcoming/nezahal_primal_tide.txt
Normal file
13
forge-gui/res/cardsfolder/upcoming/nezahal_primal_tide.txt
Normal 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.
|
||||||
7
forge-gui/res/cardsfolder/upcoming/river_darter.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/river_darter.txt
Normal 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.
|
||||||
9
forge-gui/res/cardsfolder/upcoming/riverwise_augur.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/riverwise_augur.txt
Normal 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.
|
||||||
11
forge-gui/res/cardsfolder/upcoming/sea_legs.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/sea_legs.txt
Normal 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.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/seafloor_oracle.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/seafloor_oracle.txt
Normal 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.
|
||||||
9
forge-gui/res/cardsfolder/upcoming/siren_reaver.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/siren_reaver.txt
Normal 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
|
||||||
@@ -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
|
|
||||||
@@ -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:
|
||||||
9
forge-gui/res/cardsfolder/upcoming/warkite_marauder.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/warkite_marauder.txt
Normal 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.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/waterknot.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/waterknot.txt
Normal 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.
|
||||||
Reference in New Issue
Block a user