It is currently 11 May 2025, 09:16
   
Text Size

DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Moderator: CCGHQ Admins

DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby DaLosar » 27 Jun 2012, 06:57

Has anyone found its parameters yet? I'm trying to make Geist of Saint Traft using this and I'm having some trouble...

If anyone already used this or PutIntoPlayTappedAndAttacking please help [-o<
DaLosar
 
Posts: 17
Joined: 22 Jun 2012, 06:08
Has thanked: 2 times
Been thanked: 0 time

Re: DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby Aiodren » 27 Jun 2012, 07:13

PutTokensIntoPlayTappedAndAttacking is actuallly not that hard to implement. I have coded Hero of Bladehold by looking at the code of that one plane, that puts tokens into play for each of your attacking creatures, and it works just fine.

The function needs 4 Parameters: first the token, second the amount of tokens, third the controller and lastly the one, they should be attacking.

I know the last one is slightly against the rules for attacking tokens, because you can't choose new attack targets for them, but without the last parameter it doesn't work :(.

Here is my Hero of Bladehold for reference:
Code: Select all
<?xml version='1.0'?>
<CARD_V2 custom="true">
  <FILENAME text="HERO_OF_BLADEHOLD_888819912" />
  <CARDNAME text="HERO_OF_BLADEHOLD" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Hero Of Bladehold]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Held der Klingenfeste]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="888819912" />
  <ARTID value="HERO OF BLADEHOLD" />
  <FRAMECOLOUR name="W" />
  <COLOUR value="W" />
  <ARTIST name="Austin Hsu" />
  <CASTING_COST cost="{2}{W}{W}" />
  <TYPE metaname="Creature" order_de-DE="0" order_es-ES="0" order_fr-FR="0" order_it-IT="0" order_jp-JA="0" />
  <SUB_TYPE metaname="Human" order_de-DE="0" order_es-ES="1" order_fr-FR="0" order_it-IT="1" order_jp-JA="0" />
  <SUB_TYPE metaname="Knight" order_de-DE="1" order_es-ES="0" order_fr-FR="1" order_it-IT="0" order_jp-JA="1" />
  <EXPANSION value="MBS" />
  <RARITY metaname="M" />
  <POWER value="3" />
  <TOUGHNESS value="4" />
  <TOKEN_REGISTRATION reservation="4" type="TOKEN_SOLDIER_1_1_277462" />
  <TRIGGERED_ABILITY auto_skip="1" badge="BADGE_BATTLE_CRY" filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Battle cry]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Cri de guerre]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Grito de batalla.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Schlachtruf]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Grido di guerra]]></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[Grito de guerra]]></LOCALISED_TEXT>
    <TRIGGER value="ATTACKING" simple_qualifier="self" />
    <FILTER>
    return (FilteredCard() ~= Object() and   FilteredCard() ~= nil and   FilteredCard():GetCardType():Test( CARD_TYPE_CREATURE ) ~= 0 and   FilteredCard():GetZone() == ZONE_IN_PLAY and   FilteredCard():IsAttacking() ~= 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( 0 )
       end
    end
    </CONTINUOUS_ACTION>
    <DURATION simple_duration="UntilEOT" />
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY forced_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever Hero of Bladehold attacks, put two 1/1 white Soldier creature tokens onto the battlefield tapped and attacking.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn der Held der Klingenfeste angreift, bringe zwei 1/1 weiße Soldat-Kreaturenspielsteine getappt und angreifend ins Spiel.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[]]></LOCALISED_TEXT>
    <TRIGGER value="ATTACKING" simple_qualifier="self" />
    <RESOLUTION_TIME_ACTION>
    local defendingPlayer = TriggerObject():GetPlayerAttacked()
     MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_277462", 2, EffectController(), defendingPlayer )
    </RESOLUTION_TIME_ACTION>
    <AI_BASE_SCORE score="2400" zone="in_play" />
  </TRIGGERED_ABILITY>
