Board index
Programs with AI or Rules Enforcement
Magic: The Gathering - Duels of the Planeswalkers
New MTG Cards and Decks (2010, 2012, 2013, 2014, 2015, Magic Duels)
2014




Formal Request Thread
Moderator: CCGHQ Admins
Re: Formal Request Thread
by 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
<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
Re: Formal Request Thread
by NeoAnderson » 30 Nov 2013, 17:53
About the "end" left, i was going to tell it to you!thefiremind wrote: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).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.
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.I might have forgot to remove an "end" or something like that... the lack of a precise indentation really doesn't help.
- 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 > 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 > 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 > 0 then
EffectController():ShuffleLibrary()
end
</RESOLUTION_TIME_ACTION>
...
EDIT: Oh, I was forgetting: this depends on you, but if you leave this line:then the ability text should read "search your library for up to X basic Forests". Either modify the text, or remove that line.
- Code: Select all
filter:Add( FE_SUPERTYPE, OP_IS, SUPERTYPE_BASIC )

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
by 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
by thefiremind » 30 Nov 2013, 19:01
Changing an event into another event is a replacement, so it needs to have replacement_effect="1" and pre_trigger="1".daniel473 wrote:Can someone help me with Lich? Is there a way to change life gain into card draw?
- 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>
A PLAY_TIME_ACTION happens before resolution, basically just before paying costs (if there are costs to pay).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?
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).Rickycoe123 wrote:could I request Colossus of Akros please?
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 722 times
Re: Formal Request Thread
by RiiakShiNal » 30 Nov 2013, 21:01
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: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.
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".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.
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
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.
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).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
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Formal Request Thread
by 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. 
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.

- 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 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 221 times
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 722 times
Re: Formal Request Thread
by NeoAnderson » 30 Nov 2013, 22:16
Thanks a lot my dear friend, perfectly understand.thefiremind wrote:A PLAY_TIME_ACTION happens before resolution, basically just before paying costs (if there are costs to pay).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?
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.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.
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.
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.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

Revised code with math.floor function :
- Code: Select all
local toughness = TriggerObject():GetCurrentToughness()
local power = TriggerObject():GetCurrentToughness()
if toughness > 1 then
toughness = math.floor(toughness / 2)
else
toughness = 0
end
if power > 1 then
power = math.floor(power / 2)
else
power = 0
end
Final thanks, you have helped me to make the sense more clear, I definitely explained better with the example what was my intention.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.
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
by RiiakShiNal » 01 Dec 2013, 01:43
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.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 > 1 then
toughness = math.floor(toughness / 2)
else
toughness = 0
end
if power > 1 then
power = math.floor(power / 2)
else
power = 0
end
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Formal Request Thread
by NeoAnderson » 01 Dec 2013, 02:06
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.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.
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
by thefiremind » 02 Dec 2013, 09:29
No.nekrose wrote:so, is Havengul Lich possible to make ?
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 722 times
Re: Formal Request Thread
by drleg3nd » 02 Dec 2013, 11:38
life splitting sound similar to Mitotic Slime..guessing thats the best place to start
Re: Formal Request Thread
by NeoAnderson » 02 Dec 2013, 15:21
I see, and you're right it is similar.drleg3nd wrote:life splitting sound similar to Mitotic Slime..guessing thats the best place to start

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
by 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
by thefiremind » 03 Dec 2013, 10:45
Unless the characteristics themselves are bugged in the engine (and if that's so, nothing can be done about it), this should work.Gideon1919 wrote:anyone has a working Abyssal Persecutor card ? PLease
- 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...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 722 times
Who is online
Users browsing this forum: No registered users and 9 guests