It is currently 20 Jul 2025, 12:53
   
Text Size

Formal Request Thread

Moderator: CCGHQ Admins

Re: Formal Request Thread

Postby daniel473 » 30 Nov 2013, 17:50

Can someone help me with Lich? Is there a way to change life gain into card draw?

<TRIGGERED_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If you would gain life, draw that many cards instead.]]></LOCALISED_TEXT>
<TRIGGER value="PLAYER_GAINED_LIFE" simple_qualifier="controller" />
<RESOLUTION_TIME_ACTION>
local amount = GetAmount()
local player = EffectController()
EffectController():DrawCards( GetAmount() )
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
SetAmount( current_life - 0 )
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>

This is ok except that it still triggers as lifeloss. I have to sacrifice permanents. how do i stop it from registrating
daniel473
 
Posts: 19
Joined: 13 Sep 2013, 14:36
Has thanked: 0 time
Been thanked: 1 time

Re: Formal Request Thread

Postby NeoAnderson » 30 Nov 2013, 17:53

thefiremind wrote:
NeoAnderson wrote:I also revised the other card we were talking about.

Now it says :
At the beginning of your upkeep, you may reveal a card from your hand. If the number of Forests you control is less than the number of green mana symbols on the card you revealed, search your library for up to X Forests, where X is the difference between those numbers, put them onto the battlefield tapped, then shuffle your library.

Here you can find the revised code, let me know if is ok.
I wouldn't put any restriction inside the TRIGGER block... as the card reads now, you are free to reveal a card even if you have only lands or red cards in your hand. Moreover, the restriction would give away information about your hand to your opponents (if it doesn't trigger, then you don't have a suitable card in your hand).

The query in a PLAY_TIME_ACTION is also wrong: all the choices that don't involve targetting should be made during resolution. Actually, I would remove the query altogether and move the choice to the card selection with a QUERY_FLAG_MAY: if you don't want to reveal a card, you'll click on Finish, and this will save you from one useless click when you want to reveal a card.

Dryads recalling | Open
Code: Select all
...
<TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
    return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
   <RESOLUTION_TIME_ACTION>
       local player = EffectController()
       local numlands = CountBasicLandsSubtypeControlledBy(LAND_TYPE_FOREST, player, ZONE_BATTLEFIELD)
       EffectDC():Set_Int(50, numlands)
       EffectDC():Set_Int(51, 0)
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
       local player = EffectController()
       if player ~= nil then
          --pick a card to reveal
          local filter = ClearFilter()
          filter:SetZone( ZONE_HAND, player )
          player:ChooseItem( "CARD_QUERY_CHOOSE_CARD_TO_REVEAL", EffectDC():Make_Targets(0), QUERY_FLAG_MAY )
           end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
       local player = EffectController()
       if player ~= nil then
          local card = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
          if card ~= nil then
             card:Reveal()
          end
           end
    end
    </RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
       local player = EffectController()
       local card = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
       if card ~= nil then
          local LandsToPutOnBattlefield = ColourManaCountIntoCard(COLOUR_GREEN, card, player)
     local NumOfLands = EffectDC():Get_Int(50)
     LandsToPutOnBattlefield = LandsToPutOnBattlefield - NumOfLands
     EffectDC():Set_Int(51, LandsToPutOnBattlefield)                       
       end
</RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
    local LandsToPutOnBattlefield = EffectDC():Get_Int(51)
    if LandsToPutOnBattlefield &gt; 0 then
       local filter = ClearFilter()
       local effectController = EffectController()
       filter:Add( FE_SUPERTYPE, OP_IS, SUPERTYPE_BASIC )
       filter:Add( FE_TYPE, OP_IS, CARD_TYPE_LAND )
       filter:Add( FE_SUBTYPE, OP_IS, LAND_TYPE_FOREST )
       filter:SetZone( ZONE_LIBRARY, effectController )
   effectController:SetItemCount( LandsToPutOnBattlefield )
       for i = 0, (LandsToPutOnBattlefield - 1) do
          effectController:SetItemPrompt(i, "CARD_QUERY_CHOOSE_LAND_TO_PUT_ONTO_THE_BATTLEFIELD_TAPPED" )
           end
       effectController:ChooseItems( EffectDC():Make_Targets(3), QUERY_FLAG_UP_TO )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local LandsToPutOnBattlefield = EffectDC():Get_Int(51)
    if LandsToPutOnBattlefield &gt; 0 then
       for i = 0,(LandsToPutOnBattlefield - 1) do
          local target_card = EffectDC():Get_Targets(3):Get_CardPtr(i)
              if target_card ~= nil  then
                  target_card:PutOntoBattlefieldTapped( EffectController() )
               end
            end
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local LandsToPutOnBattlefield = EffectDC():Get_Int(51)
    if LandsToPutOnBattlefield &gt; 0 then
        EffectController():ShuffleLibrary()
     end
    </RESOLUTION_TIME_ACTION>
