It is currently 19 Apr 2024, 20:38
   
Text Size

A planeswalkers mod

User-made mods in DLC (Downloadable Content) form.
Get MTG cards here for your DotP that aren't available anywhere else!

Moderator: CCGHQ Admins

A planeswalkers mod

Postby repem » 17 May 2013, 13:28

I wirte some code to allow player use planeswalker cards simulate.
There is a sample code:
Code: Select all
<?xml version = '1.0'?>
<CARD_V2>
   <FILENAME text = "test"/>
   <CARDNAME text = "test"/>
   <TITLE>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Jace Beleren, Planeswalker]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
   </TITLE>
   <MULTIVERSEID value="900004"/>
   <ARTID value="A900004"/>
   <ARTIST name="Kaio"/>
   <CASTING_COST cost="{1}"/>
   <SUPERTYPE metaname="Legendary" />
   <TYPE metaname="Creature" />
   <SUB_TYPE metaname="Human"/>
   <EXPANSION value="DPG" />
   <RARITY metaname="M"/>
   <POWER value="*" />
   <TOUGHNESS value="*" />
    <STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Planeswalker]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <CONTINUOUS_ACTION layer="7A">
         local characteristics = Object():GetCurrentCharacteristics()
         if Object():CountCounters( MTG():PlusOnePlusOneCounters() ) ==  0 then
            characteristics:Power_Set(1)
            characteristics:Toughness_Set(1)
         else
            characteristics:Power_Set(1)
            characteristics:Toughness_Set(1)            
         end
      </CONTINUOUS_ACTION>
   </STATIC_ABILITY>
   <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY" >
      <TRIGGER value="PLAYER_TOOK_DAMAGE">
         return TriggerPlayer() == EffectController()
      </TRIGGER>
      <RESOLUTION_TIME_ACTION >
            TriggerObject():GetPlayer():BeginNewMultipleChoice()
            TriggerObject():GetPlayer():AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
            TriggerObject():GetPlayer():AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" )
            TriggerObject():GetPlayer():AskMultipleChoiceQuestion( "CARD_QUERY_MC_CHOOSE_MODE" )
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION >
         if EffectController() ~= nil then
         local decision = Object():GetMultipleChoiceResult()
         if decision == 1 then
            Object():AddCounters( MTG():MinusOneMinusOneCounters(), Damage():GetAmount() )
            Damage():SetAmount(0)
         end
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>   
   <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
      <TRIGGER value="ZONECHANGE_BEGIN" simple_qualifier="self" to_zone="ZONE_IN_PLAY" />
      <RESOLUTION_TIME_ACTION>
         Object():AddCounters( MTG():PlusOnePlusOneCounters(), 2 )
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
      <TRIGGER value="BECAME_TAPPED" simple_qualifier="self" />
      <RESOLUTION_TIME_ACTION>
          Object():GetCurrentCharacteristics():Characteristic_Set( CHARACTERISTIC_CANT_USE_ABILITIES, 1 )
      </RESOLUTION_TIME_ACTION>
      <DURATION simple_duration = "UntilEOT"/>      
   </TRIGGERED_ABILITY>
   <ACTIVATED_ABILITY dangerous="1" filter_zone="ZONE_HAND" sorcery_time="1" per_turn_limit="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You draw three cards and put two loyalty counters on Jace Beleren, Planeswalker.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <COST type="countersself" name="+1/+1" number="2" />
       <COST type="TapSelf" />
      <RESOLUTION_TIME_ACTION>
      local player = EffectController()
      if (player ~= nil) then
         PlayerDrawCards( player, 3 )         
      end
      </RESOLUTION_TIME_ACTION>
   </ACTIVATED_ABILITY>
   <ACTIVATED_ABILITY dangerous="1" filter_zone="ZONE_HAND" sorcery_time="1" per_turn_limit="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Exile seven card from an oppoinen library and remove two loyalty counter from Jace Beleren, Planeswalker.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <COST type="countersself" name="+1/+1" number="-2" />
       <COST type="TapSelf" />
         <TARGET_DEFINITION id="0">
            local filter = Object():GetFilter()
            filter:Clear()
            filter:SetFilterType( FILTER_TYPE_PLAYERS + FILTER_TYPE_OPPONENTS)
            filter:SetOwner( EffectController() )
            filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
         </TARGET_DEFINITION>
         <TARGET_DETERMINATION>
            return AtLeastOneTargetFromDefinition(0)
         </TARGET_DETERMINATION>
         <PLAY_TIME_ACTION target_choosing="1">
            EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER", EffectDC():Make_Targets(0) )
         </PLAY_TIME_ACTION>
         <RESOLUTION_TIME_ACTION>
            local target_player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
            if target_player ~= nil then
               for i=0, 6 do
                  local card = target_player:Library_GetNth(0)
                     card:RemoveFromGame()
               end
            end
         </RESOLUTION_TIME_ACTION>
   </ACTIVATED_ABILITY>
   <ACTIVATED_ABILITY dangerous="1" filter_zone="ZONE_HAND" sorcery_time="1" per_turn_limit="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Remove eight loyalty counters, you may cast nonland cards from your hand without paying their mana costs until end of turn.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <COST type="countersself" name="+1/+1" number="-8" />
       <COST type="TapSelf" />
      <FILTER>
      return FilteredCard() ~= nil and
      FilteredCard():GetCardType():Test( CARD_TYPE_LAND ) == 0 and
      FilteredCard():GetPlayer() == Object():GetPlayer()
      </FILTER>
      <CONTINUOUS_ACTION layer="6">
      if FilteredCard() ~= nil then
        FilteredCard():GetCurrentCharacteristics():GrantAbility(1)
      end
      </CONTINUOUS_ACTION>
      <DURATION>
         return ( MTG():GetStep() == STEP_UNTAP ) and ( EffectController():MyTurn() ~= 0 )
      </DURATION>
   </ACTIVATED_ABILITY>
   <UTILITY_ABILITY resource_id="1">
      <COST type="Mana" cost="{0}" qualifier="alternate" tag="ALTERNATE_COST_PAY_0" />
   </UTILITY_ABILITY>   
   <ACTIVATED_ABILITY dangerous="1" filter_zone="ZONE_HAND" sorcery_time="1" per_turn_limit="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Remove twelve loyalty counters, you take three extra turns after this turn.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <COST type="countersself" name="+1/+1" number="-12" />
       <COST type="TapSelf" />
      <RESOLUTION_TIME_ACTION>
      local player = EffectController()
      if (player ~= nil) then
         player:GetTeam():TakeExtraTurn()
         player:GetTeam():TakeExtraTurn()
         player:GetTeam():TakeExtraTurn()         
      end
      </RESOLUTION_TIME_ACTION>
   </ACTIVATED_ABILITY>
   <ACTIVATED_ABILITY dangerous="1" filter_zone="ZONE_HAND" sorcery_time="1" per_turn_limit="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Remove twenty loyal counters, this game restart.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <COST type="countersself" name="+1/+1" number="-20" />
       <COST type="TapSelf" />
      <RESOLUTION_TIME_ACTION>
         local num_players = MTG():GetNumberOfPlayers()
         for i=0,num_players-1 do
            local player = MTG():GetNthPlayer(i)
            if player ~= nil then
               player:MoveLocalZone( ZONE_REMOVED_FROM_GAME, ZONE_LIBRARY )
               player:MoveLocalZone( ZONE_IN_PLAY, ZONE_LIBRARY )
            end
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local num_players = MTG():GetNumberOfPlayers()
         for i=0,num_players-1 do
            local player = MTG():GetNthPlayer(i)
            if player ~= nil then
               player:MoveLocalZone( ZONE_HAND, ZONE_LIBRARY )
               player:MoveLocalZone( ZONE_GRAVEYARD, ZONE_LIBRARY )
            end
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local num_players = MTG():GetNumberOfPlayers()
         for i=0,num_players-1 do
            local player = MTG():GetNthPlayer(i)
            if player ~= nil then
               player:ShuffleLibrary()
               PlayerDrawCards( player, 7 )
            end
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local num_players = MTG():GetNumberOfPlayers()
         for i=0,num_players-1 do
            local player = MTG():GetNthPlayer(i)
            if player ~= nil then
               player:SetLifeTotal(20)
            end
         end
      </RESOLUTION_TIME_ACTION>
   </ACTIVATED_ABILITY>
