Dark Ascension spoiler season
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Dark Ascension spoiler season
by ArsenalNut » 12 Jan 2012, 05:41
I am working on code modifications to make Soul Seizer // Ghastly Haunting scriptable. I have it to the point where it attaches and takes control after the transform. Now, I need to make the attachment targeting work correctly.
Edit:
Warning script does not quite work yet (see below)
Ok, I added a "controllerWasDealtDamageByThisTurn" property to the Cards.hasProperty(). This allows the attachment to target the correct creatures, but then causes another problem. forge.GameAction.checkStateEffects() checks to see if Auras are attached to a legal permanent. Unfortunately, it uses the ValidTgts from the Attach ability as one of the checks. Well I now have control of some creature but the Soul Seizure didn't do any damage to me this turn so checkStateEffects unenchants my newly acquired creature and sends Ghastly Haunting to the graveyard.
I think checkStateEffects() should not be using the "ValidTgts" for this check. It doesn't matter if the permanent is no longer a valid target because the enchantment is already attached. Now it does matter if the permanent is no longer the proper type listed in the "Enchant <type>" statement. For example, any "Enchant Creature" Auras attached to a Creeping Tar Pit should be removed by State Effects when it transforms back to just a land at the end of turn. I think checkStateEffects() should be using the "Enchant" keywords and comparing the enchanted permanent's type instead of ValidTgts, but I wanted to verify with the Rules Lawyers before I go modifying checkStateEffects.
Edit:
Warning script does not quite work yet (see below)
- Soul Seizer // Ghastly Haunting | Open
- Name:Soul Seizer
ManaCost:3 U U
Types:Creature Spirit
Text:no text
PT:1/3
K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | OptionalDecider$ You | Execute$ TrigTransform | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may transform it. If you do, attach it to target creature that player controls.
SVar:TrigTransform:AB$ SetState | Cost$ 0 | Defined$ Self | Mode$ Transform
SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_seizer.jpg
AlternateMode:DoubleFaced
ALTERNATE
Name:Ghastly Haunting
ManaCost:no cost
Colors:blue
Types:Enchantment Aura
Text:You control enchanted creature.
K:Enchant creature
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature.controllerWasDealtDamageByThisTurn | AILogic$ GainControl
SVar:Picture1:http://www.wizards.com/global/images/magic/general/ghastly_haunting.jpg
End
Ok, I added a "controllerWasDealtDamageByThisTurn" property to the Cards.hasProperty(). This allows the attachment to target the correct creatures, but then causes another problem. forge.GameAction.checkStateEffects() checks to see if Auras are attached to a legal permanent. Unfortunately, it uses the ValidTgts from the Attach ability as one of the checks. Well I now have control of some creature but the Soul Seizure didn't do any damage to me this turn so checkStateEffects unenchants my newly acquired creature and sends Ghastly Haunting to the graveyard.
I think checkStateEffects() should not be using the "ValidTgts" for this check. It doesn't matter if the permanent is no longer a valid target because the enchantment is already attached. Now it does matter if the permanent is no longer the proper type listed in the "Enchant <type>" statement. For example, any "Enchant Creature" Auras attached to a Creeping Tar Pit should be removed by State Effects when it transforms back to just a land at the end of turn. I think checkStateEffects() should be using the "Enchant" keywords and comparing the enchanted permanent's type instead of ValidTgts, but I wanted to verify with the Rules Lawyers before I go modifying checkStateEffects.
So many cards, so little time
-
ArsenalNut - Posts: 512
- Joined: 08 Jul 2011, 03:49
- Has thanked: 27 times
- Been thanked: 121 times
Re: Dark Ascension spoiler season
by Doublestrike » 12 Jan 2012, 08:42
Logo and start button are included in the sprites now. Here's the updated "darkascension" sprite for when the commit happens.moomarc wrote:We should also move the logo into the skins folder so that we can use alternatives in different skins.
---
A joke is a very serious thing.
A joke is a very serious thing.
-
Doublestrike - UI Programmer
- Posts: 715
- Joined: 08 Aug 2011, 09:07
- Location: Bali
- Has thanked: 183 times
- Been thanked: 161 times
Re: Dark Ascension spoiler season
by moomarc » 12 Jan 2012, 09:15
Thanks. I'll probably tweak a bit moreDoublestrike wrote:Logo and start button are included in the sprites now. Here's the updated "darkascension" sprite for when the commit happens.moomarc wrote:We should also move the logo into the skins folder so that we can use alternatives in different skins.

