It is currently 17 Sep 2025, 18:52
   
Text Size

Card Development Questions

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Card Development Questions

Postby pokey » 02 Jun 2012, 08:14

moomarc wrote:Another small point is that the card is targeted so you''ll probably end up using something like Count$TargetedDiscardedThisTurn once the suppurt is in. You can check Keeper of the Mind to see how to target the AI while you draw the cards.
Thank you for your suggestion.
Yes, my implementation of Dream Salvage omits targeted aspect right now.
It will let me draw even when my opponent has Ivory Mask.

Though it is working fine for my casual play, I have to make another try to fix it.
pokey
 
Posts: 4
Joined: 25 May 2012, 22:03
Has thanked: 0 time
Been thanked: 0 time

Re: Card Development Questions

Postby pokey » 02 Jun 2012, 08:25

Hellfish wrote:
pokey wrote:So let me report this finding;
When spells are cast and put in graveyard, it is not counted by "ThisTurnEntered_Graveyard_from_Hand"
Correct, that is because nonpermanent spells enter the graveyard from the stack. :)
Thank you for your reply. Very interesting.
I am very happy to hear that, because it answers my first question.
Now "Count$ThisTurnEntered_Graveyard_from_Hand" is virtually equal to "the number of cards discarded this turn".
pokey
 
Posts: 4
Joined: 25 May 2012, 22:03
Has thanked: 0 time
Been thanked: 0 time

Re: Card Development Questions

Postby HereticPriest » 04 Jun 2012, 22:44

So maybe this is the place to submit problems with certain cards:

the card Forbidden Alchemy seems to have stopped working correctly. Actually sorry, it might never have worked at all since i tried it. It does get the card i select, but the other cards dont go into the graveyard as they should, but back on top of the library or vanish completely. Not entirely sure about this.

Maybe you can reproduce this, and then fix it - that would be nice.

Greetings, H_P
HereticPriest
 
Posts: 4
Joined: 03 Jun 2012, 19:06
Has thanked: 3 times
Been thanked: 0 time

Re: Card Development Questions

Postby friarsol » 05 Jun 2012, 00:06

HereticPriest wrote:So maybe this is the place to submit problems with certain cards:
Nope, the other thread (bug reports) is the right thread for cards that exist. This one is for scripting cards that have not been committed yet.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Development Questions

Postby moomarc » 10 Jul 2012, 10:21

Trying to get Goblin Festival working and all is good until you have multiple instances on the stack. If you lose the flip so that the opponent gains control, then resolve the stack further until you lose again, you should still have to choose the opponent because you control the ability. Instead the current card controller chooses one of their opponents. Do we have a way to set Defined to the activating player?

Looked further and Defined$You adds sa.getActivatingPlayer so should work. Does the activating player not get carried over to a CoinFlip's subability?

Code: Select all
Name:Goblin Festival
ManaCost:1 R
Types:Enchantment
Text:no text
A:AB$ DealDamage | Cost$ 2 | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target creature or player | SubAbility$ ControlFlip | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of CARDNAME.
SVar:ControlFlip:DB$ FlipACoin | Defined$ You | LoseSubAbility$ ChooseOpp
SVar:ChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | AILogic$ Curse | SubAbility$ LoseControl
SVar:LoseControl:DB$ GainControl | Defined$ Self | NewController$ ChosenPlayer
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_festival.jpg
SetInfo:UDS|Rare|http://magiccards.info/scans/en/ud/83.jpg
Oracle:{2}: Goblin Festival deals 1 damage to target creature or player. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of Goblin Festival.
End
Edit: Definitely something weird going on here. I thought I'd get around the activating player with a pump to remember the player before the flip (where it uses the correct player to call the flip so should have the correct activator). The same thing happened though where the opponent chose who gains control of it. So I removed the clearRemembered from the win flip so I could check the card's remembered list each time and the correct activating player was being added regardless of who controlled the festival at the time.

