It is currently 07 Jul 2021, 13:37
   
Text Size

(Tejahn) Manifest Cards

Moderators: Xander9009, CCGHQ Admins

(Tejahn) Manifest Cards

Postby Tejahn » 24 Jan 2015, 23:44




I've been trying for days to implement this mechanic but I've been yet unsuccessful. Therefore, to speed up the release of Fate Reforged I'm asking anyone if they can create the 18 Manifest cards or if someone can provide the code. I've looked over NeoAnderson's Morph code extensivel but I'm still having trouble. Below I'll post his code and I'll also PM him to see if he's interested in creating the cards or providing the code. Again, anyone able to help, please do.

Here is the Morph code created by NeoAnderson:
Code: Select all
<TRIGGERED_ABILITY replacement_query="1" active_zone="ZONE_ANY">
      <TRIGGER value="BEGINNING_OF_STEP">
       if MTG():GetStep() == STEP_UPKEEP then
     local Chest_Id = Object():GetRef()
     local chest = MTG():DuelDataChest():Get_Chest(Chest_Id)
          if chest ~= nil then
             return false
          else
             MTG():CreateDelayedTrigger(8, nil)
        chest = MTG():DuelDataChest():Make_Chest(Chest_Id)
             return true
          end
       end
       return false
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
        MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
    </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
      local chest = EffectDC():Get_Chest(0)
        if chest  ~= nil then
           local token = chest:Get_NthCardPtr(0)
           if token ~= nil then
         local Chest_Id = Object():GetRef()
              token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))   
           end
        end
   </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <STATIC_ABILITY active_zone="ZONE_ANY">
      <CONTINUOUS_ACTION layer="1">
        if Object() ~= nil then
      RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 0 )
           if RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
           RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH, 0 )
           else
           RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH, 1 )
           end         
        end
    </CONTINUOUS_ACTION>
   </STATIC_ABILITY>
   <STATIC_ABILITY>
      <CONTINUOUS_ACTION layer="1">
        if Object() ~= nil then
           if RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
         local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
                         Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
                  RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
           Object():GetCurrentCharacteristics():GrantAbility(10)
          Object():GetCurrentCharacteristics():GrantAbility(12)
          Object():GetCurrentCharacteristics():GrantAbility(13)
         end
           end         
        end
    </CONTINUOUS_ACTION>
   </STATIC_ABILITY>
   <UTILITY_ABILITY qualifier="Alternate" active_zone="ZONE_HAND">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Morph {2}{W}{B}{G} (|You may cast this face down as a 2/2 creature for | {3} |. Turn it face up any time for its morph cost.|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Mue {2}{W}{B}{G} (Vous pouvez jouer cette carte face cachée comme une créature 2/2 pour {3}. Retournez-la quand vous le désirez pour son coût de mue.)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Metamorfosis {2}{W}{B}{G}. (Puedes jugar esta carta boca abajo como una criatura 2/2 pagando {3}. Ponla boca arriba en cualquier momento pagando su coste de metamorfosis.)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Morph {2}{W}{B}{G} (Du kannst diese Karte verdeckt für {3} als eine 2/2 Kreatur spielen. Decke sie zu einem beliebigen Zeitpunkt für ihre Morph-Kosten auf.)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Metamorfosi {2}{W}{B}{G} (|puoi giocare questa carta a faccia in giù come una creatura 2/2 pagando | {3} |. Girala a faccia in su in qualsiasi momento pagando il suo costo di metamorfosi.|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[変異{2}{W}{B}{G}(あなたはこのカードを、{3}を支払うことで2/2クリーチャーとして裏向きに唱えてもよい。これの変異コストを支払うことで、これをいつでも表向きにしてよい。)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[모프 {2}{W}{B}{G} (| 당신이 2/2 생물로이 얼굴을 아래로 캐스팅 할 수 있습니다 | {3} |. 그것 모프 비용에 대한 시간을 얼굴을 돌립니다. |]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Оборотень {2}{W}{B}{G} (|Вы можете играть эту карту лицом вниз как существо 2/2 за| {3} |. Переверните ее лицом вверх в любой момент за ее стоимость Оборотня.|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Metamorfose {2}{W}{B}{G} (|Você pode baixar este card com a face voltada para baixo como uma criatura 2/2 por| {3} |. Volte sua face para cima a qualquer momento pagando seu custo de metamorfose.)]]></LOCALISED_TEXT>
      <ABILITY_TEXT tag="MODE_CAST_MORPH_FACE_DOWN_PAY_3" />
      <COST type="Generic">
         <PREREQUISITE>
                  if Object():GetZone() ~= ZONE_HAND and Object():GetErstwhileZone() ~= 5 then
           local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
                     local FaceDownStringCost = "{"..UpdatedCost.."}"
                     if EffectController():CanCastSpellForFree(Object()) and EffectController():CanPayManaCost(FaceDownStringCost) then
                       return true
                     else
                       return false
                     end
                  end
             </PREREQUISITE>
         <PLAY_TIME_ACTION>
         local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
                   local FaceDownStringCost = "{"..UpdatedCost.."}"
         EffectController():PayManaCost(FaceDownStringCost)
                   MTG():CreateDelayedTrigger(7, nil)
          local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
              MTG():CreateDelayedTrigger(8, nil)
                   end
                   local delayDC = EffectDC():Make_Chest(0)
                   delayDC:Set_Int(0, Chest_Id)
                   MTG():CreateDelayedTrigger(9, delayDC)
              local characteristics = Object():GetCurrentCharacteristics()
         local card_type = characteristics:CardType_GetWritable()
         local sub_type = characteristics:SubType_GetWritable()
         sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
         Object():GetCurrentCharacteristics():Colour_Get():Clear()
             </PLAY_TIME_ACTION>
      </COST>
   </UTILITY_ABILITY>
   <TRIGGERED_ABILITY resource_id="7" replacement_query="1" priority="20">
      <TRIGGER value="STATE_BASED_EFFECTS" pre_trigger="1" />
      <CLEANUP fire_once="1" />
      <PLAY_TIME_ACTION>
           if Object() ~= nil then
          local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
             MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
                   else
                         Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
                   end
                end
       </PLAY_TIME_ACTION>
      <PLAY_TIME_ACTION>
                if Object() ~= nil then
         local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
               local token_chest = EffectDC():Get_Chest(0)
                      if token_chest  ~= nil then
                         local token = token_chest:Get_NthCardPtr(0)
                         if token ~= nil then
                            token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))   
                  Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))   
                         end
                      end
                   end
                end
        </PLAY_TIME_ACTION>
      <CONTINUOUS_ACTION layer="1">
                if Object() ~= nil then
         local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
                         Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
                  RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
           Object():GetCurrentCharacteristics():GrantAbility(10)
          Object():GetCurrentCharacteristics():GrantAbility(12)
          Object():GetCurrentCharacteristics():GrantAbility(13)
         end
                end
         </CONTINUOUS_ACTION>
      <DURATION>
        return RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER ) == 1
      </DURATION>
   </TRIGGERED_ABILITY>
   <UTILITY_ABILITY resource_id="40">
      <ABILITY_TEXT tag="MODE_CAST_MORPH_FACE_DOWN_PAY_3" />
      <COST type="Generic">
         <PREREQUISITE>
           local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
                     local FaceDownStringCost = "{"..UpdatedCost.."}"
                     return EffectController():CanPayManaCost(FaceDownStringCost)
             </PREREQUISITE>
         <PLAY_TIME_ACTION>
           local UpdatedCost = UpdateFaceDownCastingCost(EffectController())
                     local FaceDownStringCost = "{"..UpdatedCost.."}"
         EffectController():PayManaCost(FaceDownStringCost)
             </PLAY_TIME_ACTION>
      </COST>
   </UTILITY_ABILITY>
   <ACTIVATED_ABILITY forced_skip="1" active_zone="ZONE_HAND">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Cast this face down.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Jouer cette carte face cachée.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Jugar esta carta boca abajo.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Spiele diese Karte verdeckt.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Gioca questa carta a faccia in giù.]]></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[Jogue esta carta virada para baixo]]></LOCALISED_TEXT>
      <COST mana_cost="{0}" type="Mana" />
      <AVAILABILITY>
      local UpdatedCost = FakeFaceDownCastingCost(EffectController())
                local FaceDownStringCost = "{"..UpdatedCost.."}"
      return EffectController():CanPayManaCost(FaceDownStringCost)
        </AVAILABILITY>
      <PLAY_TIME_ACTION>
             RSN_MarkManaAbilityStart()
          </PLAY_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
           if Object() ~= nil then
          local Chest_Id = Object():GetRef()
         local delayDC = EffectDC():Make_Chest(1)
                   delayDC:Set_Int(0, Chest_Id)
                   MTG():CreateDelayedTrigger(9, delayDC)
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
          MTG():CreateDelayedTrigger(8, nil)
             MTG():PutTokensOntoBattlefield( "NEO_TEST_TOKEN_001_MORPH_2_2_570092001", 1, EffectController(), EffectDC():Make_Chest(0) )
                   else
                         Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
                   end
                end
       </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
                if Object() ~= nil then
         local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) == nil then
               local token_chest = EffectDC():Get_Chest(0)
                      if token_chest  ~= nil then
                         local token = token_chest:Get_NthCardPtr(0)
                         if token ~= nil then
                            token:StoreCopiableValues(MTG():DuelDataChest():Make_Chest(Chest_Id))   
                  Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))   
                         end
                      end
                   end

                end
        </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
       if Object() ~= nil then
              MTG():CreateDelayedTrigger(17, nil)
                 end
        </RESOLUTION_TIME_ACTION>
      <CONTINUOUS_ACTION layer="1">
                if Object() ~= nil then
         local Chest_Id = Object():GetRef()
                   if MTG():DuelDataChest():Get_Chest(Chest_Id) ~= nil then
                         Object():UseCopiableValues(MTG():DuelDataChest():Get_Chest(Chest_Id))
                  RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
           Object():GetCurrentCharacteristics():GrantAbility(10)
          Object():GetCurrentCharacteristics():GrantAbility(12)
          Object():GetCurrentCharacteristics():GrantAbility(13)
         end
                end
         </CONTINUOUS_ACTION>
      <DURATION>
        return RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER ) == 1
      </DURATION>
      <RESOLUTION_TIME_ACTION>
            RSN_MarkManaAbilityEnd()
          </RESOLUTION_TIME_ACTION>
   </ACTIVATED_ABILITY>
   <TRIGGERED_ABILITY resource_id="17" replacement_query="1">
      <TRIGGER value="STATE_BASED_EFFECTS" pre_trigger="1" />
      <CLEANUP fire_once="1" />
      <RESOLUTION_TIME_ACTION>
         MTG():ReevaluateContinuousEffects()
        </RESOLUTION_TIME_ACTION>
      <PLAY_TIME_ACTION>
        local UpdatedCost = FakeFaceDownCastingCost(EffectController())
                  local FaceDownStringCost = "{"..UpdatedCost.."}"
        local value = 0
         if EffectSource():CanBePlayed(EffectController()) == true or EffectController():CanCastSpellUsingResourceCost( EffectSource(), 40 ) == true then
                     if EffectController():MyTurn() == true then
                        if MTG():GetStep() == STEP_MAIN_1 or MTG():GetStep() == STEP_MAIN_2 then
                          if CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
                         value = 1
                          else
                              if CheckStackIsFree() == 0 then
                                 value = 1
                              end
                          end
                       else
           if CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
                         value = 1
                          end
                       end
           elseif CheckThisCreatureForCharacteristic(CHARACTERISTIC_FLASH, EffectSource()) == 1 or CheckCardGrantFlashControlledBy(EffectController()) == 1 or CheckCardGrantFlashControlledByOthers(EffectController()) == 1 then
              value = 1
                     end
                   end
       local EtherswornCanonist = FakeEtherswornCanonistCheck(EffectController())
                 local OvverideCreatureCast = CheckCardOverrideCreatureCastControlledBy(EffectController())
                 if (CheckCardOverrideCreatureCastControlledByAny() == 1) or (EtherswornCanonist == 1) or (OvverideCreatureCast == 1) then
                    value = 0
                 end
                 EffectDC():Set_Int(8, value)
                 if value == 1 then
             EffectController():BeginNewMultipleChoice()
              EffectController():AddMultipleChoiceAnswer( "MODE_CAST_MORPH_FACE_DOWN_PAY_3", EffectController():CanPayManaCost(FaceDownStringCost))
                   EffectController():AddMultipleChoiceAnswer( "CARD_QUERY__NEO_OPTION_DO_NOTHING" )
         EffectController():AskMultipleChoiceQuestion( "MODE_MORPH_INFO_CARD" )
                 end
   </PLAY_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local valueA = EffectDC():Get_Int(8)
                   if valueA == 1 then
           local value = EffectController():GetMultipleChoiceResult()
                     if value == 0 then
          RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 1 )
                if EffectController():CanCastSpellUsingResourceCost( EffectSource(), 40 ) then
                  EffectController():CastSpellUsingResourceCost( EffectSource(), 40 )
               end
                     else
          RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
          RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
                     end
       else
           RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
           RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
                 end
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="8" replacement_effect="1" active_zone="ZONE_ANY" priority="-1">
      <TRIGGER value="ZONECHANGE_CONSIDERED" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" pre_trigger="1">
     if TriggerObject() ~= nil and TriggerObject():GetCardName() == "" then
        if TriggerObject():GetErstwhileZone() == 0 then
           MTG():OverrideEvent()
           return true
        end
    end
    return false
    </TRIGGER>
      <CLEANUP fire_once="1" />
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="9" replacement_effect="1" active_zone="ZONE_ANY" priority="-1">
      <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD">
     if TriggerObject() ~= nil and RSN_Characteristics_GetInt( Object(), NEO_CHARACTERISTIC_FACEDOWN ) == 1 then
        local oDC = RSN_GetObjectDC( Object(), true )
        local value = EffectDC():Get_Int(0)
        oDC:Int_Set( 585, value )
        return true
     end
     return false
    </TRIGGER>
      <CLEANUP fire_once="1" />
   </TRIGGERED_ABILITY>
   <ACTIVATED_ABILITY resource_id="10" forced_skip="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Morph (|View hidden info of the card|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Mue  (|Voir les informations cachées de la carte|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Metamorfosis -(|Ver la informacion oculta de la carta|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Morph (|Ausgeblendete Informationen der Karte zeigen|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Metamorfosi (|Visualizza info nascoste della carta|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Morph  (カードの隠された情報を見る)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Morph  (카드의 숨겨진 정보를보기)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Morph (|Посмотреть скрытую информацию карты|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Metamorfose (|Ver informação oculta do cartão|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[Morph  (變身(|卡片視圖中隱藏信息|)]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[Morph  (變身(|卡片視圖中隱藏信息|)]]></LOCALISED_TEXT>
      <COST mana_cost="{0}" type="Mana" />
      <AVAILABILITY>
                   local oDC = RSN_GetObjectDC( Object(), false )
         if oDC ~= nil then
                      local value =  oDC:Int_Get(585)
                      if value ~= 0 then
                         return true
                      end
                   end
                   return false
                </AVAILABILITY>
      <PLAY_TIME_ACTION>
             RSN_MarkManaAbilityStart()
          </PLAY_TIME_ACTION>
      <PLAY_TIME_ACTION>
            local oDC = RSN_GetObjectDC( Object(), false )
                 if oDC ~= nil then
                 local value =  oDC:Int_Get(585)
                 if value &lt; 0 then
                    value = (-value)
                 end
                 local QueryString = "CARD_QUERY_MORPH_"..value
                 local MorphCost = BuildUpdatedMorphCost(2, 1, 0, 1, 0, 1)
           EffectController():BeginNewMultipleChoice()
            EffectController():AddMultipleChoiceAnswer( QueryString, EffectController():CanPayManaCost(MorphCost) )
                 EffectController():AddMultipleChoiceAnswer( "CARD_QUERY__NEO_OPTION_DO_NOTHING" )
       EffectController():AskMultipleChoiceQuestion( "MODE_MORPH_INFO_CARD", Object() )
                 end
      </PLAY_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
            local oDC = RSN_GetObjectDC( Object(), false )
                 if oDC ~= nil then
           local value = EffectController():GetMultipleChoiceResult()
                      if value == 0 then
                         local MorphCost = BuildUpdatedMorphCost(2, 1, 0, 1, 0, 1)
          EffectController():PayManaCost(MorphCost)
          NeoTurnFaceUP( Object() )
                      end
                 end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
            RSN_MarkManaAbilityEnd()
          </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY type="in_response" />
      <AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_blockers" type="window" />
      <AI_AVAILABILITY window_step="end_of_turn" type="window" />
   </ACTIVATED_ABILITY>
   <TRIGGERED_ABILITY resource_id="12" replacement_effect="1">
      <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="self" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
           return true
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
         RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
         MTG():ReevaluateContinuousEffects()
   </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="13" replacement_effect="1" active_zone="ZONE_STACK">
      <TRIGGER value="SPELL_BEING_COUNTERED" simple_qualifier="self" pre_trigger="1" />
      <RESOLUTION_TIME_ACTION>
   RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
   RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_FACEDOWN, 0 )
   MTG():ReevaluateContinuousEffects()
    </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="NEO_TEST_TOKEN_001_MORPH_2_2_570092001" />
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby Xander9009 » 25 Jan 2015, 03:52