-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: Dark Ascension spoiler season
by Milod » 12 Jan 2012, 10:23
Increasing Devotion does not put any creature tokens into play watsup?
Re: Dark Ascension spoiler season
by Hellfish » 12 Jan 2012, 10:32
Milod: Are you using the latest snapshot build? I think that's required for the code that let's Increasing Devotion decide how many tokens to create.
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: Dark Ascension spoiler season
by ZzzzSleep » 12 Jan 2012, 10:51
Here's a new werewolf! It's Lambholt Elder / Silverpelt Werewolf
While scripting it, I discovered that Scroll Thief is incorrectly coded in v1.2.0. That version has the card draw as an optional ability, but the correct oracle text lists it as a mandatory one.
While scripting it, I discovered that Scroll Thief is incorrectly coded in v1.2.0. That version has the card draw as an optional ability, but the correct oracle text lists it as a mandatory one.
- Code: Select all
Name:Lambholt Elder
ManaCost:2 G
Types:Creature Human Werewolf
Text:no text
PT:1/2
T:Mode$Phase | Phase$ Upkeep | WerewolfTransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if no spells were cast last turn, transform CARDNAME.
AlternateMode:DoubleFaced
Oracle:At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder.
#Shared
SVar:TrigTransform:AB$SetState | Cost$ 0 | Defined$ Self | Mode$ Transform
ALTERNATE
Name:Silverpelt Werewolf
ManaCost:no cost
Colors:green
Types:Creature Werewolf
Text:no text
PT:4/5
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, draw a card.
SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ 1
T:Mode$Phase | Phase$ Upkeep | WerewolfUntransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if a player cast two or more spells last turn, transform CARDNAME.
Oracle:Whenever Silverpelt Werewolf deals combat damage to a player, draw a card.\nAt the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf.
End
Re: Dark Ascension spoiler season
by Sloth » 12 Jan 2012, 11:16
This looks like a hacky solution. The attachement is part of the triggered ability and should be scripted as such (needs AB or DB Attach though). If Soul Seizer transforms through other means there should be no attaching.ArsenalNut wrote:I am working on code modifications to make Soul Seizer // Ghastly Haunting scriptable. I have it to the point where it attaches and takes control after the transform. Now, I need to make the attachment targeting work correctly.
Edit:
Warning script does not quite work yet (see below)
- Soul Seizer // Ghastly Haunting | Open
- Name:Soul Seizer
ManaCost:3 U U
Types:Creature Spirit
Text:no text
PT:1/3
K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | OptionalDecider$ You | Execute$ TrigTransform | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may transform it. If you do, attach it to target creature that player controls.
SVar:TrigTransform:AB$ SetState | Cost$ 0 | Defined$ Self | Mode$ Transform
SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_seizer.jpg
AlternateMode:DoubleFaced
ALTERNATE
Name:Ghastly Haunting
ManaCost:no cost
Colors:blue
Types:Enchantment Aura
Text:You control enchanted creature.
K:Enchant creature
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature.controllerWasDealtDamageByThisTurn | AILogic$ GainControl
SVar:Picture1:http://www.wizards.com/global/images/magic/general/ghastly_haunting.jpg
End
This would be better indeed (it would at least enable scripting Dream Leash). It needs some converting of card scripts though, since auras with "Enchant tapped creature" or "Enchant creature you control" would need a new valid parameter in addition to the plain text.ArsenalNut wrote:forge.GameAction.checkStateEffects() checks to see if Auras are attached to a legal permanent. Unfortunately, it uses the ValidTgts from the Attach ability as one of the checks. Well I now have control of some creature but the Soul Seizure didn't do any damage to me this turn so checkStateEffects unenchants my newly acquired creature and sends Ghastly Haunting to the graveyard.
I think checkStateEffects() should not be using the "ValidTgts" for this check. It doesn't matter if the permanent is no longer a valid target because the enchantment is already attached. Now it does matter if the permanent is no longer the proper type listed in the "Enchant <type>" statement. For example, any "Enchant Creature" Auras attached to a Creeping Tar Pit should be removed by State Effects when it transforms back to just a land at the end of turn. I think checkStateEffects() should be using the "Enchant" keywords and comparing the enchanted permanent's type instead of ValidTgts, but I wanted to verify with the Rules Lawyers before I go modifying checkStateEffects.
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Dark Ascension spoiler season
by moomarc » 12 Jan 2012, 13:50
For quick reference, the four cards we haven't scripted so far:
- Séance | Open
Enchantment
At the beginning of each upkeep, you may exile target creature card from your graveyard. If you do, put a token onto the batttlefield that's a copy of that card except it's a Spirit in addition to its other types. Exile it at the beginning of the next end step.
- Havengul Lich | Open
Creature - Zombie Wizard: You many cast target creature card from a graveyard this turn. When you cast that card this turn, Havengul Lich gains all activated abilities of that card until end of turn.
- *Everwolf/Eternal Wolf/WhatevertheEnglishNameIs | Open
Creature - Wolf
Intimidate
Other Wolf and Werewolf creatures you control get +1/+1.
Werewolf creatures you control that aren't Humans can't transform.
- Altar of the Lost | Open
Artifact
Altar of the Lost enters the battlefield tapped.: Add two mana in any combination of colors to your mana pool. Spend this mana only to cast spells with flashback from a graveyard.
-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: Dark Ascension spoiler season
by friarsol » 12 Jan 2012, 15:41
I had been trying for a while to convert the "Enchant" keywords, but they were mostly a huge pain in the ass and getting in the way when I wrote up AF_Attach. By being able to reuse the Targeting of the Aura, it made the scripting much simpler with what was available at the time. As Sloth suggests, there aren't many cards that have additional targeting restrictions for an Aura Spell so it wasn't a huge deal.Sloth wrote:This would be better indeed (it would at least enable scripting Dream Leash). It needs some converting of card scripts though, since auras with "Enchant tapped creature" or "Enchant creature you control" would need a new valid parameter in addition to the plain text.ArsenalNut wrote:forge.GameAction.checkStateEffects() checks to see if Auras are attached to a legal permanent. Unfortunately, it uses the ValidTgts from the Attach ability as one of the checks. Well I now have control of some creature but the Soul Seizure didn't do any damage to me this turn so checkStateEffects unenchants my newly acquired creature and sends Ghastly Haunting to the graveyard.
I think checkStateEffects() should not be using the "ValidTgts" for this check. It doesn't matter if the permanent is no longer a valid target because the enchantment is already attached. Now it does matter if the permanent is no longer the proper type listed in the "Enchant <type>" statement. For example, any "Enchant Creature" Auras attached to a Creeping Tar Pit should be removed by State Effects when it transforms back to just a land at the end of turn. I think checkStateEffects() should be using the "Enchant" keywords and comparing the enchanted permanent's type instead of ValidTgts, but I wanted to verify with the Rules Lawyers before I go modifying checkStateEffects.
These Attach abilities you are trying to script now should be Attach Drawbacks (including Dominating Licid), so the ValidTgts for the "Spell" portion of that DFC should just be Creature, where the Attach Drawback would be what you are using now for the Spell. This all requires an Attach Drawback to be written up, which hasn't occurred yet.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Dark Ascension spoiler season
by ArsenalNut » 12 Jan 2012, 15:45
I was following the design pattern for Auras that are put on the battlefield from somewhere other than the stack. I understand the concern about transform through some other means though so I'll starting looking at fleshing out the AB and DB portions of the Attach AF. Anybody know why this wasn't done originally? I assume there just wasn't a need.Sloth wrote:This looks like a hacky solution. The attachement is part of the triggered ability and should be scripted as such (needs AB or DB Attach though). If Soul Seizer transforms through other means there should be no attaching.
One of things I noticed while testing was that Ghastly Haunting stayed on the battlefield when it wasn't attached to anything. Should checkStateEffects() be checking for unattached Auras and sending them to the graveyard?
So many cards, so little time
-
ArsenalNut - Posts: 512
- Joined: 08 Jul 2011, 03:49
- Has thanked: 27 times
- Been thanked: 121 times
Re: Dark Ascension spoiler season
by Sloth » 12 Jan 2012, 16:14
There are special game rules for this case (hacky game rulesArsenalNut wrote:I was following the design pattern for Auras that are put on the battlefield from somewhere other than the stack.

Sol wrote AF Attach. I don't know if there were any serious problems keeping him from adding DB's and AB's. It would be great to have them.ArsenalNut wrote:I understand the concern about transform through some other means though so I'll starting looking at fleshing out the AB and DB portions of the Attach AF. Anybody know why this wasn't done originally? I assume there just wasn't a need.
Yes. Rule 303.4c.ArsenalNut wrote:One of things I noticed while testing was that Ghastly Haunting stayed on the battlefield when it wasn't attached to anything. Should checkStateEffects() be checking for unattached Auras and sending them to the graveyard?
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Dark Ascension spoiler season
by friarsol » 12 Jan 2012, 16:24
At the time I was concentrating on getting all of the Auras fixed (since they were completely inconsistent). Once I finished with that, I moved onto something else and just haven't had the time to get back to it. Hopefully there is enough there for you to see what I was trying to do. If you have any specific questions, we should probably start a new thread about it. I just haven't had time in a while to sit down for any length of time and code things up.ArsenalNut wrote:I was following the design pattern for Auras that are put on the battlefield from somewhere other than the stack. I understand the concern about transform through some other means though so I'll starting looking at fleshing out the AB and DB portions of the Attach AF. Anybody know why this wasn't done originally? I assume there just wasn't a need.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Dark Ascension spoiler season
by moomarc » 12 Jan 2012, 17:51
Here's the revised Dark Ascension skin. Its the full folder again in case someone's grabbing it for the first time.
- Attachments
-
darkascension.zip
- Revised skin
- (1.09 MiB) Downloaded 333 times
-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: Dark Ascension spoiler season
by Milod » 12 Jan 2012, 19:08
sorin, lord of innistrad his ultimate brings back all creatures from the cemetry, is there a way to kill the creatures u dont own with dev mode ? because this is cheating on player side
thanks
thanks
Re: Dark Ascension spoiler season
by DeadSpeak » 12 Jan 2012, 22:40
If I'm using the set pictures, in what directory should I be placing the pictures from Dark Ascension, so that they show up in Forge?
thanks in advance.
thanks in advance.
- DeadSpeak
- Posts: 104
- Joined: 25 Dec 2009, 00:14
- Location: Denmark
- Has thanked: 4 times
- Been thanked: 3 times
Who is online
Users browsing this forum: No registered users and 18 guests