It is currently 20 Jul 2025, 20:27
   
Text Size

Formal Request Thread

Moderator: CCGHQ Admins

Re: Formal Request Thread

Postby thefiremind » 12 Oct 2013, 09:27

Kieran wrote:I can't seem to get Counterbore to work properly. Will someone take a look @ this code and let me know what's wrong?
After you counter the spell, it goes to the graveyard (or anywhere else, according to what card you used, but surely it doesn't stay on the stack), so the target pointer gets lost. You need to protect it before countering.
Code: Select all
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       EffectDC():Get_Targets(0):Protect_CardPtr(0)
       target:CounterSpell()
    end
    </RESOLUTION_TIME_ACTION>
-------------------------

And here's Guided Passage. No illustration because I couldn't find a satisfying one (the art on MagicVille is too green if you compare it to the real card).
Guided Passage (untested) | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="GUIDED_PASSAGE_27169" />
  <CARDNAME text="GUIDED_PASSAGE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Guided Passage]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Passage guidé]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Guided Passage]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Gesicherter Durchgang]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Passaggio Guidato]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Guided Passage]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Guided Passage]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Guided Passage]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Passagem Dirigida]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="27169" />
  <ARTID value="27169" />
  <ARTIST name="Alex Horley-Orlandelli" />
  <CASTING_COST cost="{U}{R}{G}" />
  <TYPE metaname="Sorcery" />
  <EXPANSION value="AP" />
  <RARITY metaname="R" />
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Reveal the cards in your library. An opponent chooses from among them a creature card, a land card, and a noncreature, nonland card. You put the chosen cards into your hand. Then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Révélez les cartes de votre bibliothèque. Un adversaire choisit parmi elles une carte de créature, une carte de terrain et une carte non-créature et non-terrain. Vous mettez les cartes choisies dans votre main. Mélangez ensuite votre bibliothèque.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Reveal the cards in your library. An opponent chooses from among them a creature card, a land card, and a noncreature, nonland card. You put the chosen cards into your hand. Then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Decke alle Karten deiner Bibliothek auf. Ein Gegner bestimmt aus diesen Karten eine Kreaturenkarte, ein Land und eine Karte, die weder ein Land noch eine Kreatur ist. Du nimmst diese Karten auf deine Hand. Mische danach deine Bibliothek.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Rivela le carte del tuo grimorio. Un avversario sceglie da esse una carta creatura, una carta terra e una carta che non sia una creatura né una terra. Aggiungi alla tua mano le carte scelte. Poi rimescola il tuo grimorio.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Reveal the cards in your library. An opponent chooses from among them a creature card, a land card, and a noncreature, nonland card. You put the chosen cards into your hand. Then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Reveal the cards in your library. An opponent chooses from among them a creature card, a land card, and a noncreature, nonland card. You put the chosen cards into your hand. Then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Reveal the cards in your library. An opponent chooses from among them a creature card, a land card, and a noncreature, nonland card. You put the chosen cards into your hand. Then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Reveal the cards in your library. An opponent chooses from among them a creature card, a land card, and a noncreature, nonland card. You put the chosen cards into your hand. Then shuffle your library.]]></LOCALISED_TEXT>
    <RESOLUTION_TIME_ACTION>
    local card = EffectController():Library_GetTop()
    local index = 0
    while card ~= nil do
       card:Reveal()
       index = index + 1
       card = EffectController():Library_GetNth(i)
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local filter = ClearFilter()
    filter:SetFilterType(FILTER_TYPE_PLAYERS)
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    EffectController():ChooseItem( "CARD_QUERY_CHOOSE_OPPONENT", EffectDC():Make_Targets(0) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if player ~= nil then
       local filter = ClearFilter()
       filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
       filter:SetZone( ZONE_LIBRARY, EffectController() )
       player:ChooseItem( "CARD_QUERY_CHOOSE_CREATURE_TO_PUT_INTO_HAND", EffectDC():Make_Targets(1) )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if player ~= nil then
       local filter = ClearFilter()
       filter:Add(FE_TYPE, OP_IS, CARD_TYPE_LAND)
       local creature = EffectDC():Get_Targets(1) and EffectDC():Get_Targets(1):Get_CardPtr(0)
       if creature ~= nil then
          filter:Add(FE_CARD_INSTANCE, OP_NOT, creature)
       end
       filter:SetZone( ZONE_LIBRARY, EffectController() )
       player:ChooseItem( "CARD_QUERY_CHOOSE_LAND_TO_PUT_INTO_HAND", EffectDC():Make_Targets(2) )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if player ~= nil then
       local filter = ClearFilter()
       filter:Add(FE_TYPE, OP_NOT, CARD_TYPE_CREATURE)
       filter:Add(FE_TYPE, OP_NOT, CARD_TYPE_LAND)
       filter:SetZone( ZONE_LIBRARY, EffectController() )
       player:ChooseItem( "CARD_QUERY_CHOOSE_CARD_TO_PUT_INTO_HAND", EffectDC():Make_Targets(3) )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    for i=1,3 do
       local card = EffectDC():Get_Targets(i) and EffectDC():Get_Targets(i):Get_CardPtr(0)
       if card ~= nil then
          card:Reveal()
       end
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    for i=1,3 do
       local card = EffectDC():Get_Targets(i) and EffectDC():Get_Targets(i):Get_CardPtr(0)
       if card ~= nil then
          card:PutInHand()
       end
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    EffectController():ShuffleLibrary()
    </RESOLUTION_TIME_ACTION>
  </SPELL_ABILITY>
  <AI_BASE_SCORE score="1200" zone="ZONE_HAND" />
</CARD_V2>
I'm not sure if the chosen cards need to be revealed, but I did it. I guess if you play this card in real Magic, you put your whole library on the table and all players watch while the chosen opponent selects the cards.
< 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: Formal Request Thread

Postby drleg3nd » 12 Oct 2013, 12:37

thx to vasht and tfm for cards provided,i appreciate it
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: Formal Request Thread

Postby Real » 12 Oct 2013, 13:19

If I may be so bold, is there anyone still working on Nyxathid, Quest for the Nihil Stone, Recoil, Barrin's Spite, and Warped Devotion?
Real
 
Posts: 19
Joined: 12 Aug 2013, 16:23
Has thanked: 2 times
Been thanked: 0 time

Re: Formal Request Thread

Postby Kieran » 12 Oct 2013, 13:26

Edit: 10/12/13, I cleaned the code below per thefiremind's suggestion.

Thanks again TFM! Everything's working properly now.

Below is the code for Counterbore is someone wants it.

Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="COUNTERBORE_153966" />
  <CARDNAME text="COUNTERBORE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Counterbore]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Contreforet]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Contrataladro]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Loch im Kopf]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Foro Neutralizzatore]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[呪文穿ち]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Counterbore]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Высверливание]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Nuliperfurador]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="153966" />
  <ARTID value="153966" />
  <ARTIST name="Wayne England" />
  <CASTING_COST cost="{3}{U}{U}" />
  <TYPE metaname="Instant" />
  <EXPANSION value="SHM" />
  <RARITY metaname="R" />
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Counter target spell. Search its controller’s graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles his or her library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Contrecarrez le sort ciblé. Cherchez dans le cimetière, la main et la bibliothèque de son contrôleur toutes les cartes ayant le même nom que ce sort et retirez-les de la partie.  Ce joueur mélange ensuite sa bibliothèque.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Contrarresta el hechizo objetivo. Busca en el cementerio, mano y biblioteca de su controlador todas las cartas con el mismo nombre que ese hechizo y remuévelas del juego. Luego ese jugador baraja su biblioteca.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Neutralisiere einen Zauberspruch deiner Wahl. Durchsuche den Friedhof, die Hand und die Bibliothek seines Besitzers nach allen Karten mit dem gleichen Namen wie jener Zauberspruch und entferne sie ganz aus dem Spiel. Dieser Spieler mischt dann seine Bibliothek.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Neutralizza una magia bersaglio. Passa in rassegna il cimitero, la mano e il grimorio del suo controllore per tutte le carte con lo stesso nome di quella magia ed esiliale. Poi quel giocatore rimescola il suo grimorio.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[呪文1つを対象とし、それを打ち消す。 それのコントローラーの墓地と手札とライブラリーから、その呪文と同じ名前を持つカードをすべて探し、それらをゲームから取り除く。 その後、そのプレイヤーは自分のライブラリーを切り直す。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Counter target spell. Search its controller’s graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles his or her library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Отмените целевое заклинание. Найдите на кладбище, в руке и в библиотеке контролирующего его игрока все карты с тем же именем, что и то заклинание, и удалите их из игры. Затем тот игрок тасует свою библиотеку.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Anule a mágica alvo. Procure no cemitério, na mão e no grimório de seu controlador por todos os cards com o mesmo nome daquela mágica e remova-os de jogo. Depois, aquele jogador embaralha seu próprio grimório.]]></LOCALISED_TEXT>
    <SFX text="TARGET_PLASMA_PLAY" />
    <TARGET tag="CARD_QUERY_CHOOSE_SPELL_TO_COUNTER" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:SetZone( ZONE_STACK )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       EffectDC():Get_Targets(0):Protect_CardPtr(0)
       target:CounterSpell()
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
    <TARGET tag="CARD_QUERY_CHOOSE_CARD_TO_EXILE" definition="0" compartment="0" count="1" />
      <TARGET_DEFINITION id="0">
         local filter = ClearFilter()
         filter:SetFilterType( FILTER_TYPE_PLAYERS )
      </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       local owner = target:GetOwner()
       EffectDC():Set_PlayerPtr(1, owner)
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_PlayerPtr(1)
    if target ~= nil then
       local chosenCard = EffectDC():Get_Targets(0):Get_CardPtr(0)
       local effectController = EffectController()
       local filter = ClearFilter()
       filter:Add( FE_CARD_NAME, OP_IS, chosenCard )
       filter:SetZone( ZONE_HAND, target)
       local cardsInZone = filter:Count()
       EffectController():SetItemCount( cardsInZone )
       for i = 0, (cardsInZone-1) do
          effectController:SetItemPrompt( i, "CARD_QUERY_CHOOSE_CARD_TO_EXILE" )
       end
       effectController:ChooseItems( EffectDC():Make_Targets(2), QUERY_FLAG_UP_TO )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_PlayerPtr(1)
    if target ~= nil then
       local chosenCard = EffectDC():Get_Targets(0):Get_CardPtr(0)
       local effectController = EffectController()
       local filter = ClearFilter()
       filter:Add( FE_CARD_NAME, OP_IS, chosenCard )
       filter:SetZone( ZONE_GRAVEYARD, target)
       local cardsInZone = filter:Count()
       EffectController():SetItemCount( cardsInZone )
       for i = 0, (cardsInZone-1) do
          effectController:SetItemPrompt( i, "CARD_QUERY_CHOOSE_CARD_TO_EXILE" )
       end
       effectController:ChooseItems( EffectDC():Make_Targets(3), QUERY_FLAG_UP_TO )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_PlayerPtr(1)
    if target ~= nil then
       local chosenCard = EffectDC():Get_Targets(0):Get_CardPtr(0)
       local effectController = EffectController()
       local filter = ClearFilter()
       filter:Add( FE_CARD_NAME, OP_IS, chosenCard )
       filter:SetZone( ZONE_LIBRARY, target)
       local cardsInZone = filter:Count()
       EffectController():SetItemCount( cardsInZone )
       for i = 0, (cardsInZone-1) do
          effectController:SetItemPrompt( i, "CARD_QUERY_CHOOSE_CARD_TO_EXILE" )
       end
      if cardsInZone &gt; 0 then
         effectController:ChooseItems( EffectDC():Make_Targets(4), QUERY_FLAG_UP_TO )
       else
         effectController:ChooseItems( EffectDC():Make_Targets(4), QUERY_FLAG_CAN_BE_FINISHED_EARLY_CANCEL_EDITION )
      end
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    for i = 2, 4 do
       local compartmentDC = EffectDC():Get_Targets(i)
       if compartmentDC ~= nil then
          local cardsInCompartment = compartmentDC:Count()
          if cardsInCompartment &gt; 0 then
             for j = 0, (cardsInCompartment-1) do
                local card = compartmentDC:Get_CardPtr(j)
                if card ~= nil then
                   card:Exile()
                end
             end
          end
       end
    end               
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_PlayerPtr(1)
    if target ~= nil then
       target:ShuffleLibrary()
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY" />
  </SPELL_ABILITY>