So am I just missing the purpose of "Defined" in ChoosePlayer. I thought it determined who chooses the player but it doesn't seem to work here. Any ideas? Here's the script using Remembered players (had to add RememberedOpponent so will post that too in case anyone wants to test it):
| Open
Code: Select all
Name:Goblin Festival
ManaCost:1 R
Types:Enchantment
Text:no text
A:AB$ DealDamage | Cost$ 2 | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target creature or player | SubAbility$ RememberActivator | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of CARDNAME.
SVar:RememberActivator:DB$ Pump | RememberObjects$ You | Static$ True | StackDescription$ None | SubAbility$ ControlFlip
SVar:ControlFlip:DB$ FlipACoin | Defined$ Remembered | LoseSubAbility$ ChooseOpp | WinSubAbility$ DBCleanup
#Remove WinSubAbility to check the remembered list between losses
SVar:ChooseOpp:DB$ ChoosePlayer | Defined$ Remembered | Choices$ RememberedOpponent | AILogic$ Curse | SubAbility$ LoseControl
SVar:LoseControl:DB$ GainControl | Defined$ Self | NewController$ ChosenPlayer | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_festival.jpg
SetInfo:UDS|Rare|http://magiccards.info/scans/en/ud/83.jpg
Oracle:{2}: Goblin Festival deals 1 damage to target creature or player. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of Goblin Festival.
End
Code: Select all
        } else if (defined.equals("RememberedOpponent")) {
            for (final Object rem : card.getRemembered()) {
                if (rem instanceof Player) {
                    players.add(((Player) rem).getOpponent());
                }
            }
        }
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Development Questions

Postby moomarc » 10 Jul 2012, 11:50

