It is currently 17 Nov 2025, 22:17
   
Text Size

Fate Reforged Development Thread (185/185) UPDATED 3-1-15

Moderator: CCGHQ Admins

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 07 Feb 2015, 22:25

Thanks! I'll search for an example in some cards.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 09 Feb 2015, 06:12

Okay, to hurry the release of this set I have to request a few cards. Also, if someone does offer assistance, can you supply the entire codes as opposed to snippets? I learn better by studying full codes.

Archfiend of Depravity.png
Archfiend of Depravity

Can someone modify the code below to make it work properly?
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each opponent’s end step, that player chooses up to two creatures he or she controls, then sacrifices the rest.]]></LOCALISED_TEXT>
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
         return MTG():GetStep() == STEP_END_OF_TURN
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local player = TriggerPlayer()
         local filter = ClearFilter()
         filter:Add(FE_CONTROLLER, OP_IS, player)
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         local Count = filter:Count()
         if Count &gt; 0 then
            player:SetItemCount(2)
            player:SetItemPrompt( 0, "CARD_QUERY_CHOOSE_CREATURE" )
            player:ChooseItems( EffectDC():Make_Targets(0), QUERY_FLAG_UP_TO )
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local player = MTG():GetNthPlayer(i)
         local targetDC = EffectDC():Get_Targets(0)
         local filter = ClearFilter()
         filter:Add(FE_CONTROLLER, OP_IS, player)
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         Count = filter:Count()
         filter:EvaluateObjects()
         if Count &gt; 0 then
            for j=0,(Count-1) do
               local Card = filter:GetNthEvaluatedObject(j)
               if Card ~= nil and Card ~= targetDC:Get_CardPtr(0) and Card ~= targetDC:Get_CardPtr(1) then
                  player:Sacrifice(Card)
               end
            end
         end
      </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Dark Deal.png
Dark Deal

The code is complete except for the "minus one" part Can someone add that.
Code: Select all
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Each player discards all the cards in his or her hand, then draws that many cards minus one.]]></LOCALISED_TEXT>
   <RESOLUTION_TIME_ACTION>
    local number = MTG():GetNumberOfPlayers()
    if number ~= nil then
       for i=0,(number-1) do
          local player = MTG():GetNthPlayer(i)
          if player ~= nil then
            EffectDC():Set_Int( i, player:Hand_Count() )
             player:MoveLocalZone( ZONE_HAND, ZONE_GRAVEYARD )
          end
       end
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local number = MTG():GetNumberOfPlayers()
    if number ~= nil then
       for i=0,(number-1) do
          local player = MTG():GetNthPlayer(i)
          if player ~= nil then
             player:ShuffleLibrary()
          end
       end
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local number = MTG():GetNumberOfPlayers()
    if number ~= nil then
       for i=0,(number-1) do
          local player = MTG():GetNthPlayer(i)
          if player ~= nil then
            local number = EffectDC():Get_Int(i)
             player:DrawCards( number )
          end
       end
    end
    </RESOLUTION_TIME_ACTION>
  </SPELL_ABILITY>
Dragonscale General.png
Dragonscale General

This is my Bolster code for Elite Scaleguard. Again, can someone modify it to make Dragonscale General.
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of your end step, bolster X, where X is the number of tapped creatures you control. |(Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)|

|"Dragons seek war. I bring it to them."|]]></LOCALISED_TEXT>
   <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
   <RESOLUTION_TIME_ACTION>
    local i = 0
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController())
    if filter:CountStopAt(1) == 1 then
      local subfilter = filter:AddSubFilter_Or()
      while i &gt;= 0 do
        subfilter:Add( FE_TOUGHNESS, OP_EQUALS, i )
        if filter:CountStopAt(2) == 2 then
          EffectController():ChooseItem( "CARD_QUERY_CHOOSE_CREATURE_TO_GET_PLUS1_PLUS1_COUNTER", EffectDC():Make_Targets(0) )
          return
        elseif filter:CountStopAt(2) == 1 then
          filter:EvaluateObjects()
            EffectDC():Make_Targets(0):Set_CardPtr( 0, filter:GetNthEvaluatedObject(0) )
          return
        end
         i = i + 1
      end
    end       
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then   
    target:AddCounters( MTG():PlusOnePlusOneCounters(), 2)
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Flamewake Phoenix.png
Flamewake Phoenix