Morph works by replacing the card with a completely different card, but tracking which one created it (more or less). The real issue here is that the Morph code Neo created wouldn't be able to display the other creature. See, it displays the information by using a localized text string, and those are hard coded. Unless you made a localized string for every single creature card, this wouldn't work.

Hopefully Neo can help, because the code for Morph is necessarily very complicated, and I'm pretty sure he's the only one that knows what's going on. For the information about the face-up creature, would it be possible to get the information about the face-up creature? It wouldn't be able to show the abilities, but showing the name and type as well as power and toughness if it's a creature would make the card usable.
_______________________________
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: 444 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 25 Jan 2015, 04:51

I agree. I've tried different approaches to no avail. Hopefully, someone will come along and help us out.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 17 Feb 2015, 01:07

Xander9009 wrote:Would you mind sending me your manifest code? It's a rather complex ability and we'd be WAY better off not having multiple versions.


I just posted the above video of what I have for the Manifest mechanic. It is totally incomplete. As it stands now, I'm using Lightform to test it. The card only exiles the top card of your library face down in the Exile Zone and places that card on the battlefield at the beginning of the end step. Again, this was for testing purposes to make the card lay face down. I didn't even add the 'As a 2/2 creature' part because I'm not sure it will become such since it is place directly in exile. Do you think Riiak can help us code it? I tried following Neo's code with no success. I suppose I'll just have to release the set without Manifest included if no one can help. I feel that this is not a good reason to keep delaying the release of the set.