</CARD_V2>
There are two problems in it.
The first is
Code: Select all
   <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY" >
      <TRIGGER value="PLAYER_TOOK_DAMAGE">
         return TriggerPlayer() == EffectController()
      </TRIGGER>
      <RESOLUTION_TIME_ACTION >
            TriggerObject():GetPlayer():BeginNewMultipleChoice()
            TriggerObject():GetPlayer():AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
            TriggerObject():GetPlayer():AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" )
            TriggerObject():GetPlayer():AskMultipleChoiceQuestion( "CARD_QUERY_MC_CHOOSE_MODE" )
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION >
         if EffectController() ~= nil then
         local decision = Object():GetMultipleChoiceResult()
         if decision == 1 then
            Object():AddCounters( MTG():MinusOneMinusOneCounters(), Damage():GetAmount() )
            Damage():SetAmount(0)
         end
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>   
it allow player transfer damage to a planeswalker, but it DO NOT WORK!
the other one is
Code: Select all
    <STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Planeswalker]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[]]></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[]]></LOCALISED_TEXT>
      <CONTINUOUS_ACTION layer="7A">
         local characteristics = Object():GetCurrentCharacteristics()
         if Object():CountCounters( MTG():PlusOnePlusOneCounters() ) ==  0 then
            characteristics:Power_Set(0)
            characteristics:Toughness_Set(0)
         else
            characteristics:Power_Set(1)
            characteristics:Toughness_Set(1)            
         end
      </CONTINUOUS_ACTION>
   </STATIC_ABILITY>
it allow planeswalker spent his last counter and remove from battlefield, but this is dont work too.

somebody can help to solve those problem ???
repem
 
Posts: 6
Joined: 17 May 2013, 13:10
Has thanked: 2 times
Been thanked: 0 time

Re: A planeswalkers mod

Postby thefiremind » 18 May 2013, 18:18

I remember having read about someone who tried to do something like this, but started from an enchantment, not a creature. It should be easier to manage, even if you'll still have the problem that anything that cares about enchantments will care about your planeswalker.

Anyway, if you really want to go on, I can give you some advices. If I had to do this, I would make a card with both Enchantment and Planeswalker types (Enchantment will allow you to see the card while Planeswalker will allow you to treat it like a real Planeswalker), then I would use real loyalty counters: since DotP2013 allows us to declare any kind of counter,
Code: Select all
Object():AddCounters( MTG():GetCountersType("LOYALTY"), 1 )
(and the other functions that manage counters) will work.

The PLAYER_TOOK_DAMAGE trigger is a bit tricky, I remember having problems with TriggerObject(), use Damage():GetSource() instead, it's more reliable. You should also add pre_trigger="1", otherwise it's too late for you to set the damage amount to 0. But even with those fixes, it's not enough: noncombat damage can be redirected this way, but when you attack with creatures, the Planeswalker rules state that you need to declare who you are attacking while declaring attackers, not when you deal combat damage. I think this would be the most delicate part.

About making the Planeswalker die when he has no counters on it, I'd suggest to use a STATE_BASED_EFFECTS trigger:
Code: Select all
  <TRIGGERED_ABILITY internal="1">
    <TRIGGER value="STATE_BASED_EFFECTS">
    return Object():CountCounters( MTG():GetCountersType("LOYALTY") ) == 0
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    Object():PutInGraveyard()
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
You can use another trigger like this one in order to check if there's more than one Planeswalker on the battlefield with the same sub-type (Legendary isn't enough: 2 "Planeswalker - Jace", even with different card names, should go to the graveyard).
< 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: 721 times

Re: A planeswalkers mod

Postby repem » 19 May 2013, 06:59

thank u for your suggests, they are brilliant.
but there is the problem with those suggests what i dont clear.
Code: Select all
   <TRIGGERED_ABILITY internal="1" pre_trigger="1" filter_zone="ZONE_IN_PLAY" active_zone="ZONE_TRANSITION">
      <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_IN_PLAY" />
      <RESOLUTION_TIME_ACTION>
         Object():AddCounters( MTG():MTG():GetCountersType("LOYALTY"), 5 )
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
this code will work, but the loyalty counter dont appear in ui.
Code: Select all
      <COST type="countersself" name="LOYALTY" number="3" />