I am fully requesting this one. The code below has "At the beginning of combat on your turn, if you control a creature with power 4 or greater"... The rest of the code needs to be added. I keep having trouble adding payment costs.
Code: Select all
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Ferocious — At the beginning of combat on your turn, if you control a creature with power 4 or greater, you may pay {R}. If you do, return Flamewake Phoenix from your graveyard to the battlefield.]]></LOCALISED_TEXT>
<TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
    return MTG():GetStep() == STEP_BEGIN_COMBAT
    </TRIGGER>
   <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:SetZone( ZONE_BATTLEFIELD )
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE  )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController())
  </FILTER>
   <RESOLUTION_TIME_ACTION filter_id="0">
  local filter2 = ClearFilter()
    filter2:SetZone( ZONE_BATTLEFIELD )
    filter2:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE  )
    filter2:Add( FE_CONTROLLER, OP_IS, EffectController() )
    filter2:Add( FE_POWER, OP_GREATER_THAN_OR_EQUAL_TO, 4)
    if filter2:CountStopAt(1) == 1 then
    if FilteredCard() ~= nil then
       FilteredCard():
    end
  end
  </RESOLUTION_TIME_ACTION>
Soulfire Grand Master.png
Soulfire Grand Master

I'm not sure this one is even possible. But have a look at this code provided by Xander9009 and let's see if it can be modified to create Soulfire Grand Master
Code: Select all
<STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Instant and sorcery spells you control have lifelink.]]></LOCALISED_TEXT>
      <TRIGGER value="SOURCE_DEALS_DAMAGE" simple_qualifier="objectyoucontrol" pre_trigger="1">
         return TriggerObject():GetCardType():IsPermanent() == false
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local Damage = Damage():GetGetAmount()
         if EffectController() ~= nil and Damage &gt; 0 then
            EffectController():GainLife(Damage)
         end
      </RESOLUTION_TIME_ACTION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{2}{h}{h}: The next time you cast an instant or sorcery spell from your hand this turn, put that card into your hand instead of into your graveyard as it resolves.]]></LOCALISED_TEXT>
    <COST mana_cost="{2}{U/R}{U/R}" type="Mana" />
      <RESOLUTION_TIME_ACTION>
         MTG():CreateDelayedTrigger(1, EffectDC():Make_Chest(1))
      </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
   <TRIGGERED_ABILITY resource_id="1">
      <CLEANUP fire_once="1" simple_cleanup="EndOfTurn" />
      <TRIGGER value="SPELL_PLAYED" simple_qualifier="controller">
         return (TriggerObject():GetCardType():Test(CARD_TYPE_INSTANT) or TriggerObject():GetCardType():Test(CARD_TYPE_SORCERY)) and TriggerObject():GetErstwhileZone() == ZONE_HAND
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local delayDC = EffectDC():Make_Chest(1)
         delayDC:Set_CardPtr(0, TriggerObject())
         delayDC:Protect_CardPtr(0)
         MTG():CreateDelayedTrigger(2, delayDC)
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2" replacement_effect="1">
      <CLEANUP fire_once="1" simple_cleanup="EndOfTurn" />
      <TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_STACK" pre_trigger="1">
         if TriggerObject() ~= nil and TriggerObject() == EffectDC():Get_CardPtr(0) then
            TriggerObject():PutInHand()
            return true
         end
         return false
      </TRIGGER>
   </TRIGGERED_ABILITY>
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Xander9009 » 09 Feb 2015, 16:42

Tejahn wrote:Okay, to hurry the release of this set I have to request a few cards. Also, if someone does offer assistance, can you supply the entire codes as opposed to snippets? I learn better by studying full codes.

