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




Age of Dodekatheon - UPDATED 01/09/2014 DXT1 (183 cards)
Moderator: CCGHQ Admins
Re: Age of Dodekatheon - NEW UPDATED 10/15/2013 (51 cards)
by NeoAnderson » 16 Oct 2013, 21:15
Sorry i checked is my missing, updating the cards i removed the info text about the casting rules of that card.MysteryMindX wrote:Why after casting Poseidon it returns right back to my hand?
If you cast any of 12 Olympic Divinities + Hades Divinity it is needed you have the corresponding seal on the battlefield. You have to sacrifice the Seal to cast the Divinity.
So to cast Poseidon you have to sacrifice the Seal of the Abyss. (The Seal will be shuffled into the library)
Is an additional cost to make more complex to cast of a so powerful card.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 19 Oct 2013, 14:24
I would ask to @RiiakShiNal the favor to check the code of this land : HYPERBOREA'S LAND i made it starting from a card coded by you i am not sure to have made it correct, the cards works but i would know if the code is clear or there are some useless action.

I am not sure about the working of the CONTINUOS BLOCK of RSN_CheckSwitchToFallback function.
- Hyperborea's Land | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="HYPERBOREA_LAND_7272001" />
<CARDNAME text="HYPERBOREA_LAND" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Hyperborea's land]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[La terre de l'Hyperborée]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tierra de Hiperbórea]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Hyperborea das Land]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Terra di Iperborea]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ボレアの土地]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Hyperborea의 땅]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Гипербореи на землю]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Terra de Hiperbórea]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272001" />
<ARTID value="7227001" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="R" />
<TRIGGERED_ABILITY linked_ability_group="1" active_zone="ZONE_BATTLEFIELD">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of your upkeep, the land of Hyperborea morphs in its next state.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Au début de votre entretien, la terre de l'Hyperborée se transforme dans son prochain état.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Al comienzo de tu mantenimiento, la tierra de Hiperbórea se transforma en su próximo estado.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Zu Beginn Ihres Unterhalt, das Land der Hyperborea verwandelt in seiner nächsten Zustand.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[All'inizio del tuo mantenimento, la terra di Iperborea muta nel suo stato successivo.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたのアップキープ、その次の状態のハイパーボリアモーフの土地の開始時。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[귀하의 유리, 그 다음 상태 Hyperborea 변경해 땅의 시작 부분에.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[В начале вашего шага, земля Гиперборея превращается в следующее состояние.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[No início de sua manutenção, a terra de Hiperbórea se transforma em seu próximo estado.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[在開始你的保養,在其下的狀態土地Hyperborea搖身一變。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[在開始你的保養,在其下的狀態土地Hyperborea搖身一變。]]></LOCALISED_TEXT>
<TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
return MTG():GetStep() == STEP_UPKEEP
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local nCurrentState = LinkedDC():Int_Get( 0 )
if (nCurrentState < 4) then
-- Change to next state.
LinkedDC():Int_Inc( 0 )
else
-- Loop back around to first state.
LinkedDC():Int_Set( 0, 0 )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY>
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
<CONTINUOUS_ACTION layer="0">
RSN_ClearCanProduceMana()
if (EffectSource():GetZone() == ZONE_BATTLEFIELD) then
EffectSource():GetCurrentCharacteristics():GrantAbility(17)
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
</TRIGGERED_ABILITY>
<ACTIVATED_ABILITY resource_id="17">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Pay 1 life: You may play an additional land this turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Payez 1 point de vie: Vous pouvez jouer un terrain supplémentaire ce tour.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Pagar 1 vida: Puedes jugar una tierra adicional este turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Pay 1 Leben: Sie können ein zusätzliches Land in dieser Runde zu spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Paga 1 punto vita : Puoi giocare una terra addizionale in questo turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[1点のライフを支払う:あなたは追加の土地をこのターンにプレイしてもよい。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[1 삶을 지불 : 당신은 추가 땅이 턴을 할 수 있습니다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Заплатите 1 жизнь: Вы можете играть дополнительную землю в этот ход.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Preste uma vida: Você pode jogar um terreno adicional neste turno.]]></LOCALISED_TEXT>
<COST type="Life" amount="1" />
<CONTINUOUS_ACTION layer="8">
local player_characteristics = EffectController():GetCurrentCharacteristics()
player_characteristics:Int_Increment( PLAYER_INTCHARACTERISTIC_EXTRA_LAND_DROPS )
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AVAILABILITY per_turn_limit="1" />
</ACTIVATED_ABILITY>
<ACTIVATED_ABILITY linked_ability_group="1" forced_skip="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{T}]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
RSN_ClearCanProduceMana()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
if (EffectSource():GetZone() == ZONE_BATTLEFIELD) then
local nState = LinkedDC():Int_Get( 0 )
if (nState == 0) then
RSN_Produce( "{U}", 1 )
elseif (nState == 1) then
RSN_Produce( "{R}", 1 )
elseif (nState == 2) then
RSN_Produce( "{W}", 1 )
elseif (nState == 3) then
RSN_Produce( "{G}", 1 )
else
RSN_Produce( "{B}", 1 )
end
else
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<STATIC_ABILITY resource_id="16" commaspace="1" active_zone="ZONE_ANY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {G} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {G} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {G} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {G}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi un mana del colore attuale alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{G}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{G}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {G} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {G} à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{G}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{G}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY linked_ability_group="1" active_zone="ZONE_ANY">
<CONTINUOUS_ACTION layer="0">
RSN_ClearCanProduceMana()
if (EffectSource():GetZone() == ZONE_BATTLEFIELD) then
local nState = LinkedDC():Int_Get( 0 )
if (nState == 0) then
RSN_MarkCanProduceMana( "{U}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(11)
elseif (nState == 1) then
RSN_MarkCanProduceMana( "{R}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(12)
elseif (nState == 2) then
RSN_MarkCanProduceMana( "{W}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(13)
elseif (nState == 3) then
RSN_MarkCanProduceMana( "{G}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(14)
else
EffectSource():GetCurrentCharacteristics():GrantAbility(15)
RSN_MarkCanProduceMana( "{B}" )
end
else
EffectSource():GetCurrentCharacteristics():GrantAbility(16)
end
</CONTINUOUS_ACTION>
<CONTINUOUS_ACTION layer="8">
local nDefaultColour = COLOUR_BLUE
local oCard = EffectSource()
if (RSN_CheckSwitchToFallback( oCard )) then
local nColour = RSN_GetLastProducedColour()
local oCharacteristics = oCard:GetCurrentCharacteristics()
if (nColour ~= COLOUR_COLOURLESS) then
oCharacteristics:GrantAbility( nColour )
else
oCharacteristics:GrantAbility( nDefaultColour )
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<MANA_ABILITY resource_id="1">
<COST type="TapSelf" />
<PRODUCES amount="{W}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="2">
<COST type="TapSelf" />
<PRODUCES amount="{U}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="3">
<COST type="TapSelf" />
<PRODUCES amount="{B}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="4">
<COST type="TapSelf" />
<PRODUCES amount="{R}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="5">
<COST type="TapSelf" />
<PRODUCES amount="{G}" />
</MANA_ABILITY>
<STATIC_ABILITY resource_id="13" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {W} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {W} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {W} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {W}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {W} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{W}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{W}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {W} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {W} à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{W}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{W}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="11" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {U} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {U} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {U} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {U}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {U} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{U}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{U}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {U} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {U} à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{U}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{U}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="15" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {B} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {B} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {B} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {B}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {B} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{B}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{B}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {B} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {B} à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{B}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{B}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="12" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {R} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {R} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {R} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {R}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {R} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{R}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{R}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {R} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {R} à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{R}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{R}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="14" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {G} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {G} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {G} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {G}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {G} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{G}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{G}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {G} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {G} à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{G}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{G}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>

I am not sure about the working of the CONTINUOS BLOCK of RSN_CheckSwitchToFallback function.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by RiiakShiNal » 19 Oct 2013, 20:12
active_zone="ZONE_BATTLEFIELD" is useless because the default active zone of any ability is the Battlefield.
This block:
This Block:
This Block:
If you want ability 16 to be seen in ZONE_EXILE then you need to add an ability that grants ability 16 in ZONE_EXILE because ZONE_ANY doesn't cover ZONE_EXILE.
This block:
then next turn it gets CHARACTERISTIC_CANT_USE_ACTIVATED_ABILITIES, then even though the state should indicate that it should produce
, the fallback will be
. You should instead change the block to look like this:
This block:
- Code: Select all
<TRIGGERED_ABILITY>
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
<CONTINUOUS_ACTION layer="0">
RSN_ClearCanProduceMana()
if (EffectSource():GetZone() == ZONE_BATTLEFIELD) then
EffectSource():GetCurrentCharacteristics():GrantAbility(17)
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
</TRIGGERED_ABILITY>
- RSN_ClearCanProduceMana() is pointless here.
- You don't need zone check in the CONTINUOUS_ACTION, but you do need an EffectSource() ~= nil check. It's possible for the land to leave play while this is still in effect which would cause script errors (hence the need for a nil check).
This Block:
- Code: Select all
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
RSN_ClearCanProduceMana()
</PLAY_TIME_ACTION>
- RSN_ClearCanProduceMana() is pointless here as that is not how it works.
This Block:
- Code: Select all
<RESOLUTION_TIME_ACTION>
if (EffectSource():GetZone() == ZONE_BATTLEFIELD) then
local nState = LinkedDC():Int_Get( 0 )
if (nState == 0) then
RSN_Produce( "{U}", 1 )
elseif (nState == 1) then
RSN_Produce( "{R}", 1 )
elseif (nState == 2) then
RSN_Produce( "{W}", 1 )
elseif (nState == 3) then
RSN_Produce( "{G}", 1 )
else
RSN_Produce( "{B}", 1 )
end
else
end
</RESOLUTION_TIME_ACTION>
- Zone check is unnecessary as forced_skip on the ability prevents effects happening between activating the ability and resolution time. So you don't even need a nil check.
- The else is pointless because you don't do anything in the else case.
If you want ability 16 to be seen in ZONE_EXILE then you need to add an ability that grants ability 16 in ZONE_EXILE because ZONE_ANY doesn't cover ZONE_EXILE.
This block:
- Code: Select all
<CONTINUOUS_ACTION layer="8">
local nDefaultColour = COLOUR_BLUE
local oCard = EffectSource()
if (RSN_CheckSwitchToFallback( oCard )) then
local nColour = RSN_GetLastProducedColour()
local oCharacteristics = oCard:GetCurrentCharacteristics()
if (nColour ~= COLOUR_COLOURLESS) then
oCharacteristics:GrantAbility( nColour )
else
oCharacteristics:GrantAbility( nDefaultColour )
end
end
</CONTINUOUS_ACTION>



- Code: Select all
<CONTINUOUS_ACTION layer="8">
local oCard = EffectSource()
if (RSN_CheckSwitchToFallback( oCard )) then
local nState = LinkedDC():Int_Get( 0 )
local oCharacteristics = oCard:GetCurrentCharacteristics()
if (nState == 0) then
oCharacteristics:GrantAbility( COLOUR_BLUE )
elseif (nState == 1)
oCharacteristics:GrantAbility( COLOUR_RED )
elseif (nState == 1)
oCharacteristics:GrantAbility( COLOUR_WHITE )
elseif (nState == 1)
oCharacteristics:GrantAbility( COLOUR_GREEN )
else
oCharacteristics:GrantAbility( COLOUR_BLACK )
end
end
</CONTINUOUS_ACTION>
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 19 Oct 2013, 21:46
As always i have no words to say thank you, Riiak.
As you can see i am not a programmer, many time i try to combine code and make some modifies, but i didn't see the details of your functions so it is a little bit complicated to understand exactly the parameters and the kind of result each function will return.
I try to understand the main aspect of the code trying to recombine it, so it's obvious i make many mistakes
About the last continuous_block i already thought it needed some changes, you just confirmed it to me.
I am going to try the modifies, just one thing inside the block "nState" will be 0,1,2,3..
Thanks a lot for your time always kind from you.
As you can see i am not a programmer, many time i try to combine code and make some modifies, but i didn't see the details of your functions so it is a little bit complicated to understand exactly the parameters and the kind of result each function will return.
I try to understand the main aspect of the code trying to recombine it, so it's obvious i make many mistakes

About the last continuous_block i already thought it needed some changes, you just confirmed it to me.
I am going to try the modifies, just one thing inside the block "nState" will be 0,1,2,3..
Thanks a lot for your time always kind from you.
- Hyperborea's Land | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="HYPERBOREA_LAND_7272001" />
<CARDNAME text="HYPERBOREA_LAND" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Hyperborea's land]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[La terre de l'Hyperborée]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tierra de Hiperbórea]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Hyperborea das Land]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Terra di Iperborea]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ボレアの土地]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Hyperborea의 땅]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Гипербореи на землю]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Terra de Hiperbórea]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272001" />
<ARTID value="7227001" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="R" />
<TRIGGERED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of your upkeep, the land of
Hyperborea morphs in its next state.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Au début de votre entretien, la terre de l'Hyperborée
se transforme dans son prochain état.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Al comienzo de tu mantenimiento, la tierra de
Hiperbórea se transforma en su próximo estado.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Zu Beginn Ihres Unterhalt, das Land der Hyperborea
verwandelt in seiner nächsten Zustand.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[All'inizio del tuo mantenimento, la terra di
Iperborea muta nel suo stato successivo.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたのアップキープ、その次の状態のハイパーボリアモーフの土地の開始時。]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[귀하의 유리, 그 다음 상태 Hyperborea 변경해 땅의 시작
부분에.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[В начале вашего шага, земля Гиперборея превращается в
следующее состояние.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[No início de sua manutenção, a terra de Hiperbórea se
transforma em seu próximo estado.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[在開始你的保養,在其下的狀態土地Hyperborea搖身一變。]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[在開始你的保養,在其下的狀態土地Hyperborea搖身一變。]]
></LOCALISED_TEXT>
<TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
return MTG():GetStep() == STEP_UPKEEP
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local nCurrentState = LinkedDC():Int_Get( 0 )
if (nCurrentState < 4) then
-- Change to next state.
LinkedDC():Int_Inc( 0 )
else
-- Loop back around to first state.
LinkedDC():Int_Set( 0, 0 )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY>
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
<CONTINUOUS_ACTION layer="0">
if (EffectSource() ~= nil ) then
EffectSource():GetCurrentCharacteristics():GrantAbility(17)
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
</TRIGGERED_ABILITY>
<ACTIVATED_ABILITY resource_id="17">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Pay 1 life: You may play an additional land this
turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Payez 1 point de vie: Vous pouvez jouer un terrain
supplémentaire ce tour.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Pagar 1 vida: Puedes jugar una tierra adicional este
turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Pay 1 Leben: Sie können ein zusätzliches Land in
dieser Runde zu spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Paga 1 punto vita : Puoi giocare una terra
addizionale in questo turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[1点のライフを支払う:あなたは追加の土地をこのターンにプレイしてもよい。]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[1 삶을 지불 : 당신은 추가 땅이 턴을 할 수
있습니다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Заплатите 1 жизнь: Вы можете играть дополнительную
землю в этот ход.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Preste uma vida: Você pode jogar um terreno adicional
neste turno.]]></LOCALISED_TEXT>
<COST type="Life" amount="1" />
<CONTINUOUS_ACTION layer="8">
local player_characteristics = EffectController():GetCurrentCharacteristics()
player_characteristics:Int_Increment( PLAYER_INTCHARACTERISTIC_EXTRA_LAND_DROPS )
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AVAILABILITY per_turn_limit="1" />
</ACTIVATED_ABILITY>
<ACTIVATED_ABILITY linked_ability_group="1" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{T}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{T}]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
if (EffectSource() ~= nil ) then
local nState = LinkedDC():Int_Get( 0 )
if (nState == 0) then
RSN_Produce( "{U}", 1 )
elseif (nState == 1) then
RSN_Produce( "{R}", 1 )
elseif (nState == 2) then
RSN_Produce( "{W}", 1 )
elseif (nState == 3) then
RSN_Produce( "{G}", 1 )
else
RSN_Produce( "{B}", 1 )
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<STATIC_ABILITY resource_id="16" commaspace="1" active_zone="ZONE_ANY">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add 1 mana of actual colour to your mana pool.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {G} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {G} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {G}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi un mana del colore attuale alla tua riserva
di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{G}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{G}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {G} в ваше хранилище маны.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {G} à sua reserva de mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{G}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{G}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY linked_ability_group="1" active_zone="ZONE_ANY">
<CONTINUOUS_ACTION layer="0">
RSN_ClearCanProduceMana()
if (EffectSource() ~= nil ) then
local nState = LinkedDC():Int_Get( 0 )
if (nState == 0) then
RSN_MarkCanProduceMana( "{U}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(11)
elseif (nState == 1) then
RSN_MarkCanProduceMana( "{R}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(12)
elseif (nState == 2) then
RSN_MarkCanProduceMana( "{W}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(13)
elseif (nState == 3) then
RSN_MarkCanProduceMana( "{G}" )
EffectSource():GetCurrentCharacteristics():GrantAbility(14)
else
EffectSource():GetCurrentCharacteristics():GrantAbility(15)
RSN_MarkCanProduceMana( "{B}" )
end
else
EffectSource():GetCurrentCharacteristics():GrantAbility(16)
end
</CONTINUOUS_ACTION>
<CONTINUOUS_ACTION layer="8">
local oCard = EffectSource()
if (RSN_CheckSwitchToFallback( oCard )) then
local nState = LinkedDC():Int_Get( 0 )
local oCharacteristics = oCard:GetCurrentCharacteristics()
if (nState == 0) then
oCharacteristics:GrantAbility( COLOUR_BLUE )
elseif (nState == 1)
oCharacteristics:GrantAbility( COLOUR_RED )
elseif (nState == 2)
oCharacteristics:GrantAbility( COLOUR_WHITE )
elseif (nState == 3)
oCharacteristics:GrantAbility( COLOUR_GREEN )
else
oCharacteristics:GrantAbility( COLOUR_BLACK )
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<STATIC_ABILITY linked_ability_group="1" active_zone="ZONE_EXILE">
<CONTINUOUS_ACTION layer="0">
EffectSource():GetCurrentCharacteristics():GrantAbility(16)
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<MANA_ABILITY resource_id="1">
<COST type="TapSelf" />
<PRODUCES amount="{W}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="2">
<COST type="TapSelf" />
<PRODUCES amount="{U}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="3">
<COST type="TapSelf" />
<PRODUCES amount="{B}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="4">
<COST type="TapSelf" />
<PRODUCES amount="{R}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="5">
<COST type="TapSelf" />
<PRODUCES amount="{G}" />
</MANA_ABILITY>
<STATIC_ABILITY resource_id="13" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {W} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {W} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {W} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {W}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {W} alla tua riserva di mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{W}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{W}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {W} в ваше хранилище маны.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {W} à sua reserva de mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{W}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{W}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="11" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {U} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {U} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {U} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {U}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {U} alla tua riserva di mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{U}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{U}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {U} в ваше хранилище маны.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {U} à sua reserva de mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{U}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{U}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="15" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {B} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {B} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {B} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {B}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {B} alla tua riserva di mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{B}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{B}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {B} в ваше хранилище маны.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {B} à sua reserva de mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{B}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{B}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="12" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {R} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {R} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {R} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {R}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {R} alla tua riserva di mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{R}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{R}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {R} в ваше хранилище маны.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {R} à sua reserva de mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{R}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{R}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<STATIC_ABILITY resource_id="14" commaspace="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[:Add {G} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[:Ajoutez {G} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[:Agrega {G} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[:Erhöhe deinen Manavorrat um {G}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[:Aggiungi {G} alla tua riserva di mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[:あなたのマナ・プールに{G}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[:{G}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[:добавьте {G} в ваше хранилище маны.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[:Adicione {G} à sua reserva de mana.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[:加{G}到你的法术力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[:加{G}到你的魔法力池中。]]></LOCALISED_TEXT>
</STATIC_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by RiiakShiNal » 20 Oct 2013, 02:16
Actually, I wrote up quite a bit of documentation on the functions specifically so people wouldn't have to guess at how to use them. I explain all the parameters, returns, and give usage examples of all of my non-internal functions.NeoAnderson wrote:As always i have no words to say thank you, Riiak.
As you can see i am not a programmer, many time i try to combine code and make some modifies, but i didn't see the details of your functions so it is a little bit complicated to understand exactly the parameters and the kind of result each function will return.
I try to understand the main aspect of the code trying to recombine it, so it's obvious i make many mistakes
Manual Mana Functions
ObjectDC Functions
Characteristic Functions (I don't think this is used by anything at the moment.)
Core Fixes (contains my Annihilator Functions which provide correct Annihilator behavior in an easy to implement manner.)
So there shouldn't need to be any guesswork involved when using my functions. Unlike the official functions which are mostly guesswork based off of examples of their use and modder creativity, ingenuity, and intuition.
Oops, I forgot to change the numbers after I copied/pasted the lines a couple of times, though I did remember to change the colours. Sometimes I miss things when I am evaluating and stepping through code in my head (my mind is not quite as reliable as a compiler/debugger for such things).NeoAnderson wrote:About the last continuous_block i already thought it needed some changes, you just confirmed it to me.
I am going to try the modifies, just one thing inside the block "nState" will be 0,1,2,3..
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 20 Oct 2013, 03:31
Even the best forget something...sometimes..RiiakShiNal wrote:Oops, I forgot to change the numbers after I copied/pasted the lines a couple of times, though I did remember to change the colours. Sometimes I miss things when I am evaluating and stepping through code in my head (my mind is not quite as reliable as a compiler/debugger for such things).NeoAnderson wrote:About the last continuous_block i already thought it needed some changes, you just confirmed it to me.
I am going to try the modifies, just one thing inside the block "nState" will be 0,1,2,3..

Anyway really thanks for your precious contribution Riiak.
I have made a new land but i have some doubts i am not sure if some functions can be implemented, i made a research on the forum and i found something but it seems noone have resolved.
The Land is : HERAION
The Ability is : exile target permanent You control, until end of turn. Store the casting cost, of the exiled permanent. The multi-colored mana are considered twice. Use this ability only once each turn.
Tap: Add the accumulated mana to your mana pool.
The First issue concerning the multi-colored mana as you can read i wrote, it is considered twice, i think there is not so much i can do to resolve this problem, because Chromacount Function return it twice.
"I thought to make a comparation with CMC and finally ask to the player to reduce the mana until it is equal to the CMC, but this not ensure the player make the right choices, so for the moment i left it twice."
The Second issue concerning about the Mana Ability blocks. I have removed these blocks because is not possible to know which combination of mana we will have.
"About this kind of blocks (<Mana_Ability>) i would know if we can use variables and function as like linkedDC, If structure.. and if <PRODUCES amount=> can be set using a variable string."
- HERAION | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="HERAION_7272002" />
<CARDNAME text="HERAION" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Heraion]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272002" />
<ARTID value="7227002" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<SUPERTYPE metaname="Legendary" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="M" />
<ACTIVATED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Exile target permanent You control, until end of turn. Store the casting cost, of the exiled permanent. The multi-colored mana are considered twice. Use this ability only once each turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Exilez le permanent ciblé jusqu'à la fin du tour. Stocker le coût de lancement, de l'exilé permanent. Les mana multicolores sont considérés comme deux fois. Utilisez cette capacité qu'une seule fois par tour.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[El permanente objetivo hasta el final del turno exilio. Guarde el costo de fundición, de la permanente exiliado. El maná de varios colores se consideran dos veces. Usa esta habilidad sólo una vez cada turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Exile Ziel permanent bis zum Ende des Zuges. Bewahren Sie die Kosten Gießen, der verbannt permanent. Die bunten Mana werden zweimal berücksichtigt. Benutze diese Fähigkeit nur einmal pro Zug.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Esilia un permanente bersaglio che controlli, fino alla fine del turno. Hai a disposizione il mana del costo di evocazione del permanente esiliato. I mana multicolori vengono considerati due volte. Usa questa abilità una sola volta per turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ターン終了時まで永久追放ターゲット。追放されたパーマネントの鋳造コストを、保管してください。マルチカラーのマナが二回とみなされます。この能力は、各ターンに1回のみ使用します。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[턴 끝날 때까지 영구 추방 대상입니다.망명 영구의 캐스팅 비용을 저장합니다.멀티 컬러 마나가 두 번 간주됩니다. 이 기능 번만 각 회전을 사용합니다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Изгнание целевой перманент до конца хода. Храните каста, в изгнании постоянным.Разноцветные маны считаются дважды. Используйте эту способность только один раз за ход.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Alvo exílio permanente até o final do turno. Guarde o custo casting, da permanente exilado. Os mana multi-coloridas são considerados duas vezes. Use esta habilidade apenas uma vez a cada turno.]]></LOCALISED_TEXT>
<COST type="Mana" mana_cost="{0}" />
<TARGET tag="CARD_QUERY_CHOOSE_NONLAND_PERMANENT_TO_EXILE" definition="0" compartment="0" count="1" />
<TARGET_DEFINITION id="0">
local filter = ClearFilter()
filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
filter:Add( FE_TYPE, OP_NOT, CARD_TYPE_LAND )
</TARGET_DEFINITION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
local filter = ClearFilter()
filter:Add( FE_CARD_INSTANCE, OP_IS, target )
local WhiteTotal = filter:ChromaCount(COLOUR_WHITE)
LinkedDC():Set_Int(1, WhiteTotal)
local BlueTotal = filter:ChromaCount( COLOUR_BLUE )
LinkedDC():Set_Int(2, BlueTotal)
local RedTotal = filter:ChromaCount( COLOUR_RED )
LinkedDC():Set_Int(3, RedTotal)
local GreenTotal = filter:ChromaCount( COLOUR_GREEN )
LinkedDC():Set_Int(4, GreenTotal)
local BlackTotal = filter:ChromaCount( COLOUR_BLACK )
LinkedDC():Set_Int(5, BlackTotal)
local ColourlessTotal = filter:ChromaCount( COLOUR_COLOURLESS )
LinkedDC():Set_Int(6, ColourlessTotal)
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
LinkedDC():Set_CardPtr(0, target)
LinkedDC():Protect_CardPtr(0)
target:Exile()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
local source = EffectSource()
if target ~= nil and source ~= nil then
target:NailOnto(source)
end
</RESOLUTION_TIME_ACTION>
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
<AUTO_SKIP>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
return false
else
return true
end
</AUTO_SKIP>
<AVAILABILITY per_turn_limit="1" />
<AVAILABILITY>
return Object():IsTapped() == false
</AVAILABILITY>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="BEGINNING_OF_STEP">
return ( MTG():GetStep() == STEP_END_OF_TURN )
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutOntoBattlefield()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
LinkedDC():Set_Int(1, 0)
LinkedDC():Set_Int(2, 0)
LinkedDC():Set_Int(3, 0)
LinkedDC():Set_Int(4, 0)
LinkedDC():Set_Int(5, 0)
LinkedDC():Set_Int(6, 0)
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<ACTIVATED_ABILITY linked_ability_group="1" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add the accumulated mana to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Ajouter le mana accumulé à votre réserve de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agregue el maná acumulada a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Fügen Sie den angesammelten Mana Mana Pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi il mana accumulato al tuo mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}: あなたのマナ·プールに蓄積されたマナを追加します。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: 당신의 마나 풀에 축적 된 마나를 추가합니다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Добавить накопленной маны в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione o mana acumulada à sua reserva de mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{T}: 添加累計法力到你的魔法力池中。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{T}: 添加累計法力到你的魔法力池中。]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local WhiteTotal = LinkedDC():Get_Int(1)
local BlueTotal = LinkedDC():Get_Int(2)
local RedTotal = LinkedDC():Get_Int(3)
local GreenTotal = LinkedDC():Get_Int(4)
local BlackTotal = LinkedDC():Get_Int(5)
local ColourlessTotal = LinkedDC():Get_Int(6)
if (EffectSource() ~= nil) then
local ProducedString =""
local WhiteString =""
local BlueString =""
local RedString =""
local GreenString =""
local BlackString =""
local ColourLessString =""
for i = 1,(WhiteTotal) do
WhiteString = WhiteString.."{W}"
end
for i = 1,(BlueTotal) do
BlueString = BlueString.."{U}"
end
for i = 1,(RedTotal) do
RedString = RedString.."{R}"
end
for i = 1,(GreenTotal) do
GreenString = GreenString.."{G}"
end
for i = 1,(BlackTotal) do
BlackString = BlackString.."{B}"
end
for i = 1,(ColourlessTotal) do
ColourLessString = ColourLessString.."{1}"
end
ProducedString = WhiteString..BlueString..RedString..GreenString..BlackString..ColourLessString
RSN_Produce( ProducedString, 1 )
LinkedDC():Set_Int(1, 0)
LinkedDC():Set_Int(2, 0)
LinkedDC():Set_Int(3, 0)
LinkedDC():Set_Int(4, 0)
LinkedDC():Set_Int(5, 0)
LinkedDC():Set_Int(6, 0)
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<STATIC_ABILITY linked_ability_group="1" active_zone="ZONE_ANY">
<CONTINUOUS_ACTION layer="0">
RSN_ClearCanProduceMana()
if (EffectSource() ~= nil ) then
local WhiteTotal = LinkedDC():Get_Int(1)
local BlueTotal = LinkedDC():Get_Int(2)
local RedTotal = LinkedDC():Get_Int(3)
local GreenTotal = LinkedDC():Get_Int(4)
local BlackTotal = LinkedDC():Get_Int(5)
local ColourlessTotal = LinkedDC():Get_Int(6)
local ProducedString =""
local WhiteString =""
local BlueString =""
local RedString =""
local GreenString =""
local BlackString =""
local ColourLessString =""
for i = 1,(WhiteTotal) do
WhiteString = WhiteString.."{W}"
end
for i = 1,(BlueTotal) do
BlueString = BlueString.."{U}"
end
for i = 1,(RedTotal) do
RedString = RedString.."{R}"
end
for i = 1,(GreenTotal) do
GreenString = GreenString.."{G}"
end
for i = 1,(BlackTotal) do
BlackString = BlackString.."{B}"
end
for i = 1,(ColourlessTotal) do
ColourLessString = ColourLessString.."{1}"
end
ProducedString = WhiteString..BlueString..RedString..GreenString..BlackString..ColourLessString
RSN_MarkCanProduceMana(ProducedString)
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>

- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by RiiakShiNal » 20 Oct 2013, 14:37
You wrote in the card "Target Permanent", but then only allow Non-Land Permanents, also this definition will allow for the exiling of invisible tokens which should not be allowed (though actual players won't be able to target them, and the AI will be unlikely to target them). The correct way to do it would be to have the Not Land condition (as you have it) "And" an "Or" sub-filter with the other 4 permanent card types (if you actually intended for it to only target non-land permanents).
You should also indicate in the card text that the stored casting cost is also only "Until End of Turn" if that was the intention. "Add the accumulated mana to your mana pool." indicates that the more targets you exile the greater the mana the land will be able to produce (even across turns), but this is not the case with how it is coded.
Additionally, you have a problem with bringing back the exiled card as if the land leaves play before the card is returned the card remains exiled even though the card/ability is not written that way. You will need to make use of a delayed trigger to ensure the exiled card comes back even if the land leaves play before the end of turn (if that was your intent, if not then you need to update the text on your card to indicate that).
It should also be noted, that you are clearing the stored mana when it is tapped as well which would indicate that you can't then untap the land and tap it again to produce the stored amount twice in a single turn (which you also have not indicated on the card). This will probably confuse players as they would normally think they could exile a card with the first ability (something like a Blightsteel Colossus) tap and get {12}, then untap it using some effect that allows the untapping of permanents then tap it again for another {12}.
Since this is not a multi-state card and the types of mana that can be produced are based on what is exiled (which could be considered a cost), then theoretically it can produce all types at any time so the RSN_MarkCanProduceMana() call should just list all types like this:
You should also indicate in the card text that the stored casting cost is also only "Until End of Turn" if that was the intention. "Add the accumulated mana to your mana pool." indicates that the more targets you exile the greater the mana the land will be able to produce (even across turns), but this is not the case with how it is coded.
Additionally, you have a problem with bringing back the exiled card as if the land leaves play before the card is returned the card remains exiled even though the card/ability is not written that way. You will need to make use of a delayed trigger to ensure the exiled card comes back even if the land leaves play before the end of turn (if that was your intent, if not then you need to update the text on your card to indicate that).
It should also be noted, that you are clearing the stored mana when it is tapped as well which would indicate that you can't then untap the land and tap it again to produce the stored amount twice in a single turn (which you also have not indicated on the card). This will probably confuse players as they would normally think they could exile a card with the first ability (something like a Blightsteel Colossus) tap and get {12}, then untap it using some effect that allows the untapping of permanents then tap it again for another {12}.
Since this is not a multi-state card and the types of mana that can be produced are based on what is exiled (which could be considered a cost), then theoretically it can produce all types at any time so the RSN_MarkCanProduceMana() call should just list all types like this:
- Code: Select all
RSN_MarkCanProduceMana("{1}{W}{U}{B}{R}{G}")
Ultimately, if I were you I would change the card to read:Reflecting Pool checks the effects of all mana-producing abilities of lands you control, but it doesn't check their costs. For example, Vivid Crag says "{T}, Remove a charge counter from Vivid Crag: Add one mana of any color to your mana pool." If you control Vivid Crag and Reflecting Pool, you can tap Reflecting Pool for any color of mana. It doesn't matter whether Vivid Crag has a charge counter on it, and it doesn't matter whether it's untapped.
This way you could get away from needing LinkedDC(), you could easily write the ability to only be able to be used once per turn (per_turn_limit) or multiple times per turn if the player can untap it (use CreateDelayedTrigger() for the ability to bring back the exiled card). This also eliminates the "Target" restriction allowing you to exile cards with Shroud although you could add that restriction back in if desired.{T}, Exile a nonland permanent you control until end of turn: Add the casting cost of the exiled permanent to your mana pool with hybrid mana symbols being counted once for each colour.
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 20 Oct 2013, 18:14
Thanks master, your suggestions always let me think and improve my work.
You're right about most point of your opinions, i would just say, i have not a defined idea about all the interactions when i was creating the card.
I supposed to keep the 2 abilities separated to give more interaction with the game phases to the player, so he could store the mana in a different phase and decide to add it to the mana pool later.
Anyway many times i made mistakes for my few knowledge of programming and sometimes because i still have to decide how the card should work.
1. I still have a question about RSN_MarkCanProduceMana is it just qualitative or also quantitative?
I mean it defines just which kind of mana can produce or also defines how many mana of each kind it can produce??
Because i checked the code inside other cards, and i found some cards where it is implemented specifying also the amount of each mana it can produce, so when i have wrote it I made that code to build the exact string of mana the card can produce.
2. Until now i am not sure to have exactly understand the behaviour of DOTP code, because sometimes, the same istructions seems to work and sometimes not, so i am still a little bit confused about the usage of some functions, expecially when i have to use global variables from an ability to another, or from a block to another.
3. I followed your suggestion and i made a simplified version of Heraion, more linear just one Tap ability, i also made the Trigger for the zone change (graveyard and exile) with 2 different effect. I still have to decide about the untap trigger.
If you want to take a look you can find the revised code here.
Thanks as always my friend.
You're right about most point of your opinions, i would just say, i have not a defined idea about all the interactions when i was creating the card.
I supposed to keep the 2 abilities separated to give more interaction with the game phases to the player, so he could store the mana in a different phase and decide to add it to the mana pool later.
Anyway many times i made mistakes for my few knowledge of programming and sometimes because i still have to decide how the card should work.
1. I still have a question about RSN_MarkCanProduceMana is it just qualitative or also quantitative?
I mean it defines just which kind of mana can produce or also defines how many mana of each kind it can produce??
Because i checked the code inside other cards, and i found some cards where it is implemented specifying also the amount of each mana it can produce, so when i have wrote it I made that code to build the exact string of mana the card can produce.
2. Until now i am not sure to have exactly understand the behaviour of DOTP code, because sometimes, the same istructions seems to work and sometimes not, so i am still a little bit confused about the usage of some functions, expecially when i have to use global variables from an ability to another, or from a block to another.
3. I followed your suggestion and i made a simplified version of Heraion, more linear just one Tap ability, i also made the Trigger for the zone change (graveyard and exile) with 2 different effect. I still have to decide about the untap trigger.
If you want to take a look you can find the revised code here.
- Hearion | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="HERAION_7272002" />
<CARDNAME text="HERAION" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Heraion]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272002" />
<ARTID value="7227002" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<SUPERTYPE metaname="Legendary" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="M" />
<STATIC_ABILITY>
<CONTINUOUS_ACTION layer="0">
RSN_MarkCanProduceMana("{1}{W}{U}{B}{R}{G}")
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<ACTIVATED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Exile a nonland permanent you control until end of turn: Add the casting cost of the exiled permanent to your mana pool with hybrid mana symbols being counted once for
each colour. If Heraion is put into a graveyard while it holds an exiled permanent, add this permanent to your hand. If Heraion is exiled while it holds an exiled permanent, put this permanent to the top of your library.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Exile un permanent non-terrain que vous contrôlez jusqu'à la fin du tour: Ajouter le coût de lancement de la mission permanente exilée à votre réserve de mana avec des
symboles de mana hybrides sont comptés qu'une fois pour chaque couleur. Si Heraion est mis dans un cimetière alors qu'il est titulaire d'un exil permanent, ajoutez ce permanent à votre main. Si Heraion est exilé alors qu'il est
titulaire d'un exil permanent, mettre ce permanent au dessus de votre bibliothèque.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Remueve un permanente que controles que no sea tierra hasta el final del turno: Agregue el coste de lanzamiento de la permanente exiliado a tu reserva de maná con
símbolos de maná híbridos que se cuentan una vez para cada color. Si Heraion se vaya a un cementerio mientras se mantiene un permanente exilio, añada esta permanente a su lado. Si Heraion es exiliado mientras mantiene un permanente
exilio, ponga este permanente a la parte superior de tu biblioteca.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Exile ein kein Land permanent steuern Sie bis zum Ende des Zuges: Fügen Sie die Kosten für das Gießen verbannt permanent zu deinen Manavorrat mit Hybrid Manasymbole
wird einmal für jede Farbe gezählt. Wenn Heraion auf einen Friedhof gelegt wird, während es einen permanenten Exil hält, fügen Sie diese permanent auf die Hand. Wenn Heraion verbannt wird, während es ein Exil permanent hält, setzen Sie
diese permanent an die Spitze Ihrer Bibliothek.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Esilia un permanente non terra che controlli fino alla fine del turno: Aggiungi il costo di lancio del permanente esiliato alla tua riserva di mana con simboli di mana
ibrido viene contato una volta per ogni colore. Se Heraion viene messa in un cimitero, mentre detiene un permanente esiliato, aggiungi questo permanente alla tua mano. Se Heraion viene esiliato, mentre detiene un permanente esiliato,
metti questo permanente alla cima del tuo grimorio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:追放土地でないあなたは、ターン終了時までコントロールするパーマネント:混成マナシンボルが各色ごとに一回カウントされてあなたのマナ·プールに追放永久の鋳造コストを追加します。それは永久追放を保持しながら、ヘラ神殿がいずれかの墓地に置かれた場合、あなたの手札にこのパーマネントを追加します。それは永久追放を保持しながら、ヘラ神
殿が追放されている場合、あなたのライブラリーの一番上に、このパーマネントを置く。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T} : 망명 nonland 당신은 턴 종료시까지 제어 영구 : 하이브리드 마나 기호가 각 색상에 대해 한 번 계산되는과 마나 풀에 망명 영구적으로 캐스팅 비용을 추가합니다. 이 추방 영구적를 보유하는 동안 헤라 이온이 묘지로 보내 졌을 때, 당신의 손이 영구적
를 추가합니다. 이 추방 영구적를 보유하는 동안 헤라 이온이 추방되는 경우, 라이브러리의 상단이 영구적으로 넣어.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Exile являющийся землей перманент под вашим контролем нет до конца хода: Добавить литья стоимость сослан постоянной в ваше хранилище маны с гибридной символы маны
подсчитываются один раз для каждого цвета. Если Heraion является попадает на кладбище, пока он держит постоянную сослан, добавьте эту постоянную в вашу руку. Если Heraion находится в изгнании, пока он держит сослан постоянными,
поместите эту постоянную в начало вашей библиотеке.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Exile um que não seja terreno permanente que você controla até o final do turno: Adicionar o custo do vazamento permanente exilado à sua reserva de mana com símbolos de
mana híbrido a ser contado uma vez para cada cor. Se Heraion é colocado em um cemitério ao mesmo tempo que mantém um permanente exílio, adicione esta permanente para sua mão. Se Heraion é exilado enquanto ele mantém um permanente
exílio, colocou esta permanente para o topo da sua biblioteca.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<FILTER filter_id="0">
local filter = ClearFilter()
filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
local subfilter = filter:AddSubFilter_Or()
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
subfilter:Add( FE_TYPE, OP_NOT, CARD_TYPE_LAND )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
</FILTER>
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION filter_id="0">
EffectController():ChooseItem( "CARD_QUERY_CHOOSE_NONLAND_PERMANENT_TO_EXILE", EffectDC():Make_Targets(0) )
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
local filter = ClearFilter()
filter:Add( FE_CARD_INSTANCE, OP_IS, target )
local WhiteTotal = filter:ChromaCount(COLOUR_WHITE)
local BlueTotal = filter:ChromaCount( COLOUR_BLUE )
local RedTotal = filter:ChromaCount( COLOUR_RED )
local GreenTotal = filter:ChromaCount( COLOUR_GREEN )
local BlackTotal = filter:ChromaCount( COLOUR_BLACK )
local ColourlessTotal = filter:ChromaCount( COLOUR_COLOURLESS )
local ProducedString =""
local WhiteString =""
local BlueString =""
local RedString =""
local GreenString =""
local BlackString =""
local ColourLessString =""
for i = 1,(WhiteTotal) do
WhiteString = WhiteString.."{W}"
end
for i = 1,(BlueTotal) do
BlueString = BlueString.."{U}"
end
for i = 1,(RedTotal) do
RedString = RedString.."{R}"
end
for i = 1,(GreenTotal) do
GreenString = GreenString.."{G}"
end
for i = 1,(BlackTotal) do
BlackString = BlackString.."{B}"
end
for i = 1,(ColourlessTotal) do
ColourLessString = ColourLessString.."{1}"
end
ProducedString = WhiteString..BlueString..RedString..GreenString..BlackString..ColourLessString
RSN_Produce( ProducedString, 1 )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
LinkedDC():Set_CardPtr(0, target)
LinkedDC():Protect_CardPtr(0)
target:Exile()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
local source = EffectSource()
if target ~= nil and source ~= nil then
target:NailOnto(source)
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
<AUTO_SKIP>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
return false
else
return true
end
</AUTO_SKIP>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="BEGINNING_OF_STEP">
return ( MTG():GetStep() == STEP_END_OF_TURN )
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutOntoBattlefield()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="ZONECHANGE_BEGIN" simple_qualifier="self" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_BATTLEFIELD" />
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutInHand()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="ZONECHANGE_BEGIN" simple_qualifier="self" to_zone="ZONE_EXILE" from_zone="ZONE_BATTLEFIELD" />
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutOnTopOfLibrary()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>
Thanks as always my friend.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by RiiakShiNal » 20 Oct 2013, 20:06
If you want to design your card such that the player can store in one step/phase and then produce mana in another you certainly can. You can make it any way you want, but you need to make sure that you explain to the user the rules behind its use otherwise players will say the card is bugged.NeoAnderson wrote:Thanks master, your suggestions always let me think and improve my work.
You're right about most point of your opinions, i would just say, i have not a defined idea about all the interactions when i was creating the card.
I supposed to keep the 2 abilities separated to give more interaction with the game phases to the player, so he could store the mana in a different phase and decide to add it to the mana pool later.
I don't know of any cards that specify the amount because the function itself only stores colours, not amounts. It is used so that cards like Reflecting Pool, Exotic Orchard, and Benthic Explorers can be coded (otherwise it's not possible to know which colours a card can produce). This function essentially allows for advertising of which colours it can produce.NeoAnderson wrote:1. I still have a question about RSN_MarkCanProduceMana is it just qualitative or also quantitative?
I mean it defines just which kind of mana can produce or also defines how many mana of each kind it can produce??
Because i checked the code inside other cards, and i found some cards where it is implemented specifying also the amount of each mana it can produce, so when i have wrote it I made that code to build the exact string of mana the card can produce.
Is this a question about Lua code or about the functions exposed by DotP? As for variables, variable scope is limited to the scope where the variable is defined (this is pretty standard across many programming languages). Variables are defined through use of the local keyword.NeoAnderson wrote:2. Until now i am not sure to have exactly understand the behaviour of DOTP code, because sometimes, the same istructions seems to work and sometimes not, so i am still a little bit confused about the usage of some functions, expecially when i have to use global variables from an ability to another, or from a block to another.
As for the differences between data chests, they are linked to one object or another and the object they are linked to determines when and where they can be used.
- EffectDC() - This is only usable within a single ability. If an ability is activated twice then each instance of the ability will have a separate EffectDC().
- LinkedDC() - This is only usable in abilities that have the linked_ability_group attribute set, the contents of this data chest are shared between all abilities that have the attribute on a single card. As far as I know this data chest gets reset upon changing zones.
- player:PlayerDataChest() - This is linked to a specific player and it's contents are available for as long as that player is in the game.
- MTG():DuelDataChest() - This is linked to the current match being played and is available throughout the entire match. This is as close to global for data chest storage as you can get.
- RSN_ObjectDC() - This is my approximation of the ObjectDC() in DotP 2013 which links a data chest to a card allowing for persistent storage that can be accessed both by the card itself and by other cards to get otherwise unobtainable information (information resets on zone change). For example which colours of mana a card can produce. This type of data chest uses the DuelDataChest() for storage and requires my ObjectDC Functions mod.
Actually, my suggestion was simpler and was less hazardous to play. Though you still have a few problems with the way the card is worded versus coded:NeoAnderson wrote:3. I followed your suggestion and i made a simplified version of Heraion, more linear just one Tap ability, i also made the Trigger for the zone change (graveyard and exile) with 2 different effect. I still have to decide about the untap trigger.
If you want to take a look you can find the revised code here.Now it should be more compliant to your suggestion!
- Hearion | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="HERAION_7272002" />
<CARDNAME text="HERAION" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Heraion]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272002" />
<ARTID value="7227002" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<SUPERTYPE metaname="Legendary" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="M" />
<STATIC_ABILITY>
<CONTINUOUS_ACTION layer="0">
RSN_MarkCanProduceMana("{1}{W}{U}{B}{R}{G}")
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<ACTIVATED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Exile a nonland permanent you control until end of turn: Add the casting cost of the exiled permanent to your mana pool with hybrid mana symbols being counted once for
each colour. If Heraion is put into a graveyard while it holds an exiled permanent, add this permanent to your hand. If Heraion is exiled while it holds an exiled permanent, put this permanent to the top of your library.]]
></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Exile un permanent non-terrain que vous contrôlez jusqu'à la fin du tour: Ajouter le coût de lancement de la mission permanente exilée à votre réserve de mana avec des
symboles de mana hybrides sont comptés qu'une fois pour chaque couleur. Si Heraion est mis dans un cimetière alors qu'il est titulaire d'un exil permanent, ajoutez ce permanent à votre main. Si Heraion est exilé alors qu'il est
titulaire d'un exil permanent, mettre ce permanent au dessus de votre bibliothèque.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Remueve un permanente que controles que no sea tierra hasta el final del turno: Agregue el coste de lanzamiento de la permanente exiliado a tu reserva de maná con
símbolos de maná híbridos que se cuentan una vez para cada color. Si Heraion se vaya a un cementerio mientras se mantiene un permanente exilio, añada esta permanente a su lado. Si Heraion es exiliado mientras mantiene un permanente
exilio, ponga este permanente a la parte superior de tu biblioteca.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Exile ein kein Land permanent steuern Sie bis zum Ende des Zuges: Fügen Sie die Kosten für das Gießen verbannt permanent zu deinen Manavorrat mit Hybrid Manasymbole
wird einmal für jede Farbe gezählt. Wenn Heraion auf einen Friedhof gelegt wird, während es einen permanenten Exil hält, fügen Sie diese permanent auf die Hand. Wenn Heraion verbannt wird, während es ein Exil permanent hält, setzen Sie
diese permanent an die Spitze Ihrer Bibliothek.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Esilia un permanente non terra che controlli fino alla fine del turno: Aggiungi il costo di lancio del permanente esiliato alla tua riserva di mana con simboli di mana
ibrido viene contato una volta per ogni colore. Se Heraion viene messa in un cimitero, mentre detiene un permanente esiliato, aggiungi questo permanente alla tua mano. Se Heraion viene esiliato, mentre detiene un permanente esiliato,
metti questo permanente alla cima del tuo grimorio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:追放土地でないあなたは、ターン終了時までコントロールするパーマネント:混成マナシンボルが各色ごとに一回カウントされてあなたのマナ·プールに追放永久の鋳造コストを追加します。それは永久追放を保持しながら、ヘラ神殿がいずれかの墓地に置かれた場合、あなたの手札にこのパーマネントを追加します。それは永久追放を保持しながら、ヘラ神
殿が追放されている場合、あなたのライブラリーの一番上に、このパーマネントを置く。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T} : 망명 nonland 당신은 턴 종료시까지 제어 영구 : 하이브리드 마나 기호가 각 색상에 대해 한 번 계산되는과 마나 풀에 망명 영구적으로 캐스팅 비용을 추가합니다. 이 추방 영구적를 보유하는 동안 헤라 이온이 묘지로 보내 졌을 때, 당신의 손이 영구적
를 추가합니다. 이 추방 영구적를 보유하는 동안 헤라 이온이 추방되는 경우, 라이브러리의 상단이 영구적으로 넣어.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Exile являющийся землей перманент под вашим контролем нет до конца хода: Добавить литья стоимость сослан постоянной в ваше хранилище маны с гибридной символы маны
подсчитываются один раз для каждого цвета. Если Heraion является попадает на кладбище, пока он держит постоянную сослан, добавьте эту постоянную в вашу руку. Если Heraion находится в изгнании, пока он держит сослан постоянными,
поместите эту постоянную в начало вашей библиотеке.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Exile um que não seja terreno permanente que você controla até o final do turno: Adicionar o custo do vazamento permanente exilado à sua reserva de mana com símbolos de
mana híbrido a ser contado uma vez para cada cor. Se Heraion é colocado em um cemitério ao mesmo tempo que mantém um permanente exílio, adicione esta permanente para sua mão. Se Heraion é exilado enquanto ele mantém um permanente
exílio, colocou esta permanente para o topo da sua biblioteca.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<FILTER filter_id="0">
local filter = ClearFilter()
filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
local subfilter = filter:AddSubFilter_Or()
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
subfilter:Add( FE_TYPE, OP_NOT, CARD_TYPE_LAND )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
</FILTER>
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION filter_id="0">
EffectController():ChooseItem( "CARD_QUERY_CHOOSE_NONLAND_PERMANENT_TO_EXILE", EffectDC():Make_Targets(0) )
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
local filter = ClearFilter()
filter:Add( FE_CARD_INSTANCE, OP_IS, target )
local WhiteTotal = filter:ChromaCount(COLOUR_WHITE)
local BlueTotal = filter:ChromaCount( COLOUR_BLUE )
local RedTotal = filter:ChromaCount( COLOUR_RED )
local GreenTotal = filter:ChromaCount( COLOUR_GREEN )
local BlackTotal = filter:ChromaCount( COLOUR_BLACK )
local ColourlessTotal = filter:ChromaCount( COLOUR_COLOURLESS )
local ProducedString =""
local WhiteString =""
local BlueString =""
local RedString =""
local GreenString =""
local BlackString =""
local ColourLessString =""
for i = 1,(WhiteTotal) do
WhiteString = WhiteString.."{W}"
end
for i = 1,(BlueTotal) do
BlueString = BlueString.."{U}"
end
for i = 1,(RedTotal) do
RedString = RedString.."{R}"
end
for i = 1,(GreenTotal) do
GreenString = GreenString.."{G}"
end
for i = 1,(BlackTotal) do
BlackString = BlackString.."{B}"
end
for i = 1,(ColourlessTotal) do
ColourLessString = ColourLessString.."{1}"
end
ProducedString = WhiteString..BlueString..RedString..GreenString..BlackString..ColourLessString
RSN_Produce( ProducedString, 1 )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
LinkedDC():Set_CardPtr(0, target)
LinkedDC():Protect_CardPtr(0)
target:Exile()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
local source = EffectSource()
if target ~= nil and source ~= nil then
target:NailOnto(source)
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
<AUTO_SKIP>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
return false
else
return true
end
</AUTO_SKIP>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="BEGINNING_OF_STEP">
return ( MTG():GetStep() == STEP_END_OF_TURN )
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutOntoBattlefield()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="ZONECHANGE_BEGIN" simple_qualifier="self" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_BATTLEFIELD" />
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutInHand()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<TRIGGER value="ZONECHANGE_BEGIN" simple_qualifier="self" to_zone="ZONE_EXILE" from_zone="ZONE_BATTLEFIELD" />
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
if target ~= nil then
target:PutOnTopOfLibrary()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>
This text:
Is exiling a nonland permanent you control until end of turn a cost or a result of the ability? This determines whether use of the card can be canceled or not in the engine. If it was intended as a cost then you implemented it wrong. Also the way it is worded makes the user believe that the card will return to play at end of turn (which can easily be handled by a delayed trigger) rather than just being exiled then being handled by a set of different triggered abilities with different effects.{T}: Exile a nonland permanent you control until end of turn: Add the casting cost of the exiled permanent to your mana pool with hybrid mana symbols being counted once for each colour.
The mana ability: This ability breaks the rules for mana abilities as established by Wizards of the Coast. Mana abilities can't be interrupted or responded to (which is why all my fake mana abilities use forced_skip="1").
This text:
If these abilities are actually part of the results of using the mana ability then you definitely have them coded wrong, because the mana ability should create delayed triggers for these (that cleanup at end of turn) instead of having static triggers. The reason for this is that if somehow the ability is countered then these triggers should never be created.If Heraion is put into a graveyard while it holds an exiled permanent, add this permanent to your hand. If Heraion is exiled while it holds an exiled permanent, put this permanent to the top of your library.
If you intended for them to be static triggers then you need to move the text for these abilities into their respective triggered abilities.
Generally, when making cards and abilities you should try to keep them simple to understand (which will help tremendously with coding them). If a player can't figure out how the card works from how the abilities are written then generally they aren't going to use them. If a simple ability or set of abilities is made and a player figures out how to exploit it/them then it is up to the developer to figure out what should then be done about it. For example using the land to flicker creatures with ETB triggers is an obvious exploit, as is using the land to protect a creature from an effect (Terror, Royal Assassin, Swords to Plowshares, etc...). If you want to prevent these kinds of exploits then you need to spend more time considering what you actually want the ability to do and how you want it to interact with all the other available cards. Think about things like "How could exploit this great ability?" and "Okay, this is how I can exploit it, do I want to leave it like this or find a way to prevent the exploit?"
Card interactions are very important and because of that you need to be very careful about how you word abilities and how you code the abilities that you worded (they must match, if they don't match then you have a problem).
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 20 Oct 2013, 22:10
1. Thank you so much to take your time to answer to all my questions point by point.
About the first part " Card explanaition and rules" you're absolutely right, i made some mistake about the card exaplanation because i was not sure how to complete its functions. I understand that to be detailed and to have a linear programming make the users able to use the cards in a easy way.
2. About the Functions explanaitions, thanks a lot it will be usefull for future coding.
3. About this Card coding... honestly as i thought the card, exile a permanent was not a direct cost, it was a consequence of the ability, "if you exile until the end of turn that permanent, you can store the casting cost mana into your mana pool".
Now the card is changed and problably you can say it is a cost to activate the mana ability, so problably you mean to implement it as a "COST type ="Exile", i have to check and learn what this will need.
4. As for the the point 3, considering the "exile" not as a cost but as consequence, these 2 triggers "source moved into graveyard or exiled" are not related to the main mana ability but are separate ability of the card to send back the exiled permanent if it is moved out of the battelfied. The texts are not in the right trigger but inside the main just to make it quickly, i will move it.
Anyway i know is not simple to code cards in perfect way, expecially with poor knowledge about programming. For these reason when i started this set i asked to someone to collaborate, but until now, i see many downloads but noone contacted me to collaborate, i just received your support, also some from Firemind, and Kieran. For me is not easy to think about new cards, abilities, historical localization, trying to match the characters to the role inside the set, the interactions, the pictures search and modifies, and finally but not last the programming.
So i can only say thanks to you. Until now this is the best i am able to do hope to improve my skills.
About the first part " Card explanaition and rules" you're absolutely right, i made some mistake about the card exaplanation because i was not sure how to complete its functions. I understand that to be detailed and to have a linear programming make the users able to use the cards in a easy way.
2. About the Functions explanaitions, thanks a lot it will be usefull for future coding.
3. About this Card coding... honestly as i thought the card, exile a permanent was not a direct cost, it was a consequence of the ability, "if you exile until the end of turn that permanent, you can store the casting cost mana into your mana pool".
Now the card is changed and problably you can say it is a cost to activate the mana ability, so problably you mean to implement it as a "COST type ="Exile", i have to check and learn what this will need.
4. As for the the point 3, considering the "exile" not as a cost but as consequence, these 2 triggers "source moved into graveyard or exiled" are not related to the main mana ability but are separate ability of the card to send back the exiled permanent if it is moved out of the battelfied. The texts are not in the right trigger but inside the main just to make it quickly, i will move it.
Anyway i know is not simple to code cards in perfect way, expecially with poor knowledge about programming. For these reason when i started this set i asked to someone to collaborate, but until now, i see many downloads but noone contacted me to collaborate, i just received your support, also some from Firemind, and Kieran. For me is not easy to think about new cards, abilities, historical localization, trying to match the characters to the role inside the set, the interactions, the pictures search and modifies, and finally but not last the programming.
So i can only say thanks to you. Until now this is the best i am able to do hope to improve my skills.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by RiiakShiNal » 20 Oct 2013, 23:00
Even if you don't know how to program something, if you can give a clear, concise description of what exactly you intend then you can get help from people on the forum. Specific questions like "How can I code 'Exile a card until end of turn' as a cost?" or "How do I prevent unwanted card interactions with returning a card from exile?" can get you answers you want and will be much easier to answer and respond to than open ended questions that could have thousands of "correct" answers.NeoAnderson wrote:1. Thank you so much to take your time to answer to all my questions point by point.
About the first part " Card explanaition and rules" you're absolutely right, i made some mistake about the card exaplanation because i was not sure how to complete its functions. I understand that to be detailed and to have a linear programming make the users able to use the cards in a easy way.
Well, once you've decided exactly how you want the card to work then it will be much easier to provide useful answers. In posts be descriptive, people can help boil down descriptive text to something more concise once everyone know exactly what it is supposed to do.NeoAnderson wrote:3. About this Card coding... honestly as i thought the card, exile a permanent was not a direct cost, it was a consequence of the ability, "if you exile until the end of turn that permanent, you can store the casting cost mana into your mana pool".
Now the card is changed and problably you can say it is a cost to activate the mana ability, so problably you mean to implement it as a "COST type ="Exile", i have to check and learn what this will need.
Again, where the triggers will be and how they are coded depends on what exactly you want the card to do, if you can't think of how to code it or describe it, then do a step-by-step example of how you envision it working.NeoAnderson wrote:4. As for the the point 3, considering the "exile" not as a cost but as consequence, these 2 triggers "source moved into graveyard or exiled" are not related to the main mana ability but are separate ability of the card to send back the exiled permanent if it is moved out of the battelfied. The texts are not in the right trigger but inside the main just to make it quickly, i will move it.
To be honest, I'm not really interested in this set, I see more than enough cards for me in the official MtG cards and sets, so I haven't downloaded a single version of this mod.NeoAnderson wrote:Anyway i know is not simple to code cards in perfect way, expecially with poor knowledge about programming. For these reason when i started this set i asked to someone to collaborate, but until now, i see many downloads but noone contacted me to collaborate, i just received your support, also some from Firemind, and Kieran. For me is not easy to think about new cards, abilities, historical localization, trying to match the characters to the role inside the set, the interactions, the pictures search and modifies, and finally but not last the programming.
So i can only say thanks to you. Until now this is the best i am able to do hope to improve my skills.
I will, however, help people with problems they have if they ask for help. There are times when I won't help and may not even respond, usually it is for things like open ended help without a specific goal (collaboration on a set, people asking what people think about a set of decks that I've never downloaded much less played, etc...). I often ignore requests to look over cards if a person provides a zip file instead of a code block with the code (it is much easier for me to just look at a code block rather than download, unzip, then look at the code).
I read virtually every post that is made on the DotP forums, and I give specific help for specific questions.
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 21 Oct 2013, 00:32
Riiak you're a skilled programmer, honestly i am living a particular period about my life, i faced a lot of changes during last 4 years, changes of city (2 times), changes of job (3 times), cohabitation with a girlfriend (for 3 years), now i am back to my home city, i have difficulty to find a new job, i have ended the relationship with the girlfriend, so i was using the computer to get some distractions and to stop to think. Next month i will start a new job, as a new paragraph of my life.
Magic was a game, i played for real during the period 1994-1997. It brings me to a free mind period, and i like the fantasy ambientation. I hope to keep the free-time to be involved with the game, it keeps my mind trained and is also relaxing.
Anyway, sorry for the mind's flight, about the forum i see that many time the users help each other in front of specific requests, i will try to ask help when i will need it. I can understand you're bored to see millions of new cards, expecially because as you said the original game already includes thousands of cards.
I finally decided how the land have to be defined, i also understand how delayDC works.. so the final code is :
The definition until the end of turn is respected because of the delayDC triggers.
Now if you untap the card and play the ability other times it works.
Hope you will approve my decisions.
Magic was a game, i played for real during the period 1994-1997. It brings me to a free mind period, and i like the fantasy ambientation. I hope to keep the free-time to be involved with the game, it keeps my mind trained and is also relaxing.
Anyway, sorry for the mind's flight, about the forum i see that many time the users help each other in front of specific requests, i will try to ask help when i will need it. I can understand you're bored to see millions of new cards, expecially because as you said the original game already includes thousands of cards.
I finally decided how the land have to be defined, i also understand how delayDC works.. so the final code is :
- HERAION | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="HERAION_7272002" />
<CARDNAME text="HERAION" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Heraion]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Heraion]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272002" />
<ARTID value="7227002" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<SUPERTYPE metaname="Legendary" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="M" />
<STATIC_ABILITY>
<CONTINUOUS_ACTION layer="0">
RSN_MarkCanProduceMana("{1}{W}{U}{B}{R}{G}")
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<ACTIVATED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Exile a nonland permanent, you control until end
of turn. Add the casting cost of the exiled permanent to your mana pool with hybrid mana symbols being counted once
for each colour.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Exile un permanent non-terrain, vous contrôlez
jusqu'à la fin du tour. Ajouter le coût de lancement de la mission permanente exilée à votre réserve de mana avec
des symboles de mana hybrides sont comptés qu'une fois pour chaque couleur.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Remueve un permanente que no sea tierra, a
controlar hasta el final del turno. Agregue el coste de lanzamiento de la permanente exiliado a tu reserva de maná
con símbolos de maná híbridos se cuentan una vez para cada color.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Exile ein kein Land permanent steuern Sie bis
zum Ende des Zuges. Fügen Sie die Kosten für das Gießen verbannt permanent zu deinen Manavorrat mit Hybrid
Manasymbole wird einmal für jede Farbe gezählt.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Esilia un permanente non terra, che controlli
fino alla fine del turno. Aggiungi il costo di lancio del permanente esiliato alla tua riserva di mana, i simboli
di mana ibrido vengono contati una volta per ogni colore.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:追放土地でないパーマネントは、ターン終了時までコントロール。混成マナシンボルが各色ごとに一回カ
ウントされてあなたのマナ·プールに追放永久の鋳造コストを追加します。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T} : 망명 nonland 영구, 당신은 턴 종료시까지 제어 할 수 있습니다. 하
이브리드 마나 기호가 각 색상에 대해 한 번 계산되는과 마나 풀에 망명 영구적으로 캐스팅 비용을 추가 할 수 있습니다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Exile являющийся землей перманент, вы не
контролируете до конца хода. Добавить литья стоимость сослан постоянной в ваше хранилище маны с гибридной символы
маны подсчитываются один раз для каждого цвета.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Exile a permanente que não seja terreno, você
controla até o final do turno. Adicionar o custo do vazamento permanente exilado à sua reserva de mana com símbolos
de mana híbrido a ser contado uma vez para cada cor.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<FILTER filter_id="0">
local filter = ClearFilter()
filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
local subfilter = filter:AddSubFilter_Or()
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
subfilter:Add( FE_TYPE, OP_NOT, CARD_TYPE_LAND )
subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
</FILTER>
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION filter_id="0">
EffectController():ChooseItem( "CARD_QUERY_CHOOSE_NONLAND_PERMANENT_TO_EXILE", EffectDC():Make_Targets(0) )
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
local filter = ClearFilter()
filter:Add( FE_CARD_INSTANCE, OP_IS, target )
local WhiteTotal = filter:ChromaCount(COLOUR_WHITE)
local BlueTotal = filter:ChromaCount( COLOUR_BLUE )
local RedTotal = filter:ChromaCount( COLOUR_RED )
local GreenTotal = filter:ChromaCount( COLOUR_GREEN )
local BlackTotal = filter:ChromaCount( COLOUR_BLACK )
local ColourlessTotal = filter:ChromaCount( COLOUR_COLOURLESS )
local ProducedString =""
local WhiteString =""
local BlueString =""
local RedString =""
local GreenString =""
local BlackString =""
local ColourLessString =""
for i = 1,(WhiteTotal) do
WhiteString = WhiteString.."{W}"
end
for i = 1,(BlueTotal) do
BlueString = BlueString.."{U}"
end
for i = 1,(RedTotal) do
RedString = RedString.."{R}"
end
for i = 1,(GreenTotal) do
GreenString = GreenString.."{G}"
end
for i = 1,(BlackTotal) do
BlackString = BlackString.."{B}"
end
for i = 1,(ColourlessTotal) do
ColourLessString = ColourLessString.."{1}"
end
ProducedString = WhiteString..BlueString..RedString..GreenString..BlackString..ColourLessString
RSN_Produce( ProducedString, 1 )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
LinkedDC():Set_CardPtr(0, target)
LinkedDC():Protect_CardPtr(0)
target:Exile()
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = LinkedDC():Get_CardPtr(0)
local source = EffectSource()
if target ~= nil and source ~= nil then
target:NailOnto(source)
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr(0, target)
MTG():CreateDelayedTrigger(2, delayDC)
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
<AUTO_SKIP>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
return false
else
return true
end
</AUTO_SKIP>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY resource_id="2">
<TRIGGER value="BEGINNING_OF_STEP">
return MTG():GetStep() == STEP_END_OF_TURN
</TRIGGER>
<CLEANUP fire_once="1" />
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_CardPtr(0)
if target ~= nil then
target:PutOntoBattlefield()
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>
The definition until the end of turn is respected because of the delayDC triggers.
Now if you untap the card and play the ability other times it works.
Hope you will approve my decisions.
- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by RiiakShiNal » 21 Oct 2013, 01:30
Well, I am a programmer by trade so I would hope I was skilled.
Believe it or not I played paper magic in about the same time frame (1994-97, my high school years).
Whether I approve or not is irrelevant, it only matters if you approve of it since you are the creator of your cards.
There is still a problem with your code though:
Your mana ability does not follow MtG rules regarding mana abilities in that mana abilities can't be interrupted or responded to. You need to add forced_skip="1" to the activated ability.
Of lesser note is that you no longer need the LinkedDC() at all since you are using a delayed trigger now (which will also let you remove the linked_ability_group attribute).
I'm not necessarily bored with new cards, it is still interesting to see people's ideas about what they would like to see. I just don't have any interest in making any custom cards myself as there are plenty of official cards left to make. If I only try to finish making the cards with mana abilities then that's another 700+ cards I haven't even started on yet.

