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)



Card Creation Request Thread
User-made mods in DLC (Downloadable Content) form.
Get MTG cards here for your DotP that aren't available anywhere else!
Get MTG cards here for your DotP that aren't available anywhere else!
Moderator: CCGHQ Admins
Re: Card Creation Request Thread
by BloodReyvyn » 10 Jun 2013, 16:12
Ummm looking at that code, seems to not be right... It is removing counters after the effect had begun resolving, rather than trying to simulate it as a cost as such: (Untested)
This way, the ability is not even available to activate if there are no counters to remove, then you choose how many to remove, then gain control of a creature with less than or equal to that number of counters.... hopefully without headaches.
- Code: Select all
<ACTIVATED_ABILITY filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}, Remove one or more +1/+1 counters from Simic Manipulator: Gain control of target creature with power less than or equal to the number of +1/+1 counters removed this way.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}, retirez un ou plusieurs marqueurs +1/+1 du Manipulateur de Simic : Acquérez le contrôle d'une créature ciblée ayant une force inférieure ou égale au nombre de marqueurs +1/+1 retirés de cette manière.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}, remover uno o más contadores +1/+1 del Manipulador simic: Gana el control de la criatura objetivo con fuerza menor o igual al número de contadores +1/+1 removidos de esta manera.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}, entferne eine oder mehrere +1/+1-Marken vom Simic-Manipulator: Übernimm die Kontrolle über eine Kreatur deiner Wahl, deren Stärke kleiner oder gleich der Anzahl der auf diese Weise entfernten +1/+1-Marken ist.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}, Rimuovi uno o più segnalini +1/+1 dal Manipolatore Simic: Prendi il controllo di una creatura bersaglio con forza pari o inferiore al numero di segnalini +1/+1 rimossi in questo modo.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}, シミックの干渉者の上から+1/+1カウンターを1個以上取り除く:パワーがこれにより取り除かれた+1/+1カウンターの総数以下のクリーチャー1体を対象とし、それのコントロールを得る。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}, 시믹 조작술사가 가진 +1/+1 카운터 한 개 이상을 제거한다: 이런 식으로 제거한 +1/+1 카운터의 개수 이하만큼의 공격력을 가진 생물 한 개를 목표로 정한다. 그 생물의 조종권을 얻는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}, удалите один или более жетонов +1/+1 с Манипулятора Симиков: получите контроль над целевым существом, сила которого меньше или равна количеству жетонов +1/+1, удаленных таким образом.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}, Remova um ou mais marcadores +1/+1 de Manipulator Simic: Ganhe o controle da criatura alvo com poder menor ou igual ao número de marcadores +1/+1 removidos dessa maneira.]]></LOCALISED_TEXT>
<COST type="TapSelf"/>
<AVAILABILITY>
return EffectController():IsAI() == 0 or Object():CountCounters( MTG():PlusOnePlusOneCounters() ) > 0
</AVAILABILITY>
<PLAY_TIME_ACTION>
local decision = Object():GetNumericalChoiceResult()
Object():RemoveCounters( MTG():PlusOnePlusOneCounters(), decision )
EffectDC():Set_Int(1, decision)
</PLAY_TIME_ACTION>
<TARGET_DEFINITION id="0">
local filter = Object():GetFilter()
filter:Clear()
filter:AddCardType(CARD_TYPE_CREATURE)
filter:SetZone(ZONE_IN_PLAY)
filter:SetPowerMax(decision)
</TARGET_DEFINITION>
<TARGET_DETERMINATION>
return AtLeastOneTargetFromDefinition(0)
</TARGET_DETERMINATION>
<PLAY_TIME_ACTION>
EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_CREATURE_TO_GAIN_CONTROL", EffectDC():Make_Targets(0) )
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if (target ~= nil) then
target:SetPermanentController(EffectController())
end
</RESOLUTION_TIME_ACTION>
</ACTIVATED_ABILITY>
This way, the ability is not even available to activate if there are no counters to remove, then you choose how many to remove, then gain control of a creature with less than or equal to that number of counters.... hopefully without headaches.
"There's an experience worse than blindness - it's the certainty that your vision is perfect and the horror that there's no world around you to see."
-
BloodReyvyn - Posts: 421
- Joined: 19 May 2013, 13:29
- Has thanked: 53 times
- Been thanked: 40 times
Re: Card Creation Request Thread
by thefiremind » 10 Jun 2013, 16:29
That cannot work because you are missing the numerical choice, and the "decision" variable in the TARGET_DEFINITION can't be retrieved from where you declared (how many times do I have to say that local variables need to be saved in an EffectDC register if you need to pass them between different blocks?
).