</CARD_V2>
Aiodren
 
Posts: 45
Joined: 27 Jun 2012, 07:02
Has thanked: 5 times
Been thanked: 4 times

Re: DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby thefiremind » 27 Jun 2012, 08:38

Geist of Saint Traft is in one of the locked Ravnica guild decks, so the developers already coded it for us. :wink:
Code: Select all
<?xml version='1.0'?>
<CARD_V2>
  <FILENAME text="GEIST_OF_SAINT_TRAFT_277037" />
  <CARDNAME text="GEIST_OF_SAINT_TRAFT" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Geist of Saint Traft]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Geist de Saint Traft]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Geist de San Traft]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Geist von Sankt Traft]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Geist di San Traft]]></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[Geist de Santo Traft]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="277037" />
  <ARTID value="139449" />
  <ARTIST name="Igor Kieryluk" />
  <CASTING_COST cost="{1}{W}{U}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Spirit" order_de-DE="0" order_es-ES="1" order_fr-FR="0" order_it-IT="1" order_jp-JA="0" order_ko-KR="0" order_pt-BR="0" order_ru-RU="0" />
  <SUB_TYPE metaname="Cleric" order_de-DE="1" order_es-ES="0" order_fr-FR="1" order_it-IT="0" order_jp-JA="1" order_ko-KR="1" order_pt-BR="1" order_ru-RU="1" />
  <EXPANSION value="DPG" />
  <RARITY metaname="M" />
  <POWER value="2" />
  <TOUGHNESS value="2" />
  <STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Hexproof]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Défense talismanique]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Antimaleficio.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Fluchsicher]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Anti-malocchio]]></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[Resistência à magia]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION>
    local characteristics = Object():GetCurrentCharacteristics()
    characteristics:Characteristic_Set( CHARACTERISTIC_HEXPROOF, 1 )
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY auto_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que le Geist de Saint Traft attaque, mettez sur le champ de bataille un jeton de créature 4/4 blanche Ange avec le vol, engagé et attaquant. Exilez ce jeton à la fin du combat.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que el Geist de San Traft ataque, pon en el campo de batalla una ficha de criatura Ángel blanco 4/4 con la habilidad de volar, girado y atacando. Exilia esa ficha al final del combate.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn der Geist von Sankt Traft angreift, bringe einen 4/4 weißen Engel-Kreaturenspielstein mit Flugfähigkeit getappt und angreifend ins Spiel. Schicke den Spielstein am Ende des Kampfes ins Exil.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta il Geist di San Traft attacca, metti sul campo di battaglia una pedina creatura Angelo 4/4 bianca con volare TAPpata e attaccante. Esilia quella pedina alla fine del combattimento.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[聖トラフトの霊が攻撃するたび、タップ状態で攻撃している飛行を持つ白の4/4の天使・クリーチャー・トークンを1体戦場に出す。 戦闘終了時に、そのトークンを追放する。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[성 트라프트의 심령이 공격할 때마다, 비행 능력을 가진 4/4 백색 천사 생물 토큰 한 개를 탭되어서 공격하고 있는 채로 전장에 놓는다. 전투종료에 그 토큰을 추방한다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда Привидение Святого Трафта атакует, положите на поле битвы одну фишку существа 4/4 белый Ангел с Полетом повернутой и атакующей. Изгоните ту фишку в конце боя.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que Geist de Santo Traft atacar, coloque no campo de batalha uma ficha de criatura branca 4/4 do tipo Anjo com voar virada e atacando. Exile aquela ficha no final do combate.]]></LOCALISED_TEXT>
    <TRIGGER value="ATTACKING" simple_qualifier="self" />
    <TARGET_DEFINITION id="0">
    local filter = Object():GetFilter()
    filter:Clear()
    filter:SetOwner( EffectController() )
    filter:SetFilterType( FILTER_TYPE_PLAYERS + FILTER_TYPE_OPPONENTS)
    filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
    filter:NotTargetted()
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER_TO_ANGEL", EffectDC():Make_Targets(0) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local count = 1
    local delayDC = EffectDC():Make_Chest(1)
    local attacked_player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    MTG():PutTokensIntoPlayTappedAndAttacking("TOKEN_ANGEL_4_4_F_GEIST_22", count, EffectController(), attacked_player, delayDC:Make_Chest(0) )
       
    MTG():CreateDelayedTrigger(2, delayDC)
       
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY auto_skip="1" resource_id="2">
    <TRIGGER value="BEGINNING_OF_STEP">
    return ( MTG():GetStep() == STEP_END_OF_COMBAT and TriggerPlayer() == EffectController() )
    </TRIGGER>
    <CLEANUP fire_once="1" />
    <RESOLUTION_TIME_ACTION>
    local i = 0
    local token_chest = EffectDC():Get_Chest(0)
    if token_chest ~= nil then
       local token = token_chest:Get_NthCardPtr(0)
             
       while (token ~= nil) do
          token:RemoveFromGame()
          i = i+1
          token = token_chest:Get_NthCardPtr(i)
       end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="TOKEN_ANGEL_4_4_F_GEIST_22" />
  <HELP title="MORE_INFO_BADGE_TITLE_10" body="MORE_INFO_BADGE_BODY_10" zone="ZONE_ANY" />
  <HELP title="MORE_INFO_BADGE_TITLE_21" body="MORE_INFO_BADGE_BODY_21" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLADE_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLADE_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="900" zone="ZONE_IN_PLAY" />