in this code, the counters work better than above.
through
Code: Select all
      <RESOLUTION_TIME_ACTION>
         local decision = Object():GetMultipleChoiceResult()         
         if decision == 0 then
            Object():RemoveCounters( MTG():GetCountersType("LOYALTY"), ObjectDC():Get_Int(0) )
            MTG():ObjectDataChest():Set_Int(0, 0)
         elseif decision == 1 then
               EffectController():LoseLife( ObjectDC():Get_Int(0) )
         end
      </RESOLUTION_TIME_ACTION>
knew that those "LOYALTY" are same.
the first five counters can be used by RemoveCounters() and CountCounters(), but cant used in
Code: Select all
<COST type="countersself" name="LOYALTY" number="-2" />
so i dont know WHERE THE FIRST FIVE COUNTER GONE?
second problem:
i dont know how the trigger "ACTIVATED_ABILITY_PLAYED" work.
Code: Select all
   <TRIGGERED_ABILITY internal="1">
      <TRIGGER value="ACTIVATED_ABILITY_PLAYED" simple_qualifier="self" />
      <CONTINUOUS_ACTION layer="6">
         local characteristics = Object()
         if characteristics ~= nil then
            characteristics:Characteristic_Set( CHARACTERISTIC_CANT_USE_ACTIVATED_ABILITIES, 1 )      
         end
      </CONTINUOUS_ACTION>
      <DURATION>
         return ( MTG():GetStep() == STEP_UNTAP ) and ( EffectController():MyTurn() ~= 0 )
      </DURATION>      
   </TRIGGERED_ABILITY>
this code dont work.
i hope realize the rule " A player may not play a planeswalker's ability if any of its abilities have been played already that turn" with this code.
for the rule "As the declare attackers step begins, if the defending player controls a planeswalker, the active player declares who or what each attacking creature is attacking: the defending player or one of that player's planeswalkers. All the attacking creatures may attack the same thing, or they may attack different things. If the defending player controls multiple planeswalkers, any or all of them can be attacked during the same combat phase."
there is a flow to realize it.
-->at the combat phase begine, player chose some creature to exile.
-->attack and take one extra combat phase, exile attacked creature
-->at the second combat phase, creature in play zone under attacking player control gain "cant attack"
-->take chosen creature back, and those creature gain "when deal damage to player, remove some counter from the planeswalker"
--attack
can that flow be coded?
repem
 
Posts: 6
Joined: 17 May 2013, 13:10
Has thanked: 2 times
Been thanked: 0 time

Re: A planeswalkers mod

Postby thefiremind » 19 May 2013, 09:15

repem wrote:thank u for your suggests, they are brilliant.
but there is the problem with those suggests what i dont clear.
Code: Select all
   <TRIGGERED_ABILITY internal="1" pre_trigger="1" filter_zone="ZONE_IN_PLAY" active_zone="ZONE_TRANSITION">
      <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_IN_PLAY" />
      <RESOLUTION_TIME_ACTION>
         Object():AddCounters( MTG():MTG():GetCountersType("LOYALTY"), 5 )
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
this code will work, but the loyalty counter dont appear in ui.
The counters don't appear because this code actually does nothing: it's active only in the transition zone, but the trigger is set to happen when the permanent enters the battlefield. Look at the Primordial Hydra as a good example about how to code "enters the battlefield with ... counters on it": the TRIGGER block should be
Code: Select all
<TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_IN_PLAY" from_zone="ZONE_ANY" />
this will work.

repem wrote:the first five counters can be used by RemoveCounters() and CountCounters(), but cant used in
Code: Select all
<COST type="countersself" name="LOYALTY" number="-2" />
You can call RemoveCounters() on something that has no counters to remove: it will just do nothing. Costs based on counters, on the contrary, require the counters to be there, so they are the most clear proof that your zonechange trigger didn't add any counter.

repem wrote:second problem:
i dont know how the trigger "ACTIVATED_ABILITY_PLAYED" work.
Code: Select all
   <TRIGGERED_ABILITY internal="1">
      <TRIGGER value="ACTIVATED_ABILITY_PLAYED" simple_qualifier="self" />
      <CONTINUOUS_ACTION layer="6">
         local characteristics = Object()
         if characteristics ~= nil then
            characteristics:Characteristic_Set( CHARACTERISTIC_CANT_USE_ACTIVATED_ABILITIES, 1 )      
         end
      </CONTINUOUS_ACTION>
      <DURATION>
         return ( MTG():GetStep() == STEP_UNTAP ) and ( EffectController():MyTurn() ~= 0 )
      </DURATION>      
   </TRIGGERED_ABILITY>
this code dont work.
It doesn't work because you forgot something: the first line of the CONTINUOUS_ACTION should be
Code: Select all
local characteristics = Object():GetCurrentCharacteristics()
I would have approached this problem in another way, but honestly I like your idea better. :)

repem wrote:for the rule "As the declare attackers step begins, if the defending player controls a planeswalker, the active player declares who or what each attacking creature is attacking: the defending player or one of that player's planeswalkers. All the attacking creatures may attack the same thing, or they may attack different things. If the defending player controls multiple planeswalkers, any or all of them can be attacked during the same combat phase."
there is a flow to realize it.
-->at the combat phase begine, player chose some creature to exile.
-->attack and take one extra combat phase, exile attacked creature
-->at the second combat phase, creature in play zone under attacking player control gain "cant attack"
-->take chosen creature back, and those creature gain "when deal damage to player, remove some counter from the planeswalker"
--attack
can that flow be coded?
This would trigger unwanted leaves-the-battlefield effects (Fiend Hunter, Faceless Butcher, etc.).
I would suggest a different approach: put on the Planeswalker a trigger that triggers when a creature is attacking its controller. This will ask to the creature's controller "Do you want to attack [name-of-the-planeswalker]?" (the name can be inserted as in Sigil of the New Dawn). If the player answers Yes, a delayed trigger is started, which cleans up on the end of combat (CLEANUP can be set just like DURATION even if official cards never do that), and redirects the combat damage to the Planeswalker. The problem is that preventing the damage to the player will count as if the creature did no damage at all, which could be important for some cards. Moreover, cards that modify the damage dealt to a player (Furnace of Rath for example) could trigger before the damage redirection and remove more/less loyalty counters than needed. I'm wondering if Damage():SetReceivingObject(...) gives the desired results when its parameter isn't a creature... it would really help.
< 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: 721 times

