Board index
Programs with AI or Rules Enforcement
Magic: The Gathering - Duels of the Planeswalkers
Programming Talk



Gravecrawler, 2013 version
Moderator: CCGHQ Admins
8 posts
• Page 1 of 1
Gravecrawler, 2013 version
by thefiremind » 04 Aug 2012, 22:59
Maybe someone remembers that I suggested a way to code Gravecrawler in DotP2012 without using activated abilities. I tried to code it again the same way in DotP2013 and it still works. This is the code:
Pro: no need to use activated abilities.
Con: if someone uses a counterspell that exiles the card, it wouldn't work.
The "con" could be avoided if I could make that triggered ability delayed, and created by a SPELL_RESOLVED trigger, but I don't know if the override will have time to do its job this way. I still have to test it.
EDIT: Removed information that was generated from a mistake.
- Code: Select all
<?xml version='1.0'?>
<CARD_V2>
<FILENAME text="GRAVECRAWLER_222902" />
<CARDNAME text="GRAVECRAWLER" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Strisciante del Sepolcro]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Grabkriecher]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Rampeur des tombes]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Acechatumbas]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[墓所這い]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[무덤을 기어다니는 좀비]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Могильный Выползень]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Rastejador de Túmulo]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="222902" />
<ARTID value="A222902" />
<ARTIST name="Steven Belledin" />
<CASTING_COST cost="{B}" />
<FLASHBACK_COST cost="{B}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Gli evocaghoul di Innistrad possiedono un certo talento, ma permettimi di mostrarti cosa può creare chi ha un vero potere.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Die Ghulrufer von Innistrad sind schon äußerst talentiert, aber ich zeige dir gerne, was jemand mit richtiger Macht alles erzeugen kann.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« Les meneurs de goules d’Innistrad sont certes doués, mais laissez-moi vous montrer ce que quelqu’un de vraiment puissant peut créer. »
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Los llamamuertos de Innistrad tienen talento, pero déjame mostrarte lo que alguien con verdadero poder puede crear.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[「イニストラードのグール呼びにも才能はあるけど、本当の力を持った者が生み出すものを見せてやるよ。」――リリアナ・ヴェス]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[“이니스트라드의 악귀소환술사들이 재능이 없는 건 아니야. 하지만 진정한 힘을 가진 자가 만들어내는 건 수준이 다르지. 잘 봐라.”
—릴리아나 베스]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[«Иннистрадские призыватели упырей довольно талантливы, но позвольте показать вам, что может сотворить тот, кто по-настоящему могуществен».
— Лилиана Весс]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[“Os invocadores de carniçais de Innistrad são muito habilidosos, mas me permita mostrar o que alguém com poder de verdade pode criar.”
— Liliana Vess]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Zombie" />
<EXPANSION value="DKA" />
<RARITY metaname="R" />
<POWER value="2" />
<TOUGHNESS value="1" />
<STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Gravecrawler can’t block.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Lo Strisciante del Sepolcro non può bloccare.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Der Grabkriecher kann nicht blocken.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Le Rampeur des tombes ne peut pas bloquer.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[El Acechatumbas no puede bloquear.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Gravecrawler can’t block.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[무덤을 기어다니는 좀비는 방어할 수 없다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Могильный Выползень не может блокировать.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Rastejador de Túmulo não pode bloquear.]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION>
local characteristics = Object():GetCurrentCharacteristics()
characteristics:Characteristic_Set( CHARACTERISTIC_CANT_BLOCK, 1 )
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<STATIC_ABILITY active_zone="ZONE_GRAVEYARD" filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may cast Gravecrawler from your graveyard as long as you control a Zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Puoi lanciare lo Strisciante del Sepolcro dal tuo cimitero fintanto che controlli uno Zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst den Grabkriecher aus deinem Friedhof wirken, solange du einen Zombie kontrollierst.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous pouvez lancer le Rampeur des tombes depuis votre cimetière tant que vous contrôlez un zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Puedes lanzar el Acechatumbas desde tu cementerio mientras controles un Zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ロックできない。あなたは、あなたがゾンビをコントロールしているかぎり、墓所這いをあなたの墓地から唱えてもよい。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신이 좀비 지속물을 조종하는 한, 당신은 무덤 위를 기어다니는 좀비를 당신의 무덤에서 발동할 수 있다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Вы можете разыграть Могильного Выползня из вашего кладбища, пока вы контролируете Зомби.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Você pode conjurar Rastejador de Túmulo de seu cemitério enquanto controlar um Zumbi.]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION layer="8">
local filter = Object():GetFilter()
filter:Clear()
filter:SetZone( ZONE_IN_PLAY )
filter:AddSubType( CREATURE_TYPE_ZOMBIE )
filter:SetController( EffectController() )
filter:NotTargetted()
if filter:CountStopAt(1) == 0 then
Object():GetCurrentCharacteristics():Characteristic_Set( CHARACTERISTIC_CANT_BE_PLAYED, 1 )
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TRIGGERED_ABILITY internal="1" pre_trigger="1">
<TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="self" to_zone="ZONE_REMOVED_FROM_GAME" from_zone="ZONE_STACK">
override = 1
TriggerObject():PutIntoPlay( Object():GetOwner() )
return true
</TRIGGER>
</TRIGGERED_ABILITY>
<SFX text="COMBAT_CLAW_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
<SFX text="COMBAT_CLAW_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
</CARD_V2>
Pro: no need to use activated abilities.
Con: if someone uses a counterspell that exiles the card, it wouldn't work.