</CARD_V2>
Last edited by Kieran on 12 Oct 2013, 17:47, edited 3 times in total.
Kieran
 
Posts: 232
Joined: 03 Nov 2012, 01:09
Has thanked: 21 times
Been thanked: 16 times

Re: Formal Request Thread

Postby thefiremind » 12 Oct 2013, 14:18

Kieran wrote:Thanks again TFM! Everything's working properly now.
My code was meant to be a substitution for yours, not an addition... now you have two RESOLUTION_TIME_ACTIONs that counter the spell, but the second is useless.
< 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: Formal Request Thread

Postby Kieran » 12 Oct 2013, 14:34

Okay. It still functions properly but I'll clean it up.
Kieran
 
Posts: 232
Joined: 03 Nov 2012, 01:09
Has thanked: 21 times
Been thanked: 16 times

Re: Formal Request Thread

Postby thefiremind » 12 Oct 2013, 14:50

Kieran wrote:Okay. It still functions properly but I'll clean it up.
Yes, because the second time the spell is not on the stack, so CounterSpell does nothing. However it might lead to unexpected results when interacting with cards like Guile, so it's better to clean it up.

Real wrote:If I may be so bold, is there anyone still working on Nyxathid, Quest for the Nihil Stone, Recoil, Barrin's Spite, and Warped Devotion?
EDIT: The bugs should be fixed.
Nyxathid (untested) | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="NYXATHID_186616" />
  <CARDNAME text="NYXATHID" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Nyxathid]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Nyxathide]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Nyxathid]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Nyxatide]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Nyxathid]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ニクサシッド]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Nyxathid]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Никсатид]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Nixatide]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="186616" />
  <ARTID value="186616" />
  <ARTIST name="Raymond Swanland" />
  <CASTING_COST cost="{1}{B}{B}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Born of volcanic forces, it thrives on the absolute panic it inspires.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Né des forces volcaniques, il se nourrit de la panique absolue qu’il inspire.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Nacido de fuerzas volcánicas, saborea el pánico absoluto que genera.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Sie wird von vulkanischen Kräften geboren und lebt von der absoluten Panik, die sie in anderen erweckt.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Nato dalle forze vulcaniche primordiali, prospera grazie al terrore assoluto che suscita.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[それは火山の力から生まれ、それがもたらす圧倒的な恐慌で育つ。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Born of volcanic forces, it thrives on the absolute panic it inspires.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Порождение вулканических сил, он процветает за счет вселяемой им стихийной паники.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Nascido de forças vulcânicas, sua força vem do pânico absoluto que gera.]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Elemental" />
  <EXPANSION value="CON" />
  <RARITY metaname="R" />
  <POWER value="7" />
  <TOUGHNESS value="7" />
  <TRIGGERED_ABILITY linked_ability_group="1" replacement_query="1" active_zone="ZONE_TRANSITION">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As Nyxathid enters the battlefield, choose an opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Au moment où le Nyxathide arrive sur le champ de bataille, choisissez un adversaire.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[En cuanto el Nyxathid entre al campo de batalla, elige un oponente.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Sowie die Nyxatide ins Spiel kommt, bestimme einen Gegner.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Mentre il Nyxathid entra nel campo di battaglia, scegli un avversario.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ニクサシッドが場に出るに際し、対戦相手を1人選ぶ。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[As Nyxathid enters the battlefield, choose an opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[При входе Никсатида в игру выберите оппонента.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Conforme Nixatide entra no campo de batalha, escolha um oponente.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" />
    <RESOLUTION_TIME_ACTION>
    local filter = ClearFilter()
    filter:SetFilterType(FILTER_TYPE_PLAYERS)
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    EffectController():ChooseItem( "CARD_QUERY_CHOOSE_OPPONENT", EffectDC():Make_Targets(0) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if player ~= nil and EffectSource() ~= nil then
       LinkedDC():Set_PlayerPtr(0, player)
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <STATIC_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Nyxathid gets -1/-1 for each card in the chosen player’s hand.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Le Nyxathide gagne -1/-1 pour chaque carte dans la main du joueur choisi.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[El Nyxathid obtiene -1/-1 por cada carta en la mano del jugador elegido.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Die Nyxatide erhält -1/-1 für jede Karte auf der Hand des bestimmten Spielers.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Il Nyxathid prende -1/-1 per ogni carta nella mano del giocatore scelto.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ニクサシッドは、選ばれたプレイヤーの手札にあるカード1枚につき-1/-1の修整を受ける。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Nyxathid gets -1/-1 for each card in the chosen player’s hand.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Никсатид получает -1/-1 за каждую карту в руке выбранного игрока.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Nixatide recebe -1/-1 para cada card na mão do jogador escolhido.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="7C">
    if EffectSource() ~= nil then
       local player = LinkedDC():Get_PlayerPtr(0)
       if player ~= nil then
          local malus = -player:Hand_Count()
          local characteristics = EffectSource():GetCurrentCharacteristics()
          characteristics:Power_Add(malus)
          characteristics:Toughness_Add(malus)
       end
    end
    </CONTINUOUS_ACTION>
  </STATIC_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" />
  <AI_BASE_SCORE score="-150" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Quest for the Nihil Stone (tested) | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="QUEST_FOR_THE_NIHIL_STONE_198386" />
  <CARDNAME text="QUEST_FOR_THE_NIHIL_STONE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Quest for the Nihil Stone]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Quête de la Pierre de Nihil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Búsqueda de la piedra nihil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Suche nach dem Stein Nihil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[In Cerca della Pietra Nichilista]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[虚石の探索]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Quest for the Nihil Stone]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Поиски Камня Нигиляции]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Busca pela Pedra Niilista]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="198386" />
  <ARTID value="198386" />
  <ARTIST name="Mike Bierek" />
  <CASTING_COST cost="{B}" />
  <TYPE metaname="Enchantment" />
  <EXPANSION value="WWK" />
  <RARITY metaname="R" />
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever an opponent discards a card, you may put a quest counter on Quest for the Nihil Stone.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois qu’un adversaire se défausse d’une carte, vous pouvez mettre un marqueur « quête » sur la Quête de la Pierre de Nihil.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que un oponente descarte una carta, puedes poner un contador de búsqueda sobre la Búsqueda de la piedra nihil.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn ein Gegner eine Karte aus der Hand abwirft, kannst du eine Quest-Marke auf die Suche nach dem Stein Nihil legen.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta un avversario scarta una carta, puoi mettere un segnalino ricerca su In Cerca della Pietra Nichilista.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[いずれかの対戦相手がカードを1枚捨てるたび、あなたは虚石の探索の上に探索カウンターを1個置いてもよい。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever an opponent discards a card, you may put a quest counter on Quest for the Nihil Stone.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз когда оппонент сбрасывает карту, вы можете положить жетон странствий на Поиски Камня Нигиляции.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que um oponente descarta um card, você pode colocar um marcador de busca em Busca pela Pedra Niilista.]]></LOCALISED_TEXT>
    <COUNTER_REGISTRATION name="Quest" proliferate="11" />
    <TRIGGER value="DISCARD">
    return TriggerObject():GetOwner():GetTeam() ~= EffectController():GetTeam()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    if EffectSource() ~= nil then
       EffectSource():AddCounters( MTG():GetCountersType("Quest"), 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <MAY />
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each opponent’s upkeep, if that player has no cards in hand and Quest for the Nihil Stone has two or more quest counters on it, you may have that player lose 5 life.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Au début de l’entretien de chaque adversaire, si ce joueur n’a pas de carte en main et que la Quête de la Pierre de Nihil a au moins deux marqueurs « quête » sur elle, vous pouvez faire que ce joueur perde 5 points de vie.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Al comienzo del mantenimiento de cada oponente, si ese jugador no tiene cartas en su mano y la Búsqueda de la piedra nihil tiene dos o más contadores de búsqueda sobre ella, puedes hacer que ese jugador pierda 5 vidas.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls zu Beginn des Versorgungssegments eines Gegners dieser Spieler keine Karten auf der Hand hat und auf der Suche nach dem Stein Nihil zwei oder mehr Quest-Marken liegen, kannst du diesen Spieler 5 Lebenspunkte verlieren lassen.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[All’inizio del mantenimento di ogni avversario, se quel giocatore non ha carte in mano e ci sono due o più segnalini ricerca su In Cerca della Pietra Nichilista, puoi far perdere 5 punti vita a quel giocatore.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[各対戦相手のアップキープの開始時に、そのプレイヤーの手札にカードが無く、虚石の探索の上に探索カウンターが2個以上置かれている場合、あなたは「そのプレイヤーは5点のライフを失う。」を選んでもよい。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[At the beginning of each opponent’s upkeep, if that player has no cards in hand and Quest for the Nihil Stone has two or more quest counters on it, you may have that player lose 5 life.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[В начале шага поддержки каждого оппонента, если у того игрока в руке нет карт, а на Поисках Камня Нигиляции есть не менее двух жетонов странствий, вы можете заставить того игрока потерять 5 жизней.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[No início da manutenção de cada oponente, se aquele jogador não tiver nenhum card na mão e Busca pela Pedra Niilista tiver dois ou mais marcadores de busca, você poderá fazer com que aquele jogador perca 5 pontos de vida.]]></LOCALISED_TEXT>
    <TRIGGER value="BEGINNING_OF_PLAYERS_STEP">
    return MTG():GetStep() == STEP_UPKEEP and TriggerPlayer():GetTeam() ~= EffectController():GetTeam()
    </TRIGGER>
    <INTERVENING_IF>
    local player = TriggerPlayer()
    return player ~= nil and player:Hand_Count() == 0 and EffectSourceLKI():CountCounters( MTG():GetCountersType("Quest") ) &gt; 1
    </INTERVENING_IF>
    <RESOLUTION_TIME_ACTION>
    if TriggerPlayer() ~= nil then
       TriggerPlayer():LoseLife(5)
    end
    </RESOLUTION_TIME_ACTION>
    <MAY />
  </TRIGGERED_ABILITY>
  <AI_COUNTER_SCORE type="Quest" score="300" max_counters="2" />
  <AI_BASE_SCORE score="300" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Recoil (untested) | Open
Code: Select all
<?xml version='1.0'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="RECOIL_23154" />
  <CARDNAME text="RECOIL" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Recoil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Reculade]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Recular]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Rückstoß]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Rifuggire]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Recoil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Recoil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Recoil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Recuo]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="23154" />
  <ARTID value="23154" />
  <ARTIST name="Alan Pollack" />
  <CASTING_COST cost="{1}{U}{B}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Anything sent into a plagued world is bound to come back infected.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tout ce qui a été envoyé sur un monde pesteux reviendra sûrement infecté.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cualquier cosa enviada a un mundo infectado está destinada a regresar infectada.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Alles, was in eine verseuchte Welt geschickt wird, wird infiziert zurückkommen.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Tutto ciò che viene mandato in un mondo pestilenziale non può che tornarne infetto.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Anything sent into a plagued world is bound to come back infected.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Anything sent into a plagued world is bound to come back infected.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Anything sent into a plagued world is bound to come back infected.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Anything sent into a plagued world is bound to come back infected.]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Instant" />
  <EXPANSION value="IN" />
  <RARITY metaname="C" />
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Return target permanent to its owner’s hand. Then that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Renvoyez le permanent ciblé dans la main de son propriétaire. Ensuite ce joueur se défausse d’une carte.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Regresa el permanente objetivo a la mano de su propietario. Luego ese jugador descarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Bringe eine bleibende Karte deiner Wahl auf die Hand ihres Besitzers zurück. Dann wirft dieser Spieler eine Karte aus seiner Hand ab.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fai tornare un permanente bersaglio in mano al suo proprietario. Poi quel giocatore scarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Return target permanent to its owner’s hand. Then that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Return target permanent to its owner’s hand. Then that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Return target permanent to its owner’s hand. Then that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Devolva a permanente alvo para a mão de seu dono. Depois, aquele jogador descarta um card.]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_PERMANENT_TO_PUT_INTO_HAND" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add(FE_IS_PERMANENT, true)
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       EffectDC():Set_PlayerPtr( 1, target:GetOwner() )
       target:PutInHand()
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local player = EffectDC():Get_PlayerPtr(1)
    if player ~= nil then
       local filter = ClearFilter()
       filter:SetZone(ZONE_HAND, player)
       filter:Add(FE_IS_TOKEN, false)
       player:ChooseItem( "CARD_QUERY_CHOOSE_CARD_TO_DISCARD", EffectDC():Make_Targets(2) )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_Targets(2) and EffectDC():Get_Targets(2):Get_CardPtr(0)
    if card ~= nil then
       card:Discard()
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
    <SFX text="TARGET_PLASMA_PLAY" />
  </SPELL_ABILITY>
  <AI_AVAILABILITY type="in_response" response_source="1" />
  <AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
  <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
  <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
  <AI_AVAILABILITY window_step="declare_blockers" type="window" />
  <AI_AVAILABILITY window_step="end_of_turn" type="window" />
  <AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
  <AI_BASE_SCORE score="900" zone="ZONE_HAND" />
</CARD_V2>
Warped Devotion (untested) | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="WARPED_DEVOTION_45333" />
  <CARDNAME text="WARPED_DEVOTION" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Warped Devotion]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Dévotion dévoyée]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Devoción torcida]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Verkrümmte Anbetung]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Devozione Perversa]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Warped Devotion]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Warped Devotion]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Warped Devotion]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Devoção Destroçada]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="45333" />
  <ARTID value="45333" />
  <ARTIST name="Eric Peterson" />
  <CASTING_COST cost="{2}{B}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“The spirit of the devout is easily crushed by the loss of hope.”
