Wake the Dead:
- Yyour target block contains two lines which should be in the following RTA instead.
- That RTA doesn't need id="1".
- In that RTA, before putting each card onto the battlefield, add it to the delayDC and protect the pointer. (Make sure they're in indices 1 through X to match your delayed triggered ability's RTA which cycles through them.)
- In the delayed trigger, don't forget to check EffectController() for nil before using it.
Veridian Betrayers: It's checking if you have poison counters.
- Code: Select all
<CONTINUOUS_ACTION layer="6">
local oSource = EffectSource()
local oController = EffectController()
if oSource ~= nil and oController ~= nil then
local oFilter = ClearFilter()
oFilter:Add(FE_TEAM, OP_NOT, oController:GetTeam())
oFilter:Add(FE_LUA_CONDITION, 1, EffectController(), EffectDC())
if oFilter:CountStopAt(1) == 1 then
oSource:GetCurrentCharacteristics():Bool_Set(CHARACTERISTIC_INFECT, 1)
end
end
</CONTINUOUS_ACTION>
<FILTER_CONDITION id="1">
return FilteredPlayer() ~= nil and TFM_ReadPoisonCount(FilteredPlayer()) > 0
</FILTER_CONDITION>
Of course, if you don't want to use a filter condition, you can just iterate through the opponents with EvalutePlayers() and check each.
Volrath's Shapeshifter: Your RTA will never run. An RTA has no real meaning in a static ability, because it's when the ability resolves, but a static ability doesn't resolve, it just exists all the time. Also, your duration isn't needed.
Move the storage and usage of copiable values and from the RTA directly into the CA. You also don't need to protect any card pointers.
Volcanic Offering:
Sorry, but I'm not sure off-hand. I'd have to debug it, which I can do later. I might need reminded.
Vision Charm: Two multiple choice questions. One asks the player to choose between
Desert,
Forest,
Island, Lair, Locus, Mine,
Mountain,
Plains, Power-Plant,
Swamp, Tower, and
Urza’s. The other asks the player to choose between
Forest,
Island,
Mountain,
Plains, and
Swamp. Filter for all lands matching the first type, remove all land types, and add the subtype of the other choice.
Note that since there are 12 land types, you'll need a repeating RTA multiple choice question. I've been planning to go see if I can code a usable function for asking questions and getting answers with more than 7 choices, but I haven't yet. In the mean time, this should do the trick. This is completely untested. I'm not 100% certain arrays can be broken up over multiple lines. So, if it fails, the first thing I'd try is removing the line-break between lines 31 and 32.
- Code: Select all
<RESOLUTION_TIME_ACTION repeating="1">
local oController = EffectController()
local iRepCount = MTG():GetActionRepCount()
local iParity = iRepCount % 2
if oController ~= nil then
local iPreviousChoice = oController:GetMultipleChoiceResult()
if iParity == 0 and (iRepCount == 0 or iPreviousChoice == 6) then
oController:BeginMultipleChoiceQuestion()
oController:AddMultipleChoiceAnswer("LAND_TYPE_PLAINS")
oController:AddMultipleChoiceAnswer("LAND_TYPE_ISLAND")
oController:AddMultipleChoiceAnswer("LAND_TYPE_SWAMP")
oController:AddMultipleChoiceAnswer("LAND_TYPE_MOUNTAIN")
oController:AddMultipleChoiceAnswer("LAND_TYPE_FOREST")
oController:AddMultipleChoiceAnswer("LAND_TYPE_DESERT")
oController:AddMultipleChoiceAnswer("CARD_QUERY_SHOW_MORE")
oController:AskMultipleChoiceQuestion("CARD_QUERY_CHOOSE_LAND_TYPE")
return true
elseif iParity == 1 and iPreviousChoice == 6 then
oController:BeginMultipleChoiceQuestion()
oController:AddMultipleChoiceAnswer("LAND_TYPE_LAIR")
oController:AddMultipleChoiceAnswer("LAND_TYPE_LOCUS")
oController:AddMultipleChoiceAnswer("LAND_TYPE_URZAS")
oController:AddMultipleChoiceAnswer("LAND_TYPE_MINE")
oController:AddMultipleChoiceAnswer("LAND_TYPE_POWER_PLANT")
oController:AddMultipleChoiceAnswer("LAND_TYPE_TOWER")
oController:AddMultipleChoiceAnswer("CARD_QUERY_SHOW_MORE")
oController:AskMultipleChoiceQuestion("CARD_QUERY_CHOOSE_LAND_TYPE")
return true
else
local aiLandTypes = {LAND_TYPE_PLAINS, LAND_TYPE_ISLAND, LAND_TYPE_SWAMP, LAND_TYPE_MOUNTAIN, LAND_TYPE_FOREST, LAND_TYPE_DESERT,
LAND_TYPE_LAIR, LAND_TYPE_LOCUS, LAND_TYPE_URZAS, LAND_TYPE_MINE, LAND_TYPE_POWER_PLANT, LAND_TYPE_TOWER}
EffectDC():Set_Int(0, aiLandTypes[iPreviousChoice + (iParity * -6) + 7])
end
end
return false
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local iChosenLandType = EffectDC():Get_Int(0)
</RESOLUTION_TIME_ACTION>
Note that only asks for the first land type. You still need to make the question for the second land type.