Psyringe - 5DN overhaul: added 6 cards (some borderline) and fixed 11 bugs. Added test scripts for most added cards. Please check/review as I'm still inexperienced with card code.

Additions:
- Added Avarice Totem. Code works, but uses a trick to circumvent a parser limitation. Feedback welcome.
- Added Fangren Pathcutter. Code works, but will fail if Fangren Pathcutter gets removed during the combatattackers phase (currently unlikely though). Feedback welcome.
- Added Goblin Cannon (spectacularly useless card, but codeable)
- Added Silent Arbiter (code works pretty well imho)
- Added Skullcage (doesn't work correctly yet due to bug; issue will be opened shortly)
- Added Thought Courier (has wrong sequence of actions, but is acceptable imho)

Bugfixes:
- Arachnoid didn't have Reach
- Battered Golem was missing a "may"
- softcoded Beacon of Creation
- Beacon of Destruction was missing an alias
- Beacon of Immortality was missing an alias
- Cackling Imp couldn't use its ability
- removed Crucible of Worlds (didn't work on several accounts)
- Krark-Clan Ironworks had an incorrect {T} cost
- Krark-Clan Ogre had an incorrect cost
- Screaming Fury was missing a target
- Skyhunter Skirmisher had double strike spelled wrong

Other:
- experimented with several more cards but couldn't implement them correctly, check the comments in todo.dat for details.
This commit is contained in:
Psyyringe
2009-12-08 08:39:34 +00:00
parent c13b178b5a
commit 0ec6c7bf37
17 changed files with 492 additions and 119 deletions

View File

@@ -9,7 +9,7 @@ mana={3}{U}{U}
type=Sorcery
[/card]
[card]
text={U}: Advanced Hoverguard gains shroud until end of turn. (It can't be the target of spells or abilities.)
text=Flying -- {U}: Advanced Hoverguard gains shroud until end of turn. (It can't be the target of spells or abilities.)
id=50144
name=Advanced Hoverguard
rarity=C
@@ -35,6 +35,7 @@ toughness=3
[/card]
[card]
text=Reach (This creature can block creatures with flying.)
abilities=reach
id=51230
name=Arachnoid
rarity=U
@@ -47,7 +48,7 @@ toughness=6
[card]
text=Protection from black and from red Whenever another creature enters the battlefield, you may gain 1 life.
id=72921
auto=@movedTo(creature|battlefield):may life:1
auto=@movedTo(creature|battlefield):may life:1 controller
name=Auriok Champion
rarity=R
mana={W}{W}
@@ -58,8 +59,21 @@ toughness=1
abilities=protection from black,protection from red
[/card]
[card]
id=39667
name=Avarice Totem
mana={1}
type=Artifact
text={5}: Exchange control of Avarice Totem and target nonland permanent.
# Note: The term all(this) is a workaround for a current parser
# limitation. We cannot chain effects on a target card to effects
# on "this" - if we do it, the the parser confuses and ignores
# targets. But we CAN chain "target"ed effects to "all()" effects.
auto={5}:moveto(mybattlefield) target(*[-land]|opponentbattlefield) && moveto(opponentbattlefield) all(this)
rarity=U
[/card]
[card]
text=Battered Golem doesn't untap during your untap step. Whenever an artifact enters the battlefield, you may untap Battered Golem.
auto=@movedTo(creature|battlefield):untap
auto=@movedTo(artifact|battlefield):may untap
id=73932
name=Battered Golem
rarity=C
@@ -72,10 +86,10 @@ abilities=doesnotuntap
[/card]
[card]
text=Put a 1/1 green Insect creature token onto the battlefield for each Forest you control. Shuffle Beacon of Creation into its owner's library.
alias=135262
id=51613
name=Beacon of Creation
auto=foreach(forest|mybattlefield) token(Insect,Creature insect,1/1,green)
auto=moveto(mylibrary) && shuffle
rarity=R
mana={3}{G}
type=Sorcery
@@ -86,6 +100,7 @@ id=51612
name=Beacon of Destruction
target=creature,player
auto=damage:5
alias=135262
rarity=R
mana={3}{R}{R}
type=Instant
@@ -93,6 +108,7 @@ type=Instant
[card]
text=Double target player's life total. Shuffle Beacon of Immortality into its owner's library.
id=50141
alias=130553
target=player
name=Beacon of Immortality
rarity=R
@@ -133,10 +149,9 @@ power=3
toughness=3
[/card]
[card]
text={T}: Target player loses 1 life.
text=Flying -- {T}: Target player loses 1 life.
id=73597
auto={T}:life-1 controller
auto={T}:life-1 opponent
auto={T}:life:-1 target(player)
name=Cackling Imp
rarity=C
mana={2}{B}{B}
@@ -168,15 +183,6 @@ power=4
toughness=4
[/card]
[card]
text=You may play land cards from your graveyard.
auto={0}:may moveTo(myBattlefield) target(land|mygraveyard) limit:1 myTurnOnly
id=51133
name=Crucible of Worlds
rarity=R
mana={3}
type=Artifact
[/card]
[card]
text=Destroy target creature. It can't be regenerated. You lose life equal to that creature's toughness.
id=50210
target=creature
@@ -223,6 +229,23 @@ power=2
toughness=1
[/card]
[card]
id=50171
name=Fangren Pathcutter
mana={4}{G}{G}
type=Creature
subtype=Beast
power=4
toughness=6
text=Whenever Fangren Pathcutter attacks, attacking creatures gain trample until end of turn.
# Note: Coded as a triggered conditional "all" effect. This
# makes sure that the effect doesn't get removed if Fangren
# Pathcutter leaves play.
auto=@each combatblockers:aslongas(Fangren Pathcutter[attacking]) all(creature[attacking]) Trample ueot
# Note: above line does not give the Trample bonus when Fangren
# Pathcutter leaves play before the combatblockers step starts.
rarity=U
[/card]
[card]
text=Feedback Bolt deals damage to target player equal to the number of artifacts you control.
id=46108
name=Feedback Bolt
@@ -270,6 +293,15 @@ toughness=2
abilities=first strike
[/card]
[card]
id=48215
name=Goblin Cannon
mana={4}
type=Artifact
text={2}: Goblin Cannon deals 1 damage to target creature or player. Sacrifice Goblin Cannon.
auto={2}{S}:damage:1 target(creature,player)
rarity=U
[/card]
[card]
text={T}, Sacrifice an artifact: Target player puts the top three cards of his or her library into his or her graveyard. Whenever an artifact enters the battlefield, you may untap Grinding Station
auto=@movedTo(artifact|battlefield):may untap
auto={T}{S(artifact|myBattlefield)}:deplete:3 target(player)
@@ -309,7 +341,7 @@ toughness=1
[/card]
[card]
text=Sacrifice an artifact: Add {2} to your mana pool.
auto={T}{S(artifact|myBattlefield)}:Add:{2}
auto={S(artifact|myBattlefield)}:Add:{2}
id=51633
name=Krark-Clan Ironworks
rarity=U
@@ -324,7 +356,7 @@ rarity=C
mana={3}{R}{R}
type=Creature
subtype=Ogre
auto={T}{S(artifact|myBattlefield)}:cantblock target(creature)
auto={R}{S(artifact|myBattlefield)}:cantblock target(creature)
power=3
toughness=3
[/card]
@@ -332,7 +364,7 @@ toughness=3
text=Vigilance {W}: Loxodon Stalwart gets +0/+1 until end of turn.
id=73567
name=Loxodon Stalwart
abilities=vigilance
abilities=Vigilance
rarity=U
mana={3}{W}{W}
type=Creature
@@ -391,7 +423,7 @@ toughness=1
text=You draw two cards and you lose 2 life.
id=51178
name=Night's Whisper
auto=draw:2
auto=draw:2 controller
auto=life:-2 controller
rarity=U
mana={1}{B}
@@ -468,6 +500,7 @@ type=Sorcery
text=Target creature gets +5/+0 and gains haste until end of turn.
id=51148
name=Screaming Fury
target=creature
auto=5/0
auto=haste
rarity=C
@@ -475,6 +508,29 @@ mana={2}{R}
type=Sorcery
[/card]
[card]
id=73598
name=Silent Arbiter
mana={4}
type=Artifact Creature
subtype=Construct
power=1
toughness=5
text=No more than one creature can attack each combat. No more than one creature can block each combat.
auto=aslongas(creature[attacking]|battlefield) lord(creature[-attacking]|battlefield) cantattack
auto=aslongas(creature[blocking]|battlefield) lord(creature[-blocking]|battlefield) cantblock
rarity=R
[/card]
[card]
id=73926
name=Skullcage
mana={4}
type=Artifact
text=At the beginning of each opponent's upkeep, Skullcage deals 2 damage to that player unless he or she has exactly three or exactly four cards in hand.
auto=@each opponent upkeep:aslongas(*|opponenthand) damage:2 opponent >4
auto=@each opponent upkeep:aslongas(*|opponenthand) damage:2 opponent <3
rarity=U
[/card]
[card]
text=Flying, vigilance (This creature can't be blocked except by creatures with flying or reach, and attacking doesn't cause this creature to tap.)
id=50136
name=Skyhunter Prowler
@@ -496,7 +552,7 @@ type=Creature
subtype=Cat Knight
power=1
toughness=1
abilities=flying,doublestrike
abilities=flying,double strike
[/card]
[card]
text=Trample, haste (If this creature would deal enough combat damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player. This creature can attack and {T} as soon as it comes under your control.) At end of turn, sacrifice Spark Elemental.
@@ -512,7 +568,7 @@ toughness=1
abilities=trample,haste
[/card]
[card]
text={1}: Untap Staff of Domination. {2}, {T}: You gain 1 life. {3}, {T}: Untap target creatur {4}, {T}: Tap target creature. {5}, {T}: Draw a card.
text={1}: Untap Staff of Domination. {2}, {T}: You gain 1 life. {3}, {T}: Untap target creature {4}, {T}: Tap target creature. {5}, {T}: Draw a card.
auto={1}:untap
auto={2}{T}:life:1 controller
auto={3}{T}:untap target(creature)
@@ -527,7 +583,7 @@ type=Artifact
[card]
text={T}, Put a 2/2 colorless Pincher creature token onto the battlefield. Whenever an artifact is put into a graveyard from the battlefield, you may untap Summoning Station.
auto=@movedTo(artifact|graveyard) from(battlefield):may untap
auto={T}:token(Pincher,creature artifact pincher, 2/2, artifact)
auto={T}:token(Pincher,creature artifact pincher,2/2,artifact)
id=72858
name=Summoning Station
rarity=R
@@ -536,6 +592,8 @@ type=Artifact
[/card]
[card]
text=Whenever Tangle Asp blocks or becomes blocked by a creature, destroy that creature at end of combat.
# Note: The alias isn't entirely correct since the Cockatrice's
# ability doesn't affect walls, but Tangle Asp's should.
alias=1238
id=50203
name=Tangle Asp
@@ -571,6 +629,21 @@ power=2
toughness=2
[/card]
[card]
id=73570
name=Thought Courier
mana={1}{U}
type=Creature
subtype=Human Wizard
power=1
toughness=1
text={T}: Draw a card, then discard a card.
# Note: Following line is not entirely correct. The game
# requires you to discard a card *before* you can draw
# then new one.
auto={T}:draw:1 controller && moveto(mygraveyard) target(*|myhand)
rarity=U
[/card]
[card]
text={1}{G}: Tyrranax gets -1/+1 until end of turn.
id=50191
name=Tyrranax

View File

@@ -3,18 +3,10 @@ id=50164
name=Abuna's Chant
mana={3}{W}
type=Instant
text=Choose one :・You gain 5 life; or prevent the next 5 damage that would be dealt to target creature this turn. Entwine {2} (Choose both if you pay the entwine cost.)
text=Choose one: You gain 5 life; or prevent the next 5 damage that would be dealt to target creature this turn. Entwine {2} (Choose both if you pay the entwine cost.)
rarity=C
[/card]
[card]
id=51088
name=Acquire
mana={3}{U}{U}
type=Sorcery
text=Search target opponent's library for an artifact card and put that card onto the battlefield under your control. Then that player shuffles his or her library.
rarity=R
[/card]
[card]
id=51221
name=All Suns' Dawn
mana={4}{G}
@@ -30,7 +22,7 @@ type=Artifact Creature
subtype=Golem
power=0
toughness=0
text=Modular窶粘unburst (This enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it. When it's put into a graveyard, you may put its +1/+1 counters on target artifact creature.)
text=Modular -- Sunburst (This enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it. When it's put into a graveyard, you may put its +1/+1 counters on target artifact creature.)
rarity=U
[/card]
[card]
@@ -72,14 +64,6 @@ text=Flying {T}: Attach target Equipment you control to target creature you cont
rarity=R
[/card]
[card]
id=39667
name=Avarice Totem
mana={1}
type=Artifact
text={5}: Exchange control of Avarice Totem and target nonland permanent.
rarity=U
[/card]
[card]
id=51375
name=Baton of Courage
mana={3}
@@ -88,14 +72,6 @@ text=Flash Sunburst (This enters the battlefield with a charge counter on it for
rarity=C
[/card]
[card]
id=50141
name=Beacon of Immortality
mana={5}{W}
type=Instant
text=Double target player's life total. Shuffle Beacon of Immortality into its owner's library.
rarity=R
[/card]
[card]
id=51610
name=Beacon of Tomorrows
mana={6}{U}{U}
@@ -172,6 +148,12 @@ name=Chimeric Coils
mana={1}
type=Artifact
text={X}{1}: Chimeric Coils becomes an X/X Construct artifact creature. Sacrifice it at the beginning of the next end step.
# Following line does not work: card does not become a creature
auto={X}{1}:becomes(construct artifact Creature,X/X)
# Following line does not work: we cannot chain triggers to paid abilities
auto={X}{1}:becomes(construct artifact Creature,X/X) && @next endofturn:bury
# Following line would be a very dirty & hackish replacement for the line above:
auto=@each endofturn:bury all(chimeric coils[construct])
rarity=U
[/card]
[card]
@@ -196,6 +178,10 @@ name=Clock of Omens
mana={4}
type=Artifact
text=Tap two untapped artifacts you control: Untap target artifact.
# Following line does not work: Can't have several singular targets in one auto line
##auto={0}:tap target(artifact[-tapped]|myinplay) && tap target(artifact[-tapped]|myinplay) && untap target(artifact[tapped])
# Following line does not work: Can't specify tap targets in cost segment
auto={T(artifact[-tapped]|myinplay)}{T(artifact[-tapped]|myinplay)}:untap target(artifact[tapped])
rarity=U
[/card]
[card]
@@ -212,6 +198,8 @@ name=Conjurer's Bauble
mana={1}
type=Artifact
text={T}, Sacrifice Conjurer's Bauble: Put up to one target card from your graveyard on the bottom of your library. Draw a card.
# Following line does not work: Cards added to library are always added on top
auto={T}{S}:moveto(ownerlibrary) target(*|mygraveyard) && draw:1 controller
rarity=C
[/card]
[card]
@@ -235,6 +223,21 @@ text=Equipped creature gets +1/+0 for each artifact you control. {B}{B}: Attach
rarity=C
[/card]
[card]
text=You may play land cards from your graveyard.
# Following line does not work: "May moveto" from graveyards does
# not work due to interface issues. The "limit:1" doesn't work
# here either. Even if both worked, then the card would allow
# you to play lands *in addition* to the 1 land you can play per
# turn. Instead it should just give you the option to play this
# 1 land from your hand or your graveyard.
auto={0}:may moveTo(myBattlefield) target(land|mygraveyard) limit:1 myTurnOnly
id=51133
name=Crucible of Worlds
rarity=R
mana={3}
type=Artifact
[/card]
[card]
id=51222
name=Dawn's Reflection
mana={3}{G}
@@ -252,6 +255,10 @@ subtype=Elemental
power=8
toughness=8
text=Fear (This creature can't be blocked except by artifact creatures and/or black creatures.) Whenever a player casts a spell, sacrifice a creature.
# Following line does not work: triggered effects can't choose
# targets. (Also the effect could probably be canceled.)
auto=@movedto(*|stack):bury target(creature|mybattlefield)
abilities=Fear
rarity=R
[/card]
[card]
@@ -348,17 +355,6 @@ text=Whenever you cast an instant or sorcery spell, you may pay {1}. If you do,
rarity=U
[/card]
[card]
id=50171
name=Fangren Pathcutter
mana={4}{G}{G}
type=Creature
subtype=Beast
power=4
toughness=6
text=Whenever Fangren Pathcutter attacks, attacking creatures gain trample until end of turn.
rarity=U
[/card]
[card]
id=51617
name=Ferocious Charge
mana={2}{G}
@@ -395,7 +391,7 @@ rarity=R
[/card]
[card]
id=51631
name=Fold into テ・her
name=Fold into AEther
mana={2}{U}{U}
type=Instant
text=Counter target spell. If that spell is countered this way, its controller may put a creature card from his or her hand onto the battlefield.
@@ -410,14 +406,6 @@ text={2}: Put a charge counter on Gemstone Array. Remove a charge counter from G
rarity=U
[/card]
[card]
id=48215
name=Goblin Cannon
mana={4}
type=Artifact
text={2}: Goblin Cannon deals 1 damage to target creature or player. Sacrifice Goblin Cannon.
rarity=U
[/card]
[card]
id=50927
name=Grafted Wargear
mana={3}
@@ -521,6 +509,12 @@ subtype=Goblin Artificer
power=2
toughness=2
text={R}, Sacrifice two artifacts: Destroy target artifact.
# Following line doesn't work, or expects an extremely unintuitive
# input sequence. It would work with *one* sacrifice, the user
# then has to click on Engineers -> then target to destroy ->
# then artifavt to sacrifice. However I can't find a way to
# sacrifice *two* artifacts.
auto={R}{S(artifact|mybattlefield)}{S(artifact|mybattlefield)}:destroy target(artifact)
rarity=U
[/card]
[card]
@@ -622,17 +616,6 @@ text={3}: Switch Myr Quadropod's power and toughness until end of turn.
rarity=C
[/card]
[card]
id=50179
name=Myr Servitor
mana={1}
type=Artifact Creature
subtype=Myr
power=1
toughness=1
text=At the beginning of your upkeep, if Myr Servitor is on the battlefield, each player returns all cards named Myr Servitor from his or her graveyard to the battlefield.
rarity=C
[/card]
[card]
id=51183
name=Neurok Stealthsuit
mana={2}
@@ -710,10 +693,12 @@ id=51190
name=Rain of Rust
mana={3}{R}{R}
type=Instant
text=Choose one 窶・Destroy target artifact; or destroy target land. Entwine {3}{R} (Choose both if you pay the entwine cost.)
text=Choose one: Destroy target artifact; or destroy target land. Entwine {3}{R} (Choose both if you pay the entwine cost.)
rarity=C
[/card]
[card]
# Note: Following card is currently implemented in _cards.dat,
# but will need to be updated once Equipment is implemented.
id=73569
name=Raksha Golden Cub
mana={5}{W}{W}
@@ -768,14 +753,9 @@ name=Rite of Passage
mana={2}{G}
type=Enchantment
text=Whenever a creature you control is dealt damage, put a +1/+1 counter on it. (The damage is dealt before the counter is put on.)
rarity=R
[/card]
[card]
id=51080
name=Roar of Reclamation
mana={5}{W}{W}
type=Sorcery
text=Each player returns all artifact cards from his or her graveyard to the battlefield.
# Following line doesn't work: game tries to put the counter on
# Rite of Passage, not on the damaged creature.
auto=@damaged(creature|mybattlefield):counter(1/1)
rarity=R
[/card]
[card]
@@ -822,25 +802,6 @@ text=Target opponent reveals his or her hand. You choose an artifact card from i
rarity=U
[/card]
[card]
id=73598
name=Silent Arbiter
mana={4}
type=Artifact Creature
subtype=Construct
power=1
toughness=5
text=No more than one creature can attack each combat. No more than one creature can block each combat.
rarity=R
[/card]
[card]
id=73926
name=Skullcage
mana={4}
type=Artifact
text=At the beginning of each opponent's upkeep, Skullcage deals 2 damage to that player unless he or she has exactly three or exactly four cards in hand.
rarity=U
[/card]
[card]
id=51374
name=Skyreach Manta
mana={5}
@@ -983,17 +944,6 @@ text=Destroy target artifact. Scry 2. (To scry 2, look at the top two cards of y
rarity=U
[/card]
[card]
id=73570
name=Thought Courier
mana={1}{U}
type=Creature
subtype=Human Wizard
power=1
toughness=1
text={T}: Draw a card, then discard a card.
rarity=U
[/card]
[card]
id=51161
name=Tornado Elemental
mana={5}{G}{G}
@@ -1021,6 +971,8 @@ name=Vedalken Orrery
mana={4}
type=Artifact
text=You may cast nonland cards as though they had flash.
# Following line does not work: Lords cannot affect hand/stack?
auto=lord(-land|myhand) Flash
rarity=R
[/card]
[card]