...
I might have forgot to remove an "end" or something like that... the lack of a precise indentation really doesn't help. :lol:

EDIT: Oh, I was forgetting: this depends on you, but if you leave this line:
Code: Select all
filter:Add( FE_SUPERTYPE, OP_IS, SUPERTYPE_BASIC )
then the ability text should read "search your library for up to X basic Forests". Either modify the text, or remove that line.
About the "end" left, i was going to tell it to you! :lol:
Don't worry you made a so quick revised card i can understand you missed one! Also the best miss some hits sometime.

About Your explaination ok, i agree and thanks to have clarified this.
I made that trigger checks just because i would reduce the loading time of the card during the play, but i understand that if the target is to make a simulation of a real game, your reasoning is better.
About the card text you're right i will add "Basic Forest", because this limitation is needed the cardis already powerful.

Just to inform you, the card works (also my version before) and also the AI plays it making the right choices.

One last thing I still haven't a clear idea of the difference between PLAY_TIME_ACTION and RESOLUTION_TIME_ACTION, could you bring some light on this argument?
Thanks a lot.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby Rickycoe123 » 30 Nov 2013, 18:45

could I request Colossus of Akros please?
Rickycoe123
 
Posts: 138
Joined: 14 Mar 2013, 22:44
Has thanked: 1 time
Been thanked: 15 times

Re: Formal Request Thread

Postby thefiremind » 30 Nov 2013, 19:01

daniel473 wrote:Can someone help me with Lich? Is there a way to change life gain into card draw?
Changing an event into another event is a replacement, so it needs to have replacement_effect="1" and pre_trigger="1".
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If you would gain life, draw that many cards instead.]]></LOCALISED_TEXT>
    <TRIGGER value="PLAYER_GAINED_LIFE" simple_qualifier="controller" pre_trigger="1">
    MTG():OverrideEvent()
    return true
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    EffectController():DrawCards( GetAmount() )
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
NeoAnderson wrote:One last thing I still haven't a clear idea of the difference between PLAY_TIME_ACTION and RESOLUTION_TIME_ACTION, could you bring some light on this argument?
A PLAY_TIME_ACTION happens before resolution, basically just before paying costs (if there are costs to pay).

Rickycoe123 wrote:could I request Colossus of Akros please?
There's no way to code "can attack as though it didn't have defender". Defender can be removed, but then it wouldn't be correct (for cards like Overgrown Battlement).
< 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 RiiakShiNal » 30 Nov 2013, 21:01

NeoAnderson wrote:It introduces a new ability "Life Splitting"
Life Splitting rules : Whenever a creature with "life splitting" is leaving the battlefield, is exiled, put onto battlefield 2 token copies of that creature, with "life splitting". The power and toughness of these copies are the half of the source values. If the source values are odd, then will be subtracted 1 from these values, before to divide them. The ability is gained also by the tokens copies, and the effect will be repeated until the toughness will not be equal or less than 1.

Moment of Eternity effect : Target nonlegendary creature gains Life Splitting.

Example how is supposed to work : Applying the effect on a creature 6/6. When this creature is leaving the battlefield it is exiled, and on the battlefield come 2 tokens 3/3. When one of these tokens 3/3 is leaving the battlefield it is exiled, on the battlefield come 2 tokens 1/1. The effect will not be propagated anymore.
Your description text for this ability is hard to understand, but based on your example and the code it appears that you meant something along these lines:
If a creature with "Life Splitting" would leave the battlefield it is instead exiled. Put two tokens as copies of that creature onto the battlefield under your control each with power and toughness equal to half of the original creature's power and toughness rounded down as it last existed on the battlefield each with the ability "Life Splitting", if the resulting toughness would be greater than 0.
In your original description it reads as if "when it would leave the battlefield or is exiled you should put the two tokens into play" instead of "when it would leave the battlefield exile it and put two tokens into play".