The "con" could be avoided if I could make that triggered ability delayed, and created by a SPELL_RESOLVED trigger, but I don't know if the override will have time to do its job this way. I still have to test it.
EDIT: Removed information that was generated from a mistake.

Last edited by thefiremind on 04 Aug 2012, 23:52, edited 1 time in total.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 722 times
Re: Gravecrawler, 2013 version
by RiiakShiNal » 04 Aug 2012, 23:16
Maybe Flashback is coded in such a way that it puts the card into the hand before casting in which case ZONE_GRAVEYARD would be the ErstWhileErstWhileErstWhile zone which we do not have a function to get.thefiremind wrote:I wanted to restrict the conditions on the triggered ability even more, but the check on the object's zone inside that trigger gives strange results. Here's what the game reports when inside the trigger:
Object():GetZone() = ZONE_IN_PLAY
Object():GetErstwhileZone() = ZONE_STACK
Object():GetErstwhileErstwhileZone() = ZONE_HAND
And this comes from a Gravecrawler that has been discarded and then cast from the graveyard... why doesn't the graveyard appear in any of those results?
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Gravecrawler, 2013 version
by thefiremind » 04 Aug 2012, 23:58
No, that was just a mistake: I forgot to add simple_qualifier="self", so the report that I got was from the Gravecrawler already in play, who saw the other one changing zone, but reported the data about himself anyway (because I was using Object()).
After a lot of trial and error, I made the code that depends on the spell resolve, so it should be compatible with counterspells that exile the spell... I'm not 100% sure because I had to use pre_trigger on the SPELL_RESOLVED trigger, too, otherwise the override would have come too late. Anyway it's still better than the previous version.
I substituted the previous trigger with the following two:
After a lot of trial and error, I made the code that depends on the spell resolve, so it should be compatible with counterspells that exile the spell... I'm not 100% sure because I had to use pre_trigger on the SPELL_RESOLVED trigger, too, otherwise the override would have come too late. Anyway it's still better than the previous version.

- Code: Select all
<TRIGGERED_ABILITY internal="1" pre_trigger="1" active_zone="ZONE_STACK">
<TRIGGER value="SPELL_RESOLVED" simple_qualifier="self">
if Object():GetErstwhileZone() == ZONE_GRAVEYARD then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr(0, Object())
MTG():CreateDelayedTrigger(9, delayDC)
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY internal="1" pre_trigger="1" active_zone="ZONE_ANY" resource_id="9">
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_REMOVED_FROM_GAME" from_zone="ZONE_STACK">
if EffectDC() ~= nil and EffectDC():Get_CardPtr(0) ~= nil and TriggerObject() == EffectDC():Get_CardPtr(0) then
override = 1
TriggerObject():PutIntoPlay( TriggerObject():GetOwner() )
return true
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 722 times
Re: Gravecrawler, 2013 version
by pcastellazzi » 28 Aug 2012, 22:19
I was experimenting with your Gravecrawler implementation. I found a little bug, when Gravecrawler is sent from the library to the graveyard, it can only be cast when you play a new zombie. For some reason is ignoring the ones already in play.
I can't think of a reason why it do not work. A glitch in the engine may be?.
You can find a zombie themed deck with Gravecrawler implemented as suggested here.
I can't think of a reason why it do not work. A glitch in the engine may be?.
You can find a zombie themed deck with Gravecrawler implemented as suggested here.
The lights then came up and the crowd erupted in applause, because that's what the crowd does after it watches destruction on a large screen.
— Ben Kuchera, Mordern Warfare 3 review.
— Ben Kuchera, Mordern Warfare 3 review.
-
pcastellazzi - Posts: 184
- Joined: 25 Apr 2012, 00:40
- Location: Montevideo, Uruguay
- Has thanked: 11 times
- Been thanked: 30 times
Re: Gravecrawler, 2013 version
by BlindWillow » 29 Aug 2012, 14:44
I guess I could have saved myself some heartache and waited for your code.
Anyway, here's what I came up with for the override (for Skaab Ruinator):