—Fallen angel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« La fidélité prend souvent fin avec l’espoir. »
— Ange déchue]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“El espíritu de los devotos se abate fácilmente con la pérdida de la esperanza”.
—Ángel caído]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Der Wille der Unterwürfigen ist durch den Verlust von Hoffnung schnell gebrochen.”
—Gefallener Engel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Lo spirito del devoto viene facilmente schiacciato dalla perdita della speranza”.
—Angelo caduto]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[“The spirit of the devout is easily crushed by the loss of hope.”
—Fallen angel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[“The spirit of the devout is easily crushed by the loss of hope.”
—Fallen angel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[“The spirit of the devout is easily crushed by the loss of hope.”
—Fallen angel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[“O espírito do devoto é facilmente esmagado pela perda da esperança.”
— Anj
o caído]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Enchantment" />
  <EXPANSION value="8ED" />
  <RARITY metaname="R" />
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever a permanent is returned to a player’s hand, that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois qu’un permanent est renvoyé dans la main d’un joueur, ce joueur se défausse d’une carte de sa main.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que un permanente se regrese a la mano de un jugador, ese jugador descarta una carta de su mano.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn eine bleibende Karte auf die Hand eines Spielers zurückgeht, wirft dieser Spieler eine Karte aus seiner Hand ab.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta un giocatore riprende in mano un permanente, quel giocatore scarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Whenever a permanent is returned to a player’s hand, that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever a permanent is returned to a player’s hand, that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Whenever a permanent is returned to a player’s hand, that player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Quando uma permanente é devolvida para a mão de um jogador, aquele jogador descarta um card da própria mão.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_BEGIN" to_zone="ZONE_HAND" from_zone="ZONE_BATTLEFIELD" />
    <RESOLUTION_TIME_ACTION>
    local player = TriggerObjectLKI():GetOwner()
    if player ~= nil then
       local filter = ClearFilter()
       filter:SetZone(ZONE_HAND, player)
       filter:Add(FE_IS_TOKEN, false)
       if filter:CountStopAt(1) == 1 then
          player:ChooseItem( "CARD_QUERY_CHOOSE_CARD_TO_DISCARD", EffectDC():Make_Targets(0) )
       end
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
    if card ~= nil then
       card:Discard()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <AI_BASE_SCORE score="600" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Barrin's Spite (tested) | Open
Code: Select all
<?xml version='1.0'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="BARRINS_SPITE_337692" />
  <CARDNAME text="BARRINS_SPITE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Barrin’s Spite]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Rancune selon Barrin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Rencor de Barrin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Barrins Hass]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Disprezzo di Barrin]]></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[Rancor de Barrin]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="337692" />
  <ARTID value="25481" />
  <ARTIST name="Terese Nielsen" />
  <CASTING_COST cost="{2}{U}{B}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“Only vengeance matters now.”
Barrin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« Désormais, seule m’importe la vengeance. »
Barrin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Ahora sólo importa la venganza.”
Barrin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Jetzt zählt nur noch die Rache.“
Barrin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Ora importa solo la vendetta.”
Barrin]]></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[“Agora só a vingança importa.”
Barrin]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Sorcery" />
  <EXPANSION value="DPH" />
  <RARITY metaname="R" />
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Choose two target creatures controlled by the same player. Their controller chooses and sacrifices one of them. Return the other to its owner’s hand.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Choisissez deux créatures ciblées contrôlées par le même joueur. Leur contrôleur en choisit une à sacrifier. Renvoyez l’autre dans la main de son propriétaire.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Elige dos criaturas objetivo controladas por el mismo jugador. Ese jugador elige y sacrifica una de ellas. Regresa la otra a la mano de su propietario.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Bestimme zwei Kreaturen deiner Wahl, die der gleiche Spieler kontrolliert. Ihr Beherrscher bestimmt eine davon und opfert sie. Bringe die andere auf die Hand ihres Besitzers zurück.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Scegli due creature bersaglio controllate da un giocatore. Il loro controllore sceglie e sacrifica una di esse. Fai tornare l’altra in mano al suo proprietario.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[同じプレイヤーがコントロールしているクリーチャー2体を対象とする。そのコントローラーはそのうち1体を選び、生け贄に捧げる。もう1体をオーナーの手札に戻す。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[같은 플레이어가 조종하는 생물 두 개를 목표로 정한다. 그 생물들의 조종자는 그 중 한 개를 선택해서 희생한다. 나머지 한 개는 소유자의 손으로 되돌린다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Выберите два целевых существа под контролем одного и того же игрока. Контролирующий их игрок выбирает и приносит в жертву одно из них. Верните другое существо в руку его владельца.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Escolha duas criaturas alvo controladas por um único jogador. Aquele jogador escolhe e sacrifica uma delas. Devolva a outra para a mão de seu dono.]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE" definition="0" compartment="0" count="1" dependency="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
    </TARGET_DEFINITION>
    <TARGET tag="CARD_QUERY_CHOOSE_ANOTHER_CREATURE" definition="1" compartment="1" count="1" />
    <TARGET_DEFINITION id="1">
    local filter = ClearFilter()
    filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)       
    local first_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if first_creature ~= nil then
       filter:Add(FE_CARD_INSTANCE, OP_NOT, first_creature)
       filter:Add( FE_CONTROLLER, OP_IS, first_creature:GetPlayer() )
    end
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local first_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
    local second_creature = EffectDC():Get_Targets(1):Get_CardPtr(0)
    if first_creature ~= nil and second_creature ~= nil then
       local player = first_creature:GetPlayer()
       local filter = ClearFilter()
       local subFilter = filter:AddSubFilter_Or()
          subFilter:Add(FE_CARD_INSTANCE, OP_IS, first_creature)
          subFilter:Add(FE_CARD_INSTANCE, OP_IS, second_creature)
       player:ChooseItem( "CARD_QUERY_CHOOSE_CREATURE_TO_SACRIFICE", EffectDC():Make_Targets(2) )
    elseif first_creature ~= nil then
       first_creature:GetPlayer():Sacrifice(first_creature)
    elseif second_creature ~= nil then
       second_creature:GetPlayer():Sacrifice(second_creature)
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local sac_target = EffectDC():Get_Targets(2) and EffectDC():Get_Targets(2):Get_CardPtr(0)
    if sac_target ~= nil then
       local first_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
       local second_creature = EffectDC():Get_Targets(1):Get_CardPtr(0)
       if first_creature == sac_target then
          sac_target:GetPlayer():Sacrifice(sac_target)
          second_creature:PutInHand()
       else
          sac_target:GetPlayer():Sacrifice(sac_target)
          first_creature:PutInHand()
       end
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
    <SFX text="TARGET_PLASMA_PLAY" />
  </SPELL_ABILITY>
  <AI_BASE_SCORE score="1200" zone="ZONE_HAND" />
</CARD_V2>
Attachments
Discard tools v3.zip
The 5 cards listed above. Unprefixed, 2 out of 3 tested, illustrations included
(560.74 KiB) Downloaded 228 times
Last edited by thefiremind on 12 Oct 2013, 22:01, edited 2 times 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: Formal Request Thread

Postby sumomole » 12 Oct 2013, 17:08

thefiremind wrote:I'm pretty confident about all the cards there, except for Barrin's Spite. Given our limited freedom over targets (compared to DotP2013), I had to make the controller choose a player that controls at least 2 creatures. If I put that check inside the target definition for the 2 creatures it would be checked on resolution as well, and make all targets illegal when only one creature remains on the battlefield, which wouldn't be right. I'm still unsure about what would happen in that case with my code, but there's a good chance it would work well... and I don't know any other way to code it, by the way. :lol: If someone has a better idea (proved by testing :roll:), please share it.
I haven't been here for a looong time, again to the season of single card coding? :lol:
I don't understand what you're worried about, the two targets will not interfere with each other, just like Cone of Flame.
Barrin's Spite | Open
Code: Select all
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Choose two target creatures controlled by the same player. Their controller chooses and sacrifices one of them. Return the other to its owner’s hand.]]></LOCALISED_TEXT>
    <SFX text="TARGET_BLADE_PLAY" />
    <TARGET tag="CARD_QUERY_CHOOSE_A_CREATURE" definition="0" compartment="0" count="1" dependency="1" />
    <TARGET tag="CARD_QUERY_CHOOSE_ANOTHER_CREATURE" definition="1" compartment="1" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    </TARGET_DEFINITION>
    <TARGET_DEFINITION id="1">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )       
    local first_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if first_creature ~= nil then
       filter:Add( FE_CARD_INSTANCE, OP_NOT, first_creature )
      filter:Add( FE_CONTROLLER, OP_IS, first_creature:GetPlayer() )
    end
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local first_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
    local second_creature = EffectDC():Get_Targets(1):Get_CardPtr(0)
    if first_creature ~= nil and second_creature ~= nil then
      local player = first_creature:GetPlayer()
      local filter = ClearFilter()
      filter:Set_Or()
      filter:Add( FE_CARD_INSTANCE, OP_IS, first_creature )
       filter:Add( FE_CARD_INSTANCE, OP_IS, second_creature )
      player:SetItemCount( 2 )
      player:SetItemPrompt( 0, "CARD_QUERY_CHOOSE_CREATURE_TO_SACRIFICE" )
      player:SetItemPrompt( 1, "CARD_QUERY_CHOOSE_CREATURE_TO_PUT_INTO_HAND" )
      player:ChooseItems( EffectDC():Make_Targets(2) )
    elseif first_creature ~= nil then
       first_creature:GetPlayer():Sacrifice( first_creature )
    elseif second_creature ~= nil then
       second_creature:GetPlayer():Sacrifice( second_creature )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local targetDC = EffectDC():Get_Targets(2)
    if targetDC ~= nil then
      local sacrificed_creature = targetDC:Get_CardPtr(0)
      if sacrificed_creature ~= nil then
         sacrificed_creature:GetPlayer():Sacrifice( sacrificed_creature )
      end
      local returned_creature = targetDC:Get_CardPtr(1)
      if returned_creature ~= nil then
         returned_creature:ReturnToOwnersHand()
      end
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
    <AI_SIMPLIFIED_TARGETING compartment="1" hint="HINT_ENEMY_ONLY" />
  </SPELL_ABILITY>
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Formal Request Thread