Mathematically speaking subtracting 1 from an odd number then dividing by 2 is the same as dividing by 2 and rounding down, but dividing by 2 and rounding down is easier to understand than a conditional operation done only on odd numbers. For example:
Code: Select all
Your math:
(6 % 2 == 1 ? (6 - 1) / 2 : 6 / 2) = (0 == 1 ? 5 / 2 : 3) = (False ? 2.5 : 3) = 3
(3 % 2 == 1 ? (3 - 1) / 2 : 3 / 2) = (1 == 1 ? 2 / 2 : 1.5) = (True ? 1 : 1.5) = 1

Rounding down:
Floor(6 / 2) = Floor(3) = 3
Floor(3 / 2) = Floor(1.5) = 1
Also by mentioning "as it last existed on the battlefield" it becomes clear that the effect works based on current P/T rather than the P/T printed on the card. This is important when dealing with both temporary effects and counters. If a creature is 4/4 and has 2 +1/+1 counters on it, then by your code it is treated as a 6/6 the exact same as if you had a 10/10 with 4 -1/-1 counters on it or a 3/3 under the effects of a Giant Growth. If a creature dies due to infect damage (it becomes 0/0 or less due to -1/-1 counters) then Life Splitting just exiles the creature with no tokens put into play.

I can already see people using this card in combination with cards like Immaculate Magistrate, Ambush Commander, Elvish Vanguard, Imperious Perfect, Rhys the Exiled, Symbiotic Elf, Wren's Run Packmaster and other combinations. Possibly Modular with a Steel Overseer.

daniel473 wrote:Can someone help me with Lich? Is there a way to change life gain into card draw?

...

This is ok except that it still triggers as lifeloss. I have to sacrifice permanents. how do i stop it from registrating
Lich is supposed to trigger from damage not life loss. Loss of life is not the same as damage. For example with Lich you should be able to cast Ambition's Cost or Ancient Craving and not sacrifice any permanents, but still draw the 3 cards. If you have Archdemon of Greed and can't pay the upkeep cost then you would have to sacrifice 9 permanents (1 for each damage dealt to you).
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Formal Request Thread

Postby thefiremind » 30 Nov 2013, 21:35