Re: A planeswalkers mod

Postby repem » 19 May 2013, 22:09

thanks, that's really helpful.
for now, the planeswalker is working well in counters counting and syn between conters and damage.
it let power equi toughness, and both of them equi loyalty.
when planeswalkers take damage let toughness less than loyalty, loyalty counter will be removed.
now, "remove loyalty counters" and "take damage" are same.
cause pw are creature, they can be "setdamagereceiver"'s target.
i dont know how to let "internal="1"" and "BeginNewMultipleChoice()" work together. so split them.
one part is
Code: Select all
   <TRIGGERED_ABILITY  internal="1" pre_trigger="1" priority="-50" >
      <TRIGGER value="PLAYER_TOOK_DAMAGE">
      return TriggerPlayer() == EffectController()
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local takedamage = Damage():GetAmount()      
         local target_player = Damage():GetSource():GetPlayer()
         local source = Damage():GetSource()
         local creature = Object()
         if takedamage ~= 0 then
         MTG():ObjectDataChest():Set_Int(90 , takedamage)         
         MTG():ObjectDataChest():Set_PlayerPtr( 90, target_player)
         MTG():ObjectDataChest():Set_CardPtr( 90, source)
         creature:AddCounters( MTG():GetCountersType("TAKEDAMAGE"), 1 )
         if TriggerPlayer() == EffectController() then
            Damage():SetAmount(0)
         end
            end
      </RESOLUTION_TIME_ACTION>   
   </TRIGGERED_ABILITY>
other one part is
Code: Select all
   <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
      <TRIGGER value="STATE_BASED_EFFECTS">
         return  Object():CountCounters( MTG():GetCountersType("TAKEDAMAGE") ) ~= 0 and MTG():ObjectDataChest():Get_Int( 90 ) ~= 0
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>      
         local target_player = MTG():ObjectDataChest():Get_PlayerPtr( 90 )
         local creature = Object()
         if ( target_player ~= nil ) then   
            target_player:BeginNewMultipleChoice()
            target_player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
            target_player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" )
            target_player:AskMultipleChoiceQuestion( "CARD_QUERY_MC_CHOOSE_MODE" )
         end
      </RESOLUTION_TIME_ACTION>   
      <RESOLUTION_TIME_ACTION>         
         local decision = Object():GetMultipleChoiceResult()
         local source = MTG():ObjectDataChest():Get_CardPtr( 90 )
         local takedamage = MTG():ObjectDataChest():Get_Int( 90 )   
         local creature = Object()      
            if decision == 0 then
               creature:DealDamage( takedamage , source )
            elseif decision == 1 then
               EffectController():LoseLife( takedamage )               
            end
            creature:RemoveCounters( MTG():GetCountersType("TAKEDAMAGE"), 1 )
      </RESOLUTION_TIME_ACTION>
AND THEN THE GAME QUIT!!!
it get slow, exit or abort when restart a new duel. i really dont know why it happen.
repem
 
Posts: 6
Joined: 17 May 2013, 13:10
Has thanked: 2 times
Been thanked: 0 time

Re: A planeswalkers mod

Postby thefiremind » 19 May 2013, 22:41

I'm a bit lost now... I can't understand why you introduced a new type of counter. Anyway, a STATE_BASED_EFFECTS trigger is continuously checked, so you can't do complicated things in it, otherwise it's very likely that the game hangs.
< 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: 721 times

Re: A planeswalkers mod

Postby repem » 20 May 2013, 04:42

takedamage counters are show player the state if player took multidamage.
Code: Select all
   <TRIGGERED_ABILITY  internal="1" pre_trigger="1" priority="-50" >
      <TRIGGER value="PLAYER_TOOK_DAMAGE">
      return TriggerPlayer() == EffectController()
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local takedamage = Damage():GetAmount()      
         local target_player = Damage():GetSource():GetPlayer()
         local source = Damage():GetSource()
         local creature = Object()
         local counters = Object():CountCounters( MTG():GetCountersType("TAKEDAMAGE") )
         if takedamage ~= 0 then
            MTG():ObjectDataChest():Set_Int(90 - counters , takedamage)         
            MTG():ObjectDataChest():Set_PlayerPtr( 90 - counters, target_player)
            MTG():ObjectDataChest():Set_CardPtr( 90 -counters, source)
            creature:AddCounters( MTG():GetCountersType("TAKEDAMAGE"), 1 )
            if TriggerPlayer() == EffectController() then
               Damage():SetAmount(0)
            end
            end
      </RESOLUTION_TIME_ACTION>   
   </TRIGGERED_ABILITY>
i hope the code can split damage like a staff.
Code: Select all
   <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
      <TRIGGER value="STATE_BASED_EFFECTS">
         return  Object():CountCounters( MTG():GetCountersType("TAKEDAMAGE") ) ~= 0 and          MTG():ObjectDataChest():Get_Int( 5 ) == 0
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         MTG():ObjectDataChest():Set_Int( 5 , 1 )
         local counters = Object():CountCounters( MTG():GetCountersType("TAKEDAMAGE") )         
         local target_player = MTG():ObjectDataChest():Get_PlayerPtr( 90 -counters + 1 )
         local creature = Object()
         if ( target_player ~= nil ) then   
            target_player:BeginNewMultipleChoice()
            target_player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
            target_player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" )
            target_player:AskMultipleChoiceQuestion( "CARD_QUERY_MC_CHOOSE_MODE" )
         end
      </RESOLUTION_TIME_ACTION>   
      <RESOLUTION_TIME_ACTION>         
         local decision = Object():GetMultipleChoiceResult()
         local source = MTG():ObjectDataChest():Get_CardPtr( 90 -counters + 1 )
         local takedamage = MTG():ObjectDataChest():Get_Int( 90 -counters + 1 )   
         local creature = Object()      
            if decision == 0 then
               creature:DealDamage( takedamage , source )
            elseif decision == 1 then
               EffectController():LoseLife( takedamage )               
            end
            creature:RemoveCounters( MTG():GetCountersType("TAKEDAMAGE"), 1 )
         MTG():ObjectDataChest():Set_Int( 5 , 0 )
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
int(5) state tell system if there a work is not completed.
but this is not good at do it.
SetReceivingObject() did that very well if the follow approach can be realized.(that is only for noncombat damage)
-->something deal damage to effectcontroler.
-->pause game ( exp. damage push and game staff)
-->waiting for choice
-->go on and choice have first priority.
i think that also helpful for making cambat damage approach.
repem
 
