Re: Formal Request Thread
I have birds on my core =P
High Quality Resources for Collectible Card Games and Home of the CCGHQ Team
https://www.slightlymagic.net/forum/
https://www.slightlymagic.net/forum/viewtopic.php?f=109&t=11010
Thanks I've put it it the top post in case anyone else needs that.kevlahnota wrote:By giving them CHARACTERISTIC_MUST_ATTACK_EACH_TURN attribute:
- Code: Select all
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Goblin creatures attacks each turn if able.]]></LOCALISED_TEXT>
<FILTER filter_id="0">
local filter = ClearFilter()
filter:Add( FE_SUBTYPE, OP_IS, CREATURE_TYPE_GOBLIN )
filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
</FILTER>
<CONTINUOUS_ACTION layer="8" filter_id="0">
if FilteredCard() ~= nil then
local characteristics = FilteredCard():GetCurrentCharacteristics()
characteristics:Bool_Set( CHARACTERISTIC_MUST_ATTACK_EACH_TURN, 1 )
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>Master Necro wrote:Quick question, how do I code "Goblin creatures attack each turn if able." on an Enchantment card?
<TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_HAND">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Folie {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Demencia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wahnsinn {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Follia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[マッドネス {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Бешенство {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Loucura {B}]]></LOCALISED_TEXT>
<TRIGGER value="DISCARD" simple_qualifier="self" pre_trigger="1">
if EffectController():CanCastSpellUsingResourceCost( TriggerObject(), 0 ) then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr( 0, TriggerObject() )
MTG():CreateDelayedTrigger(1, delayDC)
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
<UTILITY_ABILITY resource_id="0">
<COST mana_cost="{B}" type="Mana" />
</UTILITY_ABILITY>
<TRIGGERED_ABILITY replacement_effect="1" resource_id="1">
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_HAND" pre_trigger="1">
if TriggerObject() == EffectDC():Get_CardPtr(0) then
MTG():OverrideEvent()
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr( 0, TriggerObject() )
delayDC:Protect_CardPtr(0)
MTG():CreateDelayedTrigger(2, delayDC)
TriggerObject():Exile()
return true
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY qualifier="Alternate" active_zone="ZONE_EXILE" resource_id="2">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Folie {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Demencia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wahnsinn {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Follia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[マッドネス {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Бешенство {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Loucura {B}]]></LOCALISED_TEXT>
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_END" to_zone="ZONE_EXILE" from_zone="ZONE_HAND">
return TriggerObject() == EffectDC():Get_CardPtr(0)
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local controller = EffectController()
if controller ~= nil and TriggerObject() ~= nil then
controller:BeginNewMultipleChoice()
controller:AddMultipleChoiceAnswer( "UI_CONDITIONAL_QUESTION_YES", controller:CanCastSpellUsingResourceCost( TriggerObject(), 0 ) )
controller:AddMultipleChoiceAnswer("UI_CONDITIONAL_QUESTION_NO")
controller:AskMultipleChoiceQuestion( "OPTIONAL_ABILITY_QUESTION", TriggerObject() )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local controller = EffectController()
if controller ~= nil and TriggerObject() ~= nil then
if controller:GetMultipleChoiceResult() == 0 then
controller:CastSpellUsingResourceCost( TriggerObject(), 0 )
else
TriggerObject():PutInGraveyard()
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>There's nothing different, we still need to code additional cost to discard a land card.thefiremind wrote:Retrace might be natively supported by DotP2014: when I looked into the executable there was not only Replicate, but also Retrace. Could you make some tests with qualifier="Retrace" and nothing else inside the ability (except for the text of course)?
sumomole wrote:Dredge N (If you would draw a card, instead you may put exactly N cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)Retrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.)
- DREDGE_62.LOL | Open
Hideaway (This land enters the battlefield tapped. When it does, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)
- Retrace | Open
Updated the first post.thefiremind wrote:Retrace might be natively supported by DotP2014: when I looked into the executable there was not only Replicate, but also Retrace. Could you make some tests with qualifier="Retrace" and nothing else inside the ability (except for the text of course)?
In the meanwhile, I updated my DotP2013 madness and here's the result:This is for Big Game Hunter, of course you need to change all "B" costs to the appropriate cost for other cards.
- Code: Select all
<TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_HAND">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Folie {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Demencia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wahnsinn {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Follia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[マッドネス {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Бешенство {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Loucura {B}]]></LOCALISED_TEXT>
<TRIGGER value="DISCARD" simple_qualifier="self" pre_trigger="1">
if EffectController():CanCastSpellUsingResourceCost( TriggerObject(), 0 ) then
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr( 0, TriggerObject() )
MTG():CreateDelayedTrigger(1, delayDC)
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
<UTILITY_ABILITY resource_id="0">
<COST mana_cost="{B}" type="Mana" />
</UTILITY_ABILITY>
<TRIGGERED_ABILITY replacement_effect="1" resource_id="1">
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_HAND" pre_trigger="1">
if TriggerObject() == EffectDC():Get_CardPtr(0) then
MTG():OverrideEvent()
local delayDC = EffectDC():Make_Chest(1)
delayDC:Set_CardPtr( 0, TriggerObject() )
delayDC:Protect_CardPtr(0)
MTG():CreateDelayedTrigger(2, delayDC)
TriggerObject():Exile()
return true
end
return false
</TRIGGER>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY qualifier="Alternate" active_zone="ZONE_EXILE" resource_id="2">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Folie {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Demencia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wahnsinn {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Follia {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[マッドネス {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Madness {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Бешенство {B}]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Loucura {B}]]></LOCALISED_TEXT>
<CLEANUP fire_once="1" />
<TRIGGER value="ZONECHANGE_END" to_zone="ZONE_EXILE" from_zone="ZONE_HAND">
return TriggerObject() == EffectDC():Get_CardPtr(0)
</TRIGGER>
<RESOLUTION_TIME_ACTION>
local controller = EffectController()
if controller ~= nil and TriggerObject() ~= nil then
controller:BeginNewMultipleChoice()
controller:AddMultipleChoiceAnswer( "UI_CONDITIONAL_QUESTION_YES", controller:CanCastSpellUsingResourceCost( TriggerObject(), 0 ) )
controller:AddMultipleChoiceAnswer("UI_CONDITIONAL_QUESTION_NO")
controller:AskMultipleChoiceQuestion( "OPTIONAL_ABILITY_QUESTION", TriggerObject() )
end
</RESOLUTION_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local controller = EffectController()
if controller ~= nil and TriggerObject() ~= nil then
if controller:GetMultipleChoiceResult() == 0 then
controller:CastSpellUsingResourceCost( TriggerObject(), 0 )
else
TriggerObject():PutInGraveyard()
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
In case someone wonders why I repeated the localised text twice, it's because the first one will be displayed on the card, while the second will be displayed below the query when asking whether to cast or not.
EffectDC():Set_Int( 1, MTG():GetTurnNumber() )return EffectController():MyTurn() and MTG():GetTurnNumber() > EffectDC():Get_Int(1)I have tried SkipStep, but I failed, SkipStep(STEP_UNTAP) and SkipStep(STEP_UNTAP, player) are wrong, I don't know what is the correct format.thefiremind wrote:Since now we can skip steps (even if I haven't tried yet, and I'm not sure how to skip the untap since there's no previous step in the same turn where we can call SkipStep), I'd code "Until your next turn" differently: inside the ability you save the turn number
characteristics:GrantAbility(9) <STATIC_ABILITY resource_id="9">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Detained]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Detained]]></LOCALISED_TEXT>
</STATIC_ABILITY>I successfully made level up cards both on DotP2012 and DotP2013, and I can make them on DotP2014 too... we can't have the level up frame, but the functionality has always been relatively easy to achieve.damienx45 wrote:hey firemind does dotp 2014 have support for level up cards this time around or are level ups still out of reach for the game?
I tried to code Eon Hub like this:sumomole wrote:I have tried SkipStep, but I failed, SkipStep(STEP_UNTAP) and SkipStep(STEP_UNTAP, player) are wrong, I don't know what is the correct format.
<TRIGGERED_ABILITY replacement_effect="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Players skip their upkeep steps.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les joueurs passent leurs étapes d’entretien.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Los jugadores se saltan sus pasos de mantenimiento.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Spieler übergehen ihre Versorgungssegmente.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[I giocatori saltano il loro mantenimento.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[プレイヤーはアップキープ・ステップをとばす。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Players skip their upkeep steps.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Players skip their upkeep steps.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Os jogadores pulam suas etapas de manutenção.]]></LOCALISED_TEXT>
<TRIGGER value="BEGINNING_OF_PLAYERS_STEP" pre_trigger="1">
return MTG():GetStep() == STEP_UPKEEP
</TRIGGER>
<RESOLUTION_TIME_ACTION>
MTG():SkipStep()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>