It is currently 18 Jul 2025, 20:19
   
Text Size

Theros Cards

Moderator: CCGHQ Admins

Theros Cards

Postby BlindWillow » 05 Sep 2013, 22:03

Been working on Gift of Immortality from the new set. Here's what I've got so far:

Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="35">
  <FILENAME text="GIFT_OF_IMMORTALITY_177927002" />
  <CARDNAME text="GIFT_OF_IMMORTALITY" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Gift of Immortality]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Don d’immortalité]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Don de inmortalidad]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Gabe der Unsterblichkeit]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Dono dell’Immortalità]]></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[Dádiva da Imortalidade]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="177927002" />
  <ARTID value="177927002" />
  <ARTIST name="Matt Stewart" />
  <CASTING_COST cost="{W}" />
  <TYPE metaname="Enchantment" />
  <SUB_TYPE metaname="Aura" />
  <EXPANSION value="DPI" />
  <RARITY metaname="R" />
  <SPELL_ABILITY attach_definition="0">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Enchant creature]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Enchanter : créature]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Encantar criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Verzaubert eine Kreatur]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Incanta creatura]]></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[Encantar criatura]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_ENCHANT" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if (target ~= nil and EffectSource() ~= nil) then
       EffectSource():Attach( target )
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ALLIED" />
  </SPELL_ABILITY>
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Quand la créature enchantée meurt, renvoyez cette carte
sur le champ de bataille sous le contrôle de son propriétaire. Renvoyez le Don d’immortalité sur le champ
de bataille, attaché à cette créature, au début de la prochaine étape de fin.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cuando la criatura encantada muera, regresa esa carta
al campo de batalla bajo el control de su propietario. Regresa el Don de inmortalidad al campo de batalla
anexado a esa criatura al comienzo del próximo paso final.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wenn die verzauberte Kreatur stirbt, bringe ihre Karte
unter der Kontrolle ihres Besitzers ins Spiels zurück. Bringe zu Beginn des nächsten Endsegments die Gabe
der Unsterblichkeit an diese Kreatur angelegt ins Spiel zurück.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Quando la creatura incantata muore, rimetti quella
carta sul campo di battaglia sotto il controllo del suo proprietario. Rimetti sul campo di battaglia il
Dono dell’Immortalità assegnato a quella creatura all’inizio della prossima sottofase finale.]]
></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Quando a criatura encantada morrer, devolva aquele card
ao campo de batalha sob o controle de seu dono. Devolva Dádiva da Imortalidade ao campo de batalha
anexada àquela criatura no início da próxima etapa final.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_BEGIN" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_BATTLEFIELD">
    return TriggerObject() == EffectSourceLKI():GetParent()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
   EffectDC():Set_CardPtr(0, TriggerObject())
   EffectDC():Protect_CardPtr(0)
       TriggerObject():PutOntoBattlefield( TriggerObject():GetOwner() )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local source = EffectSourceLKI()
    local parent = EffectDC():Get_CardPtr(0)
    if (source ~= nil and parent ~= nil) then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, parent)
       MTG():CreateDelayedTrigger(1, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
    <AUTO_SKIP no_effect_source="1" />
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY resource_id="1">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_END_OF_TURN
    </TRIGGER>
    <CLEANUP fire_once="1" />
    <RESOLUTION_TIME_ACTION>
    local source = EffectSource()
    local parent = EffectDC():Get_CardPtr(0)
    if (source ~= nil and parent ~= nil) then
   if source:CanAttachTo( parent ) then
      source:PutOntoBattlefieldAttachedTo( EffectController(), parent )
   end
    end
    </RESOLUTION_TIME_ACTION>
    <AUTO_SKIP>
    return EffectSource() == nil or EffectDC():Get_CardPtr(0) == nil
    </AUTO_SKIP>
  </TRIGGERED_ABILITY>
  <AI_BASE_SCORE score="600" zone="ZONE_BATTLEFIELD" />
  <AI_BASE_SCORE score="1050" zone="ZONE_HAND" />
  <AI_BASE_SCORE score="600" type="Parent" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Everything works except when multiple copies of Gift of Immortality enchant the same creature. Then, only one copy returns to the battlefield. The others remain in the graveyard. Ideas? Something obvious I'm overlooking?

Edit: I think I'll make this thread about all the Theros cards I'm toying around with (and anyone else's who wants to contribute too).

Edit 2: Links to cards.

Gift of Immortality, Battlewise Hoplite
Fleecemane Lion
Polukranos, World Eater
Master of Waves
Bident of Thassa
Gods of Theros (Updated)
Spear of Heliod
Sylvan Caryatid
Anax and Cymede
Ordeal of Thassa
Curse of the Swine, Prophet of Kruphix
Temple lands
Mistcutter Hydra
Whip of Erebos
Last edited by BlindWillow on 18 Sep 2013, 00:19, edited 9 times in total.
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Gift of Immortality

Postby RiiakShiNal » 05 Sep 2013, 23:20

You might want to try using TriggerObjectLKI() to establish the parent in the second RESOLUTION_TIME_ACTION rather than using a pointer that is saved in the first RESOLUTION_TIME_ACTION. The reason for this is because if multiple enchant the creature then the first one to resolve will put the creature on the battlefield and subsequent copies will fail to have a valid TriggerObject() because the card has already changed zones (which will cause no parent pointer to be set on the EffectDC() so parent will always be nil for the subsequent copies).
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Gift of Immortality

Postby BlindWillow » 05 Sep 2013, 23:35

Yeah, I just realized that was my problem. Another way that seems to work but may cause other problems is to make my second RESOLUTION_TIME_ACTION a PLAY_TIME_ACTION. I will try TriggerObjectLKI(), though. That seems like the most appropriate solution.
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Gift of Immortality

Postby RiiakShiNal » 05 Sep 2013, 23:44

Until we get rulings on Gatherer we can only guess at what should really happen in the case a creature enchanted with multiple copies of Gift of Immortality dies, but given the wording I would assume that they all would come back as the text to return Gift of Immortality is a separate sentence and does not seem to depend on the card actually bringing back the creature (only that it is still on the battlefield at end of turn). If, however, the rulings state that only one will come back then you could always revert to the version you already posted.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Gift of Immortality

Postby BlindWillow » 05 Sep 2013, 23:48

I tried a simple switch to TriggerObjectLKI() and that appears to crash the game. Perhaps it doesn't like it when the first Gift triggers, and I need to use just TriggerObject() then?
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Gift of Immortality

Postby BlindWillow » 06 Sep 2013, 00:28

Well, I guess I will stick with PLAY_TIME_ACTION. It works. I doubt any problems will arise from using that instead of a RESOLUTION_TIME_ACTION, but I will keep testing it out in different scenarios. Here's the final code:

Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="35">
  <FILENAME text="GIFT_OF_IMMORTALITY_177927002" />
  <CARDNAME text="GIFT_OF_IMMORTALITY" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Gift of Immortality]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Don d’immortalité]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Don de inmortalidad]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Gabe der Unsterblichkeit]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Dono dell’Immortalità]]></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[Dádiva da Imortalidade]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="177927002" />
  <ARTID value="177927002" />
  <ARTIST name="Matt Stewart" />
  <CASTING_COST cost="{2}{W}" />
  <TYPE metaname="Enchantment" />
  <SUB_TYPE metaname="Aura" />
  <EXPANSION value="DPI" />
  <RARITY metaname="R" />
  <SPELL_ABILITY attach_definition="0">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Enchant creature]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Enchanter : créature]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Encantar criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Verzaubert eine Kreatur]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Incanta creatura]]></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[Encantar criatura]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_ENCHANT" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if (target ~= nil and EffectSource() ~= nil) then
       EffectSource():Attach( target )
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ALLIED" />
  </SPELL_ABILITY>
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Quand la créature enchantée meurt, renvoyez cette carte
sur le champ de bataille sous le contrôle de son propriétaire. Renvoyez le Don d’immortalité sur le champ
de bataille, attaché à cette créature, au début de la prochaine étape de fin.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cuando la criatura encantada muera, regresa esa carta
al campo de batalla bajo el control de su propietario. Regresa el Don de inmortalidad al campo de batalla
anexado a esa criatura al comienzo del próximo paso final.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wenn die verzauberte Kreatur stirbt, bringe ihre Karte
unter der Kontrolle ihres Besitzers ins Spiels zurück. Bringe zu Beginn des nächsten Endsegments die Gabe
der Unsterblichkeit an diese Kreatur angelegt ins Spiel zurück.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Quando la creatura incantata muore, rimetti quella
carta sul campo di battaglia sotto il controllo del suo proprietario. Rimetti sul campo di battaglia il
Dono dell’Immortalità assegnato a quella creatura all’inizio della prossima sottofase finale.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[When enchanted creature dies, return that card to the
battlefield under its owner’s control. Return Gift of Immortality to the battlefield attached to that
creature at the beginning of the next end step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Quando a criatura encantada morrer, devolva aquele card
ao campo de batalha sob o controle de seu dono. Devolva Dádiva da Imortalidade ao campo de batalha
anexada àquela criatura no início da próxima etapa final.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_BEGIN" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_BATTLEFIELD">
    return TriggerObject() == EffectSourceLKI():GetParent()
    </TRIGGER>
    <PLAY_TIME_ACTION>
    local source = EffectSourceLKI()
    local parent = TriggerObject()
    if (source ~= nil and parent ~= nil) then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, parent)
       delayDC:Protect_CardPtr(0)
       MTG():CreateDelayedTrigger(1, delayDC)
    end
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
       TriggerObject():PutOntoBattlefield( TriggerObject():GetOwner() )
    end
    </RESOLUTION_TIME_ACTION>
    <AUTO_SKIP no_effect_source="1" />
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY resource_id="1">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_END_OF_TURN
    </TRIGGER>
    <CLEANUP fire_once="1" />
    <RESOLUTION_TIME_ACTION>
    local source = EffectSource()
    local parent = EffectDC():Get_CardPtr(0)
    if (source ~= nil and parent ~= nil) then
   if source:CanAttachTo( parent ) then
      source:PutOntoBattlefieldAttachedTo( EffectController(), parent )
   end
    end
    </RESOLUTION_TIME_ACTION>
    <AUTO_SKIP>
    return EffectSource() == nil or EffectDC():Get_CardPtr(0) == nil
    </AUTO_SKIP>
  </TRIGGERED_ABILITY>
  <AI_BASE_SCORE score="600" zone="ZONE_BATTLEFIELD" />
  <AI_BASE_SCORE score="1050" zone="ZONE_HAND" />
  <AI_BASE_SCORE score="600" type="Parent" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