Posts: 6
Joined: 17 May 2013, 13:10
Has thanked: 2 times
Been thanked: 0 time

Re: A planeswalkers mod

Postby repem » 20 May 2013, 17:41

How can i let the player make choice before her/him took damage ?
I really have no idea...
can anybody correct it?
internal property will make it effictive result, but if do that player wont make choice and use the default decision value 0. thefiremind note me to add pre_trigger after trigger_ability tag. i dnot know why, that seem not work.
code have wrote are in the card.zip
the problems are in the <!-- combat damage --> and <!-- noncombat damage -->
combat damage problem is parameter seem not working.

edit1:
thanks, the combat attack damage problem has solved in another way.
the flow is
-->creature not under you control gain a activated ability
-->active this ability add a special counter(diffrent knids of counters are mutually-exclusive. exp: the counter for vraska the unseen called "pwvtu")
-->player took damage from creatures with counter, damage will transmit to vraska
-->counter will remove after combat phase
but the noncombat damage problem still dont solve.
Attachments
card.zip
(5.47 KiB) Downloaded 560 times
repem
 
Posts: 6
Joined: 17 May 2013, 13:10
Has thanked: 2 times
Been thanked: 0 time

Re: A planeswalkers mod

Postby Rickycoe123 » 27 May 2013, 14:02

BUMP....

I was just wondering if i could help in this mod... as i would like to see it in dotp..
Rickycoe123
 
Posts: 138
Joined: 14 Mar 2013, 22:44
Has thanked: 1 time
Been thanked: 15 times

Re: A planeswalkers mod

Postby BloodReyvyn » 30 May 2013, 07:02

About the non-combat damage, I had a passing thought.

When the planewalker is cast, couldn't you put an invisible token onto the battlefield which is indestructible, has shroud, and cannot be sacced as long as <planeswalkername> is on the stack or on the battlefield?

The token would then have the following ability: "If a source would deal noncombat damage to you and you control a permanent named <planeswalkername>, it's controller may have it deal that much damage to <planeswalkername> instead. At the beginning of each phase, if you don't control a permanent named <planeswalkername>, sacrifice this."

It would be like having an optional Pariah on the planeswalker. Would be a little annoying to get prompted for every instant, sorcery, and ability, but it would function more or less correctly. Since Pariah already can redirect damage (not sure if it actually redirects damage or prevents damage and deals it to another target) and Mark of Asylum already isolates non-combat damage, seems feasible.
"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: A planeswalkers mod

Postby thefiremind » 30 May 2013, 09:05

I'm aware that invisible tokens would be the best way to approach this, I just didn't want to bring them into the topic since repem seemed quite new to modding.
Maybe I'll give this thing a try myself when I'm done messing with the transform mechanic. :lol:
< 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: 721 times

Re: A planeswalkers mod

Postby BloodReyvyn » 31 May 2013, 01:38

Yeah, I have been mulling around the idea of implementing at least a couple of planeswalkers, but for even me it's a bit daunting.

I know how I would like to approach most of the things, but don't know off the top of my head the commands and such to implement them.

For example, there are already cards whose abilities can only be used once per turn and at sorcery speed, so the abilities (I think) should actually be be programmed into one single activated ability with a multiple choice like the Izzet Charm/Golgari Charm/Boros Charm/etc spells, but can only be played once per turn and only during your main phase.

I have had a lot of similar ideas for making Commander/EDH decks, making the commander of the deck have special abilities that trigger at the beginning of the game to make a token for the owner of the card to be able to summon the creature from exile. And using counters on a second "Commander Damage" token for each Commander in the game to track commander damage, but I gave up for the moment since DotP2014 is right around the corner.
"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: A planeswalkers mod

Postby BloodReyvyn » 09 Jun 2013, 03:21

Well, I think repem gave up on this since he just stopped responding.