Whether I approve or not is irrelevant, it only matters if you approve of it since you are the creator of your cards.
There is still a problem with your code though:
Your mana ability does not follow MtG rules regarding mana abilities in that mana abilities can't be interrupted or responded to. You need to add forced_skip="1" to the activated ability.
Of lesser note is that you no longer need the LinkedDC() at all since you are using a delayed trigger now (which will also let you remove the linked_ability_group attribute).
I'm not necessarily bored with new cards, it is still interesting to see people's ideas about what they would like to see. I just don't have any interest in making any custom cards myself as there are plenty of official cards left to make. If I only try to finish making the cards with mana abilities then that's another 700+ cards I haven't even started on yet.
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Re: Age of Dodekatheon - NEW UPDATED 10/19/2013 (56 cards)
by NeoAnderson » 21 Oct 2013, 17:47
Thanks Riiak i have added forced_skip="1".
I have also made another land "Temple of Athena"
I partially used the code of your Exotic Orchard (i also find something to be fixed inside the Italian text localization, you have made same italian text for this card and also for your Reflecting Pool).
The Italian text of Exotic Orchard shoud be "{T}: Aggiungi alla tua riserva di mana un mana di un qualsiasi colore che una terra controllata da un avversario potrebbe produrre."
The last thing is that Exotic Orchard doesn't check for colourless mana is this right or just a missing?
About my "Temple of Athena" it works in this way :
1. Can produce mana of the kind your opponents' land could produce.
2. When you tap it, Asks to select a colour then it checks the greatest number of land controlled by each opponent, then add to your mana pool X mana of the selected colour, where X is the difference between this number of lands and the number of lands you control.

