It is currently 15 Sep 2025, 08:09
   
Text Size

Card Contributions

Post MTG Forge Related Programming Questions Here

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

Re: Card Contributions

Postby moomarc » 14 Mar 2012, 10:19

squee1968 wrote:Yep, that would be all of them, except of course for Monsoon, which has been deemed unfair to the AI. Thanks to you for caring enough to fix and add these cards for me. I'll make sure your good deeds will not go unpunished, by which I mean that I'll soon be screwing up more scripts that you can fix. :)
More than happy to help. That way I can leave Sloth and the other code-savvy devs to tackle the hard stuff... which reminds me, back to trying to figure out how to crack "divided as you choose" :mrgreen:
-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 Contributions

Postby squee1968 » 20 Mar 2012, 15:06

Some of these might need help to make the grade.

Code: Select all
Name:Silvergill Douser
ManaCost:1 U
Types:Creature Merfolk Wizard
Text:no text
PT:1/1
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | Secondary$ True | NumAtt$ -X | SpellDescription$ {T}: Target creature gets -X/-0 until end of turn, where X is the number of Merfolk you control
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | Secondary$ True | NumAtt$ -Y | SpellDescription$ {T}: Target creature gets -X/-0 until end of turn, where X is the number of Faeries you control
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -Z | SpellDescription$ {T}: Target creature gets -X/-0 until end of turn, where X is the number of Merfolk and Faeries you control
SVar:X:Count$TypeYouCtrl.Merfolk
SVar:Y:Count$TypeYouCtrl.Faerie
SVar:Z:SVar$X/Plus.Y
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/silvergill_douser.jpg
SetInfo:LRW|Common|http://magiccards.info/scans/lw/en/87.jpg
Oracle:{T}: Target creature gets -X/-0 until end of turn, where X is the number of Merfolk and/or Faeries you control.
End
Code: Select all
Name:Somnophore
ManaCost:2 U U
Types:Creature Illusion
Text:no text
PT:2/2
K:Flying
T:Mode$ DamageDone | ValidSource$ Creature.Self | ValidTarget$ Opponent | Execute$ TrigTapOpp | IsCurse$ True | TriggerDescription$ Whenever CARDNAME deals damage to a player, tap target creature that player controls.
T:Mode$ DamageDone | ValidSource$ Creature.Self | ValidTarget$ You | Execute$ TrigTapYou | IsCurse$ True | Secondary$ True | TriggerDescription$ Whenever CARDNAME deals damage to a player, tap target creature that player controls.
SVar:TrigTapOpp:AB$ Tap | Cost$ 0 | ValidTgts$ Creature.YouDontCtrl | SubAbility$ DBSomnophoreAnimate | TriggerDescription$ That creature doesn't untap during its controller's untap step for as long as CARDNAME remains on the battlefield.
SVar:TrigTapYou:DB$ Tap | ValidTgts$ Creature.YouCtrl | SubAbility$ DBSomnophoreAnimate | TriggerDescription$ That creature doesn't untap during its controller's untap step for as long as CARDNAME remains on the battlefield.
SVar:DBSomnophoreAnimate:DB$ Animate | Defined$ Targeted | HiddenKeywords$ HIDDEN CARDNAME doesn't untap during your untap step. | UntilHostLeavesPlay$ True
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/somnophore.jpg
SetInfo:USG|Rare|http://magiccards.info/scans/us/en/97.jpg
Oracle:Flying\nWhenever Somnophore deals damage to a player, tap target creature that player controls. That creature doesn't untap during its controller's untap step for as long as Somnophore remains on the battlefield.
End
Code: Select all
Name:Soothsaying
ManaCost:U
Types:Enchantment
Text:no text
A:AB$ Shuffle | Cost$ 3 U U | Defined$ You | SpellDescription$ Shuffle your library.
A:AB$ RearrangeTopOfLibrary | Cost$ X | Defined$ You | NumCards$ X | SpellDescription$ Look at the top X cards of your library, then put them back in any order.
SVar:X:Count$xPaid
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/soothsaying.jpg
SetInfo:MMQ|Uncommon|http://magiccards.info/scans/mm/en/104.jpg
Oracle:{3}{U}{U}: Shuffle your library.\n{X}: Look at the top X cards of your library, then put them back in any order.
End
Code: Select all
Name:Soul's Grace
ManaCost:1 W
Types:Instant
Text:no text
A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBGainLife | SpellDescription$ You gain life equal to target creature's power.
SVar:DBGainLife:DB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X
SVar:X:Targeted$CardPower
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/souls_grace.jpg
SetInfo:ALA|Common|http://magiccards.info/scans/ala/en/28.jpg
Oracle:You gain life equal to target creature's power.
End
Code: Select all
Name:Soul's Majesty
ManaCost:4 G
Types:Sorcery
Text:no text
A:SP$ Pump | Cost$ 4 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBDraw | SpellDescription$ Draw cards equal to the power of target creature you control.
SVar:DBDraw:DB$ Draw | NumCards$ X
SVar:X:Targeted$CardPower
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/souls_majesty.jpg
SetInfo:CFX|Rare|http://magiccards.info/scans/cfx/en/92.jpg
Oracle:Draw cards equal to the power of target creature you control.
End
Code: Select all
Name:Spiritual Focus
ManaCost:1 W
Types:Enchantment
Text:no text
T:Mode$ Discarded | ValidCard$ Card.YouCtrl | ValidCause$ Card.YouDontCtrl | Execute$ TrigGainLife | TriggerDescription$ Whenever a spell or ability an opponent controls causes you to discard a card,
SVar:TrigGainLife:DB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 2 | SubAbility$ DBDraw | TriggerDescription$ you gain 2 life and
SVar:DBDraw:DB$ Draw | NumCards$ 1 | OptionalDecider$ You | SpellDescription$ you may draw a card.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/spiritual_focus.jpg
SetInfo:MMQ|Rare|http://magiccards.info/scans/mm/en/49.jpg
Oracle:Whenever a spell or ability an opponent controls causes you to discard a card, you gain 2 life and you may draw a card.
End
Code: Select all
Name:Stalking Yeti
ManaCost:2 R R
Types:Snow Creature Yeti
Text:no text
PT:3/3
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, if it's on the battlefield, it deals damage equal to its power to target creature an opponent controls
SVar:TrigDamage:AB$ DealDamage | Cost$ 0 | IsPresent$ Card.Self | PresentZone$ Battlefield | ValidTgts$ Creature.YouDontCtrl| TgtPrompt$ Select target creature you don't control | NumDmg$ X | SubAbility$ DBDamage | SpellDescription$ and that creature deals damage equal to its power to CARDNAME.
SVar:DBDamage:DB$DealDamage | Defined$ Self | DamageSource$ Targeted | NumDmg$ Y
A:AB$ ChangeZone | Cost$ 2 S | Origin$ Battlefield | Destination$ Hand | SorcerySpeed$ True | SpellDescription$ Return CARDNAME to its owner's hand. Activate this ability only any time you could cast a sorcery.
SVar:X:Count$CardPower
SVar:Y:Targeted$CardPower
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/stalking_yeti.jpg
SetInfo:CSP|Uncommon|http://magiccards.info/scans/cs/en/98.jpg
Oracle:When Stalking Yeti enters the battlefield, if it's on the battlefield, it deals damage equal to its power to target creature an opponent controls and that creature deals damage equal to its power to Stalking Yeti.\n{2}{S} Return Stalking Yeti to its owner's hand. Activate this ability only any time you could cast a sorcery. ({S} can be paid with one mana from a snow permanent.)
End
Code: Select all
Name:Stir the Pride
ManaCost:4 W
Types:Instant
Text:no text
A:SP$ PumpAll | Cost$ 4 W | NumAtt$ 2 | NumDef$ 2 | ValidCards$ Creature.YouCtrl | PreCostDesc$ Choose one : | SpellDescription$ Creatures you control get +2/+2 until end of turn;
A:SP$ AnimateAll | Cost$ 4 W | ValidCards$ Creature.YouCtrl | Triggers$ TrigDamage | sVars$ GainLife,X | SpellDescription$ or until end of turn, creatures you control gain "Whenever this creature deals damage, you gain that much life."
A:SP$ AnimateAll | Cost$ 5 W W | ValidCards$ Creature.YouCtrl | Triggers$ TrigDamage | sVars$ GainLife,X | SubAbility$ DBPump | PrecostDesc$ Entwine 1 W | SpellDescription$ (Choose both if you pay the entwine cost.)
SVar:DBPump:DB$PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ 2 | NumDef$ 2
SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ GainLife | TriggerZones$ Battlefield
SVar:GainLife:AB$ GainLife | Cost$ 0 | LifeAmount$ X
SVar:X:TriggerCount$DamageAmount
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/stir_the_pride.jpg
SetInfo:DST|Uncommon|http://magiccards.info/scans/ds/en/16.jpg
Oracle:Choose one — Creatures you control get +2/+2 until end of turn; or until end of turn, creatures you control gain "Whenever this creature deals damage, you gain that much life."\nEntwine {1}{W} (Choose both if you pay the entwine cost.)
End
Code: Select all
Name:Strength of the Tajuru
ManaCost:X G G
Types:Instant
Text:no text
K:Multikicker 1
A:AB$ PutCounter | CounterType$ P1P1 | CounterNum$ X | ValidTgts$ Creature | TargetMin$ 1 | TargetMax$ Y | TargetUnique$ True | TgtPrompt$ Select target creature | SpellDescription$ Choose target creature, then choose another target creature for each time Strength of the Tajuru was kicked. Put X +1/+1 counters on each of them.
SVar:Y:Count$TimesKicked/Plus.1
SVar:X:Count$xPaid
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/strength_of_the_tajuru.jpg
SetInfo:WWK|Rare|http://magiccards.info/scans/wwk/en/113.jpg
Oracle:Multikicker {1} (You may pay an additional {1} any number of times as you cast this spell.)\nChoose target creature, then choose another target creature for each time Strength of the Tajuru was kicked. Put X +1/+1 counters on each of them.
End
Code: Select all
Name:Surprise Deployment
ManaCost:3 W
Types:Instant
Text:no text
A:SP$ ChangeZone | Cost$ 3 W | Origin$ Hand | Destination$ Battlefield | OptionalDecider$ You | ChangeType$ Creature.nonWhite | ChangeNum$ 1 | RememberChanged$ True | ForgetOtherRemembered$ True | TgtPrompt$ Select target creature | ActivationPhases$ BeginCombat->EndCombat | SubAbility$ DBAnimate | SpellDescription$ Cast CARDNAME only during combat. You may put a nonwhite creature card from your hand onto the battlefield. At the beginning of the next end step, return that creature to your hand. (Return it only if it's on the battlefield.)
SVar:DBAnimate:DB$ Animate | Defined$ Remembered | Triggers$ TrigBounce | sVars$ TrigReturn
SVar:TrigBounce:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigReturn | TriggerDescription$ At the beginning of the next end step, return CARDNAME to its owner's hand.
SVar:TrigReturn:AB$ ChangeZone | Cost$ 0 | Defined$ Remembered | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/surprise_deployment.jpg
SetInfo:PLS|Uncommon|http://magiccards.info/scans/ps/en/18.jpg
Oracle:Cast Surprise Deployment only during combat.\nYou may put a nonwhite creature card from your hand onto the battlefield. At the beginning of the next end step, return that creature to your hand. (Return it only if it's on the battlefield.)
End
Last edited by squee1968 on 21 Mar 2012, 16:19, edited 2 times in total.
squee1968
 
Posts: 254
Joined: 18 Nov 2011, 03:28
Has thanked: 110 times
Been thanked: 45 times

Re: Card Contributions

Postby moomarc » 20 Mar 2012, 16:33

Snow mana doesn't seem to work at the moment, so I haven't added Stalking Yeti. But it looks good otherwise. And I've added Surprise Deployment so far (looked like a nifty combo so started with those two :D ). Thanks!

I don't have any more time to test the others right now so if no one else has yet I'll get back to testing and adding them tomorrow.

EDIT: Can't add Silvergill Douser because creatures that are both Faeries and Merfolk should only be counted once. So TypeYouCtrl has to be expanded to take further restrictions then use SVar:Z:Count$TypeYouCtrl.Merfolk+nonFaerie/Plus.Y (where Y counts the Faeries you control including those that are both types).

EDIT: Added Somnophore, Soothsaying, Soul's Grace and Soul's Majesty. I'll check the last three tomorrow.
Last edited by moomarc on 21 Mar 2012, 14:49, edited 1 time in total.
-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 Contributions

Postby moomarc » 21 Mar 2012, 10:16

@Jeff and Squee: I just added 'TargetedPlayerCtrl' restriction to valid targets. This handles situations like Keeper of the Dead where the target has to be chosen before the spell resolves, and therefore before it can be remembered for RememberedPlayerCtrl. I'm busy doing Searing Blaze now. :D
-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 Contributions

Postby Sloth » 21 Mar 2012, 19:34

moomarc wrote:EDIT: Can't add Silvergill Douser because creatures that are both Faeries and Merfolk should only be counted once. So TypeYouCtrl has to be expanded to take further restrictions then use SVar:Z:Count$TypeYouCtrl.Merfolk+nonFaerie/Plus.Y (where Y counts the Faeries you control including those that are both types).
What about using "SVar:X:Count$Valid Merfolk.YouCtrl,Faerie.YouCtrl"?
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Contributions

Postby moomarc » 21 Mar 2012, 19:48

Sloth wrote:
moomarc wrote:EDIT: Can't add Silvergill Douser because creatures that are both Faeries and Merfolk should only be counted once. So TypeYouCtrl has to be expanded to take further restrictions then use SVar:Z:Count$TypeYouCtrl.Merfolk+nonFaerie/Plus.Y (where Y counts the Faeries you control including those that are both types).
What about using "SVar:X:Count$Valid Merfolk.YouCtrl,Faerie.YouCtrl"?
Firstly, I didn't realise we could use comma-separated values. :D But will that count creatures that are both faeries and merfolk once or twice (think changelings)?
-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 Contributions

Postby Sloth » 21 Mar 2012, 21:14

moomarc wrote:
Sloth wrote:
moomarc wrote:EDIT: Can't add Silvergill Douser because creatures that are both Faeries and Merfolk should only be counted once. So TypeYouCtrl has to be expanded to take further restrictions then use SVar:Z:Count$TypeYouCtrl.Merfolk+nonFaerie/Plus.Y (where Y counts the Faeries you control including those that are both types).
What about using "SVar:X:Count$Valid Merfolk.YouCtrl,Faerie.YouCtrl"?
Firstly, I didn't realise we could use comma-separated values. :D But will that count creatures that are both faeries and merfolk once or twice (think changelings)?
This redirects to the normal valid card parsing. Any card can only be counted once.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Contributions

Postby moomarc » 22 Mar 2012, 13:00

Added Silvergill Douser. (Thanks for the tip Sloth. Question though: Why do we have TypeYouCtrl when we could just use Valid Type.YouCtrl)

Edit: Strength of the Tajuru doesn't work (even once you change it to A:SP and give it a cost :wink: ). The way things are set up at the moment, you have to select targets before you pay costs, and therefore before you've decided the value of X.

Edit2: Added Spiritual Focus (only small tweaks needed)

Edit3: Added Stir the Pride. That's all for this batch then. Thanks Squee!
-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 Contributions

Postby squee1968 » 23 Mar 2012, 07:49

I already have the next batch for you.

Code: Select all
Name:Scythe of the Wretched
ManaCost:2
Types:Artifact Equipment
Text:no text
K:eqPump 4:+2/+2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.wasDealtDamageByHostThisTurn | Execute$ ScytheReturn | TriggerDescription$ Whenever a creature dealt damage by equipped creature this turn dies, return that card to the battlefield under your control. Attach CARDNAME to that creature.
SVar:ScytheReturn:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Defined$ TriggeredCard | RememberChanged$ True | SubAbility$ ScytheAttach
SVar:ScytheAttach:DB$ Attach | Defined$ Remembered
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/scythe_of_the_wretched.jpg
SetInfo:MRD|Rare|http://magiccards.info/scans/mi/en/239.jpg
Oracle:Equipped creature gets +2/+2.\nWhenever a creature dealt damage by equipped creature this turn dies, return that card to the battlefield under your control. Attach Scythe of the Wretched to that creature.\nEquip {4}
End
Code: Select all
Name:Stonehewer Giant
ManaCost:3 W W
Types:Creature Giant Warrior
Text:no text
PT:4/4
A:AB$ChangeZone | Cost$ 1 W T | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.Equipment | ChangeNum$ 1 | RememberChanged$ True | SubAbility$ StonehewerAttach | SpellDescription$ Search your library for an Equipment card and put it onto the battlefield. Attach it to a creature you control. Then shuffle your library.
SVar:WindwalkerAttach:DB$ Attach | Object$ Remembered | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBCleanup
SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/stonehewer_giant.jpg
SetInfo:MOR|Rare|http://magiccards.info/scans/mt/en/24.jpg
Oracle:Vigilance\n{1}{W}, {T}: Search your library for an Equipment card and put it onto the battlefield. Attach it to a creature you control. Then shuffle your library.
End
Code: Select all
Name:Sway of Illusion
ManaCost:1 U
Types:Instant
Text:no text
A:SP$ ChooseColor | Cost$ 1 U | Defined$ You | SubAbility$ DBSwayAnimate | SpellDescription$ Any number of target creatures become the color of your choice until end of turn.
SVar:DBSwayAnimate:DB$ Animate | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ MaxTgts | TgtPrompt$ Select target creatures | Colors$ ChosenColor | OverwriteColors$ True | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | NumCards$ 1
SVar:MaxTgts:Count$Valid Creature
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/sway_of_illusion.jpg
SetInfo:INV|Uncommon|http://magiccards.info/scans/in/en/77.jpg
Oracle:Any number of target creatures become the color of your choice until end of turn.\nDraw a card.
End
Code: Select all
Name:Sylvan Hierophant
ManaCost:1 G
Types:Creature Human Cleric
Text:no text
PT:1/2
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME dies, exile CARDNAME, then return another target creature card from your graveyard to your hand.
SVar:TrigExile:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Exile | SubAbility$ DBHierophantChange
SVar:DBHierophantChange:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.Other+YouCtrl
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/sylvan_hierophant.jpg
SetInfo:WTH|Uncommon|http://magiccards.info/scans/wl/en/83.jpg
Oracle:When Sylvan Hierophant dies, exile Sylvan Hierophant, then return another target creature card from your graveyard to your hand.
End
Code: Select all
Name:Syphon Flesh
ManaCost:4 B
Types:Sorcery
Text:no text
A:SP$ Sacrifice | Cost$ 4 B | Defined$ Opponent | SacValid$ Creature | SacMessage$ Creature | SubAbility$ DBToken | SpellDescription$ Each other player sacrifices a creature. You put a 2/2 black Zombie creature token onto the battlefield for each creature sacrificed this way.
SVar:DBToken:DB$Token | TokenImage$ B 2 2 Zombie | TokenName$ Zombie | TokenColors$ Black | TokenTypes$ Creature,Zombie | TokenPower$ 2 | TokenToughness$ 2 | TokenOwner$ You | TokenAmount$ 1
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/syphon_flesh.jpg
SetInfo:COM|Uncommon|http://magiccards.info/scans/cmd/en/103.jpg
Oracle:Each other player sacrifices a creature. You put a 2/2 black Zombie creature token onto the battlefield for each creature sacrificed this way.
End
Code: Select all
Name:Syphon Mind
ManaCost:3 B
Types:Sorcery
Text:no text
A:SP$ Discard | Cost$ 3 B | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumCards$ 1 | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ Each other player discards a card. You draw a card for each card discarded this way.
SVar:DBDraw:DB$ Draw | Cost$ 0 | NumCards$ X
SVar:X:Remembered$Amount
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/syphon_mind.jpg
SetInfo:COM|Common|http://magiccards.info/scans/cmd/en/104.jpg
Oracle:Each other player discards a card. You draw a card for each card discarded this way.
End
Code: Select all
Name:Tattoo Ward
ManaCost:2 W
Types:Enchantment Aura
Text:no text
K:Enchant creature
A:SP$ Attach | Cost$ 2 W | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Protection from enchantments | Description$ Enchanted creature gets +1/+1 and has protection from enchantments.
A:AB$ Destroy | Cost$ Sac<1/CARDNAME> | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment | SpellDescription$ Destroy target enchantment.
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/tattoo_ward.jpg
SetInfo:xxx|Uncommon|http://magiccards.info/scans/od/en/54.jpg
Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has protection from enchantments. This effect doesn't remove Tattoo Ward.\nSacrifice Tattoo Ward: Destroy target enchantment.
End
Code: Select all
Name:Temporal Cascade
ManaCost:5 U U
Types:Sorcery
Text:no text
A:SP$ ChangeZoneAll | Cost$ 5 U U |  ChangeType$ Card | Origin$ Hand | Destination$ Library | Shuffle$ True | SubAbility$ TemporalChangeAll | PreCostDesc$ Choose one : | SpellDescription$ Each player shuffles his or her graveyard and hand into his or her library;
SVar:TemporalChangeAll:DB$ChangeZoneAll | ChangeType$ Card | Origin$ Graveyard | Destination$ Library | Shuffle$ True
A:SP$ Draw | Cost$ 5 U U | NumCards$ 7 | Defined$ Each | SpellDescription$ or each player draws seven cards.
A:SP$ ChangeZoneAll | Cost$ 7 U U |  ChangeType$ Card | Origin$ Hand | Destination$ Library | Shuffle$ True  | SubAbility$ CascadeChangeAll | PrecostDesc$ Entwine 2 | SpellDescription$ (Choose both if you pay the entwine cost.)
SVar:CascadeChangeAll:DB$ChangeZoneAll | ChangeType$ Card | Origin$ Graveyard | Destination$ Library | Shuffle$ True | SubAbility$ CascadeDraw
SVar:CascadeDraw:DB$Draw | NumCards$ 7 | Defined$ Each
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/temporal_cascade.jpg
SetInfo:MRD|Rare|http://magiccards.info/scans/mi/en/52.jpg
Oracle:Choose one — Each player shuffles his or her hand and graveyard into his or her library; or each player draws seven cards.\nEntwine {2} (Choose both if you pay the entwine cost.)
End
Code: Select all
Name:Territorial Dispute
ManaCost:4 R R
Types:Enchantment
Text:no text
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ LandSac | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, sacrifice CARDNAME unless you sacrifice a land.
SVar:LandSac:AB$ Sacrifice | Cost$ 0 | Amount$ 1 | SacValid$ Land | RememberSacrificed$ True | Optional$ True | SubAbility$ DBSacSelf
SVar:DBSacSelf:DB$ Sacrifice | Defined$ Self | SubAbility$ DBCleanup | ConditionCheckSVar$ X | ConditionSVarCompare$ LT1
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount
SVar:NeedsToPlay:Land.YouCtrl
S:Mode$ CantPlayLand | Player$ Opponent, You | SpellDescription$ Players can't play lands.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/territorial_dispute.jpg
SetInfo:MMQ|Rare|http://magiccards.info/scans/mm/en/217.jpg
Oracle:At the beginning of your upkeep, sacrifice Territorial Dispute unless you sacrifice a land.\nPlayers can't play lands.
End
Code: Select all
Name:Thermal Flux
ManaCost:U
Types:Instant
Text:no text
A:AB$ Animate | Cost$ U | ValidTgts$ Permanent.nonSnow | TgtPrompt$ Select target nonsnow permanent | Types$ Snow | SubAbility$ ThermalDraw | PreCostDesc$ Choose one : | SpellDescription$ Target nonsnow permanent becomes snow until end of turn;
A:AB$ Animate | Cost$ U | ValidTgts$ Permanent.Snow | TgtPrompt$ Select target snow permanent | RemoveTypes$ Snow | SubAbility$ ThermalDraw | SpellDescription$ or target snow permanent isn't snow until end of turn.
SVar:ThermalDraw:DB$ Draw | NumCards$ 1 | NextUpkeep$ True
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/thermal_flux.jpg
SetInfo:CSP|Common|http://magiccards.info/scans/cs/en/49.jpg
Oracle:Choose one — Target nonsnow permanent becomes snow until end of turn; or target snow permanent isn't snow until end of turn.\nDraw a card at the beginning of the next turn's upkeep.
End
EDIT: Fixed the spell description of Sylvan Hierophant to match oracle wording, as per Sloth's suggestion. Thanks, Sloth.
Last edited by squee1968 on 24 Mar 2012, 05:25, edited 1 time in total.
squee1968
 
Posts: 254
Joined: 18 Nov 2011, 03:28
Has thanked: 110 times
Been thanked: 45 times

Re: Card Contributions

Postby Sloth » 23 Mar 2012, 12:45

moomarc wrote:Added Silvergill Douser.
Silvergill Douser should only have one ability that counts Z (there is no choice).

moomarc wrote:(Thanks for the tip Sloth. Question though: Why do we have TypeYouCtrl when we could just use Valid Type.YouCtrl)
Currently Valid will only check the battlefield TypeYouCtrl can check any zone. (=Half finished update)
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Contributions

Postby moomarc » 23 Mar 2012, 12:52

@Squee: I've barely posted Auriok Windwalker and you've already stolen the script... :mrgreen: Some nice cards there. Added Scythe of the Wretched so far (needed some additional code to work because wasDealtDamageByHostThisTurn was checking whether the Scythe had dealt damage instead the equipped creature. It worked on Unscythe because the ability was added to the equipped creature, and that wouldn't work here.)

@ Sloth: I checked Crystal Keep, Gatherer and WotC Community and couldn't find a ruling on Silvergill Douser (I also had a feeling it should just be one), so I kept Squee's implementation of 'and/or'. I'll correct asap.
-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 Contributions

Postby Sloth » 23 Mar 2012, 14:21

squee1968 wrote:I already have the next batch for you.
Some comments just by looking at the scripts:

Stonehewer Giant:
The second effect of the activated ability should not target a creature. The choosing during resolution is not scriptable at the moment.

Sylvan Hierophant:
Could use oracle wording, but looks ok.

Syphon Flesh and Syphon Mind:
I think those cards are scripted correctly, but maybe there will be timing problems when played by the AI.

Temporal Cascade:
Is scripted like the other Entwine cards, so should be ok for now (but one day the concept of additional costs should be implemented correctly).

Territorial Dispute:
Should be ok.

Thermal Flux:
Should be ok.

Thanks Squee.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Contributions

Postby moomarc » 26 Mar 2012, 12:15

Added Sway of Illusion (missed the "Draw a card" in the description, otherwise no problems), Syphon Flesh (you would have received the token zombie even if the opponent didn't have a creature to sacrifice, so fixed that), and Syphon Mind (had to be reworked so as not to be targeted and it needed to clear the remembered list.)

Sylvan Hierophant actually isn't right and can't quite be done at the moment. Firstly the second ability had to be a drawback instead of ability before it would fire at all. Then the main issue: regardless of who controlled the heirophant when it died, the owner would return a card from his/her graveyard. The 2008 ruling states, "If you control Sylvan Hierophant when it goes to the graveyard, you exile the Hierophant and return a creature card from your graveyard to your hand. It doesn’t matter whose graveyard the Hierophant goes to."

Still need to test the others, but one small thing I've noticed is that all your SetInfo links have the /en after the expansion instead of before. Don't think those magiccards.info links are actually used anymore, but if they ever are, they need to work ;) Easiest thing is to just leave the SetInfo and Oracle lines out of your scripts. Before I commit them I run the python scripts we have to add that info error free. That way you also don't miss out sets (eg, Syphon Mind was also in Onslaught).

Great job with the scripts though. Sorry for nitpicking. I guess its just that the more cards you add, the less closely we scrutinize them before committing, so just pointing out some small things you can check and test before posting.

Edit: The Hierophant might be doable by splitting the trigger into ValidCard$Card.Self+YouOwn and ValidCard$Card.Self+YouDontOwn. Will test this.... Nope. Still can't get it to work. I think that by the time the hierophant hits the graveyard, you're already considered the controller.
Last edited by moomarc on 26 Mar 2012, 13:21, edited 1 time in total.
-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 Contributions

Postby squee1968 » 26 Mar 2012, 13:21

Added Sway of Illusion (missed the "Draw a card" in the description, otherwise no problems), Syphon Flesh (you would have received the token zombie even if the opponent didn't have a creature to sacrifice, so fixed that), and Syphon Mind (had to be reworked so as not to be targeted and it needed to clear the remembered list.)
I warned you I'd be screwing up more scripts for you to fix, didn't I? :mrgreen:

Sylvan Hierophant actually isn't right and can't quite be done at the moment. Firstly the second ability had to be a drawback instead of ability before it would fire at all. Then the main issue: regardless of who controlled the heirophant when it died, the owner would return a card from his/her graveyard. The 2008 ruling states, "If you control Sylvan Hierophant when it goes to the graveyard, you exile the Hierophant and return a creature card from your graveyard to your hand. It doesn’t matter whose graveyard the Hierophant goes to."
Oops. That's why pencils have erasers. I'm starting to understand the differences between DB and AB, but have to get more experience (and more feedback like this) before I fully get it. As for the ruling, I don't fully understand why it makes the card not work. When forge takes control of a creature, and it dies, does it go to his grave (even temporarily)? And if so, is that why it won't work? I'm not trying to say that you're incorrect, just trying to learn more about the program. If you say it can't be done, it can't be done. No problemo.

Still need to test the others, but one small thing I've noticed is that all your SetInfo links have the /en after the expansion instead of before. Don't think those magiccards.info links are actually used anymore, but if they ever are, they need to work ;) Easiest thing is to just leave the SetInfo and Oracle lines out of your scripts. Before I commit them I run the python scripts we have to add that info error free. That way you also don't miss out sets (eg, Syphon Mind was also in Onslaught).
I hadn't noticed that I had the links wrong. :oops: I was following the order they are written on the website in the HTML link section. You should've said something sooner. I was just trying to save you a step so that you didn't have to run the scripts. I can either fix the template that I use to put the /en first, or I can just leave them out. Your call.

Great job with the scripts though. Sorry for nitpicking. I guess its just that the more cards you add, the less closely we scrutinize them before committing, so just pointing out some small things you can check and test before posting.
Don't apologize for nitpicking. I need you and the others to nitpick. It's really the only way I'm ever going to learn. I'm pretty much unable to do any playtesting of the cards that I script, due to the fact that I have to restart my computer (sometimes several times) before Forge will start. I reported the crash report in another thread a few weeks ago, but it hasn't been fixed yet (at least for me).

One last point: do you want me to keep posting cards in sets of 10? Or do you want a different amount?
squee1968
 
Posts: 254
Joined: 18 Nov 2011, 03:28
Has thanked: 110 times
Been thanked: 45 times

Re: Card Contributions

Postby moomarc » 26 Mar 2012, 13:53

squee1968 wrote:Oops. That's why pencils have erasers. I'm starting to understand the differences between DB and AB, but have to get more experience (and more feedback like this) before I fully get it. As for the ruling, I don't fully understand why it makes the card not work. When forge takes control of a creature, and it dies, does it go to his grave (even temporarily)? And if so, is that why it won't work? I'm not trying to say that you're incorrect, just trying to learn more about the program. If you say it can't be done, it can't be done. No problemo.
With regards to SP,AB or DB, you will always use either SP or AB as the root ability depending on whether its a spell[SP] (cast from hand or some other zone) or an activated ability[AB] of a creature on the battlefield (or in a few rare cases, activated while in another zone). You will also use AB for the executed ability of a trigger. Other than that every subability should be a DB (and a DB will never be the base ability). That covers the general rule, although you might come across exceptions along the way.

Then with regards to the ruling, the script doesn't work because, and as far as I can tell, by the time it hits your graveyard and the trigger fires you're considered the controller. Even setting PlayerDefined to TriggeredCardController has you pick which creature to return, instead of whoever controlled the Hierophant when it died. I think it might have something to do with the intervening exile of the Hierophant, but I'm not certain. So it seems to be related to problems with 'last known information'. You can see this easily by making the validCard for a 'when this creature dies' trigger Creature.YouOwn. Then donate a creature to the opponent then kill it off. The trigger will still fire although it shouldn't.

squee1968 wrote:I hadn't noticed that I had the links wrong. You should've told me sooner. :oops: I was just trying to save you a step so that you didn't have to run the scripts. I can either fix the template that I use to put the /en first, or I can just leave them out. Your call.
I couldn't have told you sooner because today was the first time I saw it :D I'd still recommend leaving out the setinfo and oracle lines anyway. The scripts takes a few seconds to run so really isn't a hindrance (this was the first time I've come across one of your scripts missing a set though).

squee1968 wrote:I'm pretty much unable to do any playtesting of the cards that I script, due to the fact that I have to restart my computer (sometimes several times) before Forge will start. I reported the crash report in another thread a few weeks ago, but it hasn't been fixed yet (at least for me).

One last point: do you want me to keep posting cards in sets of 10? Or do you want a different amount?
Well now, we can't have active scripters without a functioning version... The latest bug report I see from you was from 17 Feb and the detailed error trace starts with "java.lang.ExceptionInInitializerError". Is that the problem still? Have you tried with the latest daily builds (or are you hooked up to svn?) And do you have any unfinished cards in cardsfolder? Sometimes an incomplete or faulty script causes launch issues.

And as for the amount of scripts to post, ten at a time is fine. One of us get to checking them eventually in between real-life work and trying to get our own stuff in.
-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

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 30 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 30 users online :: 0 registered, 0 hidden and 30 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 30 guests

Login Form