It is currently 08 Jun 2025, 16:55
   
Text Size

Dark Ascension spoiler season

Post MTG Forge Related Programming Questions Here

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

Re: Dark Ascension spoiler season

Postby 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)
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
User avatar
ArsenalNut
 
Posts: 512
Joined: 08 Jul 2011, 03:49
Has thanked: 27 times
Been thanked: 121 times

Re: Dark Ascension spoiler season

Postby Doublestrike » 12 Jan 2012, 08:42

moomarc wrote:We should also move the logo into the skins folder so that we can use alternatives in different skins.
Logo and start button are included in the sprites now. Here's the updated "darkascension" sprite for when the commit happens.
Attachments
sprite.png
darkascension skin sprite.
---
A joke is a very serious thing.
User avatar
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

Postby moomarc » 12 Jan 2012, 09:15

Doublestrike wrote:
moomarc wrote:We should also move the logo into the skins folder so that we can use alternatives in different skins.
Logo and start button are included in the sprites now. Here's the updated "darkascension" sprite for when the commit happens.
Thanks. I'll probably tweak a bit more :twisted:
-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: Dark Ascension spoiler season

Postby Milod » 12 Jan 2012, 10:23

Increasing Devotion does not put any creature tokens into play watsup?
Milod
 
Posts: 360
Joined: 20 Jul 2011, 08:57
Has thanked: 4 times
Been thanked: 5 times

Re: Dark Ascension spoiler season

Postby 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
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

Re: Dark Ascension spoiler season

Postby 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.
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
Edit: Oh and if somebody could check this card into source control/dark ascension branch for me, that would be super.
ZzzzSleep
 
Posts: 182
Joined: 29 Oct 2010, 02:19
Has thanked: 18 times
Been thanked: 18 times

Re: Dark Ascension spoiler season

Postby Sloth » 12 Jan 2012, 11:16

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 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: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.
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.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Dark Ascension spoiler season

Postby moomarc » 12 Jan 2012, 13:50

For quick reference, the four cards we haven't scripted so far:
Séance | Open
{2} {W} {W}
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
{3} {U} {B}
Creature - Zombie Wizard
{1} : 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
{1} {R} {G}
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
{3}
Artifact
Altar of the Lost enters the battlefield tapped.
{T} : 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
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: Dark Ascension spoiler season

Postby friarsol » 12 Jan 2012, 15:41

Sloth wrote:
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.
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.
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.

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

Postby ArsenalNut » 12 Jan 2012, 15:45

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.
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.

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
User avatar
ArsenalNut
 
Posts: 512
Joined: 08 Jul 2011, 03:49
Has thanked: 27 times
Been thanked: 121 times

Re: Dark Ascension spoiler season

Postby Sloth » 12 Jan 2012, 16:14

ArsenalNut wrote:I was following the design pattern for Auras that are put on the battlefield from somewhere other than the stack.
There are special game rules for this case (hacky game rules :D ).

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.
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: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?
Yes. Rule 303.4c.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Dark Ascension spoiler season

Postby friarsol » 12 Jan 2012, 16:24

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.
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.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Dark Ascension spoiler season

Postby 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
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: Dark Ascension spoiler season

Postby 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
Milod
 
Posts: 360
Joined: 20 Jul 2011, 08:57
Has thanked: 4 times
Been thanked: 5 times

Re: Dark Ascension spoiler season

Postby 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.
DeadSpeak
 
Posts: 104
Joined: 25 Dec 2009, 00:14
Location: Denmark
Has thanked: 4 times
Been thanked: 3 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 21 guests


Who is online

In total there are 21 users online :: 0 registered, 0 hidden and 21 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 21 guests

Login Form