It is currently 14 Jul 2025, 12:12
   
Text Size

Gravecrawler, 2013 version

Moderator: CCGHQ Admins

Gravecrawler, 2013 version

Postby 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:
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>
I use flashback, so that the card is really cast from the graveyard, then I override the exiling that is automatically done when something with flashback is cast.
Pro: no need to use activated abilities.
Con: if someone uses a counterspell that exiles the card, it wouldn't work. :P
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. #-o
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...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Gravecrawler, 2013 version

Postby RiiakShiNal » 04 Aug 2012, 23:16

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 :shock:
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?
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.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Gravecrawler, 2013 version

Postby 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. :D I substituted the previous trigger with the following two:
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...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Gravecrawler, 2013 version

Postby 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.
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.
User avatar
pcastellazzi
 
Posts: 184
Joined: 25 Apr 2012, 00:40
Location: Montevideo, Uruguay
Has thanked: 11 times
Been thanked: 30 times

Re: Gravecrawler, 2013 version

Postby BlindWillow » 29 Aug 2012, 14:44

I guess I could have saved myself some heartache and waited for your code. :lol: 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>
It's a little simpler, but basically the same. Great minds, as they say...
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Gravecrawler, 2013 version

Postby --Dream-- » 29 Aug 2012, 15:20

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

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>
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.
--Dream--
 
Posts: 65
Joined: 28 Jul 2012, 12:01
Has thanked: 4 times
Been thanked: 0 time

Re: Gravecrawler, 2013 version

Postby pcastellazzi » 29 Aug 2012, 18:03

--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).
You forgot the FLASHBACK_COST tag.

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

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.
User avatar
pcastellazzi
 
Posts: 184
Joined: 25 Apr 2012, 00:40
Location: Montevideo, Uruguay
Has thanked: 11 times
Been thanked: 30 times

Re: Gravecrawler, 2013 version

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

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>
(update: fixed a few typos)
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.
User avatar
pcastellazzi
 
Posts: 184
Joined: 25 Apr 2012, 00:40
Location: Montevideo, Uruguay
Has thanked: 11 times
Been thanked: 30 times


Return to Programming Talk

Who is online

Users browsing this forum: No registered users and 6 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 6 users online :: 0 registered, 0 hidden and 6 guests (based on users active over the past 10 minutes)
Most users ever online was 5050 on 26 Jun 2025, 06:02

Users browsing this forum: No registered users and 6 guests

Login Form