Archfiend of Depravity
Can someone modify the code below to make it work properly?
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each opponent’s end step, that player chooses up to two creatures he or she controls, then sacrifices the rest.]]></LOCALISED_TEXT>
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
         return MTG():GetStep() == STEP_END_OF_TURN
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local player = TriggerPlayer()
         local filter = ClearFilter()
         filter:Add(FE_CONTROLLER, OP_IS, player)
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         local Count = filter:Count()
         if Count &gt; 0 then
            player:SetItemCount(2)
            player:SetItemPrompt( 0, "CARD_QUERY_CHOOSE_CREATURE" )
            player:ChooseItems( EffectDC():Make_Targets(0), QUERY_FLAG_UP_TO )
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local player = MTG():GetNthPlayer(i)
         local targetDC = EffectDC():Get_Targets(0)
         local filter = ClearFilter()
         filter:Add(FE_CONTROLLER, OP_IS, player)
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         Count = filter:Count()
         filter:EvaluateObjects()
         if Count &gt; 0 then
            for j=0,(Count-1) do
               local Card = filter:GetNthEvaluatedObject(j)
               if Card ~= nil and Card ~= targetDC:Get_CardPtr(0) and Card ~= targetDC:Get_CardPtr(1) then
                  player:Sacrifice(Card)
               end
            end
         end
      </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Is this the one I coded? Are these my mistakes? Oops lol.
The trigger says simple_qualifier="controller" so it will only fire at the end of YOUR turn.
In the second resolution block, Count is used without being declared as a local.
filter:Count() is called and immediately follow up with filter:EvaluateObjects(). That will work, but evaluateobjects returns the count just like Count(). It does more but is a little slower, so use Count() if you can, but if you have to use EvaluateObjects(), then you don't need Count().
The second item prompt is never set.
Last, in the second resolution block, player is being set to MTG():GetNthPlayer(i), but not only is i undefined, but it should be TriggerPlayer().
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each opponent’s end step, that player chooses up to two creatures he or she controls, then sacrifices the rest.]]></LOCALISED_TEXT>
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" >
         return MTG():GetStep() == STEP_END_OF_TURN and TriggerPlayer():GetTeam() ~= EffectController():GetTeam()
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local player = TriggerPlayer()
         local filter = ClearFilter()
         filter:Add(FE_CONTROLLER, OP_IS, player)
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         local Count = filter:Count()
         if Count &gt; 0 then
            player:SetItemCount(2)
            player:SetItemPrompt( 0, "CARD_QUERY_CHOOSE_CREATURE" )
            player:SetItemPrompt( 1, "CARD_QUERY_CHOOSE_CREATURE" )
            player:ChooseItems( EffectDC():Make_Targets(0), QUERY_FLAG_UP_TO )
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local player = TriggerPlayer()
         local targetDC = EffectDC():Get_Targets(0)
         local filter = ClearFilter()
         filter:Add(FE_CONTROLLER, OP_IS, player)
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         local Count = filter:EvaluateObjects()
         if Count &gt; 0 then
            for j=0,(Count-1) do
               local Card = filter:GetNthEvaluatedObject(j)
               if Card ~= nil and Card ~= targetDC:Get_CardPtr(0) and Card ~= targetDC:Get_CardPtr(1) then
                  player:Sacrifice(Card)
               end
            end
         end
      </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Tejahn wrote:Dark Deal
The code is complete except for the "minus one" part Can someone add that.
Code: Select all
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Each player discards all the cards in his or her hand, then draws that many cards minus one.]]></LOCALISED_TEXT>
   <RESOLUTION_TIME_ACTION>
    local number = MTG():GetNumberOfPlayers()
    if number ~= nil then
       for i=0,(number-1) do
          local player = MTG():GetNthPlayer(i)
          if player ~= nil then
            EffectDC():Set_Int( i, player:Hand_Count() )
             player:MoveLocalZone( ZONE_HAND, ZONE_GRAVEYARD )
          end
       end
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local number = MTG():GetNumberOfPlayers()
    if number ~= nil then
       for i=0,(number-1) do
          local player = MTG():GetNthPlayer(i)
          if player ~= nil then
             player:ShuffleLibrary()
          end
       end
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local number = MTG():GetNumberOfPlayers()
    if number ~= nil then
       for i=0,(number-1) do
          local player = MTG():GetNthPlayer(i)
          if player ~= nil then
         local number = EffectDC():Get_Int(i)
             player:DrawCards( number )
          end
       end
    end
    </RESOLUTION_TIME_ACTION>
  </SPELL_ABILITY>