I have also made another land "Temple of Athena"
I partially used the code of your Exotic Orchard (i also find something to be fixed inside the Italian text localization, you have made same italian text for this card and also for your Reflecting Pool).
The Italian text of Exotic Orchard shoud be "{T}: Aggiungi alla tua riserva di mana un mana di un qualsiasi colore che una terra controllata da un avversario potrebbe produrre."
The last thing is that Exotic Orchard doesn't check for colourless mana is this right or just a missing?
About my "Temple of Athena" it works in this way :
1. Can produce mana of the kind your opponents' land could produce.
2. When you tap it, Asks to select a colour then it checks the greatest number of land controlled by each opponent, then add to your mana pool X mana of the selected colour, where X is the difference between this number of lands and the number of lands you control.
- Temple of Athena | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="15">
<FILENAME text="TEMPLE_OF_ATHENA_7272003" />
<CARDNAME text="TEMPLE_OF_ATHENA" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Tempio di Atena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Temple of Athena]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="7272003" />
<ARTID value="7227003" />
<ARTIST name="Internet - Free resource" />
<CASTING_COST cost="" />
<COLOUR value="WUBRG" />
<SUPERTYPE metaname="Legendary" />
<TYPE metaname="Land" />
<EXPANSION value="DPI" />
<RARITY metaname="M" />
<ACTIVATED_ABILITY forced_skip="1" >
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add to your mana pool, X mana of any color that a land an opponent controls could produce, X is equal to the difference between the greatest number of lands controlled by any opponent and the number of lands you control.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Ajoutez à votre réserve de mana, X mana de n'importe quelle couleur qu'un terrain qu'un adversaire contrôle pourrait produire, X est égal à la différence entre le plus grand nombre de terrains contrôlés par n'importe quel adversaire et le nombre de terrains que vous contrôlez.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agrega a tu reserva de maná, X maná de cualquier color que una tierra que controle un oponente podría producir, X es igual a la diferencia entre el mayor número de tierras controladas por cualquier oponente y el número de tierras que controles.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Erhöhe deinen Manavorrat um X Mana einer beliebigen Farbe hinzufügen, dass ein Land ein Gegner kontrolliert produzieren könnte, X gleich der Differenz zwischen der größten Anzahl von Ländern durch jeden Gegner und die Zahl der Länder, die du zu steuern ist.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi alla tua riserva di mana, X mana di qualsiasi colore, che una terra controllata da un avversario potrebbe produrre, X è pari alla differenza tra il maggior numero di terre controllate da ogni avversario e il numero di terre che controlli.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:対戦相手のコントロールが作り出すことができる土地は、Xは任意の対戦相手と、あなたがコントロールする土地の数によって制御される土地の最大数との差に等しいことをあなたのマナ·プールに、任意の色のマナXに追加する。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T} : 상대의 컨트롤을 생산할 수있는 땅, X는 임의의 상대와 제어 토지의 수에 의해 제어 토지의 가장 큰 수의 차이와 동일합니다 당신의 마나 풀, 어떤 색깔의 X 마나에 추가합니다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Добавьте в ваше хранилище маны, X ману любого цвета, что земля под контролем оппонента могли бы производить, X равна разности между наибольшим количеством земли контролируется любым соперником и количество земель под вашим контролем.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione à sua reserva de mana, X mana de qualquer cor que um terreno controlado por um oponente poderia produzir, X é igual à diferença entre o maior número de terras controlado por qualquer adversário e o número de terrenos que você controla.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<AVAILABILITY>
return ((RSN_GetCanProduceMana( Object(), COLOUR_COLOURLESS )) or
(RSN_GetCanProduceMana( Object(), COLOUR_BLACK )) or
(RSN_GetCanProduceMana( Object(), COLOUR_BLUE )) or
(RSN_GetCanProduceMana( Object(), COLOUR_GREEN )) or
(RSN_GetCanProduceMana( Object(), COLOUR_RED )) or
(RSN_GetCanProduceMana( Object(), COLOUR_WHITE )))
</AVAILABILITY>
<PLAY_TIME_ACTION>
RSN_MarkManaAbilityStart()
RSN_ClearCanProduceMana()
-- Look through my opponents' lands to see what this can produce.
for i=0, (MTG():GetNumberOfPlayers() - 1) do
local oPlayer = MTG():GetNthPlayer( i )
if (oPlayer:GetTeam() ~= EffectController():GetTeam()) then
RSN_MarkCanProduceColourOfAnyTypeOtherLandPlayerControls( oPlayer )
end
end
</PLAY_TIME_ACTION>
<PLAY_TIME_ACTION>
local oPlayer = EffectController()
local oCard = EffectSource()
if (oPlayer ~= nil) then
oPlayer:BeginNewMultipleChoice()
oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_C", RSN_GetCanProduceMana( oCard, COLOUR_COLOURLESS ) )
oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_W", RSN_GetCanProduceMana( oCard, COLOUR_WHITE ) )
oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_U", RSN_GetCanProduceMana( oCard, COLOUR_BLUE ) )
oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_B", RSN_GetCanProduceMana( oCard, COLOUR_BLACK ) )
oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_R", RSN_GetCanProduceMana( oCard, COLOUR_RED ) )
oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_G", RSN_GetCanProduceMana( oCard, COLOUR_GREEN ) )
oPlayer:AskMultipleChoiceQuestion( "MODE_CHOOSE_ONE", oCard )
end
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local filter = ClearFilter()
filter:Add(FE_CONTROLLER, OP_IS, EffectController())
filter:Add(FE_TYPE, OP_IS, CARD_TYPE_LAND)
local yourlands = filter:Count()
local actuallands = 0
local curropplands = 0
local myTeam = EffectController():GetTeam()
for i=0,MTG():GetNumberOfPlayers()-1 do
local nthPlayer = MTG():GetNthPlayer(i)
if nthPlayer ~= nil and nthPlayer:GetTeam() ~= myTeam then
local filter = ClearFilter()
filter:Add(FE_CONTROLLER, OP_IS, nthPlayer)
filter:Add(FE_TYPE, OP_IS, CARD_TYPE_LAND)
curropplands = filter:Count()
local temp = curropplands - yourlands
if temp > actuallands then
actuallands = temp
end
end
end
local Cproducestring = ""
local Producemanastring =""
local nColour = EffectController():GetMultipleChoiceResult()
if (nColour == COLOUR_COLOURLESS) then
Cproducestring = "{1}"
elseif (nColour == COLOUR_BLACK) then
Cproducestring = "{B}"
elseif (nColour == COLOUR_BLUE) then
Cproducestring = "{U}"
elseif (nColour == COLOUR_GREEN) then
Cproducestring = "{G}"
elseif (nColour == COLOUR_RED) then
Cproducestring = "{R}"
elseif (nColour == COLOUR_WHITE) then
Cproducestring = "{W}"
end
if (EffectSource() ~= nil) and (actuallands > 0) then
for i = 1,(actuallands) do
Producemanastring = Producemanastring..Cproducestring
end
RSN_Produce( Producemanastring, 1 )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
RSN_EliminateExtraManaTokens()
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
S_DisplayManaPool(EffectController())
RSN_MarkManaAbilityEnd()
</RESOLUTION_TIME_ACTION>
<AI_AVAILABILITY window_step="upkeep" type="window" />
<AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
<AI_AVAILABILITY window_step="declare_blockers" type="window" />
<AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" type="window" />
<AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
<AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
<AI_AVAILABILITY type="in_response" response_source="1" />
<AI_AVAILABILITY type="in_response" response_target="1" />
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
<RESOLUTION_TIME_ACTION>
RSN_ClearProducedMana()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
<TRIGGER value="ZONECHANGE_END" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY">
-- Since we only care about lands for checking what we can produce.
return ((TriggerObject() ~= nil) and (TriggerObject():GetCardType():Test( CARD_TYPE_LAND )))
</TRIGGER>
<TRIGGER value="ZONECHANGE_END" from_zone="ZONE_BATTLEFIELD" to_zone="ZONE_ANY">
-- Since we only care about lands for checking what we can produce.
return ((TriggerObject() ~= nil) and (TriggerObject():GetCardType():Test( CARD_TYPE_LAND )))
</TRIGGER>
<RESOLUTION_TIME_ACTION>
RSN_ClearCanProduceMana()
-- Look through my opponents' lands to see what this can produce.
for i=0, (MTG():GetNumberOfPlayers() - 1) do
local oPlayer = MTG():GetNthPlayer( i )
if (oPlayer:GetTeam() ~= EffectController():GetTeam()) then
RSN_MarkCanProduceColourOfAnyTypeOtherLandPlayerControls( oPlayer )
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
<TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
</CARD_V2>

- NeoAnderson
- Posts: 914
- Joined: 10 Sep 2013, 07:49
- Has thanked: 18 times
- Been thanked: 139 times
Re: Age of Dodekatheon - NEW UPDATED 10/21/2013 (58 cards)
by drleg3nd » 21 Oct 2013, 18:57
are these decks or just cards ?
Who is online
Users browsing this forum: No registered users and 13 guests