It is currently 26 Jun 2025, 18:19
   
Text Size

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!

Moderator: CCGHQ Admins

Re: Card Creation Request Thread

Postby 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)

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() ) &gt; 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>
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, and then the card would try to remove counters that aren't even there.

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."
User avatar
BloodReyvyn
 
Posts: 421
Joined: 19 May 2013, 13:29
Has thanked: 53 times
Been thanked: 40 times

Re: Card Creation Request Thread

Postby 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? :mrgreen:).

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
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).
< 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: Card Creation Request Thread

Postby sumomole » 10 Jun 2013, 17:00

gorem2k wrote:
sumomole wrote:
gorem2k 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
Here
just realized I didn't have that mod AND your update (Aetherling + more).. I will delete my recent work and use these ! #-o


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.
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.
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()) &gt; 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 &lt; 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() &lt;= 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>
And I really want to say, BETenner used a great way to simplify the whole ability, I like it. :lol:
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Card Creation Request Thread

Postby 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?
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Card Creation Request Thread

Postby thefiremind » 10 Jun 2013, 18:02

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)
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).

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
should become
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
I guess you'll have EffectSource() instead of target for AEtherling, anyway I hope you understood where to add the condition.
< 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: Card Creation Request Thread

Postby gorem2k » 10 Jun 2013, 18:17

thefiremind wrote:I guess you'll have EffectSource() instead of target for AEtherling, anyway I hope you understood where to add the condition.
I have this:
Code: Select all
    <RESOLUTION_TIME_ACTION>
    if EffectSource() ~= nil then
       MTG():CreateDelayedTrigger(2, nil)
       EffectSource():RemoveFromGame()
    end
    </RESOLUTION_TIME_ACTION>
He didn't use Protect_CardPtr(0)

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>
???
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Card Creation Request Thread

Postby 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...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Card Creation Request Thread

Postby 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>
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Card Creation Request Thread

Postby 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>
and the delayed trigger that you find at the bottom of the card should be like this:
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>
EDIT: Fixed so that it comes back under its owner's control.
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...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Card Creation Request Thread

Postby sumomole » 10 Jun 2013, 19:55

thefiremind wrote: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)
       delayDC:Set_PlayerPtr( 1, EffectController() )
       MTG():CreateDelayedTrigger(2, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
and the delayed trigger that you find at the bottom of the card should be like this:
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>
Sure enough, over-simplification is wrong. :mrgreen:
And there is an error, it return under owner's control, not effectcontroller.
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Card Creation Request Thread

Postby 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 :wink:
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Card Creation Request Thread

Postby thefiremind » 10 Jun 2013, 20:15

sumomole wrote:And there is an error, it return under owner's control, not effectcontroller.
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?). :P

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 :wink:
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?
< 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: Card Creation Request Thread

Postby RiiakShiNal » 10 Jun 2013, 20:23

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'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.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Card Creation Request Thread

Postby gorem2k » 10 Jun 2013, 20:34

RiiakShiNal wrote:
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'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.
from wiki :

602.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.
I guess its not relevant ... I don't see a rule about that so I think its able to tap :oops:

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.
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Card Creation Request Thread

Postby thefiremind » 10 Jun 2013, 20:42

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
Yes, during the activation... moving the counter happens during resolution.

And I just thought of an example that auto-convinces me I did the right choice:
{T}, Discard a card: Draw a card. <- This would require 1 card in hand.
{T}: Discard a card, then draw a card. <- This wouldn't.

gorem2k wrote:besides, you can sacrifice Qasali Pridemage even if there are no artifact or enchantment in play.
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.
< 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 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

Main Menu

User Menu

Our Partners


Who is online

In total there are 3 users online :: 0 registered, 0 hidden and 3 guests (based on users active over the past 10 minutes)
Most users ever online was 5050 on 26 Jun 2025, 06:02

Users browsing this forum: No registered users and 3 guests

Login Form