- Code: Select all
<TRIGGERED_ABILITY internal="1" pre_trigger="1" active_zone="ZONE_STACK">
<TRIGGER value="SPELL_RESOLVED" simple_qualifier="self">
override = 0
return Object():GetErstwhileZone() == ZONE_GRAVEYARD
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_Int(0, 1)
MTG():CreateDelayedTrigger(1, delayDC)
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY resource_id="1" internal="1" pre_trigger="1" active_zone="ZONE_STACK">
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="self" to_zone="ZONE_REMOVED_FROM_GAME" from_zone="ZONE_STACK">
return EffectDC():Get_Int(0) == 1
</TRIGGER>
</TRIGGERED_ABILITY>
- BlindWillow
- Posts: 213
- Joined: 19 Jul 2012, 00:26
- Has thanked: 11 times
- Been thanked: 46 times
Re: Gravecrawler, 2013 version
by --Dream-- » 29 Aug 2012, 15:20
I made this deck www.mtgtop8.com/event?e=3016&d=219070 and I cant seem to get Gravecrawler to work at all (meaning I cant cast it from the graveyard at all). Here's my code:pcastellazzi wrote:I was experimenting with your Gravecrawler implementation. I found a little bug, when Gravecrawler is sent from the library to the graveyard, it can only be cast when you play a new zombie. For some reason is ignoring the ones already in play.
I can't think of a reason why it do not work. A glitch in the engine may be?.
You can find a zombie themed deck with Gravecrawler implemented as suggested here.
- Code: Select all
<?xml version='1.0'?>
<CARD_V2>
<FILENAME text="GRAVECRAWLER_222902" />
<CARDNAME text="GRAVECRAWLER" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Gravecrawler]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="222902" />
<ARTID value="222902" />
<ARTIST name="Steven Belledin" />
<CASTING_COST cost="{B}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[“Innistrad’s ghoulcallers are talented enough, but let me show you what someone with real power can create.”
—Liliana Vess]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Zombie" />
<EXPANSION value="DPG" />
<RARITY metaname="R" />
<POWER value="2" />
<TOUGHNESS value="1" />
<STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Gravecrawler can’t block.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Lo Strisciante del Sepolcro non può bloccare.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Der Grabkriecher kann nicht blocken.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Le Rampeur des tombes ne peut pas bloquer.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[El Acechatumbas no puede bloquear.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Gravecrawler can’t block.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[??? ????? ??? ??? ? ??.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[????????? ????????? ?? ????? ???????????.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Rastejador de Túmulo não pode bloquear.]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION>
local characteristics = Object():GetCurrentCharacteristics()
characteristics:Characteristic_Set( CHARACTERISTIC_CANT_BLOCK, 1 )
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<STATIC_ABILITY active_zone="ZONE_GRAVEYARD" filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may cast Gravecrawler from your graveyard as long as you control a Zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Puoi lanciare lo Strisciante del Sepolcro dal tuo cimitero fintanto che controlli uno Zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst den Grabkriecher aus deinem Friedhof wirken, solange du einen Zombie kontrollierst.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous pouvez lancer le Rampeur des tombes depuis votre cimetière tant que vous contrôlez un zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Puedes lanzar el Acechatumbas desde tu cementerio mientras controles un Zombie.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ロックできない。あなたは、あなたがゾンビをコントロールしているかぎり、墓所這いをあなたの墓地から唱えてもよい。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신이 좀비 지속물을 조종하는 한, 당신은 무덤 위를 기어다니는 좀비를 당신의 무덤에서 발동할 수 있다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Вы можете разыграть Могильного Выползня из вашего кладбища, пока вы контролируете Зомби.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Você pode conjurar Rastejador de Túmulo de seu cemitério enquanto controlar um Zumbi.]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION layer="8">
<![CDATA[
local filter = Object():GetFilter()
filter:Clear()
filter:SetZone(ZONE_IN_PLAY)
filter:AddSubType(CREATURE_TYPE_ZOMBIE)
filter:SetController(EffectController())
filter:NotTargetted()
if filter:CountStopAt(1) == 0 then
Object():GetCurrentCharacteristics():Characteristic_Set(CHARACTERISTIC_CANT_BE_PLAYED, 1)
end
]]>
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TRIGGERED_ABILITY internal="1" pre_trigger="1" active_zone="ZONE_STACK">
<TRIGGER value="SPELL_RESOLVED" simple_qualifier="self">
<![CDATA[
if Object():GetErstwhileZone() == ZONE_GRAVEYARD then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr(0, Object())
MTG():CreateDelayedTrigger(9, delayDC)
end
return false
]]>
</TRIGGER>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY internal="1" pre_trigger="1" active_zone="ZONE_ANY" resource_id="9">
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_REMOVED_FROM_GAME" from_zone="ZONE_STACK">
<![CDATA[
if EffectDC() ~= nil and EffectDC():Get_CardPtr(0) ~= nil and TriggerObject() == EffectDC():Get_CardPtr(0) then
override = 1
TriggerObject():PutIntoPlay(TriggerObject():GetOwner())
return true
else
return false
end
]]>
</TRIGGER>
</TRIGGERED_ABILITY>
<SFX text="COMBAT_CLAW_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
<SFX text="COMBAT_CLAW_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
</CARD_V2>
Re: Gravecrawler, 2013 version
by pcastellazzi » 29 Aug 2012, 18:03
You forgot the FLASHBACK_COST tag.--Dream-- wrote:I made this deck http://www.mtgtop8.com/event?e=3016&d=219070 and I cant seem to get Gravecrawler to work at all (meaning I cant cast it from the graveyard at all).
First of all, the code on the repo is a work in progress. I am fixing all the bugs and adding new cards as time permits.--Dream-- wrote:On a side note, your Surgical Extraction implementation doesnt seem to be working, pcastellazzi. I can never cast it, it says there arent enough targets.
Surgical Extraction seems to work fine on my tests, remember it needs cards in the graveyard, not in a player's hand like Duress or Inquisition of Kozilek.
A know problem with that card is it will not let you explore the target player's hand and graveyard, for now is limited to exile all the available copies. At first it seems like a good trade off between functionality and usability, but i am not sure anymore.
The lights then came up and the crowd erupted in applause, because that's what the crowd does after it watches destruction on a large screen.
— Ben Kuchera, Mordern Warfare 3 review.
— Ben Kuchera, Mordern Warfare 3 review.
-
pcastellazzi - Posts: 184
- Joined: 25 Apr 2012, 00:40
- Location: Montevideo, Uruguay
- Has thanked: 11 times
- Been thanked: 30 times
Re: Gravecrawler, 2013 version
by pcastellazzi » 29 Aug 2012, 18:57
After some more experimenting i finally got it. Thank you all for your feedback.
The problem was in the static ability determining the playability of the card. The correct code should be:
The problem was in the static ability determining the playability of the card. The correct code should be:
- Code: Select all
<STATIC_ABILITY active_zone="ZONE_GRAVEYARD">
<CONTINUOUS_ACTION layer="8">
<![CDATA[
local filter = Object():GetFilter()
filter:Clear()
filter:SetZone(ZONE_IN_PLAY)
filter:AddSubType(CREATURE_TYPE_ZOMBIE)
filter:SetController(Object():GetOwner())
filter:NotTargetted()
if filter:CountStopAt(1) ~= 1 then
Object():GetCurrentCharacteristics():Characteristic_Set(
CHARACTERISTIC_CANT_BE_PLAYED, 1)
end
]]>
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
The lights then came up and the crowd erupted in applause, because that's what the crowd does after it watches destruction on a large screen.
— Ben Kuchera, Mordern Warfare 3 review.
— Ben Kuchera, Mordern Warfare 3 review.
-
pcastellazzi - Posts: 184
- Joined: 25 Apr 2012, 00:40
- Location: Montevideo, Uruguay
- Has thanked: 11 times
- Been thanked: 30 times
8 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 6 guests