The card does not say to shuffle your library. That whole block needs removed. Also, instead of using MoveLocalZone, just use DiscardHand(). Finally, don't reuse variables Last block: number is already used.
Code: Select all
   <SPELL_ABILITY>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Each player discards all the cards in his or her hand, then draws that many cards minus one.]]></LOCALISED_TEXT>
    <RESOLUTION_TIME_ACTION>
         local number = MTG():GetNumberOfPlayers()
         if number ~= nil then
            for i=0,(number-1) do
               local player = MTG():GetNthPlayer(i)
               if player ~= nil then
                  EffectDC():Set_Int( i, player:Hand_Count() )
                  player:DiscardHand()
               end
            end
         end
      </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
         local number = MTG():GetNumberOfPlayers()
         if number ~= nil then
            for i=0,(number-1) do
               local player = MTG():GetNthPlayer(i)
               if player ~= nil then
                  local count = EffectDC():Get_Int(i) - 1
                  if count &gt; 0 then
                     player:DrawCards( count )
                  end
               end
            end
         end
      </RESOLUTION_TIME_ACTION>
   </SPELL_ABILITY>
Tejahn wrote:Dragonscale General
This is my Bolster code for Elite Scaleguard. Again, can someone modify it to make Dragonscale General.
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of your end step, bolster X, where X is the number of tapped creatures you control. |(Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)|

|"Dragons seek war. I bring it to them."|]]></LOCALISED_TEXT>
   <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
   <RESOLUTION_TIME_ACTION>
    local i = 0
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController())
    if filter:CountStopAt(1) == 1 then
      local subfilter = filter:AddSubFilter_Or()
      while i &gt;= 0 do
        subfilter:Add( FE_TOUGHNESS, OP_EQUALS, i )
        if filter:CountStopAt(2) == 2 then
          EffectController():ChooseItem( "CARD_QUERY_CHOOSE_CREATURE_TO_GET_PLUS1_PLUS1_COUNTER", EffectDC():Make_Targets(0) )
          return
        elseif filter:CountStopAt(2) == 1 then
          filter:EvaluateObjects()
            EffectDC():Make_Targets(0):Set_CardPtr( 0, filter:GetNthEvaluatedObject(0) )
          return
        end
         i = i + 1
      end
    end       
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then   
    target:AddCounters( MTG():PlusOnePlusOneCounters(), 2)
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of your end step, bolster X, where X is the number of tapped creatures you control. |(Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)|

|"Dragons seek war. I bring it to them."|]]></LOCALISED_TEXT>
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
         return MTG():GetStep() == STEP_END_OF_TURN
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local i = 0
         local filter = ClearFilter()
         filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
         filter:Add( FE_CONTROLLER, OP_IS, EffectController())
         if filter:CountStopAt(1) == 1 then
            local subfilter = filter:AddSubFilter_Or()
            while i &gt;= 0 do
               subfilter:Add( FE_TOUGHNESS, OP_EQUALS, i )
               if filter:CountStopAt(2) == 2 then
                  EffectController():ChooseItem( "CARD_QUERY_CHOOSE_CREATURE_TO_GET_PLUS1_PLUS1_COUNTER", EffectDC():Make_Targets(0) )
                  return
               elseif filter:CountStopAt(2) == 1 then
                  filter:EvaluateObjects()
                  EffectDC():Make_Targets(0):Set_CardPtr( 0, filter:GetNthEvaluatedObject(0) )
                  return
               end
               i = i + 1
            end
         end       
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local target = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
         if target ~= nil then
            local filter = ClearFilter()
            filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
            filter:Add( FE_CONTROLLER, OP_IS, EffectController())
            filter:Add( FE_IS_TAPPED, true )
            local total = filter:Count()
            target:AddCounters( MTG():PlusOnePlusOneCounters(), total)
         end
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
Tejahn wrote:Flamewake Phoenix
I am fully requesting this one. The code below has "At the beginning of combat on your turn, if you control a creature with power 4 or greater"... The rest of the code needs to be added. I keep having trouble adding payment costs.
Code: Select all
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Ferocious — At the beginning of combat on your turn, if you control a creature with power 4 or greater, you may pay {R}. If you do, return Flamewake Phoenix from your graveyard to the battlefield.]]></LOCALISED_TEXT>
<TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
    return MTG():GetStep() == STEP_BEGIN_COMBAT
    </TRIGGER>
   <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:SetZone( ZONE_BATTLEFIELD )
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE  )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController())
  </FILTER>
   <RESOLUTION_TIME_ACTION filter_id="0">
  local filter2 = ClearFilter()
    filter2:SetZone( ZONE_BATTLEFIELD )
    filter2:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE  )
    filter2:Add( FE_CONTROLLER, OP_IS, EffectController() )
    filter2:Add( FE_POWER, OP_GREATER_THAN_OR_EQUAL_TO, 4)
    if filter2:CountStopAt(1) == 1 then
    if FilteredCard() ~= nil then
       FilteredCard():
    end
  end
  </RESOLUTION_TIME_ACTION>
