Card Development Questions
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Card Development Questions
by Hellfish » 03 Nov 2011, 08:30
I could've sworn we had a IsTriggered<TriggeredVariable> property... I'll tinker with it a bit. 
EDIT: Oh, yeah, TriggeringObjects were moved to SpellAbilities. Forgot about that

EDIT: Oh, yeah, TriggeringObjects were moved to SpellAbilities. Forgot about that

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
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
-
Hellfish - Programmer
- Posts: 1297
- Joined: 07 Jun 2009, 10:41
- Location: South of the Pumphouse
- Has thanked: 110 times
- Been thanked: 169 times
Re: Card Development Questions
by moomarc » 03 Nov 2011, 11:06
Does that mean its there somewhere already? How do I use it?Hellfish wrote:I could've sworn we had a IsTriggered<TriggeredVariable> property... I'll tinker with it a bit.
EDIT: Oh, yeah, TriggeringObjects were moved to SpellAbilities. Forgot about that
I'm just not getting the stupid restrictions right.

- Tatsumasa, the Dragon's Fang script | Open
- Code: Select all
Name:Tatsumasa, the Dragon's Fang
ManaCost:6
Types:Artifact Equipment
Text:Equipped creature gets +5/+5.
K:eqPump 3:+5/+5
A:AB$ Token | Cost$ 6 Exile<1/CARDNAME> | TokenAmount$ 1 | TokenName$ Dragon Spirit | TokenTypes$ Creature,Dragon,Spirit | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 5 | TokenToughness$ 5 | RememberTokens$ True | TokenKeywords$ Flying | SpellDescription$ Put a 5/5 blue Dragon Spirit creature token with flying onto the battlefield. Return Tatsumasa to the battlefield under its owner's control when that token dies.
T:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile |Execute$ TrigReturn | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control.
SVar:TrigReturn:AB$ChangeZone | Cost$ 0 | Origin$ Exile | Destination$ Battlefield | Defined$ Self | SubAbility$ DBCleanUp
SVar:DBCleanUp:DB$Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
End
-Marc
-
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
by Sloth » 03 Nov 2011, 11:53
Does the remembering work here (does the exiled Tatsumasa state "Remembered:...")?moomarc wrote:I'm just not getting the stupid restrictions right.This one also just needs to be restricted to the rembered token...
- Tatsumasa, the Dragon's Fang script | Open
- Code: Select all
Name:Tatsumasa, the Dragon's Fang
ManaCost:6
Types:Artifact Equipment
Text:Equipped creature gets +5/+5.
K:eqPump 3:+5/+5
A:AB$ Token | Cost$ 6 Exile<1/CARDNAME> | TokenAmount$ 1 | TokenName$ Dragon Spirit | TokenTypes$ Creature,Dragon,Spirit | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 5 | TokenToughness$ 5 | RememberTokens$ True | TokenKeywords$ Flying | SpellDescription$ Put a 5/5 blue Dragon Spirit creature token with flying onto the battlefield. Return Tatsumasa to the battlefield under its owner's control when that token dies.
T:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile |Execute$ TrigReturn | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control.
SVar:TrigReturn:AB$ChangeZone | Cost$ 0 | Origin$ Exile | Destination$ Battlefield | Defined$ Self | SubAbility$ DBCleanUp
SVar:DBCleanUp:DB$Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
End
I would change the continuous static ability to use "SetPower" and "SetToughness" instead of "AddPower" and "AddToughness" (so it works correctly with other P/T setting cards like Mirror Entity), otherwise I'm ok with it.moomarc wrote:Firstly, here's the new script for Saproling Burst with the static pump. Thanks Sol. Definitely cleaner this way. It was a good script to learn some backroads though. It all works according to the rulings etc except that the pump is on the host rather than token. Let me know if it can be committed like this.
- Saproling Burst | Open
- Name:Saproling Burst
ManaCost:4 G
Types:Enchantment
Text:no text
K:Fading:7
A:AB$ Token | Cost$ SubCounter<1/FADE> | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenImage$ G X X Saproling | TokenColors$ Green | TokenPower$ 0 | TokenToughness$ 0 | RememberTokens$ True | TokenKeywords$ This creature's power and toughness are each equal to the number of fade counters on CARDNAME. | SpellDescription$ Put a green Saproling creature token onto the battlefield. It has "This creature's power and toughness are each equal to the number of fade counters on CARDNAME."
S:Mode$ Continuous | Affected$ Creature.IsRemembered | AddPower$ X | AddToughness$ X | Description$ HIDDEN It has "This creature's power and toughness are each equal to the number of fade counters on Saproling Burst."
SVar:X:Count$CardCounters.FADE
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Execute$ DestroyRemembered | TriggerDescription$ When CARDNAME leaves the battlefield, destroy all tokens put onto the battlefield with CARDNAME. They can't be regenerated.
SVar:DestroyRemembered:DB$DestroyAll | Cost$ 0 | ValidCards$ Creature.IsRemembered | NoRegen$ True | SubAbility$ DBCleanUp
SVar:DBCleanUp:DB$Cleanup | ClearRemembered$ True
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/saproling_burst.jpg
SetInfo:NMS|Rare|http://magiccards.info/scans/en/ne/113.jpg
Oracle:Fading 7 (This enchantment enters the battlefield with seven fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\nRemove a fade counter from Saproling Burst: Put a green Saproling creature token onto the battlefield. It has "This creature's power and toughness are each equal to the number of fade counters on Saproling Burst."\nWhen Saproling Burst leaves the battlefield, destroy all tokens put onto the battlefield with Saproling Burst. They can't be regenerated.
End
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Card Development Questions
by Iran » 03 Nov 2011, 12:30
I see these ones too Infused Arrows, Hex Parasitefriarsol wrote:Yea SubCounter doesn't quite have that capability yet. I even noted which cards would benefit from adding it:jeffwadsworth wrote:Looking at Power Conduit in light of Sol's Wandering Mage. Would something like SubCounter<1/Any/Permanent.YouCtrl/a permanent you control> be doable?
Also testing Ghave, Guru of Spores. Its SubCounter<1/P1P1/Creature.YouCtrl/a creature you control> does not let you choose a creature. I take it that AddCounter was the only cost type coded for this?
// Here are the cards that have RemoveCounter<Type>
// Ion Storm, Noviken Sages, Ghave, Guru of Spores, Power Conduit (any
// Counter is tough),
// Quillspike, Rift Elemental, Sage of Fables, Spike Rogue
Last edited by Iran on 03 Nov 2011, 12:44, edited 1 time in total.
Re: Card Development Questions
by moomarc » 03 Nov 2011, 12:40
Well spotted. It seems that because the card is exiled as part of the cost, it isn't around when the RememberTokens fires. If exile is removed from the cost then everything works (except for it not being exiled of courseSloth wrote:Does the remembering work here (does the exiled Tatsumasa state "Remembered:...")?moomarc wrote:I'm just not getting the stupid restrictions right.This one also just needs to be restricted to the rembered token...
- Tatsumasa, the Dragon's Fang script | Open
- Code: Select all
Name:Tatsumasa, the Dragon's Fang
ManaCost:6
Types:Artifact Equipment
Text:Equipped creature gets +5/+5.
K:eqPump 3:+5/+5
A:AB$ Token | Cost$ 6 Exile<1/CARDNAME> | TokenAmount$ 1 | TokenName$ Dragon Spirit | TokenTypes$ Creature,Dragon,Spirit | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 5 | TokenToughness$ 5 | RememberTokens$ True | TokenKeywords$ Flying | SpellDescription$ Put a 5/5 blue Dragon Spirit creature token with flying onto the battlefield. Return Tatsumasa to the battlefield under its owner's control when that token dies.
T:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile |Execute$ TrigReturn | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control.
SVar:TrigReturn:AB$ChangeZone | Cost$ 0 | Origin$ Exile | Destination$ Battlefield | Defined$ Self | SubAbility$ DBCleanUp
SVar:DBCleanUp:DB$Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
End

On a side note, this card has some strange interactions I'm not quite sure of how they should work. If Doubling Season is in play, 2 tokens will be generated, both remembered by Tatsumasa. If one dies the other is still remembered. So if Tatsumasa is then exiled by Oblivion Ring, destroying the second dragon returns it to the battlefield. Is this right?
Thanks. I'm still trying to get a grasp on all the different elements for scripting. I've made the changes now so I'll just wait for you or Sol to give the final 'All Clear' before I commit.Sloth wrote:I would change the continuous static ability to use "SetPower" and "SetToughness" instead of "AddPower" and "AddToughness" (so it works correctly with other P/T setting cards like Mirror Entity), otherwise I'm ok with it.moomarc wrote:Firstly, here's the new script for Saproling Burst with the static pump. Thanks Sol. Definitely cleaner this way. It was a good script to learn some backroads though. It all works according to the rulings etc except that the pump is on the host rather than token. Let me know if it can be committed like this.
- Saproling Burst | Open
- Name:Saproling Burst
ManaCost:4 G
Types:Enchantment
Text:no text
K:Fading:7
A:AB$ Token | Cost$ SubCounter<1/FADE> | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenImage$ G X X Saproling | TokenColors$ Green | TokenPower$ 0 | TokenToughness$ 0 | RememberTokens$ True | TokenKeywords$ This creature's power and toughness are each equal to the number of fade counters on CARDNAME. | SpellDescription$ Put a green Saproling creature token onto the battlefield. It has "This creature's power and toughness are each equal to the number of fade counters on CARDNAME."
S:Mode$ Continuous | Affected$ Creature.IsRemembered | SetPower$ X | SetToughness$ X | Description$ HIDDEN It has "This creature's power and toughness are each equal to the number of fade counters on Saproling Burst."
SVar:X:Count$CardCounters.FADE
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Execute$ DestroyRemembered | TriggerDescription$ When CARDNAME leaves the battlefield, destroy all tokens put onto the battlefield with CARDNAME. They can't be regenerated.
SVar:DestroyRemembered:DB$DestroyAll | Cost$ 0 | ValidCards$ Creature.IsRemembered | NoRegen$ True | SubAbility$ DBCleanUp
SVar:DBCleanUp:DB$Cleanup | ClearRemembered$ True
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/saproling_burst.jpg
SetInfo:NMS|Rare|http://magiccards.info/scans/en/ne/113.jpg
Oracle:Fading 7 (This enchantment enters the battlefield with seven fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\nRemove a fade counter from Saproling Burst: Put a green Saproling creature token onto the battlefield. It has "This creature's power and toughness are each equal to the number of fade counters on Saproling Burst."\nWhen Saproling Burst leaves the battlefield, destroy all tokens put onto the battlefield with Saproling Burst. They can't be regenerated.
End
-Marc
-
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
by Iran » 03 Nov 2011, 13:37
Two mecanism that I miss in the forge:
1) Splice onto Arcane (cards like Blessed Breath, Kodama's Might, etc.. can use it)
2) cast CARDNAME(or cards) without paying it's (their) mana costs (cards like Hellcarver Demon, Knowledge Pool, Wrexial, the Risen Deep, Twinning Glass, Shell of the Last Kappa, etc.. can use it)
Obs: I think that cards like Knowledge Pool will need a button below the button of exile and then you click in this button to see the cards and cast them without paying your mana cost. The problem is separate cards exiled with Knowledge Pool (for example) from the cards exiled by others cards (like Hellcarver Demon for example)
thanks
1) Splice onto Arcane (cards like Blessed Breath, Kodama's Might, etc.. can use it)
2) cast CARDNAME(or cards) without paying it's (their) mana costs (cards like Hellcarver Demon, Knowledge Pool, Wrexial, the Risen Deep, Twinning Glass, Shell of the Last Kappa, etc.. can use it)
Obs: I think that cards like Knowledge Pool will need a button below the button of exile and then you click in this button to see the cards and cast them without paying your mana cost. The problem is separate cards exiled with Knowledge Pool (for example) from the cards exiled by others cards (like Hellcarver Demon for example)
thanks
Last edited by Iran on 03 Nov 2011, 19:50, edited 1 time in total.
Re: Card Development Questions
by friarsol » 03 Nov 2011, 13:52
Infused Arrows is already supported, as it removes counters from itself. Hex Parasite isn't removing Counters as a cost. The issue with this card is it is removing "any" counters which I don't believe is supported in AF_RemoveCounter yet.Iran wrote:I see these ones too Infused Arrows, Hex Parasite
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Card Development Questions
by Hellfish » 03 Nov 2011, 13:53
@Marc:
The problem with SpellAbilities storing the Triggered<Variable>s is that only SpellAbilities in the same ability "chain" have access to them, so a triggered ability that fires later is a new "chain" and has no access to the same Triggered<Variables> as the first. Sol implemented this and he had a good reason for it but I can't remember what it was.I guess I could add a parameter to triggers that would add specified Triggered<Variable>s to the host card's rememberedlist a'la "RememberTriggered$ Attacker,Blocker" and you could use it that way?
The problem with SpellAbilities storing the Triggered<Variable>s is that only SpellAbilities in the same ability "chain" have access to them, so a triggered ability that fires later is a new "chain" and has no access to the same Triggered<Variables> as the first. Sol implemented this and he had a good reason for it but I can't remember what it was.I guess I could add a parameter to triggers that would add specified Triggered<Variable>s to the host card's rememberedlist a'la "RememberTriggered$ Attacker,Blocker" and you could use it that way?
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
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
-
Hellfish - Programmer
- Posts: 1297
- Joined: 07 Jun 2009, 10:41
- Location: South of the Pumphouse
- Has thanked: 110 times
- Been thanked: 169 times
Re: Card Development Questions
by Sloth » 03 Nov 2011, 15:48
I think the problem would be that when a trigger fires twice a turn and two delayed triggers are created only one list of remembered can be stored. A better solution would be to pass on triggering objects to delayed triggers that are created by triggers.Hellfish wrote:@Marc:
I guess I could add a parameter to triggers that would add specified Triggered<Variable>s to the host card's rememberedlist a'la "RememberTriggered$ Attacker,Blocker" and you could use it that way?
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Card Development Questions
by Hellfish » 03 Nov 2011, 16:13
Yeah, that is a problem. Unfortunately, that solution can't be done because the delayed trigger is like a regular trigger in that it's ability isn't created until it is time to run it, so Triggeredvariables has nowhere to be passed on to when the Delayed trigger is created..
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
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
-
Hellfish - Programmer
- Posts: 1297
- Joined: 07 Jun 2009, 10:41
- Location: South of the Pumphouse
- Has thanked: 110 times
- Been thanked: 169 times
Re: Card Development Questions
by jeffwadsworth » 03 Nov 2011, 16:30
Testing Complicate:
Script:
This error occurs when I cycle the card and choose to counter a spell.
Script:
- | Open
- Name:Complicate
ManaCost:2 U
Types:Instant
Text:no text
K:Cycling:2 U
A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ 3 | SpellDescription$ Counter target spell unless its controller pays 3.
T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigCounter | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may counter target spell unless its controller pays 1.
SVar:TrigCounter:SP$ Counter | Cost$ 0 | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ 1
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/complicate.jpg
End
This error occurs when I cycle the card and choose to counter a spell.
- | Open
- This is a Crash Report. An error has occurred. Please save this message to a file.
Please follow the instructions at this address to submit this Crash Report, plus what you were doing at the time:
http://tinyurl.com/3zzrnyb
Reporting bugs in Forge is very important. We thank you for your time.
null
Version:
Forge version SVN
OS: Windows 7 Version: 6.1 Architecture: x86
Java Version: 1.6.0_29 Vendor: Sun Microsystems Inc.
Detailed error trace:
java.lang.NullPointerException
at forge.AllZone.isCardInZone(AllZone.java:521)
at forge.Card.isInZone(Card.java:8105)
at forge.MagicStack.addAndUnfreeze(MagicStack.java:163)
at forge.card.spellability.SpellAbilityRequirements.addAbilityToStack(SpellAbilityRequirements.java:217)
at forge.card.spellability.SpellAbilityRequirements.finishPaying(SpellAbilityRequirements.java:171)
at forge.card.cost.CostPayment.payCost(CostPayment.java:216)
at forge.card.spellability.SpellAbilityRequirements.startPaying(SpellAbilityRequirements.java:158)
at forge.card.spellability.SpellAbilityRequirements.needPayment(SpellAbilityRequirements.java:145)
at forge.card.spellability.SpellAbilityRequirements.finishedTargeting(SpellAbilityRequirements.java:134)
at forge.card.spellability.TargetSelection.chooseTargets(TargetSelection.java:189)
at forge.card.spellability.TargetSelection.chooseCardFromStack(TargetSelection.java:450)
at forge.card.spellability.TargetSelection.chooseValidInput(TargetSelection.java:240)
at forge.card.spellability.TargetSelection.chooseTargets(TargetSelection.java:200)
at forge.card.spellability.SpellAbilityRequirements.fillRequirements(SpellAbilityRequirements.java:110)
at forge.card.spellability.SpellAbilityRequirements.fillRequirements(SpellAbilityRequirements.java:77)
at forge.GameAction.playSpellAbility(GameAction.java:2508)
at forge.MagicStack.chooseOrderOfSimultaneousStackEntry(MagicStack.java:1294)
at forge.MagicStack.chooseOrderOfSimultaneousStackEntryAll(MagicStack.java:1231)
at forge.Phase.passPriority(Phase.java:812)
at forge.ComputerAIGeneral.stackResponse(ComputerAIGeneral.java:520)
at forge.ComputerAIGeneral.stackNotEmpty(ComputerAIGeneral.java:460)
at forge.gui.input.InputControl.updateInput(InputControl.java:242)
at forge.GuiInput.update(GuiInput.java:34)
at java.util.Observable.notifyObservers(Unknown Source)
at java.util.Observable.notifyObservers(Unknown Source)
at forge.MyObservable.updateObservers(MyObservable.java:21)
at forge.gui.input.InputControl.resetInput(InputControl.java:129)
at forge.Phase.passPriority(Phase.java:798)
at forge.MagicStack.add(MagicStack.java:794)
at forge.MagicStack.addAndUnfreeze(MagicStack.java:157)
at forge.card.spellability.SpellAbilityRequirements.addAbilityToStack(SpellAbilityRequirements.java:217)
at forge.card.spellability.SpellAbilityRequirements.finishPaying(SpellAbilityRequirements.java:171)
at forge.card.cost.CostPayment.payCost(CostPayment.java:216)
at forge.card.cost.CostPayment.paidCost(CostPayment.java:179)
at forge.card.cost.CostMana$2.done(CostMana.java:385)
at forge.card.cost.CostMana$2.selectCard(CostMana.java:357)
at forge.GuiInput.selectCard(GuiInput.java:103)
at forge.GuiDisplay$18.mousePressed(GuiDisplay.java:577)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
- jeffwadsworth
- Super Tester Elite
- Posts: 1172
- Joined: 20 Oct 2010, 04:47
- Location: USA
- Has thanked: 287 times
- Been thanked: 70 times
Re: Card Development Questions
by Hellfish » 03 Nov 2011, 16:40
@Jeff: I think Sloth fixed that in r11728.Try updating?
EDIT: Ah, nvm.
EDIT: Ah, nvm.
Last edited by Hellfish on 03 Nov 2011, 16:41, edited 1 time in total.
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
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
-
Hellfish - Programmer
- Posts: 1297
- Joined: 07 Jun 2009, 10:41
- Location: South of the Pumphouse
- Has thanked: 110 times
- Been thanked: 169 times
Re: Card Development Questions
by Sloth » 03 Nov 2011, 16:41
The triggered ability should not be an "SP$".jeffwadsworth wrote:Testing Complicate:
Script:
- | Open
- Name:Complicate
ManaCost:2 U
Types:Instant
Text:no text
K:Cycling:2 U
A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ 3 | SpellDescription$ Counter target spell unless its controller pays 3.
T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigCounter | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may counter target spell unless its controller pays 1.
SVar:TrigCounter:SP$ Counter | Cost$ 0 | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ 1
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/complicate.jpg
End
This error occurs when I cycle the card and choose to counter a spell.
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Card Development Questions
by jeffwadsworth » 03 Nov 2011, 19:07
Very true. Unfortunately, this card has issues with NPE's even with the first SP$ Counter if you do not pay the UnlessCost. I will leave it alone for now.Sloth wrote:The triggered ability should not be an "SP$".jeffwadsworth wrote:Testing Complicate:
Script:
- | Open
- Name:Complicate
ManaCost:2 U
Types:Instant
Text:no text
K:Cycling:2 U
A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ 3 | SpellDescription$ Counter target spell unless its controller pays 3.
T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigCounter | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may counter target spell unless its controller pays 1.
SVar:TrigCounter:SP$ Counter | Cost$ 0 | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ 1
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/complicate.jpg
End
This error occurs when I cycle the card and choose to counter a spell.
- jeffwadsworth
- Super Tester Elite
- Posts: 1172
- Joined: 20 Oct 2010, 04:47
- Location: USA
- Has thanked: 287 times
- Been thanked: 70 times
Re: Card Development Questions
by Sloth » 03 Nov 2011, 19:51
Well I did try to fix the NPE you posted. Is it still happening? If yes, this might be a more general problem.jeffwadsworth wrote:Very true. Unfortunately, this card has issues with NPE's even with the first SP$ Counter if you do not pay the UnlessCost. I will leave it alone for now.
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Who is online
Users browsing this forum: No registered users and 23 guests