I think I found the problem!
Code: Select all
        for (final Player p : tgtPlayers) {
            if ((tgt == null) || p.canBeTargetedBy(sa)) {
                if (sa.getActivatingPlayer().isHuman()) {
In this code for ChoosePlayer resolution it checks whether the ActivatingPlayer isHuman instead of checking player p.
Code: Select all
  if (p.isHuman()) {
Changing it to this fixes it but I want to check with everyone if this will cause other problems?
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Development Questions

Postby friarsol » 27 Aug 2012, 23:25

This is probably targeted at Sloth but if anyone else knows feel free to chime in. I'm in the middle of scripting Phyrexian Portal (which surprisingly doesn't need that many code additions) when I think I stumbled across an issue with Count$InYourLibrary it seems that since this takes the controller of the card, not the controller of the SA into account we can get an incorrect count if the controller of the card changes while the ability is on the stack. It's easily possible that we knew about this limitation and I just forgot about it since it is a bit of a corner case.

Do we have a new way of handling that? I didn't notice anything in CalculateAmount that might do that, and we use a ton of those Count functions everywhere.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Development Questions

Postby Sloth » 28 Aug 2012, 07:39

friarsol wrote:Do we have a new way of handling that? I didn't notice anything in CalculateAmount that might do that, and we use a ton of those Count functions everywhere.
We can pass a spell ability to xCount. And if it's not null change cardController to activatingplayer.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Development Questions

Postby friarsol » 29 Aug 2012, 02:02

Do we have a function inside Triggers that allows us to Remember Players?

So, I'm trying to script Diseased Vermin and the only thing (I believe) I need is to remember the person the Vermin did combat damage to, inside the trigger. Then I can just use Opponent.IsRemembered to see if it's on that list, and it should be good to go. The only thing I really see that has Players being remembered objects is Effects, which wouldn't quite work here. Does this exist already or should I just add a small snippet to handle it?
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Development Questions

Postby moomarc » 29 Aug 2012, 04:50

friarsol wrote:Do we have a function inside Triggers that allows us to Remember Players?

So, I'm trying to script Diseased Vermin and the only thing (I believe) I need is to remember the person the Vermin did combat damage to, inside the trigger. Then I can just use Opponent.IsRemembered to see if it's on that list, and it should be good to go. The only thing I really see that has Players being remembered objects is Effects, which wouldn't quite work here. Does this exist already or should I just add a small snippet to handle it?
Should just be able to add a Pump with RememberObjects$TriggeredPlayer and a StackDescription$None to keep the stack description clean. Should probably also just add a static ETB trigger with ClearRemembered so that the rats forget players if they get Flickered etc.
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Development Questions

Postby moomarc » 17 Sep 2012, 11:49

Scripted the last two Volvers but the gain life trigger causes a ConcurrentModificationException error. The problem is caused when the animate subability tries to add the trigger to the card and only happens when the etb trigger has Static$True. Here's the script for the critters if anyone wants to have a bash at getting them working:
Necravolver | Open
Code: Select all
Name:Necravolver
ManaCost:2 B
Types:Creature Volver
Text:no text
PT:2/2
K:Kicker 1 G
K:Kicker W
T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked 1 G | Origin$ Any | Destination$ Battlefield | Execute$ VolverPumped | Static$ True | TriggerDescription$ If CARDNAME was kicked with its 1 G kicker, it enters the battlefield with two +1/+1 counters on it and with trample.
SVar:VolverPumped:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ VolverStomp
SVar:VolverStomp:DB$ Pump | Defined$ Self | KW$ Trample | Permanent$ True
T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked W | Origin$ Any | Destination$ Battlefield | Execute$ VolverPumped | Static$ True | TriggerDescription$ If CARDNAME was kicked with its W kicker, it enters the battlefield with a +1/+1 counter on it and with "Whenever CARDNAME deals damage, you gain that much life."
SVar:VolverPumped:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ VolverLife
SVar:VolverLife:DB$ Animate | Defined$ Self | Triggers$ PseudoLifelink | sVars$ VolverTrigGain,VolverX | Permanent$ True
SVar:PseudoLifelink:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ VolverTrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life.
SVar:VolverTrigGain:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ VolverX | References$ VolverX
SVar:VolverX:TriggerCount$DamageAmount
SVar:RemRandomDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/necravolver.jpg
SetInfo:APC|Rare|http://magiccards.info/scans/en/ap/46.jpg
Oracle:Kicker {1}{G} and/or {W} (You may pay an additional {1}{G} and/or {W} as you cast this spell.)\nIf Necravolver was kicked with its {1}{G} kicker, it enters the battlefield with two +1/+1 counters on it and with trample.\nIf Necravolver was kicked with its {W} kicker, it enters the battlefield with a +1/+1 counter on it and with "Whenever Necravolver deals damage, you gain that much life."
End
Rakavolver | Open
Code: Select all
Name:Rakavolver
ManaCost:2 R
Types:Creature Volver
Text:no text
PT:2/2
K:Kicker 1 W
K:Kicker U
T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked 1 W | Origin$ Any | Destination$ Battlefield | Execute$ VolverStrength | Static$ True | TriggerDescription$ If CARDNAME was kicked with its 1 W kicker, it enters the battlefield with two +1/+1 counters on it and with "Whenever CARDNAME deals damage, you gain that much life."
SVar:VolverStrength:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ VolverLife
SVar:VolverLife:DB$ Animate | Defined$ Self | Triggers$ PseudoLifelink | sVars$ VolverTrigGain,VolverX | Permanent$ True
SVar:PseudoLifelink:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ VolverTrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life.
SVar:VolverTrigGain:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ VolverX | References$ VolverX
SVar:VolverX:TriggerCount$DamageAmount
T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked U | Origin$ Any | Destination$ Battlefield | Execute$ VolverPumped | Static$ True | TriggerDescription$ If CARDNAME was kicked with its U kicker, it enters the battlefield with a +1/+1 counter on it and with flying.
SVar:VolverPumped:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ VolverLaunch
SVar:VolverLaunch:DB$ Pump | Defined$ Self | KW$ Flying | Permanent$ True
SVar:RemRandomDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/rakavolver.jpg
SetInfo:APC|Rare|http://magiccards.info/scans/en/ap/68.jpg
Oracle:Kicker {1}{W} and/or {U} (You may pay an additional {1}{W} and/or {U} as you cast this spell.)\nIf Rakavolver was kicked with its {1}{W} kicker, it enters the battlefield with two +1/+1 counters on it and with "Whenever Rakavolver deals damage, you gain that much life."\nIf Rakavolver was kicked with its {U} kicker, it enters the battlefield with a +1/+1 counter on it and with flying.
End
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Development Questions

Postby friarsol » 23 Sep 2012, 16:06

Ok... this might be a bit ridiculous, but I'm mostly done scripting Helm of Obedience. My biggest problem right now is that I have a few conditional subabilities that need to confirm that the milled card is still in the graveyard (for appropriate interaction with Leyline of the Void)

Helm of Obedience | Open
Name:Helm of Obedience
ManaCost:4
Types:Artifact
Text:no text
A:AB$ Repeat | Cost$ XCantBe0 X T | ValidTgts$ Opponent | RepeatSubAbility$ DBCleanBeforeRepeat | RepeatCheckSVar$ AccumlatedMilled | RepeatSVarCompare$ LTX | SpellDescription$ Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0. | SubAbility$ DBStealCreature
SVar:DBCleanBeforeRepeat:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBMill
SVar:DBMill:DB$ Mill | NumCards$ 1 | RememberMilled$ True | Defined$ Targeted | SubAbility$ DBAccumulateX
SVar:DBAccumulateX:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ AccumlatedMilled/Plus.1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ1 | ConditionZone$ Graveyard | SubAbility$ DBMilledCreature
SVar:DBMilledCreature:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ EQ1 | ConditionZone$ Graveyard | SubAbility$ DBEmptyLibrary
SVar:DBEmptyLibrary:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionCheckSVar$ TargetedLibrary | ConditionSVarCompare$ EQ0
SVar:DBStealCreature:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SubAbility$ DBSacHelm | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ EQ1 | ConditionZone$ Graveyard
SVar:DBSacHelm:DB$ Sacrifice | Defined$ Self | SubAbility$ DBResetCounter | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ EQ1 | ConditionZone$ Graveyard
SVar:DBResetCounter:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ Number | Expression$ 0 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:TargetedLibrary:TargetedPlayer$CardsInLibrary
SVar:MilledCreature:TargetedPlayer
SVar:AccumlatedMilled:Number$0
SVar:X:Count$xPaid
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/helm_of_obedience.jpg
SetInfo:ALL|Rare|http://magiccards.info/scans/en/ai/163.jpg
Oracle:{X}, {T}: Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0.
End


I thought we used ConditionZone for stuff, and it looks like there's a card that refers to it (Balance of Power), but it doesn't appear to do anything. Before I start messing around with filtering out zones if they are provided, I want to make sure there isn't already a way to handle this scenario.

Because I want to:
1) Mill a card and remember it.
2) Check if that card is still in the graveyard and do something (It doesn't really matter what, I need to do like 4 different things for the case of Helm)

For those trying to figure out what the script is doing:
1) Setup a repeat while the loop counter is less than X.
2) Clear Rememebered List
3) Mill 1 card and remember it.
4) Accumulate a loop counter variable if the milled card is still in the graveyard (that check currently doesn't work)
5) Set the loop counter to X if the milled card is a creature and is still in the graveyard (the graveyard check doesn't work)
6) Set the loop counter to X if the targeted player's library is 0. (Not really necessary, but no reason looping if we can't mill anymore)
7) When the repeat finishes, move the the remembered card from the graveyard to your battlefield if it's a creature
8 ) If the remembered card is a creature and was still in the graveyard, sacrifice Helm of Obedience.
9) Reset Loop Counter
10) Clear Remembered