This is the problem: you can set the maximum value of the numerical choice, but not the minimum. There's no way to disable the chance to remove 0 counters (unless you repeat the question if 0 is selected, but then you should invent another way for the AI to interact with the card because it would probably get frozen by that).BloodReyvyn wrote:The way it was set up, you could theoretically activate the ability to gain control of, say, an Ornithopter (assuming the Manipulator is getting "pumped up" toughness to live) without any counters
< 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: Card Creation Request Thread
by sumomole » 10 Jun 2013, 17:00
OK, I know what's wrong, because he use "filter:SetPowerMax( Object():CountCounters(MTG():PlusOnePlusOneCounters()) )" in TARGET_DEFINITION, so when the ability resolves, if the number of +1/+1 counters on Simic Manipulator(not removed) is fewer than the target creature's power, which causes TARGET_DETERMINATION determine the target is illegal, and whole ability will be countered.gorem2k wrote:just realized I didn't have that mod AND your update (Aetherling + more).. I will delete my recent work and use these !sumomole wrote:Heregorem2k wrote:May I request Simic Manipulator ? (just the code is ok).
I tried doing it with Ooze Flux, Vedalken Shackles, Infused Arrows, etc. failed. only the evolve part works properly
EDIT: Simic is not working sometimes. had 5 counters on it, there was two 2/2 flying tokens on opponent side, couldn't gain control of them. actually, 1 did join and the second wouldn't. if someone care take a look, here's the xml from BETenner.
Use the following code instead of it.
- 2nd ability | Open
- Code: Select all
<ACTIVATED_ABILITY dangerous="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}, Remove one or more +1/+1 counters from Simic Manipulator: Gain control of target creature with power less than or equal to the number of +1/+1 counters removed this way.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<AVAILABILITY>
local filter = Object():LoadTargetDefinition(0)
filter:SetPowerMax( Object():CountCounters(MTG():PlusOnePlusOneCounters()) )
if filter:CountStopAt( 1 ) == 1 then
return Object():CountCounters(MTG():PlusOnePlusOneCounters()) > 0
end
return false
</AVAILABILITY>
<TARGET_DEFINITION id="0">
local filter = Object():GetFilter()
filter:Clear()
filter:SetZone( ZONE_IN_PLAY )
filter:AddCardType( CARD_TYPE_CREATURE )
filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
</TARGET_DEFINITION>
<TARGET_DETERMINATION>
return AtLeastOneTargetFromDefinition(0)
</TARGET_DETERMINATION>
<PLAY_TIME_ACTION target_choosing="1">
local filter = Object():LoadTargetDefinition(0)
filter:SetPowerMax( Object():CountCounters(MTG():PlusOnePlusOneCounters()) )
EffectController():ChooseTarget( NO_VALIDATION, "CARD_QUERY_CHOOSE_CREATURE_TO_GAIN_CONTROL", EffectDC():Make_Targets(0) )
</PLAY_TIME_ACTION>
<PLAY_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
local countersRemoved = target:GetCurrentCharacteristics():Power_Get()
if countersRemoved < 1 then
countersRemoved = 1
end
Object():RemoveCounters(MTG():PlusOnePlusOneCounters(), countersRemoved)
EffectDC():Set_Int(1, countersRemoved)
end
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION layer="2">
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
local countersRemoved = EffectDC():Get_Int(1)
if target ~= nil and target:GetCurrentCharacteristics():Power_Get() <= countersRemoved then
target:SetPermanentController(EffectController())
end
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY type="in_response" />
<AI_AVAILABILITY step="begin_combat" turn="their_turn" />
<AI_AVAILABILITY step="main_1" turn="my_turn" />
<AI_AVAILABILITY step="declare_attackers" turn="their_turn" />
<AI_AVAILABILITY step="declare_blockers" />
<AI_AVAILABILITY step="end_of_turn" />
</ACTIVATED_ABILITY>