EDIT: I've uploaded the video to YouTube but it hasn't processed yet. I've included a .ZIP so you can view the video until I can embed it here.

Here is the code that places it face down in exile.
Code: Select all
   <RESOLUTION_TIME_ACTION>
    local top_card = EffectController():Library_GetTop()
    if top_card ~= nil then
       EffectDC():Set_CardPtr(0, top_card)
       EffectDC():Protect_CardPtr(0)
       top_card:ExileFaceDown()
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local exiled_card = EffectDC():Get_CardPtr(0)
    if exiled_card ~= nil then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, exiled_card)
       MTG():CreateDelayedTrigger(2, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
And here is the code that returns it to the battlefield at the beginning of the end step.
Code: Select all
<TRIGGERED_ABILITY resource_id="2">
   <TRIGGER value="BEGINNING_OF_PLAYERS_STEP">
    return TriggerPlayer() == EffectController() and MTG():GetStep() == STEP_END_OF_TURN
    </TRIGGER>
   <CLEANUP fire_once="1" />
   <RESOLUTION_TIME_ACTION>
    local exiled_card = EffectDC():Get_CardPtr(0)
    if exiled_card ~= nil then
       EffectDC():Protect_CardPtr(0)
       exiled_card:PutOntoBattlefield( EffectController() )
    end 
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local exiled_card = EffectDC():Get_CardPtr(0)
    if exiled_card ~= nil then
       exiled_card:TurnFaceUp()
    end 
    </RESOLUTION_TIME_ACTION>
   <AUTO_SKIP>
    return EffectDC():Get_CardPtr(0) == nil
    </AUTO_SKIP>
</TRIGGERED_ABILITY>
Attachments
Manifest mechanic video.rar
Manifest Mechanic - Top card exiled face down in the Exile Zone.
(8.72 MiB) Downloaded 197 times
Last edited by Tejahn on 23 Feb 2015, 20:36, edited 3 times in total.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby RiiakShiNal » 17 Feb 2015, 12:00

I'm afraid I likely won't be able to help here. There are just too many problems with face down cards (because there is no engine support for it).

Also due to power outages in my area last night, one of my important systems has gone down and refuses to come back up (even though it was shutdown properly). So that is going to absorb most of my time outside of work until I can get it back up and running.
RiiakShiNal
Programmer
 
Posts: 2160
Joined: 16 May 2011, 21:37
Has thanked: 74 times
Been thanked: 483 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 17 Feb 2015, 17:03

I understand. Thanks for responding. Those may have to come in a future update.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby Xander9009 » 17 Feb 2015, 17:15

Dang, that sucks about your system :( Hopefully you can get it resolved soon.

As for the file, I can't play the video. So I guess I'll have to wait for the youtube version. Although, I already understand what you mean, based on looking at the code.

However, I don't think exiling the card face down is a good solution. The only way that is likely to produce workable results is to mirror Neo's morph. The morph code is all his, but I went through it when I converted the morph cards to work with the CW to figure out why the ability text wasn't working (now I know why, but it's a VERY tedious process to fix :( ), and I now understand relatively well what's going on there.It's certainly not a simple process, but it is at least fairly straight-forward if I remember right.

It certainly won't be perfectly accurate, but it should at least be an almost-as-close approximation as morph (it needs a different method of showing info about the face-up card, the morph cards are all hard-coded). For that part, I'm considering using a two-part system. Using either a GuidedReveal() (if that can reveal to a single player) or a choice (if it can't) which shows the player another copy of the card from their library hand or graveyard if it finds one, and then pulling just the name, power, toughness, types, subtypes, and some close approximation of cost.

As far as cost goes, is there a way to get the actual mana cost of a card so the player could PayManaCost()? Y'know, thinking about it, I really wish the developers had simply added an attribute usable in the ability tags for immutable: an ability which cannot be removed. That would make manual mana and this radical solution I've got in mind so much easier.

I would definitely go ahead and release the set once you've got everything else done. They can always be added later.
_______________________________
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: 444 times

Re: (Tejahn) Manifest Cards

Postby Kithkin » 17 Feb 2015, 18:45

Xander9009 wrote:I would definitely go ahead and release the set once you've got everything else done. They can always be added later.
That seems to be a good idea. Looking at the TOP 8 decks from the last Starcitygames.com tournament, there is not a single Manifest card. Just saying.
User avatar
Kithkin
 
Posts: 456
Joined: 21 Feb 2014, 07:12
Location: Cologne, GERMANY
Has thanked: 11 times
Been thanked: 56 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 17 Feb 2015, 22:18

Xander9009, those are awesome ideas. I hope you can create a good approximation. And I agree with you and Kithkin that Manifest can be released later, if at all. The time to release the set is here. I'll be sending you the CORE so you can examine the codes one final time.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby RiiakShiNal » 18 Feb 2015, 12:11

Xander9009 wrote:Dang, that sucks about your system :( Hopefully you can get it resolved soon.
I managed to get my system up. Apparently, the problem is that on system startup (and only on system startup) the USB 3.0 hub (which has its own power adapter) I have on the system pulls too much power and not enough is given to motherboard/processor. So if I unplug the USB on startup the computer comes up just fine, then I can plug the USB hub back in. So later I'll probably have to look into getting a better power supply, but for now things are working.

Xander9009 wrote:As far as cost goes, is there a way to get the actual mana cost of a card so the player could PayManaCost()? Y'know, thinking about it, I really wish the developers had simply added an attribute usable in the ability tags for immutable: an ability which cannot be removed. That would make manual mana and this radical solution I've got in mind so much easier.
Unfortunately, you can't get the exact mana cost in all situations, but in most situations you can get pretty close.

First you start with the CMC as this tells you the max mana to use for the card. Then you get the Chroma count (using a filter) for the card's colourless mana and subtract that from the max to get the max coloured count (won't work right for cards like Spectral Procession, though this could be detected by also checking the coloured chroma count and noticing that white would be 3 even though the max should be 0 based on the math at which point you can deduce it uses 3 {2/W} symbols). Then you ask for the chroma counts for each of the 5 colours and based on the responses there you can most of the time get the appropriate mana cost (including hybrid mana, excluding phyrexian mana). This also will not cover certain cards that have a mix of hybrid mana types or a mix of hybrid colours and regular colours like Arsenal Thresher (as there is no way to determine which colours are used for the hybrid mana and which is regular).
RiiakShiNal
Programmer
 
Posts: 2160
Joined: 16 May 2011, 21:37
Has thanked: 74 times
Been thanked: 483 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 18 Feb 2015, 16:51

Thanks for that information RiiakShiNal. I needed to know that for an unrelated project. I was actually about to ask a similar question in my Question Thread.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 23 Feb 2015, 19:24

The video is up top. It's just to show that cards can be placed face-down in the Exile Zone. I didn't realize that I recorded the first 30 or more seconds of it.

My question is, by changing the zone from Exile to battlefield will it still work. I'll try it after I submit the blue Fate Reforged core over to Xander9009.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby Xander9009 » 15 Mar 2015, 16:42

I have some great news, but unfortunately, that news is not yet that it's 100% working. Rather, it's that it's 99% working.

  • Will manifest regardless of whether or not the card is a permanent (the game is not a fan of putting instants and sorceries onto the battlefield)
  • You can't see what card it is before it hits the battlefield. Thanks to the fact that the ability isn't on the manifested card (unlike morph), it never goes to the stack, so that wasn't a problem, thankfully.
  • It's also got the ability to turn face up, and it successfully shows the cost, name, types, subtypes, power, and toughness for any card.
  • The Morph code was meant to morph one card (the one it was on), so it had to be modified to support being cast multiple times and manifesting a different card each time. This works.
One thing I haven't done but want to is what I mentioned about finding and showing another instance of the card to display what it does. For now, here's a copy to let me know if it works for you guys. Let me know if there are any problems I haven't encountered (especially if you want to test the code's ability to display phyrexian or hybrid mana; I haven't tested that at all yet).
Attachments
DATA_DLC_MANIFEST.zip
This is a directory wad so you can more easily open it up and see the code. Drop the top folder in your game folder and it should work. Hopefully...
(214.31 KiB) Downloaded 185 times
_______________________________
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: 444 times

Re: (Tejahn) Manifest Cards

Postby Tejahn » 15 Mar 2015, 16:58

Great! I'm about to test this and Soulflayer. Once this is 100% working, all that's left is Wild Slash. The mod will be 100% complete. Thanks Xander9009!
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: (Tejahn) Manifest Cards

Postby Xander9009 » 15 Mar 2015, 17:41

Speaking of Soulflayer, I've got the exact list of files necessary for Delve to work.

Cards:
  • _MANAGER_ABILITIES_ACTIVE
  • _MANAGER_CHARACTERISTICS
  • RSN_TOKEN_MANA_C

Functions:
  • D14_NEO_MANA_COST_FUNCTIONS
  • RSN_FAKE_CHARACTERISTICS
  • RSN_MANA
  • RSN_OBJECTDC

With those files (plus RSN_DEFENDING_PLAYER, RSN_DURATION, Favor of the Gods (my test card)) the delve ability worked and the card had the proper abilities. This was on a completely clean installation with NO other mods (not even the full manual mana wad). Just a new test deck with some vanilla creatures and the deck builder custom folder with those files.

Wild Slash may or may not work. Now that Manifest is done (hopefully), I'll see about getting it to work. I doubt it will be fully possible to do, though.
_______________________________
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: 444 times

Next

Return to 2014

Who is online

Users browsing this forum: No registered users and 10 guests


Who is online

In total there are 10 users online :: 0 registered, 0 hidden and 10 guests (based on users active over the past 10 minutes)
Most users ever online was 1922 on 07 Jun 2021, 06:01

Users browsing this forum: No registered users and 10 guests

Login Form