Actually, you need an intervening if. If you don't have a creature with power 4 or more at the beginning of combat, it won't trigger, and if you don't when it resolves, it should be countered. This is done with an INTERVENING_IF block.
In a filter, ZONE_BATTLEFIELD is the default. You don't need to declare it.
Note that the UTILITY_ABILITY needs to be completely outside of the triggered ability. This kind of ability can be done without the use of a utility ability, and they often are; but this is how the official cards manage it, so I'll copy that.
Code: Select all
   <TRIGGERED_ABILITY>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Ferocious — At the beginning of combat on your turn, if you control a creature with power 4 or greater, you may pay {R}. If you do, return Flamewake Phoenix from your graveyard to the battlefield.]]></LOCALISED_TEXT>
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
         return MTG():GetStep() == STEP_BEGIN_COMBAT
      </TRIGGER>
      <INTERVENING_IF>
         local filter = ClearFilter()
         filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE  )
         filter:Add( FE_CONTROLLER, OP_IS, EffectController())
         filter:Add( FE_POWER, OP_GREATER_THAN_OR_EQUAL_TO, 4)
         if filter:CountStopAt(1) == 1 then
            return true
         end
         return false
      </INTERVENING_IF>
      <RESOLUTION_TIME_ACTION>
         local effectController = EffectController()
         if effectController ~= nil then
            if effectController:CanPayResourceCost(1) then
               effectController:BeginNewMultipleChoice()   
               effectController:AddMultipleChoiceAnswer( "CARD_QUERY_FLAMEWAKE_PHOENIX_RETURN_TO_THE_BATTLEFIELD" )   
               effectController:AddMultipleChoiceAnswer( "CARD_QUERY_FLAMEWAKE_PHOENIX_DO_NOT_RETURN_TO_THE_BATTLEFIELD" )   
               effectController:AskMultipleChoiceQuestion( "CARDS_QUERY_FLAMEWAKE_PHOENIX", EffectSource() )
            end
         end
    </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local effectSource = EffectSource()
         local effectController = EffectController()
         if effectController:CanPayResourceCost(1) then
            local result = EffectController():GetMultipleChoiceResult()
            if result ~= 1 and effectSource ~= nil then
               effectSource:PutOntoBattlefield(effectController)
               effectController:PayResourceCost(1)
            end
         end
    </RESOLUTION_TIME_ACTION>
      <AUTO_SKIP>
         if EffectController():CanPayManaCost("{R}") then
            return false
         else
            return true
         end
    </AUTO_SKIP>
   </TRIGGERED_ABILITY>
   <UTILITY_ABILITY resource_id="1">
      <COST mana_cost="{R}" type="Mana" />
   </UTILITY_ABILITY>