-
sumomole - Programmer
- Posts: 611
- Joined: 07 Jun 2011, 08:34
- Has thanked: 51 times
- Been thanked: 234 times
Re: Card Creation Request Thread
by gorem2k » 10 Jun 2013, 17:54
it works! some cards are worth the effort and this one is no exception.
I also like its friendly structure/mechanism.
while I was testing, I noticed Aetherling crashes the game if it exile when he's a token copy. (I used Stolen Identity to copy Aetherling)
I wonder if it should come back?
I also like its friendly structure/mechanism.
while I was testing, I noticed Aetherling crashes the game if it exile when he's a token copy. (I used Stolen Identity to copy Aetherling)
I wonder if it should come back?
Re: Card Creation Request Thread
by thefiremind » 10 Jun 2013, 18:02
Yes, the AI crashes the game when evaluating cards that protect a pointer pointing to a token. You need to protect the pointer only if it's not a token (and it would be pointless to do it for a token because it ceases to exist after changing zone).gorem2k wrote:it works! some cards are worth the effort and this one is no exception.
I also like its friendly structure/mechanism.
while I was testing, I noticed Aetherling crashes the game if it exile when he's a token copy. (I used Stolen Identity to copy Aetherling)
Example:
- Code: Select all
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
EffectDC():Get_Targets(0):Protect_CardPtr(0)
target:RemoveFromGame()
end
- Code: Select all
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
if target:IsToken() == 0 then
EffectDC():Get_Targets(0):Protect_CardPtr(0)
end
target:RemoveFromGame()
end
< 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: Card Creation Request Thread
by gorem2k » 10 Jun 2013, 18:17
I have this:thefiremind wrote:I guess you'll have EffectSource() instead of target for AEtherling, anyway I hope you understood where to add the condition.
- Code: Select all
<RESOLUTION_TIME_ACTION>
if EffectSource() ~= nil then
MTG():CreateDelayedTrigger(2, nil)
EffectSource():RemoveFromGame()
end
</RESOLUTION_TIME_ACTION>
so I'm lost here