Postby Real » 12 Oct 2013, 17:31

Thank you so much TFM!

I just tested the cards against the AI.
Recoil, Warped Devotion, Nyxathid all worked great.
However, it seems I can't cast Barrin's Spite, despite I have the card in my hand, mana available and my opponent has two creatures on the board.

Also, Quest for the Nihil Stone does not receive any counter when I make my opponent discard.
This is what the game told me
[lua] [string "QUEST_FOR_THE_NIHIL_STONE_198386_TITLE (TRIGGER)~0x00000321"]:2: attempt to index a nil value
Real
 
Posts: 19
Joined: 12 Aug 2013, 16:23
Has thanked: 2 times
Been thanked: 0 time

Re: Formal Request Thread

Postby thefiremind » 12 Oct 2013, 18:23

sumomole wrote:I haven't been here for a looong time, again to the season of single card coding? :lol:
A single card would have been faster to code, but they were 5. :mrgreen:

sumomole wrote:I don't understand what you're worried about, the two targets will not interfere with each other, just like Cone of Flame.
Cone of Flame has no restriction about the creatures' controller being the same, so it wasn't so obvious to me that the target dependency can take care of that automatically.

Barrin's Spite and Quest for the Nihil Stone updated in the previous post.
< 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: Formal Request Thread