I started to make my own PW, Liliana of the Veil, but when it came time to test it, I ran into issues. Firstly, the card can't be drawn at all (my test deck uses a bunch of Oracle of Mul Daya and Ancestral Recall + whatever card I happen to be testing). It just sits there on top of the deck, blocking the cards under it....

Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
  <FILENAME text="LILIANA_OF_THE_VEIL_235597" />
  <CARDNAME text="LILIANA_OF_THE_VEIL" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Liliana of the Veil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Liliana du voile]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Liliana del Velo]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Liliana mit Schleier]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Liliana del Velo]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ヴェールのリリアナ]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Liliana of the Veil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Лилиана с Завесой]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Liliana do Véu]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="235597" />
  <ARTID value="A235597" />
  <ARTIST name="Steve Argyle" />
  <CASTING_COST cost="{1}{B}{B}" />
  <TYPE metaname="Planeswalker" />
  <SUB_TYPE metaname="Liliana" />
  <EXPANSION value="ISD" />
  <RARITY metaname="M" />
  <TRIGGERED_ABILITY>
    <TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_IN_PLAY" from_zone="ZONE_ANY" />
    <RESOLUTION_TIME_ACTION>
      Object():AddCounters( MTG():LoyaltyCounters(), 3 )
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <ACTIVATED_ABILITY per_turn_limit="1" filter_zone="ZONE_IN_PLAY" sorcery_time="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[+1: Each player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[+1 : Chaque joueur se défausse d’une carte. ]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[+1: Cada jugador descarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[+1: Jeder Spieler wirft eine Karte aus seiner Hand ab.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[</span><span style=“position:relative; font-style:italic”>[+1]</span><span style=“position:relative; font-style:normal”>: Ogni giocatore scarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[+1:各プレイヤーはカードを1枚捨てる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[+1: Each player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[+1: каждый игрок сбрасывает карту.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[+1: Cada jogador descarta um card.]]></LOCALISED_TEXT>
    <COST type="countersself" name="LOYALTY" number="1" />
    -- Simple Rix-Maddi discard effect from thefiremind's mod.
    <RESOLUTION_TIME_ACTION repeating="1">
      local n = MTG():GetActionRepCount()
      local num_players = MTG():GetNumberOfPlayers()
      local playerindex = n
      local player = MTG():GetNthPlayer(playerindex)
      local filter = Object():GetFilter()
      if player ~= nil and n &lt; num_players then
       filter:Clear()
       filter:NotTargetted()
       filter:SetPlayer( player )
       filter:SetZone( ZONE_HAND )
       filter:SetHint( HINT_ENEMY, player )
       player:ChooseTarget( NO_VALIDATION, "CARD_QUERY_CHOOSE_CARD_TO_DISCARD", EffectDC():Make_Targets(n) )
       return true   
      else
       for i=0,num_players-1 do
         local targetDC = EffectDC():Get_Targets(i)
         if targetDC ~= nil then
           local target_card = targetDC:Get_CardPtr(0)
           if target_card ~= nil then
             target_card:Discard()
           end
         end
       end
       return false
      end
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY per_turn_limit="1" filter_zone="ZONE_IN_PLAY" sorcery_time="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[-2: Target player sacrifices a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[-2 : Le joueur ciblé sacrifie une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[-2: El jugador objetivo sacrifica una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[-2: Ein Spieler deiner Wahl opfert eine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[</span><span style=“position:relative; font-style:italic”>[-2]</span><span style=“position:relative; font-style:normal”>: Un giocatore bersaglio sacrifica una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[-2:プレイヤー1人を対象とする。そのプレイヤーはクリーチャーを1体生け贄に捧げる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[-2: Target player sacrifices a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[-2: целевой игрок приносит в жертву существо.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[-2: O jogador alvo sacrifica uma criatura.]]></LOCALISED_TEXT>
    <COST type="countersself" name="LOYALTY" number="-2" />
    -- Simple Diabolic Edict code from thefiremind's mod
    <TARGET_DEFINITION id="0">
      local filter = Object():GetFilter()
      filter:Clear()
      filter:SetFilterType( FILTER_TYPE_PLAYERS )
      filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
    </TARGET_DEFINITION>
    <TARGET_DETERMINATION>
      return AtLeastOneTargetFromDefinition(0)
    </TARGET_DETERMINATION>
    <PLAY_TIME_ACTION target_choosing="1">
      EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER_TO_SACRIFICE_CREATURE", EffectDC():Make_Targets(0) )
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
      local filter = Object():GetFilter()
      filter:Clear()
      filter:SetPlayer( player )
      filter:SetZone( ZONE_IN_PLAY )
      filter:AddCardType( CARD_TYPE_CREATURE )
      filter:NotTargetted()
      filter:SetHint( HINT_ENEMY, player )
      player:ChooseTarget( NO_VALIDATION, "CARD_QUERY_CHOOSE_CREATURE_TO_SACRIFICE", EffectDC():Make_Targets(1) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      local target = EffectDC():Get_Targets(1):Get_CardPtr(0)
      if target ~= nil then
       local player = target:GetPlayer()
        target:Sacrifice(player) 
      end
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY per_turn_limit="1" filter_zone="ZONE_IN_PLAY" sorcery_time="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[-6: Separate all permanents target player controls into two piles. That player sacrifices all permanents in the pile of his or her choice.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[-6 : Séparez tous les permanents que le joueur ciblé contrôle en deux tas. Ce joueur sacrifie tous les permanents dans le tas de son choix.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[-6: Separa todos los permanentes que controla el jugador objetivo en dos montones. Ese jugador sacrifica todos los permanentes en un montón de su elección.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[-6: Teile alle bleibenden Karten, die ein Spieler deiner Wahl kontrolliert, auf zwei Stapel auf. Dieser Spieler opfert alle bleibenden Karten in einem der Stapel, den er bestimmt.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[</span><span style=“position:relative; font-style:italic”>[-6]</span><span style=“position:relative; font-style:normal”>: Separa in due pile tutti i permanenti controllati da un giocatore bersaglio. Quel giocatore sacrifica tutti i permanenti nella pila a sua scelta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[-6: プレイヤー1人を対象とし、そのプレイヤーがコントロールするすべてのパーマネントを2つの束に分ける。 そのプレイヤーは束を1つ選び、その束にあるすべてのパーマネントを生け贄に捧げる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[-6: Separate all permanents target player controls into two piles. That player sacrifices all permanents in the pile of his or her choice.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[-6: разделите все перманенты под контролем целевого игрока на две стопки. Тот игрок приносит в жертву все перманенты в стопке по его выбору.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[-6: Separe todas as permanentes que o jogador alvo controla em dois montes. Aquele jogador sacrifica todas as permanentes no monte à escolha dele.]]></LOCALISED_TEXT>
    -- Going to have to fudge ability by selecting any number of permanents target player controls, then asking them to sac the selected or unselected cards, such as "Sacrifice the selected permanents? (If not, unselected permenents will be sacrificed instead)."
    <COST type="countersself" name="LOYALTY" number="-6" />
  </ACTIVATED_ABILITY>
  -- Sacrifice this permanent when it no longer has any loyalty counters on it.
  <TRIGGERED_ABILITY internal="1">
    <TRIGGER value="STATE_BASED_EFFECTS">
      return Object():CountCounters( MTG():GetCountersType("LOYALTY") ) == 0
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      Object():PutInGraveyard()
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  -- Make it only be able to use one ability per turn.
  <TRIGGERED_ABILITY internal="1" auto_skip="1">
    <TRIGGER value="ACTIVATED_ABILITY_PLAYED" simple_qualifier="self" />
    <CONTINUOUS_ACTION layer="6">
       local characteristics = Object()
       if characteristics ~= nil then
         characteristics:Characteristic_Set( CHARACTERISTIC_CANT_USE_ACTIVATED_ABILITIES, 1 )     
       end
    </CONTINUOUS_ACTION>
    <DURATION>
      return ( MTG():GetStep() == STEP_UNTAP ) and ( EffectController():MyTurn() ~= 0 )
    </DURATION>     
  </TRIGGERED_ABILITY>
  -- Ask the attacking player if they want to attack this planeswalker instead and put a redirection counter on that creature.
  <TRIGGERED_ABILITY auto_skip="1">
    <TRIGGER value="ATTACKING">
      local defending = TriggerObject():GetPlayerAttacked()
      return defending ~= nil and defending:GetTeam() == EffectController():GetTeam()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      local player = TriggerObject():ObjectController()
      if player:IsAI() == 0 then
       player:BeginNewMultipleChoice()
       player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
       player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" )
       player:AskMultipleChoiceQuestion( "CARD_QUERY_ATTACK_THIS_PLANESWALKER_INSTEAD" )
      end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      if TriggerObject():GetMultipleChoiceResult() == 0 then
        TriggerObject():AddCounters( MTG():LilianaRedirectionCounters(), 1 )
      end
    </RESOLUTION_TIME_ACTION>
    <DURATION simple_duration="UntilEOT" />
  </TRIGGERED_ABILITY>
  -- Redirect damage from the player to the planeswalker, or rather remove counters equal to the damage that would have been dealt by each creature with a Liliana-specific redirection counter on it.
  <TRIGGERED_ABILITY  internal="1" pre_trigger="1" auto_skip="1" priority="-10">
    <TRIGGER value="PLAYER_TOOK_DAMAGE">
      return TriggerPlayer() == EffectController()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      if (Damage():GetReceivingPlayer() == EffectController()) and (Damage():EffectSource():SetHasCounterType("LilianaRedirection") == 1) then
         Object():RemoveCounters( MTG():LoyaltyCounters(), Damage() )
      end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
</CARD_V2>
"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: A planeswalkers mod

Postby BloodReyvyn » 09 Jun 2013, 10:31

I have gotten the card to appear in hand, silly me forgot to add a recognizable card type (I used enchantment for the moment). Although, I am still having issues as the card is immediately sacrificed as it enters the battlefield...

Current code (with lovely commentary :lol: so I can more easily see each part of the card):

Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
  <FILENAME text="LILIANA_OF_THE_VEIL_235597" />
  <CARDNAME text="LILIANA_OF_THE_VEIL" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Liliana of the Veil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Liliana du voile]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Liliana del Velo]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Liliana mit Schleier]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Liliana del Velo]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ヴェールのリリアナ]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Liliana of the Veil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Лилиана с Завесой]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Liliana do Véu]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="235597" />
  <ARTID value="A235597" />
  <ARTIST name="Steve Argyle" />
  <CASTING_COST cost="{1}{B}{B}" />
  -- must find a way to make cards that target enchantments to ignore this card as a target or give this card shroud when effects that target enchantments are activated.
  <TYPE metaname="Enchantment" />
  <SUPERTYPE metaname="Planeswalker" />
  <SUB_TYPE metaname="Liliana" />
  <EXPANSION value="ISD" />
  <RARITY metaname="M" />

  -- Makes it come into play with 3 loyalty counters on it.
  <TRIGGERED_ABILITY>
    <TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_IN_PLAY" from_zone="ZONE_ANY" />
    <RESOLUTION_TIME_ACTION>
      Object():AddCounters( MTG():GetCountersType("LOYALTY_COUNTER"), 3 )
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>

  -- Make each player discard a card and add one loyalty counter.
  <ACTIVATED_ABILITY per_turn_limit="1" filter_zone="ZONE_IN_PLAY" sorcery_time="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[+1: Each player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[+1 : Chaque joueur se défausse d’une carte. ]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[+1: Cada jugador descarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[+1: Jeder Spieler wirft eine Karte aus seiner Hand ab.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[</span><span style=“position:relative; font-style:italic”>[+1]</span><span style=“position:relative; font-style:normal”>: Ogni giocatore scarta una carta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[+1:各プレイヤーはカードを1枚捨てる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[+1: Each player discards a card.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[+1: каждый игрок сбрасывает карту.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[+1: Cada jogador descarta um card.]]></LOCALISED_TEXT>
    <COST type="countersself" name="LOYALTY_COUNTER" number="1" />
    -- Simple Rix-Maddi discard effect from thefiremind's mod.
    <RESOLUTION_TIME_ACTION repeating="1">
      local n = MTG():GetActionRepCount()
      local num_players = MTG():GetNumberOfPlayers()
      local playerindex = n
      local player = MTG():GetNthPlayer(playerindex)
      local filter = Object():GetFilter()
      if player ~= nil and n &lt; num_players then
       filter:Clear()
       filter:NotTargetted()
       filter:SetPlayer( player )
       filter:SetZone( ZONE_HAND )
       filter:SetHint( HINT_ENEMY, player )
       player:ChooseTarget( NO_VALIDATION, "CARD_QUERY_CHOOSE_CARD_TO_DISCARD", EffectDC():Make_Targets(n) )
       return true   
      else
       for i=0,num_players-1 do
         local targetDC = EffectDC():Get_Targets(i)
         if targetDC ~= nil then
           local target_card = targetDC:Get_CardPtr(0)
           if target_card ~= nil then
             target_card:Discard()
           end
         end
       end
       return false
      end
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>

  -- Makes a target player sac a creature at the cost of 2 loyalty counters.
  <ACTIVATED_ABILITY per_turn_limit="1" filter_zone="ZONE_IN_PLAY" sorcery_time="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[-2: Target player sacrifices a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[-2 : Le joueur ciblé sacrifie une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[-2: El jugador objetivo sacrifica una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[-2: Ein Spieler deiner Wahl opfert eine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[</span><span style=“position:relative; font-style:italic”>[-2]</span><span style=“position:relative; font-style:normal”>: Un giocatore bersaglio sacrifica una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[-2:プレイヤー1人を対象とする。そのプレイヤーはクリーチャーを1体生け贄に捧げる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[-2: Target player sacrifices a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[-2: целевой игрок приносит в жертву существо.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[-2: O jogador alvo sacrifica uma criatura.]]></LOCALISED_TEXT>
    <COST type="countersself" name="LOYALTY_COUNTER" number="-2" />
    -- Simple Diabolic Edict code from thefiremind's mod
    <TARGET_DEFINITION id="0">
      local filter = Object():GetFilter()
      filter:Clear()
      filter:SetFilterType( FILTER_TYPE_PLAYERS )
      filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
    </TARGET_DEFINITION>
    <TARGET_DETERMINATION>
      return AtLeastOneTargetFromDefinition(0)
    </TARGET_DETERMINATION>
    <PLAY_TIME_ACTION target_choosing="1">
      EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_PLAYER_TO_SACRIFICE_CREATURE", EffectDC():Make_Targets(0) )
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
      local filter = Object():GetFilter()
      filter:Clear()
      filter:SetPlayer( player )
      filter:SetZone( ZONE_IN_PLAY )
      filter:AddCardType( CARD_TYPE_CREATURE )
      filter:NotTargetted()
      filter:SetHint( HINT_ENEMY, player )
      player:ChooseTarget( NO_VALIDATION, "CARD_QUERY_CHOOSE_CREATURE_TO_SACRIFICE", EffectDC():Make_Targets(1) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      local target = EffectDC():Get_Targets(1):Get_CardPtr(0)
      if target ~= nil then
       local player = target:GetPlayer()
        target:Sacrifice(player) 
      end
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>

  -- Not Implemented yet, will ask the effect controller to choose any number of permanents a player controls.
  <ACTIVATED_ABILITY per_turn_limit="1" filter_zone="ZONE_IN_PLAY" sorcery_time="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[-6: Separate all permanents target player controls into two piles. That player sacrifices all permanents in the pile of his or her choice.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[-6 : Séparez tous les permanents que le joueur ciblé contrôle en deux tas. Ce joueur sacrifie tous les permanents dans le tas de son choix.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[-6: Separa todos los permanentes que controla el jugador objetivo en dos montones. Ese jugador sacrifica todos los permanentes en un montón de su elección.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[-6: Teile alle bleibenden Karten, die ein Spieler deiner Wahl kontrolliert, auf zwei Stapel auf. Dieser Spieler opfert alle bleibenden Karten in einem der Stapel, den er bestimmt.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[</span><span style=“position:relative; font-style:italic”>[-6]</span><span style=“position:relative; font-style:normal”>: Separa in due pile tutti i permanenti controllati da un giocatore bersaglio. Quel giocatore sacrifica tutti i permanenti nella pila a sua scelta.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[-6: プレイヤー1人を対象とし、そのプレイヤーがコントロールするすべてのパーマネントを2つの束に分ける。 そのプレイヤーは束を1つ選び、その束にあるすべてのパーマネントを生け贄に捧げる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[-6: Separate all permanents target player controls into two piles. That player sacrifices all permanents in the pile of his or her choice.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[-6: разделите все перманенты под контролем целевого игрока на две стопки. Тот игрок приносит в жертву все перманенты в стопке по его выбору.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[-6: Separe todas as permanentes que o jogador alvo controla em dois montes. Aquele jogador sacrifica todas as permanentes no monte à escolha dele.]]></LOCALISED_TEXT>
    -- Going to have to fudge ability by selecting any number of permanents target player controls, then asking them to sac the selected or unselected cards, such as "Sacrifice the selected permanents? (If not, unselected permenents will be sacrificed instead)."
    <COST type="countersself" name="LOYALTY_COUNTER" number="-6" />
  </ACTIVATED_ABILITY>

  -- Sacrifice this permanent when it no longer has any loyalty counters on it.
  <TRIGGERED_ABILITY internal="1" filter_zone="ZONE_IN_PLAY">
    <TRIGGER value="STATE_BASED_EFFECTS">
      return Object():CountCounters( MTG():GetCountersType("LOYALTY_COUNTER") ) == 0
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      Object():PutInGraveyard()
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>

  -- Make it only be able to use one ability per turn.
  <TRIGGERED_ABILITY internal="1" auto_skip="1" filter_zone="ZONE_IN_PLAY">
    <TRIGGER value="ACTIVATED_ABILITY_PLAYED" simple_qualifier="self" />
    <CONTINUOUS_ACTION layer="6">
       local characteristics = Object()
       if characteristics ~= nil then
         characteristics:Characteristic_Set( CHARACTERISTIC_CANT_USE_ACTIVATED_ABILITIES, 1 )     
       end
    </CONTINUOUS_ACTION>
    <DURATION>
      return ( MTG():GetStep() == STEP_UNTAP ) and ( EffectController():MyTurn() ~= 0 )
    </DURATION>     
  </TRIGGERED_ABILITY>

  -- Ask the attacking player if they want to attack this planeswalker instead and put a redirection counter on that creature.
  <TRIGGERED_ABILITY auto_skip="1" filter_zone="ZONE_IN_PLAY">
    <TRIGGER value="ATTACKING">
      local defending = TriggerObject():GetPlayerAttacked()
      return defending ~= nil and defending:GetTeam() == EffectController():GetTeam()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      local player = TriggerObject():ObjectController()
      if player:IsAI() == 0 then
       player:BeginNewMultipleChoice()
       player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
       player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" )
       player:AskMultipleChoiceQuestion( "CARD_QUERY_ATTACK_THIS_PLANESWALKER_INSTEAD" )
      end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      if TriggerObject():GetMultipleChoiceResult() == 0 then
        TriggerObject():AddCounters( MTG():GetCountersType("LILIANA_REDIRECTION_COUNTER"), 1 )
      end
    </RESOLUTION_TIME_ACTION>
    <DURATION simple_duration="UntilEOT" />
  </TRIGGERED_ABILITY>

  -- Redirect damage from the player to the planeswalker, or rather remove counters equal to the damage that would have been dealt by each creature with a Liliana-specific redirection counter on it.
  <TRIGGERED_ABILITY  internal="1" pre_trigger="1" auto_skip="1" priority="-10" filter_zone="ZONE_IN_PLAY">
    <TRIGGER value="PLAYER_TOOK_DAMAGE">
      return TriggerPlayer() == EffectController()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      if (Damage():GetReceivingPlayer() == EffectController()) and (Damage():EffectSource():SetHasCounterType("LILIANA_REDIRECTION_COUNTER") == 1) then
         Object():RemoveCounters( MTG():GetCounters("LOYALTY_COUNTER"), Damage() )
      end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>

  -- Pointless but helpful visual depiction of the base Loyalty of the Planeswalker.
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[                    Loyalty ( 3 )]]></LOCALISED_TEXT>
  </STATIC_ABILITY>

</CARD_V2>
I am aware some things aren't even implemented at all, but I wanted to see if what I already have in place will work before I progress.
"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: A planeswalkers mod

Postby thefiremind » 09 Jun 2013, 11:03

If you look at Primordial Hydra you can see that you forgot something in the ZONECHANGE_TRANSITION trigger...
Code: Select all
<TRIGGERED_ABILITY internal="1" pre_trigger="1" active_zone="ZONE_TRANSITION">
On a side note, have you tried to give Planeswalker as a type rather than a supertype (of course without removing Enchantment)?
< 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: 721 times

Next

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 19 guests


Who is online

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

Users browsing this forum: No registered users and 19 guests

Login Form