maybe I could write this:
- Code: Select all
<RESOLUTION_TIME_ACTION>
if EffectSource() ~= nil then
if target:IsToken() == 0 then
MTG():CreateDelayedTrigger(2, nil)
EffectSource():RemoveFromGame()
end
else
EffectSource():RemoveFromGame()
end
</RESOLUTION_TIME_ACTION>
Re: Card Creation Request Thread
by thefiremind » 10 Jun 2013, 18:28
So the delayed trigger probably checks Object() instead of EffectSource(), which is a bad habit: if somehow your AEtherling gets out of the exile zone, it will come back anyway, while it shouldn't. The card needs to be recoded better, and the crash will be fixed by doing that. Could you post the whole code?
< 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: Card Creation Request Thread
by gorem2k » 10 Jun 2013, 19:06
thefiremind wrote:So the delayed trigger probably checks Object() instead of EffectSource(), which is a bad habit: if somehow your AEtherling gets out of the exile zone, it will come back anyway, while it shouldn't. The card needs to be recoded better, and the crash will be fixed by doing that. Could you post the whole code?
- card | Open
- Code: Select all
<?xml version='1.0'?>
<CARD_V2>
<FILENAME text="AETHERLING_624781" />
<CARDNAME text="AETHERLING" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Ætherling]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Ætherling]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="624781" />
<ARTID value="624781" />
<ARTIST name="Tyler Jacobson" />
<CASTING_COST cost="{4}{U}{U}" />
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Shapeshifter" order_de-DE="0" order_es-ES="0" order_fr-FR="0" order_it-IT="0" order_jp-JA="0" order_ko-KR="0" order_pt-BR="0" order_ru-RU="0" />
<EXPANSION value="DPG" />
<RARITY metaname="R" />
<POWER value="4" />
<TOUGHNESS value="5" />
<ACTIVATED_ABILITY filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{U}: Exile Ætherling, Return it to the battlefield under its owner’s control at the beginning of the next end step.]]></LOCALISED_TEXT>
<COST type="Mana" cost="{U}" />
<RESOLUTION_TIME_ACTION>
if EffectSource() ~= nil then
MTG():CreateDelayedTrigger(2, nil)
EffectSource():RemoveFromGame()
end
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY type="in_response_dangerous" />
<AI_AVAILABILITY step="main_2" turn="my_turn" />
<AI_AVAILABILITY step="declare_blockers" />
<AI_AVAILABILITY and="1" attacking_or_blocking="1" />
</ACTIVATED_ABILITY>
<ACTIVATED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{U}: Ætherling is unblockable this turn.]]></LOCALISED_TEXT>
<COST type="Mana" cost="{U}" />
<CONTINUOUS_ACTION layer="6">
if EffectSource() ~= nil then
local characteristics = EffectSource():GetCurrentCharacteristics()
characteristics:Characteristic_Set( CHARACTERISTIC_UNBLOCKABLE, 1 )
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AI_AVAILABILITY step="declare_attackers" characteristic="CHARACTERISTIC_UNBLOCKABLE" />
<AI_AVAILABILITY and="1" attacking_or_blocking="1" />
</ACTIVATED_ABILITY>
<ACTIVATED_ABILITY auto_skip="1" firebreathing="1" filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{1}: Ætherling gets +1/-1 until end of turn.]]></LOCALISED_TEXT>
<COST type="Mana" cost="{1}" />
<CONTINUOUS_ACTION layer="7C">
if EffectSource() ~= nil then
EffectSource():GetCurrentCharacteristics():Power_Add( 1 )
EffectSource():GetCurrentCharacteristics():Toughness_Add( -1 )
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AI_AVAILABILITY step="declare_blockers" />
<AI_AVAILABILITY and="1" attacking_or_blocking="1" />
</ACTIVATED_ABILITY>
<ACTIVATED_ABILITY filter_zone="ZONE_IN_PLAY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{1}: Ætherling gets -1/+1 until end of turn.]]></LOCALISED_TEXT>
<COST type="Mana" cost="{1}" />
<CONTINUOUS_ACTION layer="7C">
if EffectSource() ~= nil then
EffectSource():GetCurrentCharacteristics():Power_Add( -1 )
EffectSource():GetCurrentCharacteristics():Toughness_Add( 1 )
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AI_AVAILABILITY type="in_response_dangerous" />
<AI_AVAILABILITY step="declare_blockers" />
<AI_AVAILABILITY and="1" attacking_or_blocking="1" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY resource_id="2">
<TRIGGER value="BEGINNING_OF_STEP" simple_qualifier="controller">
return MTG():GetStep() == STEP_END_OF_TURN
</TRIGGER>
<CLEANUP fire_once="1" />
<RESOLUTION_TIME_ACTION>
if EffectSource() ~= nil then
EffectSource():PutIntoPlay( EffectSource():GetOwner() )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<HELP title="MORE_INFO_BADGE_TITLE_9" body="MORE_INFO_BADGE_BODY_9" zone="ZONE_ANY" />
<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_IN_PLAY" />
</CARD_V2>
Re: Card Creation Request Thread
by thefiremind » 10 Jun 2013, 19:11
OK, the "flicker" ability should have the following 2 actions instead of its current one:
- Code: Select all
<RESOLUTION_TIME_ACTION>
local source = EffectSource()
if source ~= nil then
if source:IsToken() == 0 then
EffectDC():Protect_CardPtr( COMPARTMENT_ID_EFFECT_SOURCE )
end
source:RemoveFromGame()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local source = EffectSource()
if source ~= nil then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr(0, source)
MTG():CreateDelayedTrigger(2, delayDC)
end
</RESOLUTION_TIME_ACTION>
- Code: Select all
<TRIGGERED_ABILITY resource_id="2">
<TRIGGER value="BEGINNING_OF_STEP" simple_qualifier="controller">
return MTG():GetStep() == STEP_END_OF_TURN
</TRIGGER>
<CLEANUP fire_once="1" />
<RESOLUTION_TIME_ACTION>
local source = EffectDC():Get_CardPtr(0)
if source ~= nil then
source:PutIntoPlay( source:GetOwner() )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
Last edited by thefiremind on 10 Jun 2013, 20:09, edited 1 time in total.
< 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: Card Creation Request Thread
by sumomole » 10 Jun 2013, 19:55
Sure enough, over-simplification is wrong.thefiremind wrote:OK, the "flicker" ability should have the following 2 actions instead of its current one:and the delayed trigger that you find at the bottom of the card should be like this:
- Code: Select all
<RESOLUTION_TIME_ACTION>
local source = EffectSource()
if source ~= nil then
if source:IsToken() == 0 then
EffectDC():Protect_CardPtr( COMPARTMENT_ID_EFFECT_SOURCE )
end
source:RemoveFromGame()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local source = EffectSource()
if source ~= nil then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr(0, source)
delayDC:Set_PlayerPtr( 1, EffectController() )
MTG():CreateDelayedTrigger(2, delayDC)
end
</RESOLUTION_TIME_ACTION>
- Code: Select all
<TRIGGERED_ABILITY resource_id="2">
<TRIGGER value="BEGINNING_OF_STEP" simple_qualifier="controller">
return MTG():GetStep() == STEP_END_OF_TURN
</TRIGGER>
<CLEANUP fire_once="1" />
<RESOLUTION_TIME_ACTION>
local source = EffectDC():Get_CardPtr(0)
local controller = EffectDC():Get_PlayerPtr(1)
if source ~= nil and controller ~= nil then
source:PutIntoPlay(controller)
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>