Tejahn wrote:Soulfire Grand Master
I'm not sure this one is even possible. But have a look at this code provided by Xander9009 and let's see if it can be modified to create Soulfire Grand Master
Code: Select all
<STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Instant and sorcery spells you control have lifelink.]]></LOCALISED_TEXT>
      <TRIGGER value="SOURCE_DEALS_DAMAGE" simple_qualifier="objectyoucontrol" pre_trigger="1">
         return TriggerObject():GetCardType():IsPermanent() == false
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local Damage = Damage():GetGetAmount()
         if EffectController() ~= nil and Damage &gt; 0 then
            EffectController():GainLife(Damage)
         end
      </RESOLUTION_TIME_ACTION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{2}{h}{h}: The next time you cast an instant or sorcery spell from your hand this turn, put that card into your hand instead of into your graveyard as it resolves.]]></LOCALISED_TEXT>
    <COST mana_cost="{2}{U/R}{U/R}" type="Mana" />
      <RESOLUTION_TIME_ACTION>
         MTG():CreateDelayedTrigger(1, EffectDC():Make_Chest(1))
      </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
   <TRIGGERED_ABILITY resource_id="1">
      <CLEANUP fire_once="1" simple_cleanup="EndOfTurn" />
      <TRIGGER value="SPELL_PLAYED" simple_qualifier="controller">
         return (TriggerObject():GetCardType():Test(CARD_TYPE_INSTANT) or TriggerObject():GetCardType():Test(CARD_TYPE_SORCERY)) and TriggerObject():GetErstwhileZone() == ZONE_HAND
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local delayDC = EffectDC():Make_Chest(1)
         delayDC:Set_CardPtr(0, TriggerObject())
         delayDC:Protect_CardPtr(0)
         MTG():CreateDelayedTrigger(2, delayDC)
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2" replacement_effect="1">
      <CLEANUP fire_once="1" simple_cleanup="EndOfTurn" />
      <TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_STACK" pre_trigger="1">
         if TriggerObject() ~= nil and TriggerObject() == EffectDC():Get_CardPtr(0) then
            TriggerObject():PutInHand()
            return true
         end
         return false
      </TRIGGER>
   </TRIGGERED_ABILITY>