</CARD_V2>
Note that it allows the player to choose the attack target for the Angel token. I think it's true for any card with this mechanic, unless differently specified. Ninjutsu, for example, wants the Ninja to attack the same player as the substituted creature, but it's clearly written in the Planechase 2012 FAQs.
< 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: DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby DaLosar » 27 Jun 2012, 14:40

thefiremind wrote:Geist of Saint Traft is in one of the locked Ravnica guild decks, so the developers already coded it for us. :wink:

(...)

Note that it allows the player to choose the attack target for the Angel token. I think it's true for any card with this mechanic, unless differently specified. Ninjutsu, for example, wants the Ninja to attack the same player as the substituted creature, but it's clearly written in the Planechase 2012 FAQs.
Thanks guys, thats exactly what I needed! Where can I find those locked Ravnica decks? Are they some of the decks on the magic 2013 folder, or are they only avaliable on the non-Steam platforms?
DaLosar
 
Posts: 17
Joined: 22 Jun 2012, 06:08
Has thanked: 2 times
Been thanked: 0 time

Re: DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby thefiremind » 27 Jun 2012, 15:19

DaLosar wrote:Thanks guys, thats exactly what I needed! Where can I find those locked Ravnica decks? Are they some of the decks on the magic 2013 folder, or are they only avaliable on the non-Steam platforms?
I found them by extracting the game for Xbox. I read somewhere that the Xbox Live administrators prefer to pack everything at once and then distribute unlock keys, rather than distribute other big packages later.

As long as the link for downloading those decks works, you can find it here:
viewtopic.php?f=62&t=6784&start=75#p91296
Note that they lack of their TEXT_PERMANENT XML's, so if you unlock the decks and use them in the game (you just have to set content_pack="0" instead of "1" and add always_available="true"), you'll see them with the usual [CAPITAL_NAMES_INSIDE_PARENTHESES], and some card queries will probably be without localised text, too. But it's nice to have other cards ready.
< 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: DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby BlindWillow » 19 Jul 2012, 03:19

The rules for Hero of Bladehold state that:
you choose which opponent or planeswalker an opponent controls that each token is attacking when it is put onto the battlefield.
So it's not simply a matter of putting the tokens onto the battlefield attacking (at least not in multiplayer games like Planechase).

