Page 1 of 1

Hand of the Praetors

PostPosted: 10 Oct 2012, 00:38
by BlindWillow
In conjunction with my poison counter adding idea, here's what I've come up with for Hand of the Praetors:

Code: Select all
<?xml version='1.0'?>
<CARD_V2>
  <FILENAME text="HAND_OF_THE_PRAETORS_38215086" />
  <CARDNAME text="HAND_OF_THE_PRAETORS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Hand of the Praetors]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Mano dei Pretori]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Hand der Prätoren]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Main des praetors]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mano de los magistrados]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[法務官の手]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Hand of the Praetors]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Рука Преторов]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Mão dos Pretores]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="38215086" />
  <ARTID value="38215086" />
  <ARTIST name="Izzy" />
  <CASTING_COST cost="{3}{B}" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Zombie" />
  <EXPANSION value="DPG" />
  <RARITY metaname="R" />
  <POWER value="3" />
  <TOUGHNESS value="2" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Infect]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Infection]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Infectar.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Infizieren]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Infettare]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[感染]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Infect]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Инфекция]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Infectar]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION>
    local characteristics = Object():GetCurrentCharacteristics()
    characteristics:Characteristic_Set( CHARACTERISTIC_INFECT, 1 )
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY active_zone="ZONE_ANY">
    <CONTINUOUS_ACTION>
    ObjectDC():Set_Int( CHARACTERISTIC_INFECT_CHECK, 1 )
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Other creatures you control with infect get +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Le altre creature con infettare che controlli prendono +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Andere Kreaturen mit Infizieren, die du kontrollierst, erhalten +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les autres créatures avec l’infection que vous contrôlez gagnent +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Las otras criaturas que controlas con la habilidad de infectar obtienen +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールする他の感染を持つクリーチャーは+1/+1の修整を受ける。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Other creatures you control with infect get +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Другие существа под вашим контролем с Инфекцией получают +1/+1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[As outras criaturas que você controla com infectar recebem +1/+1.]]></LOCALISED_TEXT>
    <FILTER>
    return (FilteredCard() ~= nil and
    FilteredCard() ~= Object() and
    FilteredCard():GetCardType():Test( CARD_TYPE_CREATURE ) ~= 0 and
    FilteredCard():GetZone() == ZONE_IN_PLAY and
    FilteredCard():GetController() == EffectController() and
    FilteredCard():GetCurrentCharacteristics():Characteristic_Get( CHARACTERISTIC_INFECT ) ~= 0)
    </FILTER>
    <CONTINUOUS_ACTION layer="7C">
    if FilteredCard() ~= nil then
       local characteristics = FilteredCard():GetCurrentCharacteristics()
       if characteristics ~= nil then
          characteristics:Power_Add( 1 )
          characteristics:Toughness_Add( 1 )
       end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY dangerous="1" filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever you cast a creature spell with infect, target player gets a poison counter.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta lanci una magia creatura con infettare, un giocatore bersaglio ottiene un segnalino veleno.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn du einen Kreaturenzauber mit Infizieren wirkst, erhält ein Spieler deiner Wahl eine Giftmarke.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que vous lancez un sort de créature avec l’infection, le joueur ciblé gagne un marqueur « poison ».]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que lances un hechizo de criatura con la habilidad de infectar, el jugador objetivo obtiene un contador de veneno.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたが感染を持つクリーチャー呪文を1つ唱えるたび、プレイヤー1人を対象とする。そのプレイヤーは毒カウンターを1個得る。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever you cast a creature spell with infect, target player gets a poison counter.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз когда вы разыгрываете заклинание существа с Инфекцией, целевой игрок получает жетон яда.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que você conjura uma mágica de criatura com infectar, o jogador alvo recebe um marcador de veneno.]]></LOCALISED_TEXT>
    <TRIGGER value="SPELL_PLAYED" simple_qualifier="objectyoucontrol">
    return (TriggerObject():GetCardType():Test( CARD_TYPE_CREATURE ) ~= 0 and TriggerObject():GetDataChest():Get_Int(CHARACTERISTIC_INFECT_CHECK) == 1)
    </TRIGGER>
    <TARGET_DEFINITION id="0">
    local filter = Object():GetFilter()
    filter:Clear()
    filter:SetFilterType( FILTER_TYPE_PLAYERS )
    filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
    </TARGET_DEFINITION>
    <TARGET_DETERMINATION>
    return AtLeastOneTargetFromDefinition(0)
    </TARGET_DETERMINATION>
    <PLAY_TIME_ACTION target_choosing="1">
    EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER", EffectDC():Make_Targets(0) )
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if target ~= nil then
       MTG():PutTokensIntoPlay( "TOKEN_POISON_T_11381001", 1, target )
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="TOKEN_POISON_T_11381001" />
  <HELP title="MORE_INFO_BADGE_TITLE_31" body="MORE_INFO_BADGE_BODY_31" zone="ZONE_ANY" />
  <SFX text="COMBAT_PESTS_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_PESTS_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="900" zone="ZONE_IN_PLAY" />
</CARD_V2>
I used an idea from thefiremind's modular creatures to get around the fact that characteristics like infect are currently coded to be recognized only on the battlefield (obviously, no one wants a bunch of badges showing up in their hand/graveyard/library).

It requires the addition of the following code to every creature that has infect:
Code: Select all
  <STATIC_ABILITY active_zone="ZONE_ANY">
    <CONTINUOUS_ACTION>
    ObjectDC():Set_Int( CHARACTERISTIC_INFECT_CHECK, 1 )
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
And the addition of a constant CHARACTERISTIC_INFECT_CHECK to one's constants file.