The problem with
Mystic Genesis coded like that is that if you make a copy of the token it will probably end up being a 0/1, while it should retain the values of the original token. DotP2014 has a function PutPTTokensOntoBattlefield which I guess it produces tokens with a set P/T, but there are no examples of it, so it would need some tests in order to find the correct parameters.
In your
Triumph of Ferocity, the <FILTER>...</FILTER> blocks are useless. They don't do any harm if you leave them, but you can shorten the code by removing them.
I tried to code the cost "
Remove a +1/+1 counter from a creature you control" for
Ghave, Guru of Spores and ended up with this:
- Code: Select all
<COST type="generic">
<PREREQUISITE>
local filter = ClearFilter()
filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
local filter_count = filter:EvaluateObjects()
if filter_count > 0 then
for i=0,filter_count-1 do
local candidate = filter:GetNthEvaluatedObject(i)
if candidate ~= nil and candidate:CountCounters( MTG():PlusOnePlusOneCounters() ) > 0 then
return true
end
end
end
return false
</PREREQUISITE>
<RESOLUTION_TIME_ACTION>
MTG():ClearFilterMark()
local filter = ClearFilter()
filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
local filter_count = filter:EvaluateObjects()
if filter_count > 0 then
for i=0,filter_count-1 do
local candidate = filter:GetNthEvaluatedObject(i)
if candidate ~= nil and candidate:CountCounters( MTG():PlusOnePlusOneCounters() ) > 0 then
candidate:MarkForFilter()
end
end
filter:SetMarkedObjectsOnly()
EffectController():ChooseItem( "CARD_QUERY_CHOOSE_CREATURE_YOU_CONTROL", EffectDC():Make_Targets(6) )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local creature = EffectDC():Get_Targets(6) and EffectDC():Get_Targets(6):Get_CardPtr(0)
if creature ~= nil then
creature:RemoveCounters( MTG():PlusOnePlusOneCounters(), 1 )
end
</RESOLUTION_TIME_ACTION>
</COST>
It's quite long, but it seems to work OK.
The first ability of your
Zameck Guildmage is wrong: why should you use a SPELL_PLAYED trigger? A creature that enters the battlefield from the graveyard should benefit from the ability, too.
Remove that delayed trigger and create the ZONECHANGE_TRANSITION delayed trigger directly:
- Code: Select all
<ACTIVATED_ABILITY>
<COST mana_cost="{G}{U}" type="Mana" />
<RESOLUTION_TIME_ACTION>
MTG():CreateDelayedTrigger(2, nil)
</RESOLUTION_TIME_ACTION>
</ACTIVATED_ABILITY>
<TRIGGERED_ABILITY replacement_effect="1" resource_id="2">
<TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="objectyoucontrol" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" pre_trigger="1" />
<CLEANUP simple_cleanup="EndOfTurn" />
<RESOLUTION_TIME_ACTION>
if TriggerObject() ~= nil then
TriggerObject():AddCounters( MTG():PlusOnePlusOneCounters(), 1 )
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
I also simplified the code: simple_qualifier="objectyoucontrol" should be enough to make the ability affect only your creatures. If it's not, let me know.
About
Sphinx of Uthuun, the problem is always the same: there's no such thing as "pile" in DotP, and I can't see a good way to approximate it, especially concerning user interaction (how do you let the players see the piles and choose one?).