Myself, I coded two triggers: one for two-player games and one for multi-player games. The former looks like Aiodren's above. The latter uses ChooseTargetsWithFlags() with QUERY_FLAG_CAN_BE_FINISHED_EARLY so that the player can choose zero (tokens attack same player as Hero), one, or two opponents. So far it seems to be working for me. I'm not sure how well the AI would use it, though. Here's the relevant code:

Code: Select all
  <TRIGGERED_ABILITY LKI_shield_effect_source="1" dangerous="1" filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever Hero of Bladehold attacks, put two 1/1 white Soldier creature tokens onto the battlefield tapped and attacking.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que l’Héroïne de Fortcoutel attaque, mettez sur le champ de bataille deux jetons de créature 1/1 blanche Soldat, engagés et attaquants.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que el Héroe de Fortaleza del Filo ataque, pon en el campo de batalla dos fichas de criatura Soldado blancas 1/1 giradas y atacando.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn der Held der Klingenfeste angreift, bringe zwei 1/1 weiße Soldat-Kreaturenspielsteine getappt und angreifend ins Spiel.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta l’Eroina di Rifugio delle Lame attacca, metti sul campo di battaglia due pedine creatura Soldato 1/1 bianche TAPpate e attaccanti.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[刃砦の英雄が攻撃するたび、タップ状態で攻撃している白の1/1の兵士・クリーチャー・トークンを2体戦場に出す。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever Hero of Bladehold attacks, put two 1/1 white Soldier creature tokens onto the battlefield tapped and attacking.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз когда Герой Блэйдхолда атакует, положите на поле битвы две фишки существа 1/1 белый Солдат повернутыми и атакующими.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que Herói de Bladehold atacar, coloque no campo de batalha duas fichas de criatura brancas 1/1 do tipo Soldado viradas e atacando.]]></LOCALISED_TEXT>
    <TRIGGER value="ATTACKING" simple_qualifier="self">
    return MTG():GetNumberOfPlayers() == 2
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local delayDC = EffectDC():Make_Chest(1)
    local player = TriggerObject():GetPlayerAttacked()
    if player ~= nil then
   MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_277462", 2, EffectController(), player, delayDC:Make_Chest(0) )
    end
    MTG():CreateDelayedTrigger(2, delayDC)   
  </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY LKI_shield_effect_source="1" dangerous="1" filter_zone="ZONE_IN_PLAY">
    <TRIGGER value="ATTACKING" simple_qualifier="self">
    return MTG():GetNumberOfPlayers() &gt; 2
    </TRIGGER>
    <TARGET_DEFINITION id="0">
    local filter = Object():GetFilter()
    filter:Clear()
    filter:SetFilterType( FILTER_TYPE_PLAYERS + FILTER_TYPE_OPPONENTS)
    filter:SetOwner( EffectController() )
    filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
    filter:NotTargetted()
    </TARGET_DEFINITION>
    <TARGET_DETERMINATION>
    return AtLeastOneTargetFromDefinition(0)
    </TARGET_DETERMINATION>
    <PLAY_TIME_ACTION target_choosing="1">
    local player = EffectController()
    player:SetTargetCount(2)
    player:SetTargetPrompt( 0, "CARD_QUERY_CHOOSE_OPPONENT_BLADEHOLD" )   
    player:SetTargetPrompt( 1, "CARD_QUERY_CHOOSE_OPPONENT_BLADEHOLD" )   
    player:ChooseTargetsWithFlags( 0 , EffectDC():Make_Targets(0), QUERY_FLAG_CAN_BE_FINISHED_EARLY + QUERY_FLAG_CAN_BE_FINISHED_EARLY_FOR_AI_AS_WELL )
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local delayDC = EffectDC():Make_Chest(1)
    if EffectDC():Get_Targets(0):Get_PlayerPtr(0) == nil then
        local player = TriggerObject():GetPlayerAttacked()
       if player ~= nil then
         MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_277462", 2, EffectController(), player, delayDC:Make_Chest(0) )
       end
    elseif EffectDC():Get_Targets(0):Get_PlayerPtr(1) == nil then
        local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
       if player ~= nil then
         MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_277462", 2, EffectController(), player, delayDC:Make_Chest(0) )
       end
    else
   for i=0,1 do
          local player = EffectDC():Get_Targets(0):Get_PlayerPtr(i)
         if player ~= nil then
           MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_277462", 1, EffectController(), player, delayDC:Make_Chest(i) )
         end
   end
    end
    MTG():CreateDelayedTrigger(2, delayDC)   
  </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="TOKEN_SOLDIER_1_1_277462" />
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times