I've attached the .xml and artwork too, if someone wants to test it out in their DLC. It is great fun, especially when inserted into sumamole's version of the 2013 Azorius deck (also great fun in that deck: Battlewise Hoplite, which I've also attached for anyone who's interested).
Attachments
gift_of_immortality.zip
(113.82 KiB) Downloaded 520 times
battlewise_hoplite.zip
(112.13 KiB) Downloaded 456 times
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Gift of Immortality

Postby Tejahn » 06 Sep 2013, 05:01

Thanks BlindWillow! I'll be sure to give these a try.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Gift of Immortality

Postby thefiremind » 06 Sep 2013, 08:42

I guess that the correct way to code Gift of Immortality would be to protect the EffectSource inside the trigger condition, so that you can still point to it in a resolution time action. But I think your implementation won't give any problems, either.

Just one question: I saw you found a lot of localised text for a card that isn't on Gatherer... did you write it manually? It shouldn't surprise me since I translated Elspeth, Sun Champion in a lot of languages by stitching text from other cards together, but I'm asking anyway in case you found it somewhere.
< 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: Gift of Immortality

Postby BlindWillow » 06 Sep 2013, 14:09

thefiremind wrote:Just one question: I saw you found a lot of localised text for a card that isn't on Gatherer... did you write it manually?
I used the card image gallery for Theros on magicthegathering.com and just changed my language/location setting (link at page bottom), being sure to clear my cache after changing the setting to get the right card images. It does mean you have to type in the card text, though (the card titles, at least, are given in copiable text below each card image). That's why there's no non-Roman alphabet languages in my translations for the card text. Most people would say, I'm sure, just wait for it to show up on Gatherer. I guess I'm not that patient. :lol:
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Theros Cards