I don't know if someone still wants it, but I filled a request from page 5 of this thread, just because I felt like trying. :lol:
Ib Halfheart, Goblin Tactician (briefly tested) | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="IB_HALFHEART_GOBLIN_TACTICIAN_114912" />
  <CARDNAME text="IB_HALFHEART_GOBLIN_TACTICIAN" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Ib Halfheart, Goblin Tactician]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Ib Micœur, tacticien gobelin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Ib Corazón de ratón, estratega trasgo]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Ib Halbherz, Goblin-Taktiker]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ib Mezzocuore, Stratega Goblin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ゴブリンの戦術家、半心臓のイッブ]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Ib Halfheart, Goblin Tactician]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Иб Хафхарт, Тактик гоблинов]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Ib Halfheart, Estrategista Goblin]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="114912" />
  <ARTID value="114912" />
  <ARTIST name="Wayne Reynolds" />
  <CASTING_COST cost="{3}{R}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“Everybody but me—CHARGE!”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« Tout le monde excepté moi — CHARGEZ ! »]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Todos salvo yo—¡A LA CARGA!”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Alle außer mir! Sturmangriff!”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Tutti tranne me—CARICA!”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[俺以外の全員――突撃!]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[“Everybody but me—CHARGE!”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[«Все, кроме меня! В АТАКУ!»]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[“Todos menos eu ATACAR!”]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Goblin" />
  <SUB_TYPE metaname="Advisor" />
  <EXPANSION value="TSP" />
  <RARITY metaname="R" />
  <POWER value="3" />
  <TOUGHNESS value="2" />
  <TRIGGERED_ABILITY linked_ability_group="1" replacement_effect="1" priority="20">
    <TRIGGER value="WAS_BLOCKED_BY_A_CREATURE" simple_qualifier="objectyoucontrol">
    return TriggerObject() ~= EffectSource() and TriggerObject():GetSubType():Test(CREATURE_TYPE_GOBLIN)
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local main_chest = LinkedDC():Get_Chest(0)
    local main_index = 1
    local main_location = -1
    if main_chest == nil then
       main_chest = LinkedDC():Make_Chest(0)
    else
       main_index = main_chest:Get_Int(0)
       for i=1,main_index-2,2 do
          -- Search for TriggerObject
          if main_chest:Get_CardPtr(i) == TriggerObject() then
             main_location = i
             break
          end
       end
    end
    if main_location == -1 then
       -- TriggerObject wasn't there, let's add it
       main_chest:Set_CardPtr( main_index, TriggerObject() )
       main_location = main_index
       main_chest:Set_Int(0, main_index+2)
    end
    local sub_chest = main_chest:Get_Chest(main_location+1)
    local sub_index = 1
    local sub_location = -1
    if sub_chest == nil then
       sub_chest = main_chest:Make_Chest(main_location+1)
    else
       sub_index = sub_chest:Get_Int(0)
       for i=1,sub_index-1 do
          -- Search for SecondaryObject
          if sub_chest:Get_CardPtr(i) == SecondaryObject() then
             sub_location = i
             break
          end
       end
    end
    if sub_location == -1 then
       -- SecondaryObject wasn't there, let's add it
       sub_chest:Set_CardPtr( sub_index, SecondaryObject() )
       sub_chest:Set_Int(0, sub_index+1)
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY linked_ability_group="1" replacement_effect="1" priority="20">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_END_OF_COMBAT
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    LinkedDC():Free_Compartment(0)
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever another Goblin you control becomes blocked, sacrifice it. If you do, it deals 4 damage to each creature blocking it.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois qu’un autre gobelin que vous contrôlez devient bloqué, sacrifiez-le. Si vous faites ainsi, il inflige 4 blessures à chaque créature qui le bloque.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que otro trasgo que controles sea bloqueado, sacrifícalo. Si lo haces, le hace 4 puntos de daño a cada criatura que lo bloquea.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn ein anderer Goblin, den du kontrollierst, geblockt wird, opfere ihn. Falls du das tust, fügt er jeder Kreatur, die ihn blockt, 4 Schadenspunkte zu.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta un altro Goblin che controlli viene bloccato, sacrificalo. Se lo fai, esso infligge 4 danni a ogni creatura che lo blocca.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールする他のゴブリンがブロックされた状態になるたび、それを生け贄に捧げる。 そうした場合、それはそれをブロックしている各クリーチャーにそれぞれ4点のダメージを与える。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Whenever another Goblin you control becomes blocked, sacrifice it. If you do, it deals 4 damage to each creature blocking it.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Когда другой Гоблин под вашим контролем становится заблокированным, пожертвуйте это существо. Если вы сделали это, это существо наносит 4 повреждения каждому заблокировавшему его существу.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que outro Goblin que você controla for bloqueado, sacrifique-o. Se fizer isso, ele causará 4 pontos de dano a cada criatura que o estiver bloqueando.]]></LOCALISED_TEXT>
    <TRIGGER value="WAS_BLOCKED" simple_qualifier="objectyoucontrol">
    return TriggerObject() ~= EffectSource() and TriggerObject():GetSubType():Test(CREATURE_TYPE_GOBLIN)
    </TRIGGER>
    <PLAY_TIME_ACTION>
    local main_chest = LinkedDC():Get_Chest(0)
    if main_chest ~= nil then
       local main_index = main_chest:Get_Int(0)
       local main_location = -1
       for i=1,main_index-2,2 do
          -- Search for TriggerObject
          if main_chest:Get_CardPtr(i) == TriggerObject() then
             main_location = i
             break
          end
       end
       if main_location ~= -1 then
          -- TriggerObject was there (at this point, it should always be)
          local sub_chest = main_chest:Get_Chest(main_location+1)
          EffectDC():Make_Chest(0):CopyFrom(sub_chest)
       end
    end
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil and TriggerObject():IsAttacking() then
       local sub_chest = EffectDC():Get_Chest(0)
       if sub_chest ~= nil then
          local sub_index = sub_chest:Get_Int(0)
          for i=1,sub_index-1 do
             local blocker = sub_chest:Get_CardPtr(i)
             if blocker ~= nil and blocker:IsBlocking() == false then
                -- We aren't interested in blockers that aren't blocking anymore
                sub_chest:Free_Compartment(i)
             end
          end
       end
       EffectController():Sacrifice( TriggerObject() )
       EffectDC():Set_Int(1, 1)
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    if EffectDC():Get_Int(1) == 1 then
       local sub_chest = EffectDC():Get_Chest(0)
       local sub_index = 1
       local sub_location = -1
       if sub_chest ~= nil then
          sub_index = sub_chest:Get_Int(0)
          for i=1,sub_index-1 do
             local blocker = sub_chest:Get_CardPtr(i)
             if blocker ~= nil then
                EffectSourceLKI():DealDamageTo(4, blocker)
             end
          end
       end   
    end
    </RESOLUTION_TIME_ACTION>
    <SFX text="GLOBAL_MAGMA_PLAY" />
  </TRIGGERED_ABILITY>
  <ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Sacrifice two Mountains: Put two 1/1 red Goblin creature tokens onto the battlefield.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Sacrifiez deux montagnes : Mettez sur le champ de bataille deux jetons de créature 1/1 rouge Gobelin.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Sacrificar dos montañas: Pon en el campo de batalla dos fichas de criatura Trasgo rojas 1/1.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Opfere zwei Gebirge: Bringe zwei 1/1 rote Goblin-Kreaturenspielsteine ins Spiel.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Sacrifica due Montagne: Metti sul campo di battaglia due pedine creatura Goblin 1/1 rosse.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[山を2つ生け贄に捧げる:赤の1/1のゴブリン・クリーチャー・トークンを2体戦場に出す。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Sacrifice two Mountains: Put two 1/1 red Goblin creature tokens onto the battlefield.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пожертвуйте две Горы: положите на поле битвы две фишки существа 1/1 красный Гоблин.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Sacrifique duas Montanhas: Coloque no campo de batalha duas fichas de criatura vermelhas 1/1 do tipo Goblin.]]></LOCALISED_TEXT>
    <COST type="Sacrifice" definition="0" compartment="1" query_tag="CARD_QUERY_CHOOSE_LAND_TO_SACRIFICE" item_count="2" />
    <COST_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add(FE_SUBTYPE, OP_IS, LAND_TYPE_MOUNTAIN)
    </COST_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    MTG():PutTokensOntoBattlefield( "TOKEN_GOBLIN_1_1_R_350762", 2, EffectController() )
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY window_step="declare_blockers" type="window" />
    <AI_AVAILABILITY type="in_response" response_source="1" />
    <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
    <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
    <AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
    <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
  </ACTIVATED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="TOKEN_GOBLIN_1_1_R_350762" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="600" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