And there is an error, it return under owner's control, not effectcontroller.
-
sumomole - Programmer
- Posts: 611
- Joined: 07 Jun 2011, 08:34
- Has thanked: 51 times
- Been thanked: 234 times
Re: Card Creation Request Thread
by gorem2k » 10 Jun 2013, 19:57
Excellent.
just a reminder, your Simic Fluxmage from 1999_Core can be activated &tapped even if it has no +1+1 counters on it. sumomole's version doesn't have this issue. it's fixin' time
just a reminder, your Simic Fluxmage from 1999_Core can be activated &tapped even if it has no +1+1 counters on it. sumomole's version doesn't have this issue. it's fixin' time

Re: Card Creation Request Thread
by thefiremind » 10 Jun 2013, 20:15
Yeah, I copied from Argent Sphinx and was too lazy to check AEtherling's text (I wonder when will Dragon's Maze cards have auto-popup here?).sumomole wrote:And there is an error, it return under owner's control, not effectcontroller.

Actually, I did that on purpose: it's obvious that you can't move counters when there are none, but I'm not sure whether Magic rules allow him to tap anyway or not. Let's pretend that we have a permanent that says "Whenever a creature becomes tapped, put a +1/+1 counter on that creature": Simic Fluxmage would benefit from being able to tap without counters because he would gain 1 to move before resolution. Does anyone know exactly what rules say in this case?gorem2k wrote:just a reminder, your Simic Fluxmage from 1999_Core can be activated &tapped even if it has no +1+1 counters on it. sumomole's version doesn't have this issue. it's fixin' time
< 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: Card Creation Request Thread
by RiiakShiNal » 10 Jun 2013, 20:23
I'm not sure on the rulings, but since the "Move a +1/+1 counter from Simic Fluxmage" is not in the cost I would assume you can activate regardless of whether you have a counter or not. The movement happens during resolution, so if the ability is countered the +1/+1 counter is not moved or removed from Simic Fluxmage (according to the rulings). So given that I would assume you can activate it without a +1/+1 counter on it because it doesn't seem to check until resolution.thefiremind wrote:Actually, I did that on purpose: it's obvious that you can't move counters when there are none, but I'm not sure whether Magic rules allow him to tap anyway or not. Let's pretend that we have a permanent that says "Whenever a creature becomes tapped, put a +1/+1 counter on that creature": Simic Fluxmage would benefit from being able to tap without counters because he would gain 1 to move before resolution. Does anyone know exactly what rules say in this case?
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: Card Creation Request Thread
by gorem2k » 10 Jun 2013, 20:34
from wiki :RiiakShiNal wrote:I'm not sure on the rulings, but since the "Move a +1/+1 counter from Simic Fluxmage" is not in the cost I would assume you can activate regardless of whether you have a counter or not. The movement happens during resolution, so if the ability is countered the +1/+1 counter is not moved or removed from Simic Fluxmage (according to the rulings). So given that I would assume you can activate it without a +1/+1 counter on it because it doesn't seem to check until resolution.thefiremind wrote:Actually, I did that on purpose: it's obvious that you can't move counters when there are none, but I'm not sure whether Magic rules allow him to tap anyway or not. Let's pretend that we have a permanent that says "Whenever a creature becomes tapped, put a +1/+1 counter on that creature": Simic Fluxmage would benefit from being able to tap without counters because he would gain 1 to move before resolution. Does anyone know exactly what rules say in this case?
I guess its not relevant ... I don't see a rule about that so I think its able to tap602.2. To activate an ability is to put it onto the stack and pay its costs, so that it will eventually resolve and have its effect. Only an object's controller (or its owner, if it doesn't have a controller) can activate its activated ability unless the object specifically says otherwise. Activating an ability follows the steps listed below, in order. If, at any point during the activation of an ability, a player is unable to comply with any of those steps, the activation is illegal; the game returns to the moment before that ability started to be activated (see rule 717, "Handling Illegal Actions"). Announcements and payments can't be altered after they've been made.

besides, you can sacrifice Qasali Pridemage even if there are no artifact or enchantment in play.
Last edited by gorem2k on 10 Jun 2013, 20:44, edited 1 time in total.
Re: Card Creation Request Thread
by thefiremind » 10 Jun 2013, 20:42
Yes, during the activation... moving the counter happens during resolution.gorem2k wrote:If, at any point during the activation of an ability, a player is unable to comply with any of those steps, the activation is illegal
And I just thought of an example that auto-convinces me I did the right choice:


No, this is not true, because it says "target artifact or enchantment", and you need a valid target for a targetted activated ability. In our case, the +1/+1 counter isn't targetted, of course.gorem2k wrote:besides, you can sacrifice Qasali Pridemage even if there are no artifact or enchantment in play.
< 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
Return to New MTG Cards and Decks (2010, 2012, 2013, 2014, 2015, Magic Duels)
Who is online
Users browsing this forum: No registered users and 3 guests