Crucible of Worlds can't be coded the way you would expect it to work: you can't make the lands in your graveyard playable. There are some tricks to make something really close to the real card, though, and I had a fantastic idea, but there's something wrong and I can't understand what it is:
- Code: Select all
<?xml version='1.0'?>
<CARD_V2>
<FILENAME text="CRUCIBLE_OF_WORLDS_148851" />
<CARDNAME text="CRUCIBLE_OF_WORLDS" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Crucible of Worlds]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Crogiolo di Mondi]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Schmelztiegel der Welten]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Creuset des mondes]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Crisol de mundos]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[世界のるつぼ]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Crucible of Worlds]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Тигель Миров]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Crisol dos Mundos]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="148851" />
<ARTID value="A148851" />
<ARTIST name="Ron Spencer" />
<CASTING_COST cost="{3}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Amidst the darkest ashes grow the strongest seeds.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Tra le ceneri più scure crescono i semi più robusti.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Aus den dunkelsten Aschen wachsen die stärksten Schößlinge.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[C’est dans les cendres les plus noires que poussent les plantes les plus robustes.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Entre las cenizas más oscuras crecen las semillas más fuertes.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[漆黒の灰燼にこそ、強靱な種が芽を葺く。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Amidst the darkest ashes grow the strongest seeds.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Из самого черного пепла всходят сильнейшие побеги.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Em meio às cinzas mais escuras crescem as sementes mais fortes.]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Artifact" />
<EXPANSION value="10E" />
<RARITY metaname="R" />
<TRIGGERED_ABILITY internal="1" active_zone="ZONE_ANY">
<TRIGGER value="LAND_PLAYED">
local filter = Object():GetFilter()
filter:Clear()
filter:AddCardName( Object():GetCardName() )
filter:NotTargetted()
local filter_count = filter:EvaluateObjects()
return Object() == filter:GetNthEvaluatedObject(0)
</TRIGGER>
<RESOLUTION_TIME_ACTION>
for i=0,MTG():GetNumberOfPlayers()-1 do
local nthPlayer = MTG():GetNthPlayer(i)
if nthPlayer == TriggerObject():GetPlayer() then
local played_lands = nthPlayer:PlayerDataChest():Get_Int( 997 ) + 1
nthPlayer:PlayerDataChest():Set_Int( 997, played_lands )
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY internal="1" active_zone="ZONE_ANY">
<TRIGGER value="BEGINNING_OF_STEP" simple_qualifier="controller">
return MTG():GetStep() == STEP_UPKEEP
</TRIGGER>
<RESOLUTION_TIME_ACTION>
for i=0,MTG():GetNumberOfPlayers()-1 do
MTG():GetNthPlayer(i):PlayerDataChest():Set_Int( 997, 0 )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY forced_skip="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may play land cards from your graveyard.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Puoi giocare carte terra dal tuo cimitero.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst Länderkarten aus deinem Friedhof spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous pouvez jouer des cartes de terrain depuis votre cimetière.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Puedes jugar cartas de tierra de tu cementerio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたはあなたの墓地から土地カードをプレイしてもよい。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[You may play land cards from your graveyard.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Вы можете разыгрывать карты земель из вашего кладбища.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Você pode jogar cards de terreno de seu cemitério.]]></LOCALISED_TEXT>
<TRIGGER value="BEGINNING_OF_STEP" simple_qualifier="controller">
return TriggerPlayer() == Object():GetController() and
Object():GetController():MyTurn() ~= 0 and
(MTG():GetStep() == STEP_MAIN_1 or MTG():GetStep() == STEP_MAIN_2)
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local player = Object():GetController()
local playable_lands = 0
for i=0,MTG():GetNumberOfPlayers()-1 do
local nthPlayer = MTG():GetNthPlayer(i)
if nthPlayer == player then
local played_lands = nthPlayer:PlayerDataChest():Get_Int( 997 )
playable_lands = 1 + player:GetCurrentCharacteristics():Int_Get(PLAYER_INTCHARACTERISTIC_EXTRA_LAND_DROPS) - played_lands
end
end
if playable_lands > 0 then
local filter = Object():GetFilter()
filter:Clear()
filter:SetZone( ZONE_GRAVEYARD )
filter:AddCardType( CARD_TYPE_LAND )
filter:SetPlayer( player )
filter:NotTargetted()
filter:May()
filter:SetHint( HINT_ALLIED, player )
local max_lands = filter:Count()
if playable_lands < max_lands then
max_lands = playable_lands
end
if max_lands > 0 then
EffectDC():Set_Int(1, max_lands)
player:SetTargetCount(max_lands)
for i=0,max_lands-1 do
player:SetTargetPrompt( i, "CARD_QUERY_CHOOSE_LAND_TO_PUT_ONTO_BATTLEFIELD" )
end
player:ChooseTargets( NO_VALIDATION, EffectDC():Make_Targets(0) )
end
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local targetDC = EffectDC():Get_Targets(0)
if targetDC ~= nil then
local max_lands = EffectDC():Get_Int(1)
local target_array = {}
for i=0,max_lands-1 do
target_array[i] = targetDC:Get_CardPtr(i)
end
for i=0,max_lands-1 do
local target = target_array[i]
if target ~= nil then
target:PlayFreeFromAnywhere( Object():GetController() )
end
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
</CARD_V2>
This will offer you the chance to play a land (or more if you used something like
Explore) at the beginning of the main phases, only if you can actually play one. It keeps track of the lands played by each player using register #997 (just a random number) in each player's chest. The strategy works, but the trigger will start twice during main phase 2! Why twice? If I use EffectController() instead of Object():GetController(), it will start twice during main phase 1 as well. What's going on?
Anyway I already lost too much time on this, so the other cards will have to wait (unless someone else fills the requests before me, which
isn't prohibited, in case someone wonders

).