Alright, It no longer says all that jazz and looks like just a Planeswalker. SWEET!
Originally, I was going to remove all redirection counters at the end of combat, but I suppose I could just give the creature a hidden ability that "redirects" damage in a similar manner.
I have 2 concerns with this approach since I been thinking about it:
1. With the current set-up I would have to prevent the damage to the player and remove counters equal to the damage prevented... however, some cards have damage that can't be prevented, ie-
Malignus.
2. I could give the creature a hidden ability rather than a counter until EOT, but would I be able to actually deal damage to this card directly and make an ability that just removes the counters as it's dealt damage?
If I could, I could in turn do the same thing whenever a player casts a spell or activates an ability that would deal damage to the planeswalker's controller; Ask the spell or ability's controller if they prefer to redirect the damage to the planeswalker instead.
After the above (the bulk of PW issues I believe) is sorted, I need to either find a way to make the PW unable to be targeted by spells and abilities that specifically target enchantments. Do you think it would be better to try and filter the card out somehow (not quite sure if you even can) or give the planeswalker shroud until the spell or ability resolves?
EDIT: After that last edit, however, she is now going directly to the graveyard when she's cast. Current code (Not sure I need to keep updating, but it keeps the topic fresh I suppose):
- 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" />
<TYPE 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 internal="1" pre_trigger="1" active_zone="ZONE_TRANSITION">
<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 < 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():GetCurrentCharacteristics()
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>