I recycled the idea that I had for Gaze of the Gorgon, and Ib is much easier to manage.
I made just one test match against Garruk. He never blocked my Goblins while Ib was out, except when he had a Cudgel Troll ready to regenerate and when the damage was going to be lethal if he didn't block. The damage was dealt as expected, and the AI understands how it works.
Attachments
IB_HALFHEART_GOBLIN_TACTICIAN_114912.zip
Unprefixed, briefly tested, illustration included
(117.19 KiB) Downloaded 220 times
< 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 NeoAnderson » 30 Nov 2013, 22:16

thefiremind wrote:
NeoAnderson wrote:One last thing I still haven't a clear idea of the difference between PLAY_TIME_ACTION and RESOLUTION_TIME_ACTION, could you bring some light on this argument?
A PLAY_TIME_ACTION happens before resolution, basically just before paying costs (if there are costs to pay).
Thanks a lot my dear friend, perfectly understand.

RiiakShiNal wrote:Your description text for this ability is hard to understand, but based on your example and the code it appears that you meant something along these lines:
If a creature with "Life Splitting" would leave the battlefield it is instead exiled. Put two tokens as copies of that creature onto the battlefield under your control each with power and toughness equal to half of the original creature's power and toughness rounded down as it last existed on the battlefield each with the ability "Life Splitting", if the resulting toughness would be greater than 0.
Thanks a lot to help me to clarify this concept, i wrote it quickly and the concepts sometime are not easy to directly translate without make them more complexes.
In this case there is a combination of two factors, I have thought it into my language in a wrong way then i have translated it in a worst way.


RiiakShiNal wrote:In your original description it reads as if "when it would leave the battlefield or is exiled you should put the two tokens into play" instead of "when it would leave the battlefield exile it and put two tokens into play".

Mathematically speaking subtracting 1 from an odd number then dividing by 2 is the same as dividing by 2 and rounding down, but dividing by 2 and rounding down is easier to understand than a conditional operation done only on odd numbers. For example:
Code: Select all
Your math:
(6 % 2 == 1 ? (6 - 1) / 2 : 6 / 2) = (0 == 1 ? 5 / 2 : 3) = (False ? 2.5 : 3) = 3
(3 % 2 == 1 ? (3 - 1) / 2 : 3 / 2) = (1 == 1 ? 2 / 2 : 1.5) = (True ? 1 : 1.5) = 1