Re: DOTP 2013- PutTokensIntoPlayTappedAndAttacking

Postby BlindWillow » 20 Jul 2012, 02:29

Was just looking through the future Ravnica guild decks that thefiremind posted and came across Hero of Bladehold in what looks to be the Selesnya deck (DECK_0016_ST). Here's the relevant code:

Code: Select all
  <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever Hero of Bladehold attacks, put two 1/1 white Soldier creature tokens onto the battlefield tapped and attacking.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que l’Héroïne de Fortcoutel attaque, mettez sur le champ de bataille deux jetons de créature 1/1 blanche Soldat, engagés et attaquants.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que el Héroe de Fortaleza del Filo ataque, pon en el campo de batalla dos fichas de criatura Soldado blancas 1/1 giradas y atacando.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn der Held der Klingenfeste angreift, bringe zwei 1/1 weiße Soldat-Kreaturenspielsteine getappt und angreifend ins Spiel.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta l’Eroina di Rifugio delle Lame attacca, metti sul campo di battaglia due pedine creatura Soldato 1/1 bianche TAPpate e attaccanti.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[刃砦の英雄が攻撃するたび、タップ状態で攻撃している白の1/1の兵士・クリーチャー・トークンを2体戦場に出す。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[블레이드홀드의 영웅이 공격할 때마다, 1/1 백색 병사 생물 토큰 두 개를 탭되어 공격하고 있는 채로 전장에 놓는다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда Герой Блэйдхолда атакует, положите на поле битвы две фишки существа 1/1 белый Солдат повернутыми и атакующими.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que Herói de Bladehold atacar, coloque no campo de batalha duas fichas de criatura brancas 1/1 do tipo Soldado viradas e atacando.]]></LOCALISED_TEXT>
    <TRIGGER value="ATTACKING" simple_qualifier="self" />
    <TARGET_DEFINITION id="0">
    local filter = Object():GetFilter()
    filter:Clear()
    filter:SetOwner( EffectController() )
    filter:SetFilterType( FILTER_TYPE_PLAYERS + FILTER_TYPE_OPPONENTS)
    filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
    filter:NotTargetted()
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER_TO_SOLDIER", EffectDC():Make_Targets(0) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER_TO_SOLDIER", EffectDC():Make_Targets(1) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local player_a = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    local player_b = EffectDC():Get_Targets(1):Get_PlayerPtr(0)
    MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_300248", 1, EffectController(), player_a )
    MTG():PutTokensIntoPlayTappedAndAttacking( "TOKEN_SOLDIER_1_1_300248", 1, EffectController(), player_b )
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="TOKEN_SOLDIER_1_1_300248" />
I notice they aren't using the delayed trigger as in the code for both Kharasha Foothills and Geist of Saint Traft. So I assume the trigger that is being delayed is not the one putting the tokens onto the battlefield but the one exiling them (which, I suppose, should be obvious).
BlindWillow
 
Posts: 213
Joined: 19 Jul 2012, 00:26
Has thanked: 11 times
Been thanked: 46 times


Return to Programming Talk

Who is online

Users browsing this forum: No registered users and 3 guests


Who is online

In total there are 3 users online :: 0 registered, 0 hidden and 3 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 3 guests

Login Form