Postby BlindWillow » 06 Sep 2013, 18:45

Next Theros card I've cooked up is Fleecemane Lion (so much for Watchwolf, I guess).

Here's the code:
Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="FLEECEMANE_LION_177927003" />
  <CARDNAME text="FLEECEMANE_LION" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Fleecemane Lion]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Lion à crinière bouclée]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[León melena de lana]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Vliesmähnen-Löwe]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Leone Vellocriniera]]></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[Leão da Juba Lanosa]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="177927003" />
  <ARTID value="177927003" />
  <ARTIST name="Slawomir Maniak" />
  <CASTING_COST cost="{G}{W}" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Cat" />
  <EXPANSION value="DPI" />
  <RARITY metaname="R" />
  <POWER value="3" />
  <TOUGHNESS value="3" />
  <ACTIVATED_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{3}{G}{W}: Monstrosity 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{3}{G}{W} : Monstruosité 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{3}{G}{W}: Monstruosidad 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{3}{G}{W}: Monstrum 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{3}{G}{W}: Mostruosità 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{3}{G}{W}: Monstrosity 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{3}{G}{W}: Monstrosity 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{3}{G}{W}: Monstrosity 1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{3}{G}{W}: Monstruosidade 1.]]></LOCALISED_TEXT>
    <COST type="Mana" mana_cost="{3}{G}{W}" />
    <RESOLUTION_TIME_ACTION>
    if (EffectSource() ~= nil and LinkedDC():Get_Int(0) ~= 1) then
       EffectSource():AddCounters( MTG():PlusOnePlusOneCounters(), 1)
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    if LinkedDC():Get_Int(0) ~= 1 then
       LinkedDC():Set_Int(0, 1)
    end
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY window_step="begin_combat" window_turn="my_turn" type="window" />
    <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
    <AI_AVAILABILITY type="in_response" response_target="1" />
    <AI_AVAILABILITY type="in_response" response_source="1" />
    <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
  </ACTIVATED_ABILITY>
  <STATIC_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as Fleecemane Lion is monstrous, it has hexproof and indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que le Lion à crinière bouclée est monstrueux, il a la défense talismanique et l’indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras el León melena de lana sea monstruoso, tiene las habilidades de antimaleficio e indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange der Vliesmähnen-Löwe monströs ist, hat er Fluchsicherheit und Unzerstörbarkeit.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che il Leone Vellocriniera è mostruoso, ha anti-malocchio e indistruttibile.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[As long as Fleecemane Lion is monstrous, it has hexproof and indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[As long as Fleecemane Lion is monstrous, it has hexproof and indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[As long as Fleecemane Lion is monstrous, it has hexproof and indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto Leão da Juba Lanosa for monstruoso, ele terá resistência a magia e será indestrutível.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="6">
    if EffectSource() ~= nil then
   local characteristics = EffectSource():GetCurrentCharacteristics()
   if LinkedDC():Get_Int(0) == 1 then
      characteristics:Bool_Set( CHARACTERISTIC_INDESTRUCTIBLE, 1 )
      characteristics:Bool_Set( CHARACTERISTIC_HEXPROOF, 1 )
   end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <HELP title="MORE_INFO_TITLE_MONSTROSITY" body="MORE_INFO_BODY_MONSTROSITY" zone="ZONE_ANY" />
  <HELP title="MORE_INFO_BADGE_TITLE_21" body="MORE_INFO_BADGE_BODY_21" zone="ZONE_ANY" />
  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <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 have two concerns. One, will it be necessary to have other cards be able to detect a card's monstrosity status? So far, from the cards revealed, it doesn't seem so. So a simple integer flag like I've set up should suffice. If that changes, the card will need something like thefiremind set up for modular creatures, I'm thinking.

Two, does anyone think an availability tag should be set up, either for the AI to keep it from using it unnecessarily or to go ahead and make things simpler for human users and shut the Monstrosity ability down when it's already monstrous?

Finally, it would be kind of cool to come up with a monstrous badge. Is that difficult to do? I know thefiremind added a wither badge, but that was already somewhat set up in the base game, right?
Attachments
fleecemane_lion.zip
(99.16 KiB) Downloaded 626 times
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Theros Cards

Postby thefiremind » 06 Sep 2013, 18:57

BlindWillow wrote:Two, does anyone think an availability tag should be set up, either for the AI to keep it from using it unnecessarily or to go ahead and make things simpler for human users and shut the Monstrosity ability down when it's already monstrous?
You could add an availability that works just for the AI...
Code: Select all
return EffectController():IsAI() == false or <condition for the AI>
...but you can't do it for monstrosity as you coded it because LinkedDC doesn't work inside AVAILABILITY blocks. Either you keep the card without availability, or you'll have to keep track of monstrosity using RiiakShiNal's ObjectDC.

BlindWillow wrote:Finally, it would be kind of cool to come up with a monstrous badge. Is that difficult to do? I know thefiremind added a wither badge, but that was already somewhat set up in the base game, right?
It isn't difficult... it's impossible. :lol: Wither already had its place among the badges, but it was using the forestwalk badge, so what I did (actually the first one who did it has been kevlahnota for DotP2013) was to redirect the already existing files to another badge. I tried to add another badge myself, but with no results.
< 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: Theros Cards

Postby jacque » 07 Sep 2013, 10:21

Anyone planning to work on Master of Waves?
Learn making your own cards today!!!

Click on Image if a post/reply helped you.

I stitch old cards together to make new ones...

~ Jacque, the confused
jacque
 
Posts: 217
Joined: 07 Jun 2013, 20:11
Has thanked: 26 times
Been thanked: 44 times

Re: Theros Cards

Postby BlindWillow » 07 Sep 2013, 16:42

Working on another monstrosity card: Polukranos. Everything works fine except, for some reason, no damage is dealt by the triggered ability (which I have set up as a delayed trigger). Here's the code:

Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="POLUKRANOS_WORLD_EATER_177373384" />
  <CARDNAME text="POLUKRANOS_WORLD_EATER" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Polukranos, World Eater]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Polukranos, dévoreur de mondes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Polukranos, el devoramundos]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Polukranos der Weltenverschlinger]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Polikranos, Divoratore di Mondi]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[世界を喰らう者、ポルクラノス]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Polukranos, World Eater]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Polukranos, World Eater]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Polucrano, Devorador de Mundos]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="177373384" />
  <ARTID value="177373384" />
  <ARTIST name="Karl Kopinski" />
  <CASTING_COST cost="{2}{G}{G}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Hydra" />
  <EXPANSION value="DPI" />
  <RARITY metaname="M" />
  <POWER value="5" />
  <TOUGHNESS value="5" />
  <ACTIVATED_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{X}{X}{G}: Monstrosity X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{X}{X}{G} : Monstruosité X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{X}{X}{G}: Monstruosidad X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{X}{X}{G}: Monstrum X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{X}{X}{G}: Mostruosità X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{X}{X}{G}:怪物化Xを行う。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{X}{X}{G}: Monstrosity X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{X}{X}{G}: Monstrosity X.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{X}{X}{G}: Monstruosidade X.]]></LOCALISED_TEXT>
    <COST type="Mana" mana_cost="{X}{X}{G}" />
    <RESOLUTION_TIME_ACTION>
    if (EffectSource() ~= nil and LinkedDC():Get_Int(0) ~= 1) then
       EffectSource():AddCounters( MTG():PlusOnePlusOneCounters(), GetEffectX())
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    if LinkedDC():Get_Int(0) ~= 1 then
       LinkedDC():Set_Int(0, 1)
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_Int(0, GetEffectX())
       MTG():CreateDelayedTrigger(1, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY window_step="begin_combat" window_turn="my_turn" type="window" />
    <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
    <AI_AVAILABILITY type="in_response" response_target="1" />
    <AI_AVAILABILITY type="in_response" response_source="1" />
    <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
  </ACTIVATED_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[When Polukranos, World Eater becomes monstrous, it deals X damage divided as you choose among any number of target creatures your opponents control. Each of those creatures deals damage equal to its power to Polukranos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Quand Polukranos, dévoreur de mondes devient monstrueux, il inflige X blessures réparties comme vous le désirez entre n’importe quel nombre de créatures ciblées que vos adversaires contrôlent. Chacune de ces créatures inflige à Polukranos un nombre de blessures égal à sa force.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cuando Polukranos, el devoramundos se convierta en monstruoso, hace X puntos de daño dividos como elijas entre cualquier número de criaturas objetivo que controlan tus oponentes. Cada una de esas criaturas hace daño igual a su fuerza a Polukranos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wenn Polukranos der Weltenverschlinger monströs wird, fügt er X Schadenspunkte zu, deren Aufteilung auf eine beliebige Anzahl an Kreaturen deiner Wahl, die deine Gegner kontrollieren, du bestimmst. Jede dieser Kreaturen fügt Polukranos Schadenspunkte in Höhe ihrer Stärke zu.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Quando Polikranos, Divoratore di Mondi diventa mostruoso, infligge X danni suddivisi a tua scelta tra un qualsiasi numero di creature bersaglio controllate dai tuoi avversari. Ognuna di quelle creature infligge danno pari alla propria forza a Polikranos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[世界を喰らう者、ポルクラノスが怪物的になったとき、望む数のあなたの対戦相手がコントロールするクリーチャーを対象とする。世界を喰らう者、ポルクラノスはそれらに、X点のダメージをあなたの望むように分割して与える。それらの各クリーチャーは、それぞれのパワーに等しい点数のダメージを世界を喰らう者、ポルクラノスに与える。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[When Polukranos, World Eater becomes monstrous, it deals X damage divided as you choose among any number of target creatures your opponents control. Each of those creatures deals damage equal to its power to Polukranos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[When Polukranos, World Eater becomes monstrous, it deals X damage divided as you choose among any number of target creatures your opponents control. Each of those creatures deals damage equal to its power to Polukranos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Quando Polucrano, Devorador de Mundos, torna-se monstruoso, ele causa X pontos de dano dividos à sua escolha entre qualquer número de criaturas alvo que seus oponentes controlam. Cada uma daquelas criaturas causa uma quantidade de dano igual ao próprio poder a Polucrano.]]></LOCALISED_TEXT>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY resource_id="1">
    <SFX text="TARGET_BITE_PLAY" />
    <TRIGGER value="ABILITY_RESOLVED" simple_qualifier="self" />
    <TARGET tag="CARD_QUERY_CHOOSE_DEAL_1_DAMAGE" definition="0" compartment="0" damage_assignment="1">
    MTG():SetTargetCount( EffectDC():Get_Int(0) )
    </TARGET>
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local source = EffectSourceLKI()
    local targetDC = EffectDC():Get_Targets(0)
    local num_targets = EffectDC():Get_Int(0)
    for i=0,(num_targets-1) do
       local target_creature = targetDC:Get_CardPtr(i)
       local damage = targetDC:Get_Assignment(i)
       if ( target_creature ~= nil ) then
      local power = target_creature:GetCurrentCharacteristics():Power_Get()
          source:DealDamageTo(damage, target_creature) 
      target_creature:DealDamageTo(power, source)
        end
    end
    </RESOLUTION_TIME_ACTION>
    <CLEANUP fire_once="1" />
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
  </TRIGGERED_ABILITY>
  <HELP title="MORE_INFO_TITLE_MONSTROSITY" body="MORE_INFO_BODY_MONSTROSITY" zone="ZONE_ANY" />
  <SFX text="COMBAT_KHALNI_HYDRA_ATTACK" power_boundary_min="1" power_boundary_max="-1" />
  <AI_BASE_SCORE score="750" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Anyone spot anything here? Is there a better way to handle the damage dealing ability? I'm using Inferno Titan as a model here.
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: Theros Cards

Postby thefiremind » 07 Sep 2013, 18:06

BlindWillow wrote:Anyone spot anything here? Is there a better way to handle the damage dealing ability? I'm using Inferno Titan as a model here.
I think that the idea is good, but you need to put the target in a different compartment since you are already using register 0 for saving your X value (or save the X value in another register, whichever you prefer).
< 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: Theros Cards

Postby BlindWillow » 07 Sep 2013, 20:02

thefiremind wrote:I think that the idea is good, but you need to put the target in a different compartment since you are already using register 0 for saving your X value (or save the X value in another register, whichever you prefer).
That worked! I switched the register from 0 to 1 for storing the X value. I've attached the .xml and artwork (Kopinski's, as what Johann Bodin has up on his website doesn't seem to match the card art on magicthegathering.com) for any who are interested.
Attachments
polukranos.zip
(112.05 KiB) Downloaded 464 times
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Next

Return to 2014

Who is online

Users browsing this forum: No registered users and 10 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 10 users online :: 0 registered, 0 hidden and 10 guests (based on users active over the past 10 minutes)
Most users ever online was 7303 on 15 Jul 2025, 20:46

Users browsing this forum: No registered users and 10 guests

Login Form