Rounding down:
Floor(6 / 2) = Floor(3) = 3
Floor(3 / 2) = Floor(1.5) = 1
Thanks again i know it is exactly the of rounding down function, but i didn't know the function to round down a number into this programming language, so i just tried to explain what they could find into that code. So if i can use Floor function, it will be easier to read and understand. :-)
Revised code with math.floor function :
Code: Select all
local toughness = TriggerObject():GetCurrentToughness()   
       local power = TriggerObject():GetCurrentToughness()   
        if toughness &gt; 1 then
                toughness = math.floor(toughness / 2)
             else
                toughness = 0
             end
        if power &gt; 1 then
                power = math.floor(power / 2)
             else
                power = 0
             end
RiiakShiNal wrote:Also by mentioning "as it last existed on the battlefield" it becomes clear that the effect works based on current P/T rather than the P/T printed on the card. This is important when dealing with both temporary effects and counters. If a creature is 4/4 and has 2 +1/+1 counters on it, then by your code it is treated as a 6/6 the exact same as if you had a 10/10 with 4 -1/-1 counters on it or a 3/3 under the effects of a Giant Growth. If a creature dies due to infect damage (it becomes 0/0 or less due to -1/-1 counters) then Life Splitting just exiles the creature with no tokens put into play.

I can already see people using this card in combination with cards like Immaculate Magistrate, Ambush Commander, Elvish Vanguard, Imperious Perfect, Rhys the Exiled, Symbiotic Elf, Wren's Run Packmaster and other combinations. Possibly Modular with a Steel Overseer.
Final thanks, you have helped me to make the sense more clear, I definitely explained better with the example what was my intention.
I also think so, this card has a lot of possible combinations of usage, and i hope to some of my cards into custom decks.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby RiiakShiNal » 01 Dec 2013, 01:43

NeoAnderson wrote:Thanks again i know it is exactly the of rounding down function, but i didn't know the function to round down a number into this programming language, so i just tried to explain what they could find into that code. So if i can use Floor function, it will be easier to read and understand. :-)
Revised code with math.floor function :
Code: Select all
local toughness = TriggerObject():GetCurrentToughness()   
       local power = TriggerObject():GetCurrentToughness()   
        if toughness &gt; 1 then
                toughness = math.floor(toughness / 2)
             else
                toughness = 0
             end
        if power &gt; 1 then
                power = math.floor(power / 2)
             else
                power = 0
             end
I wasn't actually expecting you to change the code as it should work either way, but in the description rounding down is easier to understand. The math I showed was simply to show that it is the same so there would be no problem with my wording and your code.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Formal Request Thread

Postby NeoAnderson » 01 Dec 2013, 02:06

RiiakShiNal wrote:I wasn't actually expecting you to change the code as it should work either way, but in the description rounding down is easier to understand. The math I showed was simply to show that it is the same so there would be no problem with my wording and your code.
For me is a pleasure to make the code more clean, and is also a possibility to improve my skills, and for this i have to say thanks to you, and also to TheFiremind, and some other guys, to bring me on the right way.

About new cards i just make a new one if you want to take quick look, just to be sure i haven't override any other programming or Mtg rules.

To avoid any misunderstanding with my bad translations, i try to make an example to explain how it should work :
When you declare an attack, if you are attacking with all your creatures, and all your creatures become tapped the effect will be activated, and at the end of combat you may Untap the half of tapped creatures you control still on battlefield. This time is rounded up.(math.ceil)