(Actually, I just realized 8 and 9 should be swapped, but you get the idea)
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Development Questions

Postby Sloth » 23 Sep 2012, 18:02

Here's what i would have used:
Code: Select all
ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1
with
Code: Select all
SVar:Y:Count$ValidGrave Creature.IsRemembered
SVar:Z:Count$ValidGrave Card.IsRemembered
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Development Questions

Postby friarsol » 25 Sep 2012, 01:56

Ok, last question for Helm of Obedience, where am I supposed to put this References? I haven't scripted many cards since that was added, and I have a ton of SVars that I use to get this thing to work as expected. Here's the script in all it's glory:

Helm of Obedience | Open
Name:Helm of Obedience
ManaCost:4
Types:Artifact
Text:no text
A:AB$ Repeat | Cost$ XCantBe0 X T | ValidTgts$ Opponent | MaxRepeat$ MaxRepeats | RepeatSubAbility$ DBCleanBeforeRepeat | RepeatCheckSVar$ AccumlatedMilled | RepeatSVarCompare$ LTX | StackDescription$ Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0. | SpellDescription$ Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0. | SubAbility$ DBSacHelm
SVar:DBCleanBeforeRepeat:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBMill
SVar:DBMill:DB$ Mill | NumCards$ 1 | RememberMilled$ True | Defined$ Targeted | SubAbility$ DBAccumulateX
SVar:DBAccumulateX:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ AccumlatedMilled/Plus.1 | ConditionCheckSVar$ MilledCard | ConditionSVarCompare$ EQ1 | SubAbility$ DBMilledCreature
SVar:DBMilledCreature:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionCheckSVar$ MilledCreature | ConditionSVarCompare$ EQ1 | SubAbility$ DBEmptyLibrary
SVar:DBEmptyLibrary:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionCheckSVar$ TargetedLibrary | ConditionSVarCompare$ EQ0
SVar:DBSacHelm:DB$ Sacrifice | Defined$ Self | ConditionCheckSVar$ MilledCreature | ConditionSVarCompare$ EQ1 | SubAbility$ DBStealCreature
SVar:DBStealCreature:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SubAbility$ DBResetCounter | ConditionCheckSVar$ MilledCreature | ConditionSVarCompare$ EQ1
SVar:DBResetCounter:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ Number | Expression$ 0 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:TargetedLibrary:TargetedPlayer$CardsInLibrary
SVar:MaxRepeats:TargetedPlayer$CardsInLibrary/Plus.2
SVar:MilledCreature:Count$ValidGrave Creature.IsRemembered
SVar:MilledCard:Count$ValidGrave Card.IsRemembered
SVar:AccumlatedMilled:Number$0
SVar:X:Count$xPaid
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/helm_of_obedience.jpg
SetInfo:ALL|Rare|http://magiccards.info/scans/en/ai/163.jpg
Oracle:{X}, {T}: Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0.
End
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Development Questions

Postby Hellfish » 25 Sep 2012, 06:41

Any ability or subability that references any of the svars from TargetedLibrary through to X needs a References$ parameter naming them. (Come on Myr Welder , work!)

Also, holy shit.
So now you're
Screaming for the blood of the cookie monster
Evil puppet demon of obesity
Time to change the tune of his fearful ballad
C is for "Lettuce," that's good enough for me
User avatar
Hellfish
Programmer
 
Posts: 1297
Joined: 07 Jun 2009, 10:41
Location: South of the Pumphouse
Has thanked: 110 times
Been thanked: 169 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 72 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 72 users online :: 0 registered, 0 hidden and 72 guests (based on users active over the past 10 minutes)
Most users ever online was 7967 on 09 Sep 2025, 23:08

Users browsing this forum: No registered users and 72 guests

Login Form