So, the two issues are that the first ability that should be triggering is labeled as a static ability and I type "GetGetAmount()" instead of just "GetAmount()". I don't know if there are any others, but that should fix it. HOWEVER, I realized that lifelink is a redundant type ability, not a stacking ability. If you have two Soulfire Grand Masters out, you shouldn't gain twice as much life. With this implementation, you would. So, I decided to try the simple thing and just grant lifelink to the sorceries and instants you control on the stack, and it worked. (I didn't know if the game's programmers would have included that functionality for non-permanents, but they did, so lucky us. :) )
Code: Select all
<STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Instant and sorcery spells you control have lifelink.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les sorts d’éphémère et de rituel que vous contrôlez ont le lien de vie.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Los hechizos de instantáneo y de conjuro que controlas tienen la habilidad de vínculo vital.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Spontanzauber und Hexereien, die du kontrollierst, haben Lebensverknüpfung.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Le magie istantaneo e stregoneria che controlli hanno legame vitale.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたがコントロールするインスタント・呪文とソーサリー・呪文は絆魂を持つ。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신이 조종하는 순간마법 및 집중마법 주문은 생명연결을 가진다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Мгновенные заклинания и заклинания волшебства под вашим контролем имеют Цепь жизни.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[As mágicas instantâneas e os feitiços que você controla têm vínculo com a vida.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[由你操控的瞬间和法术咒语具有系命异能。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[由你操控的瞬間和巫術咒語具有繫命異能。]]></LOCALISED_TEXT>
      <FILTER filter_id="0">
         local filter = ClearFilter()
         filter:SetZone(ZONE_STACK, EffectController() )
         local subfilter = filter:AddSubFilter_Or()
            subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_INSTANT )
            subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_SORCERY)
    </FILTER>
      <CONTINUOUS_ACTION layer="6" filter_id="0">
         if FilteredCard() ~= nil then
            FilteredCard():GetCurrentCharacteristics():Bool_Set( CHARACTERISTIC_LIFELINK, 1 )
         end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{2}{h}{h}: The next time you cast an instant or sorcery spell from your hand this turn, put that card into your hand instead of into your graveyard as it resolves.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{2}{h}{h} : La prochaine fois, ce tour-ci, que vous lancez un sort d’éphémère ou de rituel depuis votre main, mettez cette carte dans votre main à la place de votre cimetière au moment où elle se résout.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{2}{h}{h}: La próxima vez que lances un hechizo de instantáneo o de conjuro de tu mano este turno, pon esa carta en tu mano en vez de en tu cementerio en cuanto se resuelva.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{2}{h}{h}: Das nächste Mal, dass du in diesem Zug einen Spontanzauber oder eine Hexerei aus deiner Hand wirkst, nimm die Karte wieder auf deine Hand zurück, sowie sie verrechnet wird, anstatt sie auf deinen Friedhof zu legen.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{2}{h}{h}: La prossima volta che lanci una magia istantaneo o stregoneria dalla tua mano in questo turno, aggiungi quella carta alla tua mano invece di metterla nel tuo cimitero mentre si risolve.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{2}{h}{h}:このターンに次にあなたがあなたの手札からインスタント・呪文かソーサリー・呪文を唱えるなら、それを解決するに際し、そのカードをあなたの墓地に置く代わりにあなたの手札に加える。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{2}{h}{h}: 이 턴에 당신의 손에서 발동된 다음 번 순간마법이나 집중마법 주문이 해결될 때, 그 카드는 당신의 무덤 대신 당신의 손으로 간다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{2}{h}{h}: в следующий раз, когда вы будете разыгрывать мгновенное заклинание или заклинание волшебства из вашей руки в этом ходу, при разрешении той карты положите ее в вашу руку вместо вашего кладбища.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{2}{h}{h}: Na próxima vez em que você conjurar uma mágica instantânea ou feitiço da sua mão neste turno, coloque aquele card na sua mão, em vez de colocá-lo no cemitério, conforme é resolvido.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{2}{h}{h}:本回合中你下一个从手上施放的瞬间或法术咒语结算时,改为将其置于你手上,而非置入你的坟墓场。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{2}{h}{h}:本回合中你下一個從手上施放的瞬間或巫術咒語結算時,改為將其置於你手上,而非置入你的墳墓場。]]></LOCALISED_TEXT>
    <COST mana_cost="{2}{U/R}{U/R}" type="Mana" />
      <RESOLUTION_TIME_ACTION>
         MTG():CreateDelayedTrigger(1, EffectDC():Make_Chest(1))
      </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
   <TRIGGERED_ABILITY resource_id="1">
      <CLEANUP fire_once="1" simple_cleanup="EndOfTurn" />
      <TRIGGER value="SPELL_PLAYED" simple_qualifier="controller">
         return (TriggerObject():GetCardType():Test(CARD_TYPE_INSTANT) or TriggerObject():GetCardType():Test(CARD_TYPE_SORCERY)) and TriggerObject():GetErstwhileZone() == ZONE_HAND
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         local delayDC = EffectDC():Make_Chest(1)
         delayDC:Set_CardPtr(0, TriggerObject())
         delayDC:Protect_CardPtr(0)
         MTG():CreateDelayedTrigger(2, delayDC)
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2" replacement_effect="1">
      <CLEANUP fire_once="1" simple_cleanup="EndOfTurn" />
      <TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_GRAVEYARD" from_zone="ZONE_STACK" pre_trigger="1">
         if TriggerObject() ~= nil and TriggerObject() == EffectDC():Get_CardPtr(0) then
            TriggerObject():PutInHand()
            return true
         end
         return false
      </TRIGGER>
   </TRIGGERED_ABILITY>
EDIT: I forgot to filter for only tapped creatures on the one bolster card. Fixed now.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 09 Feb 2015, 16:50

I was really tired when I posted. I thought I mentioned that the Archfiend of Depravity was your code. I did code one initially but decided to use your code since the one I created crashed the game. As for the modifications, thanks! And I'm glad to know that Soulfire Grand Master is possible.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Xander9009 » 09 Feb 2015, 17:03

Tejahn wrote:I was really tired when I posted. I thought I mentioned that the Archfiend of Depravity was your code. I did code one initially but decided to use your code since the one I created crashed the game. As fir the modifications, thanks! And I'm glad to know that Soulfire Grand Master is possible.
No worries. I wasn't worried about not being given credit or anything. I was just embarrassed 'cause I had so many mistakes :lol:
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 09 Feb 2015, 21:02