Postby Real » 12 Oct 2013, 21:12

Thanks again! Really appreciate it.
All the card works now.

One minor thing, when Quest for the Nihil Stone triggers, the opponent should lose 5 life instead of 2. I simply changed LoseLife(2) to LoseLife(5)then everything works fine.
Real
 
Posts: 19
Joined: 12 Aug 2013, 16:23
Has thanked: 2 times
Been thanked: 0 time

Re: Formal Request Thread

Postby thefiremind » 12 Oct 2013, 21:58

Real wrote:One minor thing, when Quest for the Nihil Stone triggers, the opponent should lose 5 life instead of 2. I simply changed LoseLife(2) to LoseLife(5)then everything works fine.
You are right, I copied some code from Hollowborn Barghest and I forgot to change the number. :oops:
< 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: Formal Request Thread

Postby fallenangle » 13 Oct 2013, 07:17

I'd like to request Hythonia The Cruel and Keepsake Gorgon. I'm not really sure how to handle their monstrous abilities, especially Hythonia's "destroy all non-Gorgon creatures" part.

Thanks for your help.
fallenangle
 
Posts: 319
Joined: 20 Jul 2013, 02:31
Has thanked: 73 times
Been thanked: 41 times

Re: Formal Request Thread

Postby jacque » 13 Oct 2013, 07:44

fallenangle wrote:I'd like to request Hythonia The Cruel and Keepsake Gorgon. I'm not really sure how to handle their monstrous abilities, especially Hythonia's "destroy all non-Gorgon creatures" part.

Thanks for your help.
Here's Hythonia the Cruel... Keepsake Gorgon on the way... Untested, but it should be working... Sorry i don't have a reliable source, or any source at all, for HQ THS Artwork... Enjoy =)

EDIT: There you go... Keepsake Gorgon...
Attachments
KEEPSAKE_GORGON_373548.rar
(2.46 KiB) Downloaded 208 times
HYTHONIA_THE_CRUEL_373673.rar
Just re-uploaded
(2.11 KiB) Downloaded 385 times
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: Formal Request Thread

Postby fallenangle » 13 Oct 2013, 10:20

Stupid question: I got the tdx files from the topic on coding Theros cards. The images appeared correctly in-game and in the Deckbuilder before I added your code, but not after. Is there something special you have to do to the tdx files to get them to display properly?
fallenangle
 
Posts: 319
Joined: 20 Jul 2013, 02:31
Has thanked: 73 times
Been thanked: 41 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 8 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 8 users online :: 0 registered, 0 hidden and 8 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 8 guests

Login Form