Natural Defense | Open
Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="6">
   <FILENAME text="NATURAL_DEFENSE_G_7272534" />
   <CARDNAME text="NATURAL_DEFENSE_G" />
   <TITLE>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Natural Defense]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Défenses naturelles]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Defensa Naturales]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Natürliche Abwehr]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Difesa Naturale]]></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[Defesa Natural]]></LOCALISED_TEXT>
   </TITLE>
   <MULTIVERSEID value="7272534" />
   <ARTID value="7227534" />
   <ARTIST name="Applibot© Legend of Cryptids" />
   <CASTING_COST cost="{2}{G}{G}" />
   <TYPE metaname="Tribal" />
   <TYPE metaname="Enchantment" />
   <SUB_TYPE metaname="Divinity" />
   <EXPANSION value="DPI" />
   <RARITY metaname="R" />


   <TRIGGERED_ABILITY>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever you attack with all creatures you control and none of these creatures remains untapped, at the end of the combat phase You can untap the half rounded up of all tapped creatures you control.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Chaque fois que vous attaquez avec toutes les créatures que vous contrôlez et aucune de ces créatures reste inexploité, à la fin de la phase de combat Vous pouvez dégager la moitié arrondi vers le haut de toutes les créatures engagées que vous contrôlez.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cada vez que atacas con todas las criaturas que controlas y ninguna de estas criaturas permanece sin aprovechar, al final de la fase de combate Usted puede enderezar la media redondea hacia arriba de todas las criaturas giradas que controlas.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wann immer Sie mit allen Kreaturen angreifen Sie steuern, und keiner von diesen Kreaturen bleibt ungenutzt, am Ende der Kampfphase können Sie enttappe die Hälfte aller aufgerundet abgegriffen, die du kontrollierst.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta attacchi con tutte le creature che controlli e nessuna di queste creature rimane stappata, alla fine del combattimento puoi stappare la metà arrotondata per eccesso di tutte le creature tappate che controlli.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールするすべてのクリーチャーで攻撃し、これらの生き物はどれもあなたが半分はあなたがコントロールするすべてのタップ状態のクリーチャーの切り上げアンタップでき戦闘フェイズの終了時に、未開発の残っていない時はいつでも。]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신은 당신이 제어 모든 생물을 공격하고이 생물 중 어느 것도 당신은 절반을 제어 모든 탭 생물의 반올림 untap 수있는 전투 단계의 끝에서, 미개척 남아마다.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Всякий раз, когда вы атакуете всех существ под вашим контролем и ни один из этих существ не остается неиспользованным, в конце фазы боя Вы можете разворота половина округляется до всех резьбовых существ под вашим контролем.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Sempre que você atacar com todas as criaturas que você controla e nenhuma dessas criaturas permanece inexplorado, no final da fase de combate Você pode desvirar a metade arredondado para cima de todas as criaturas viradas que você controla.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[每當你攻擊了所有你操控的生物,沒有這些生物仍然未開發的,在戰鬥階段你可以重置半匯集了所有橫置由你操控的結尾。]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[每當你攻擊了所有你操控的生物,沒有這些生物仍然未開發的,在戰鬥階段你可以重置半匯集了所有橫置由你操控的結尾。]]></LOCALISED_TEXT>
      <TRIGGER value="ATTACKERS_DECLARED">
    if (CountActionCreaturesControlledBy(FE_IS_ATTACKING, EffectController(), ZONE_BATTLEFIELD) == CountcardTypeControlledBy(CARD_TYPE_CREATURE, EffectController(), ZONE_BATTLEFIELD)) and (CountActionCreaturesControlledBy(FE_IS_TAPPED, EffectController(), ZONE_BATTLEFIELD) == CountcardTypeControlledBy(CARD_TYPE_CREATURE, EffectController(), ZONE_BATTLEFIELD)) then
    return true
    end
    return false
    </TRIGGER>

    <RESOLUTION_TIME_ACTION>
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_Int(1, 1)
       MTG():CreateDelayedTrigger(1, delayDC)
    </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>

   <TRIGGERED_ABILITY resource_id="1">
      <CLEANUP fire_once="1" />
      <TRIGGER value="BEGINNING_OF_STEP">
      return (MTG():GetStep() == STEP_END_OF_COMBAT) and (EffectDC():Get_Int(1) == 1)
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
    filter:Add( FE_IS_TAPPED, true )
    local maxCreaturesToUnTap = math.ceil(CountActionCreaturesControlledBy(FE_IS_TAPPED, EffectController(), ZONE_BATTLEFIELD) / 2)
    EffectController():SetItemCount( maxCreaturesToUnTap )
    for i = 0, (maxCreaturesToUnTap-1) do
       EffectController():SetItemPrompt( i, "CARD_QUERY_CHOOSE_CREATURE_UNTAP" )
    end
    EffectController():ChooseItems( EffectDC():Make_Targets(0), QUERY_FLAG_UP_TO )
    </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
    local oCreatureDC = EffectDC():Get_Targets(0)
    if oCreatureDC ~= nil then
       local number = oCreatureDC:Count()
       for i = 0, (number-1) do
          local card = oCreatureDC:Get_CardPtr(i)
          card:Untap()
       end
    end
    </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>

</CARD_V2>
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby nekrose » 02 Dec 2013, 02:47

so, is Havengul Lich possible to make ?
User avatar
nekrose
 
Posts: 23
Joined: 27 Nov 2012, 09:20
Has thanked: 10 times
Been thanked: 0 time

Re: Formal Request Thread

Postby thefiremind » 02 Dec 2013, 09:29

nekrose wrote:so, is Havengul Lich possible to make ?
No.
< 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 » 02 Dec 2013, 11:38

life splitting sound similar to Mitotic Slime..guessing thats the best place to start
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: Formal Request Thread

Postby NeoAnderson » 02 Dec 2013, 15:21