Indeed. I've made plenty of coding mistakes. And all credit will be giving where credit is do. Speaking of which, I reached out to you in the Programming Talk section concerning Dash. Even after adding the extra snippet of code you provided the creature still returns to my hand after it dies or is exiled.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby dantar » 19 Feb 2015, 18:30

You guys are doing God's work. This is amazing. I don't have a lot of people to test decks against in real life.

Can't wait for the release, Hero's Blade, Battle Brawler, and Brutal Hordechief are the only cards I'm missing for my standard deck!
dantar
 
Posts: 28
Joined: 19 Feb 2015, 18:27
Location: OHIO, USA
Has thanked: 19 times
Been thanked: 1 time

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 19 Feb 2015, 23:24

I'm passing along individual Cores to Xander9009. He is looking over the white mana core now for errors. I'll be sending him the others this evening. And since you need those cards right away I'll post those three cards for you this eve as well. Thanks for responding!
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 20 Feb 2015, 02:56

Battle Brawler.png
Battle Brawler

Brutal Hordechief.png
Brutal Hordechief


Here you are dantar. The .ZIP contains Battle Brawler and Brutal Hordechief. Request Hero's Blade in the Formal Request Thread or ask Xander9009 to provided it. I don't have access to my computer at the moment and I didn't upload the ARTIFACTS CORE to my Google Drive yet. I look forward to trying your deck.
Attachments
Battle Brawler and Brutal Hordechief.rar
Battle Brawler and Brutal Hordechief
(207.41 KiB) Downloaded 283 times
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby dantar » 20 Feb 2015, 04:38

Whaaaaat! Thanks man. Can't wait to give it a try.
dantar
 
Posts: 28
Joined: 19 Feb 2015, 18:27
Location: OHIO, USA
Has thanked: 19 times
Been thanked: 1 time

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Artificer- » 20 Feb 2015, 11:35

I've been watching this post for over a month now. Can't wait for the set to come out I got a new some non meta decks In mind. Looking for mainly the izzet artifact's cards.
Artificer-
 
Posts: 4
Joined: 20 Feb 2015, 11:17
Has thanked: 1 time
Been thanked: 0 time

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Tejahn » 20 Feb 2015, 14:01

I know it's been a while. And the cores are being looked over to iron out any remaining flaws. But if you need only a few cards I can provide them. Xander9009 has been a lifesaver. He has created a lot of cards, finalized many, and is proofreading the cores on a mono-color basis. I initially thought the set would be ready for early February but something went awry for me in RL. Either way, I hope to release the set soon. Thanks for anticipating!
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Xander9009 » 20 Feb 2015, 14:08

Just so everyone knows, I only got started on white last night and only for about 1.5 hours. I should be done with it today unless something unexpected pops up.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby dantar » 20 Feb 2015, 15:45

Tejahn wrote:
Battle Brawler.png

Brutal Hordechief.png


Here you are dantar. The .ZIP contains Battle Brawler and Brutal Hordechief. Request Hero's Blade in the Formal Request Thread or ask Xander9009 to provided it. I don't have access to my computer at the moment and I didn't upload the ARTIFACTS CORE to my Google Drive yet. I look forward to trying your deck.
Do I need to smash these into a WAD to find them in the deck editor or can it read them as individuals?
dantar
 
Posts: 28
Joined: 19 Feb 2015, 18:27
Location: OHIO, USA
Has thanked: 19 times
Been thanked: 1 time

Re: Fate Reforged (158/185) LAST UPDATED 2-7-15

Postby Xander9009 » 20 Feb 2015, 16:04

In the deck builder, there's an option in Tools to Setup Custom Data Folder. Click that and then you'll have a new folder in your game folder with DECK BUILDER CUSTOM in the name. In that folder, a few levels down, you'll find the folder CARDS. Drop them in there.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 7 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 7 users online :: 0 registered, 0 hidden and 7 guests (based on users active over the past 10 minutes)
Most users ever online was 9824 on 10 Nov 2025, 04:33

Users browsing this forum: No registered users and 7 guests

Login Form