drleg3nd wrote:life splitting sound similar to Mitotic Slime..guessing thats the best place to start
I see, and you're right it is similar. :-)
Anyway the card is coded and there is no reason to use another one as starting point :-)
It works fine.

Thanks my friend.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby Gideon1919 » 03 Dec 2013, 10:12

anyone has a working Abyssal Persecutor card ? PLease
Gideon1919
 
Posts: 13
Joined: 03 Sep 2013, 16:32
Has thanked: 0 time
Been thanked: 0 time

Re: Formal Request Thread

Postby thefiremind » 03 Dec 2013, 10:45

Gideon1919 wrote:anyone has a working Abyssal Persecutor card ? PLease
Unless the characteristics themselves are bugged in the engine (and if that's so, nothing can be done about it), this should work.
Abyssal Persecutor (untested) | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="ABYSSAL_PERSECUTOR_197869" />
  <CARDNAME text="ABYSSAL_PERSECUTOR" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Abyssal Persecutor]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Persécuteur abyssal]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Perseguidor abismal]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Höllischer Verfolger]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Persecutore Abissale]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[深淵の迫害者]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Abyssal Persecutor]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Преследователь из Бездны]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Perseguidor Abissal]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="197869" />
  <ARTID value="126474" />
  <ARTIST name="Chippy" />
  <CASTING_COST cost="{2}{B}{B}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[His slaves crave death more than they desire freedom. He denies them both.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Ses esclaves préfèrent la mort à la liberté. Il leur refuse les deux.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Sus esclavos desean más la muerte que la libertad. Él les niega ambas.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Seine Sklaven sehnen sich mehr nach dem Tod als nach der Freiheit. Er gönnt ihnen beides nicht.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[I suoi schiavi bramano la morte più di quanto non desiderino la libertà. Lui nega loro entrambe.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[彼の奴隷は、自由を求めるよりも死を望んでいる。 彼はそのどちらも許さない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[His slaves crave death more than they desire freedom. He denies them both.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Его рабы жаждут смерти больше, чем свободы. Он не дает им ни того ни другого.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Seus escravos anseiam pela morte mais do que desejam a liberdade. Ele lhes nega ambas as coisas.]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Demon" />
  <EXPANSION value="WWK" />
  <RARITY metaname="M" />
  <POWER value="6" />
  <TOUGHNESS value="6" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Flying]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vol]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Vuela]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Fliegend]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Volare]]></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[Voar]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_FLYING" />
  </STATIC_ABILITY>
  <STATIC_ABILITY commaspace="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[trample]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[piétinement]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[arrolla.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[verursacht Trampelschaden]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[travolgere]]></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[atropelar]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_TRAMPLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You can’t win the game and your opponents can’t lose the game.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous ne pouvez pas gagner la partie et vos adversaires ne peuvent pas la perdre.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tú no puedes ganar el juego y tus oponentes no pueden perder el juego.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst das Spiel nicht gewinnen, und deine Gegner können das Spiel nicht verlieren.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Non puoi vincere la partita e i tuoi avversari non possono perdere la partita.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたはこのゲームに勝利することができず、あなたの対戦相手はこのゲームに敗北することができない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[You can’t win the game and your opponents can’t lose the game.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Вы не можете выиграть партию, а ваши оппоненты не могут проиграть партию.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Você não pode vencer o jogo e seus oponentes não podem perdê-lo.]]></LOCALISED_TEXT>
    <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:SetFilterType(FILTER_TYPE_PLAYERS)
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    </FILTER>
    <CONTINUOUS_ACTION layer="8" filter_id="0">
    if FilteredPlayer() ~= nil then
       FilteredPlayer():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_CANT_LOSE, 1)
    end
    </CONTINUOUS_ACTION>
    <CONTINUOUS_ACTION layer="8">
    EffectController():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_CANT_WIN, 1)
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <HELP title="MORE_INFO_BADGE_TITLE_10" body="MORE_INFO_BADGE_BODY_10" zone="ZONE_ANY" />
  <HELP title="MORE_INFO_BADGE_TITLE_1" body="MORE_INFO_BADGE_BODY_1" zone="ZONE_ANY" />
  <SFX text="COMBAT_DEATHSWORD_ATTACK" power_boundary_min="1" power_boundary_max="-1" />
  <AI_BASE_SCORE score="-1200" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Attachments
ABYSSAL_PERSECUTOR_197869.zip
Unprefixed, untested, illustration included
(99.14 KiB) Downloaded 204 times
< 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

PreviousNext

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