It is currently 19 Apr 2024, 20:45
   
Text Size

Question about Mana pool (Kruphix, God of Horizons)

Moderator: CCGHQ Admins

Question about Mana pool (Kruphix, God of Horizons)

Postby NeoAnderson » 26 Aug 2014, 20:02

Need a suggestion to check amount of mana inside the mana pool. I think that GetTotalMana() returns also the mana still not tapped.
I would try to code :
Kruphix, God of Horizons
I always use manual mana, so probably is just necessary count the mana tokens before the end of each step?

I am looking to Riiak Manual Mana Functions and i found this one RSN_CountColourManaInPlayerPool.
So i think we could use something like :

Code: Select all
   local filter = ClearFilter()
   filter:Add( FE_CONTROLLER, OP_IS, Player )
          local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_C" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_B" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_U" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_G" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_R" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_W" )
   local AvailableMana = filter:Count()
Last edited by NeoAnderson on 27 Aug 2014, 03:04, edited 1 time in total.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Question about Mana pool

Postby gorem2k » 26 Aug 2014, 21:57

NeoAnderson wrote:I am looking to Riiak Manual Mana Functions and i found this one RSN_CountColourManaInPlayerPool.
So i think we could use something like :

Code: Select all
   local filter = ClearFilter()
   filter:Add( FE_CONTROLLER, OP_IS, Player )
          local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_C" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_B" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_U" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_G" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_R" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "RSN_TOKEN_MANA_W" )
   local AvailableMana = filter:Count()
yes it counts the mana tokens but what if a land is not tapped, then the token is not in play yet.

nevermind, it's for unused mana #-o

you could replace all these filteredcard with a RSN_TOKEN_MANA_C
and I think there's already a card that does prevent from emptying mana pool. I think it's in sumomole mod.

but wait, does it empty? it's only saying it becomes colorless. doesn't say it stay in your pool.. what's the use for this?

ok, I,ve read the card ruling. it stays as long as it's in play. Riiak will surely help you with this
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Question about Mana pool

Postby NeoAnderson » 26 Aug 2014, 22:51

gorem2k wrote:yes it counts the mana tokens but what if a land is not tapped, then the token is not in play yet.

nevermind, it's for unused mana #-o

you could replace all these filteredcard with a RSN_TOKEN_MANA_C
and I think there's already a card that does prevent from emptying mana pool. I think it's in sumomole mod.

but wait, does it empty? it's only saying it becomes colorless. doesn't say it stay in your pool.. what's the use for this?

ok, I,ve read the card ruling. it stays as long as it's in play. Riiak will surely help you with this

1. I was thinking to read how many tokens are in play before they are going to be exiled during the end of steps, save the value into a register (LinkedDC) then make a trigger at beginning of each step produce with notrigger X(stored value) colorless mana tokens.
2. Another way is to read how many tokens are in play before they are going to be exiled during the end of steps, then use a modified colorless mana token who will not expire at end of each step.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Question about Mana pool

Postby gorem2k » 27 Aug 2014, 00:20

this is how sumomole coded Omnath, Locus of Mana in DotP 2013

Code: Select all
  <TRIGGERED_ABILITY internal="1" pre_trigger="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Green mana doesn’t empty from your mana pool as steps and phases end.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_IN_PLAY">
    if ( TriggerObject():GetCardName() == "_TOKEN_G_624998" ) and ( TriggerObject():Tapped() == 0 ) then
       override = true
       return true
    end
    return false
    </TRIGGER>
  </TRIGGERED_ABILITY>
link
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Question about Mana pool

Postby RiiakShiNal » 27 Aug 2014, 00:23

To prevent unused mana from leaving the battlefield you would use a ZONECHANGE_CONSIDERED trigger and check to see if the card a mana token and is untapped then simply override the event. You can look at Shizuko, Caller of Autumn (RSN_SHIZUKO_CALLER_OF_AUTUMN_74436) in my mod to see how I prevented mana from leaving play. Do note though that you can't use a delayed trigger for this (it eventually leads to a crash condition).

To change mana to colourless if it would empty from the pool you would still do the trigger above, but you would only override the event if it is a colourless token, otherwise you would allow it to change zones and simply replace it with a colourless mana token.

So overall this is not a very difficult ability (certainly simpler than other abilities you've worked on). No need for custom tokens, don't need to mess with a LinkedDC() or triggers to produce at each step. You don't need to know how much mana is in the pool as you don't care. You need only deal with untapped mana tokens trying to leave play and that can be done as I explained.
RiiakShiNal
Programmer
 
Posts: 2185
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 496 times

Re: Question about Mana pool

Postby NeoAnderson » 27 Aug 2014, 02:54

Thanks guys, I think to have finally get a working version, as suggested by Riiak i made it without any LinkedDC or Delayed Trigger.

Here you can find my code (Please someone could make some tests on it, will be helpful, i would avoid any trouble as like game crashed...)

Kruphix, God of Horizons Neo Rev 1.0 | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="JOU_152_NEO_KRUPHIX_GOD_OF_HORIZONS_995380446" />
  <CARDNAME text="KRUPHIX_GOD_OF_HORIZONS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Kruphix, God of Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Kruphix, dieu des Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Krufix, dios de los horizontes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kruphix, Gott der Horizonte]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Krufix, Dio degli Orizzonti]]></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[Crufix, Deus dos Horizontes]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="995380446" />
  <ARTID value="995380446" />
  <ARTIST name="Daarken" />
  <CASTING_COST cost="{3}{G}{U}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Enchantment" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="God" />
  <EXPANSION value="JOU" />
  <RARITY metaname="M" />
  <POWER value="4" />
  <TOUGHNESS value="7" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Unzerstörbar]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Indistruttibile]]></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[Indestrutível]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to green and blue is less than seven, Kruphix isn’t a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que votre dévotion au vert et au bleu est inférieure à sept, Kruphix n’est pas une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras tu devoción al verde y al azul sea menor que siete, Krufix no es una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange deine Hingabe zu Grün und Blau weniger als sieben beträgt, ist Kruphix keine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la tua devozione al verde e al blu è inferiore a sette, Krufix non è una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたの緑と青への信心が7未満であるかぎり、彼方の神、クルフィックスはクリーチャーではない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신의 녹청 신앙심이 7 미만인 한, 크루픽스는 생물이 아니다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока ваша Преданность зеленому и синему меньше семи, Круфикс не является существом.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto sua devoção ao verde e ao azul for menor que sete, Crufix não será uma criatura.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
     local source = EffectSource()
     if source ~= nil then
        local WBDevotion = Devotion_Player_Col_A_Col_B(COLOUR_RED, COLOUR_WHITE, EffectController())
        if WBDevotion &lt; 7 then
           local characteristics = source:GetCurrentCharacteristics()
           local card_type = characteristics:CardType_GetWritable()
           local sub_type = characteristics:SubType_GetWritable()
           sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
           card_type:Clear()
           card_type:Add( CARD_TYPE_ENCHANTMENT )
        end
    end
  </CONTINUOUS_ACTION>
  </STATIC_ABILITY>

  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You have no maximum hand size.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Il n’y a pas de limite au nombre de cartes dans votre main.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tu mano no tiene tamaño máximo.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Es gibt keine Obergrenze für die Anzahl an Karten, die du auf der Hand halten darfst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Non hai un limite massimo di carte nella tua mano.]]></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[Não há limite para o número máximo de cards em sua mão.]]></LOCALISED_TEXT>
     <CONTINUOUS_ACTION layer="8">
         EffectController():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_NO_HAND_LIMIT, 1)
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Si du mana inutilisé devait être vidé de votre réserve, ce mana devient incolore à la place.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Si fuera a vaciarse maná no utilizado de tu reserva de maná, en vez de eso, ese maná se convierte en incoloro.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls unverbrauchtes Mana aus deinem Manavorrat entfernt würde, wird dieses Mana stattdessen farblos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Se del mana inutilizzato sta per essere rimosso dalla tua riserva di mana, quel mana diventa invece incolore.]]></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[Se o mana não usado for ser esvaziado da sua reserva de mana, em vez disso, aquele mana se tornará incolor.]]></LOCALISED_TEXT>
  </STATIC_ABILITY>


<TRIGGERED_ABILITY replacement_effect="1" replacement_query="1" linked_ability_group="1">
   <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
   if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
      RSN_MarkManaAbilityStart()
           if (TriggerObject():GetCardName() == "TOKEN_MANA_C") then
       MTG():OverrideEvent()
      return true
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_W") then
         RSN_ProduceNoTrigger( "{1}", 1 )
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_U") then
                   RSN_ProduceNoTrigger( "{1}", 1 )         
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_R") then
                   RSN_ProduceNoTrigger( "{1}", 1 )
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_B") then
                   RSN_ProduceNoTrigger( "{1}", 1 )
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_G") then
                   RSN_ProduceNoTrigger( "{1}", 1 )
      end   
        end
        RSN_MarkManaAbilityEnd()
   return false
      </TRIGGER>
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
   </TRIGGERED_ABILITY>

  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="1500" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
The card should work also if you don't have my function for Dual Devotion (It will be considered as enchantment and will not turn to creature), but if someone want here you can copy it.
Neo Devotion functions | Open
Code: Select all
NEO_ReturnDualDevotion = function(dVal, DevotionType)

  local dChest = EffectDC():Make_Chest(0)
  dChest:Set_Int(0,0)
  dChest:Set_Int(1,0)
  dChest:Set_Int(2,0)
  dChest:Set_Int(3,0)
  dChest:Set_Int(4,0)
  dChest:Set_Int(5,0)
  dChest:Set_Int(6,0)
  dChest:Set_Int(7,0)
  dChest:Set_Int(8,0)
  dChest:Set_Int(9,0)

if (dVal == "BATTLEGATE_MIMIC") or (dVal == "BELLIGERENT_HATCHLING") or (dVal == "BOROS_RECRUIT") or (dVal == "DUERGAR_ASSAILANT") or (dVal == "DUERGAR_HEDGEMAGE") or (dVal == "DUERGAR_MINECAPTAIN") or (dVal == "FIGURE_OF_DESTINY") or (dVal == "HOBGOBLIN_DRAGOON") or (dVal == "SCOURGE_OF_THE_NOBILIS") then
-- DEVOTION : {R/W}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,1)
elseif (dVal == "SCUZZBACK_SCRAPPER") or (dVal == "TATTERMUNGE_MANIAC") or (dVal == "WILD_CANTOR") or (dVal == "TATTERMUNGE_WITCH") or (dVal == "TATTERMUNGE_DUO") or (dVal == "IMPROMPTU_RAID") or (dVal == "ROSHEEN_MEANDERER") or (dVal == "RUNES_OF_THE_DEUS") or (dVal == "SCUZZBACK_MARAUDERS") or (dVal == "VALLEYMAKER") then
-- DEVOTION : {R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "CURSE_OF_CHAINS") or (dVal == "GLAMER_SPINNERS") or (dVal == "JUDGES_FAMILIAR") or (dVal == "ZEALOUS_GUARDIAN") or (dVal == "MISTMEADOW_WITCH") or (dVal == "SOMNOMANCER") or (dVal == "MINISTER_OF_IMPEDIMENTS") or (dVal == "SILKBIND_FAERIE") or (dVal == "STEEL_OF_THE_GODHEAD") or (dVal == "THISTLEDOWN_DUO")  then
-- DEVOTION : {W/U}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "EDGE_OF_THE_DIVINITY") or (dVal == "NIP_GWYLLION") or (dVal == "MOURNING_THRULL") or (dVal == "NIGHTSKY_MIMIC") or (dVal == "GWYLLION_HEDGEMAGE") or (dVal == "VORACIOUS_HATCHLING") then
-- DEVOTION : {W/B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "BLISTERCOIL_WEIRD") or (dVal == "CLOUT_OF_THE_DOMINUS") or (dVal == "NIVMAGUS_ELEMENTAL") or (dVal == "STREAM_HOPPER") or (dVal == "RIVERFALL_MIMIC") or (dVal == "NOGGLE_HEDGEMAGE") or (dVal == "NOGGLE_RANSACKER") or (dVal == "PETRAHYDROX") or (dVal == "SHREWD_HATCHLING") then
-- DEVOTION : {U/R}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,1)
elseif (dVal == "OONAS_GATEWARDEN") or (dVal == "INKFATHOM_WITCH") or (dVal == "LURKING_INFORMANT") or (dVal == "GRAVELGILL_DUO") or (dVal == "TORPOR_DUST") or (dVal == "HELM_OF_THE_GHASTLORD") or (dVal == "MERROW_GRIMEBLOTTER") or (dVal == "GRAVELGILL_AXESHARK") then
-- DEVOTION : {U/B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "CULTBRAND_CINDER") or (dVal == "EMBERSTRIKE_DUO") or (dVal == "EVERLASTING_TORMENT") or (dVal == "FISTS_OF_THE_DEMIGOD")  or (dVal == "MANAFORGE_CINDER")  or (dVal == "RAKDOS_CACKLER")  or (dVal == "RIOT_SPIKES")  or (dVal == "SOOTSTOKE_KINDLER")  or (dVal == "SPITEFLAME_WITCH") or (dVal == "GRIEF_TYRANT") then
-- DEVOTION : {B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "DEATHRITE_SHAMAN") or (dVal == "GIFT_OF_THE_DEITY") or (dVal == "ODIOUS_TROW") or (dVal == "SLITHERHEAD") or (dVal == "WOODLURKER_MIMIC") or (dVal == "HAG_HEDGEMAGE") or (dVal == "QUILLSPIKE") or (dVal == "RENDCLAW_TROW") or (dVal == "NOXIOUS_HATCHLING") then
-- DEVOTION : {B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "CENTAUR_SAFEGUARD") or (dVal == "DRYAD_MILITANT") or (dVal == "ELVISH_HEXHUNTER") or (dVal == "RHYS_THE_REDEEMED") or (dVal == "SEEDCRADLE_WITCH") or (dVal == "MEDICINE_RUNNER") or (dVal == "SAFEHOLD_ELITE") or (dVal == "ORACLE_OF_NECTARS") or (dVal == "SHIELD_OF_THE_OVERSOUL") or (dVal == "SAFEHOLD_DUO") then
-- DEVOTION : {G/W}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "FAVOR_OF_THE_OVERBEING") or (dVal == "SLIPPERY_BOGLE") or (dVal == "GROUNDLING_POUNCER") or (dVal == "SHORECRASHER_MIMIC") or (dVal == "SELKIE_HEDGEMAGE") or (dVal == "SHIELDING_PLAX")  or (dVal == "GRAZING_KELPIE")  or (dVal == "STURDY_HATCHLING") then
-- DEVOTION : {G/U}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "NAYA_HUSHBLADE") or (dVal == "TRACE_OF_ABUNDANCE") or (dVal == "MARISIS_TWINCLAWS") then
-- DEVOTION : {R/W}{G}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,2)
elseif (dVal == "ARSENAL_THRESHER") or (dVal == "ESPER_STORMBLADE") or (dVal == "THOPTER_FOUNDRY") then
-- DEVOTION : {W/B}{U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "GRIXIS_GRIMBLADE") or (dVal == "SEWNEYE_DRAKE") then
-- DEVOTION : {U/R}{B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "BANT_SUREBLADE") or (dVal == "CRYSTALLIZATION") or (dVal == "MESSENGER_FALCONS") then
-- DEVOTION : {G/U}{W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "GIANT_AMBUSH_BEETLE") or (dVal == "JUND_HACKBLADE") or (dVal == "SANGRITE_BACKLASH") then
-- DEVOTION : {B/G}{R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,2)
elseif (dVal == "AUGURY_ADEPT") or (dVal == "AZORS_ELOCUTORS") or (dVal == "AZORIUS_GUILDMAGE") or (dVal == "ENCHANTED_EVENING") or (dVal == "PURESIGHT_MERROW") or (dVal == "VASSAL_SOUL") or (dVal == "SWANS_OF_BRYN_ARGOLL") then
-- DEVOTION : {W/U}{W/U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "BLOODIED_GHOST") or (dVal == "EVERSHRIKE") or (dVal == "GIFT_OF_ORZHOVA") or (dVal == "ORZHOV_GUILDMAGE") or (dVal == "STILLMOON_CAVALIER") or (dVal == "HARVEST_GWYLLION") then
-- DEVOTION : {W/B}{W/B}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,0)
elseif (dVal == "CEMETERY_PUCA") or (dVal == "DEATHCULT_ROGUE") or (dVal == "DIMIR_GUILDMAGE") or (dVal == "DIRE_UNDERCURRENTS") or (dVal == "INKFATHOM_INFILTRATOR") or (dVal == "SYGG_RIVER_CUTTHROAT") or (dVal == "WANDERBRINE_ROOTCUTTERS") then
-- DEVOTION : {U/B}{U/B}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,0)
elseif (dVal == "CRACKLEBURR") or (dVal == "DJINN_ILLUMINATUS") or (dVal == "FROSTBURN_WEIRD") or (dVal == "IZZET_GUILDMAGE") or (dVal == "MIRROR_SHEEN") or (dVal == "NOGGLE_BANDIT") or (dVal == "NOGGLE_BRIDGEBREAKER") or (dVal == "NUCKLAVEE") then
-- DEVOTION : {U/R}{U/R}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,2)
elseif (dVal == "CANKER_ABOMINATION") or (dVal == "DESECRATOR_HAG") or (dVal == "GOLGARI_GUILDMAGE") or (dVal == "GOLGARI_LONGLEGS") or (dVal == "SAPLING_OF_COLFENOR") then
-- DEVOTION : {B/G}{B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "CRYPTBORN_HORROR") or (dVal == "FULMINATOR_MAGE") or (dVal == "RAKDOS_GUILDMAGE") or (dVal == "RAKDOS_SHREDFREAK") or (dVal == "MURDEROUS_REDCAP") or (dVal == "SOOTWALKERS") or (dVal == "SPITEFUL_VISIONS") or (dVal == "KULRATH_KNIGHT") then
-- DEVOTION : {B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "BOROS_GUILDMAGE") or (dVal == "RISE_OF_THE_HOBGOBLINS") or (dVal == "SPITEMARE")  then
-- DEVOTION : {R/W}{R/W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,2)
elseif (dVal == "BURNINGTREE_EMISSARY") or (dVal == "GIANT_SOLIFUGE") or (dVal == "GRUUL_GUILDMAGE") or (dVal == "VEXING_SHUSHER") or (dVal == "MUDBRAWLER_RAIDERS") or (dVal == "MORSELHOARDER") or (dVal == "WORT_THE_RAIDMOTHER")  then
-- DEVOTION : {R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "COLDEYED_SELKIE") or (dVal == "GILDER_BAIRN") or (dVal == "SIMIC_GUILDMAGE") or (dVal == "MERFOLK_OF_THE_DEPTHS") or (dVal == "TRAPJAW_KELPIE") then
-- DEVOTION : {G/U}{G/U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "SELESNYA_GUILDMAGE") or (dVal == "WHEEL_OF_SUN_AND_MOON") or (dVal == "KITCHEN_FINKS") or (dVal == "GROWING_RANKS") or (dVal == "HEARTMENDER") or (dVal == "RAVENS_RUN_DRAGOON") or (dVal == "OLD_GHASTBARK") then
-- DEVOTION : {G/W}G/W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "DEATHBRINGER_LIEGE") or (dVal == "DEBTORS_KNELL") or (dVal == "RESTLESS_APPARITION") then
-- DEVOTION : {W/B}{W/B}{W/B}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "DOVESCAPE") or (dVal == "PLUMEVEIL") or (dVal == "THISTLEDOWN_LIEGE") then
-- DEVOTION : {W/U}{W/U}{W/U}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "ASHENMOOR_GOUGER") or (dVal == "ASHENMOOR_LIEGE") or (dVal == "AVATAR_OF_DISCORD") or (dVal == "BARRENTON_CRAGTREADS") then
-- DEVOTION : {B/R}{B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "BALEFIRE_LIEGE") or (dVal == "BOROS_RECKONER") or (dVal == "HEARTHFIRE_HOBGOBLIN") then
-- DEVOTION : {R/W}{R/W}{R/W}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,3)
elseif (dVal == "BOARTUSK_LIEGE") or (dVal == "BOGGART_RAMGANG") or (dVal == "RUBBLEBELT_RAIDERS") or (dVal == "LOAMDRAGGER_GIANT") then
-- DEVOTION : {R/G}{R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "CRAG_PUCA") or (dVal == "MINDWRACK_LIEGE") then
-- DEVOTION : {U/R}{U/R}{U/R}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,3)
elseif (dVal == "GLEN_ELENDRA_LIEGE") or (dVal == "NIGHTVEIL_SPECTER") or (dVal == "WASP_LANCER") or (dVal == "OONA_QUEEN_OF_THE_FAE") then
-- DEVOTION : {U/B}{U/B}{U/B}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "CREAKWOOD_LIEGE") or (dVal == "DOOMGAPE") or (dVal == "GLEANCRAWLER") or (dVal == "STALKER_HAG") then
-- DEVOTION : {B/G}{B/G}B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "FABLE_OF_WOLF_AND_OWL") or (dVal == "WISTFUL_SELKIE") or (dVal == "MURKFIEND_LIEGE") then
-- DEVOTION : {G/U}{G/U}{G/U}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "WILTLEAF_CAVALIERS") or (dVal == "WILTLEAF_LIEGE") or (dVal == "PRIVILEGED_POSITION")   then
-- DEVOTION : {G/W}{G/W}{G/W}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "NOBILIS_OF_WAR")  then
-- DEVOTION : {R/W}{R/W}{R/W}{R/W}{R/W}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,5)
elseif (dVal == "DEITY_OF_SCARS") then
-- DEVOTION : {B/G}{B/G}B/G}{B/G}B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "DEMIGOD_OF_REVENGE")  then
-- DEVOTION : {B/R}{B/R}{B/R}{B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "DEUS_OF_CALAMITY")  then
-- DEVOTION : {R/G}{R/G}{R/G}{R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "DIVINITY_OF_PRIDE")  then
-- DEVOTION : {W/B}{W/B}{W/B}W/B}{W/B}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "GODHEAD_OF_AWE") then
-- DEVOTION : {W/U}{W/U}{W/U}{W/U}{W/U}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "DOMINUS_OF_FEALTY") then
-- DEVOTION : {U/R}{U/R}{U/R}{U/R}{U/R}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,5)
elseif (dVal == "GHASTLORD_OF_FUGUE")  then
-- DEVOTION : {U/B}{U/B}{U/B}{U/B}{U/B}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "REAPER_KING")  then
-- DEVOTION : {X/W}{X/U}{X/B}{X/R}{X/G}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "OVERBEING_OF_MYTH")  then
-- DEVOTION : {G/U}{G/U}{G/U}{G/U}{G/U}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "OVERSOUL_OF_DUSK")   then
-- DEVOTION : {G/W}{G/W}{G/W}{G/W}{G/W}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
end

  return dChest:Get_Int(DevotionType)
end


Return_Dual_DeVotion_Index = function(nColourA, nColourB)
local val = 10
if nColourA == COLOUR_WHITE and nColourB == COLOUR_BLUE then
   val = 0
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_WHITE then
   val = 0
elseif nColourA == COLOUR_WHITE and nColourB == COLOUR_BLACK then
   val = 1
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_WHITE then
   val = 1
elseif nColourA == COLOUR_WHITE and nColourB == COLOUR_RED then
   val = 2
elseif nColourA == COLOUR_RED and nColourB == COLOUR_WHITE then
   val = 2
elseif nColourA == COLOUR_WHITE and nColourB == COLOUR_GREEN then
   val = 3
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_WHITE then
   val = 3
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_BLACK then
   val = 4
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_BLUE then
   val = 4
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_RED then
   val = 5
elseif nColourA == COLOUR_RED and nColourB == COLOUR_BLUE then
   val = 5
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_GREEN then
   val = 6
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_BLUE then
   val = 6
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_RED then
   val = 7
elseif nColourA == COLOUR_RED and nColourB == COLOUR_BLACK then
   val = 7
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_GREEN then
   val = 8
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_BLACK then
   val = 8
elseif nColourA == COLOUR_RED and nColourB == COLOUR_GREEN then
   val = 9
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_RED then
   val = 9
 end
  return val
end


Devotion_Player_Col_A_Col_B = function(nColourA, nColourB, nPlayer)
  local PDevotion = 0
  local cmc = 0
  local filter = ClearFilter()
   local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_LAND )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
   filter:Add( FE_CONTROLLER, OP_IS, nPlayer )
   filter:SetZone( ZONE_BATTLEFIELD )
   local filter_count = filter:EvaluateObjects()
   local devchest = EffectDC():Make_Chest(0)
   local Tempchest = EffectDC():Make_Chest(1)
   local index = Return_Dual_DeVotion_Index(nColourA, nColourB)
   for i=0, (filter_count-1) do
       local permanent = filter:GetNthEvaluatedObject(i)
       if permanent ~= nil then
          devchest:Set_CardPtr(i, permanent)
       end
   end     
   for i=0, (filter_count-1) do
       local permanent = devchest:Get_CardPtr(i)
       if permanent ~= nil then
          cmc = permanent:GetConvertedManaCost()
          local DevA = ColourManaCountIntoCardIntoZone(nColourA, permanent, nPlayer, ZONE_BATTLEFIELD)
          local DevB = ColourManaCountIntoCardIntoZone(nColourB, permanent, nPlayer, ZONE_BATTLEFIELD)
          local ClessDev = ColourManaCountIntoCardIntoZone(COLOUR_COLOURLESS, permanent, nPlayer, ZONE_BATTLEFIELD)
          local devotion = DevA + DevB
          local Difference = cmc - ClessDev
          if Difference >= devotion then
             Tempchest:Set_Int(i, devotion)
          else
         local Pname = permanent:GetCardName()
         local OBDevotion = NEO_ReturnDualDevotion(Pname, index)
         Tempchest:Set_Int(i, OBDevotion)
         end
       end
   end
   for i=0, (filter_count-1) do
   PDevotion = PDevotion + Tempchest:Get_Int(i)
   end
   return PDevotion
end


ColourManaCountIntoCardIntoZone = function(nColour, nCard, nPlayer, nZone)
local filter = ClearFilter()
    local CurrentChromaCount = 0
         if nCard ~= nil then
        filter:Clear()
             local filter = ClearFilter()
        filter:SetZone(nZone, nPlayer)
             filter:Add(FE_CARD_INSTANCE, OP_IS, nCard)
             CurrentChromaCount =  filter:ChromaCount(nColour)
               if (CurrentChromaCount > 0) then
                   return CurrentChromaCount
               else
                   return 0
               end
        else
       return 0
        end
end
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby RiiakShiNal » 27 Aug 2014, 10:53

You're going to have some problems with your version unless you fix some things.
  • TOKEN_REGISTRATION needs to be in the card not in the ability. So you need to move it outside of the TRIGGERED_ABILITY otherwise you will have crashes.
  • You should not produce mana in a TRIGGER (no way to prevent duplicate tokens or properly clean up.
  • You need to return true for all untapped tokens trying to leave play, but only override the event for colourless tokens. You can also set an EffectDC() register at this point to keep from having to check the card name if you want (I recommend doing this as it will make later checks a bit easier). Only return false if it is not a mana token.
  • You don't need replacement_query or linked_ability_group since you don't ask the user a question and you aren't using LinkedDC().
  • Since this is a TRIGGERED_ABILITY you don't need RSN_MarkManaAbilityStart() or RSN_MarkManaAbilityEnd().
  • In a RESOLUTION_TIME_ACTION you will check to see if the card is not a colourless token (or check the EffectDC() register if you set it in the trigger) and if it isn't create a colourless token using RSN_ProduceNoTrigger() (like you are).
  • In a second RESOLUTION_TIME_ACTION you will need to first check if it is a colourless token (or check the EffectDC() register) then if not use RSN_EliminateExtraManaTokens() to prevent any extra tokens that may have been created from hanging around (like from Doubling Season).
  • You will need another TRIGGERED_ABILITY to clear the produced mana like this:
    Code: Select all
       <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
          <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
          <RESOLUTION_TIME_ACTION>
             RSN_ClearProducedMana()
          </RESOLUTION_TIME_ACTION>
       </TRIGGERED_ABILITY>
RiiakShiNal
Programmer
 
Posts: 2185
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 496 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby gorem2k » 27 Aug 2014, 12:23

test | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="KRUPHIX_GOD_OF_HORIZONS_444380446" />
  <CARDNAME text="KRUPHIX_GOD_OF_HORIZONS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Kruphix, God of Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Kruphix, dieu des Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Krufix, dios de los horizontes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kruphix, Gott der Horizonte]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Krufix, Dio degli Orizzonti]]></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[Crufix, Deus dos Horizontes]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="444380446" />
  <ARTID value="444380446" />
  <ARTIST name="Daarken" />
  <CASTING_COST cost="{3}{G}{U}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Enchantment" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="God" />
  <EXPANSION value="JOU" />
  <RARITY metaname="M" />
  <POWER value="4" />
  <TOUGHNESS value="7" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Unzerstörbar]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Indistruttibile]]></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[Indestrutível]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to green and blue is less than seven, Kruphix isn’t a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que votre dévotion au vert et au bleu est inférieure à sept, Kruphix n’est pas une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras tu devoción al verde y al azul sea menor que siete, Krufix no es una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange deine Hingabe zu Grün und Blau weniger als sieben beträgt, ist Kruphix keine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la tua devozione al verde e al blu è inferiore a sette, Krufix non è una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたの緑と青への信心が7未満であるかぎり、彼方の神、クルフィックスはクリーチャーではない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신의 녹청 신앙심이 7 미만인 한, 크루픽스는 생물이 아니다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока ваша Преданность зеленому и синему меньше семи, Круфикс не является существом.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto sua devoção ao verde e ao azul for menor que sete, Crufix não será uma criatura.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
    local source = EffectSource()
    if source ~= nil then
        local WBDevotion = Devotion_Player_Col_A_Col_B(COLOUR_RED, COLOUR_WHITE, EffectController())
        if WBDevotion &lt; 7 then
           local characteristics = source:GetCurrentCharacteristics()
           local card_type = characteristics:CardType_GetWritable()
           local sub_type = characteristics:SubType_GetWritable()
           sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
           card_type:Clear()
           card_type:Add( CARD_TYPE_ENCHANTMENT )
        end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You have no maximum hand size.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Il n’y a pas de limite au nombre de cartes dans votre main.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tu mano no tiene tamaño máximo.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Es gibt keine Obergrenze für die Anzahl an Karten, die du auf der Hand halten darfst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Non hai un limite massimo di carte nella tua mano.]]></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[Não há limite para o número máximo de cards em sua mão.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="8">
    EffectController():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_NO_HAND_LIMIT, 1)
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Si du mana inutilisé devait être vidé de votre réserve, ce mana devient incolore à la place.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Si fuera a vaciarse maná no utilizado de tu reserva de maná, en vez de eso, ese maná se convierte en incoloro.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls unverbrauchtes Mana aus deinem Manavorrat entfernt würde, wird dieses Mana stattdessen farblos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Se del mana inutilizzato sta per essere rimosso dalla tua riserva di mana, quel mana diventa invece incolore.]]></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[Se o mana não usado for ser esvaziado da sua reserva de mana, em vez disso, aquele mana se tornará incolor.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          RSN_ProduceNoTrigger( "{1}", 1 )
       end
    end
    return false
    </TRIGGER>
  </TRIGGERED_ABILITY>

  <!-- OPTIONAL MANA DISPLAY ABILITY -->
  <STATIC_ABILITY>
    <CONTINUOUS_ACTION layer="8">
    if EffectSource() ~= nil then
       EffectSource():GetCurrentCharacteristics():GrantAbility(1)
    end
    </CONTINUOUS_ACTION>
    <DURATION>
    return EffectSource() == nil
    </DURATION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY resource_id="1" forced_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <AVAILABILITY>
    local filter = ClearFilter()
    filter:Set_And()
    filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
    local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_C" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_B" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_U" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_G" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_R" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_W" )
    return filter:CountStopAt(1) == 1
    </AVAILABILITY>
    <RESOLUTION_TIME_ACTION>
    -- G2K_DisplayManaPool(EffectController())
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>

   <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
      <RESOLUTION_TIME_ACTION>
         RSN_ClearProducedMana()
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="1500" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
I know it's not fixing everything RSN said but it's getting there...
How can you produce mana outside of a triggered_ab/activated_ab or spell_ab ?
oops, I misread trigger with triggered. ok so you put RTAs after the </TRIGGER>.

where do I put an EffectDC() to skip name check? | Open
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local mtName = TriggerObject():GetCardName()
    ...
like this? | Open
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          EffectDC():Set_CardPtr(0, TriggerObject() )
          EffectDC():Protect_CardPtr(0)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local mtName = EffectDC():Get_CardPtr(0):GetCardName()
    if mtName ~= "TOKEN_MANA_C" then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local mtName = EffectDC():Get_CardPtr(0):GetCardName()
    if mtName ~= "TOKEN_MANA_C" then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
ok this works: | Open
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) and mtName ~= "TOKEN_MANA_C" then
          EffectDC():Set_CardPtr(0, TriggerObject() )
          EffectDC():Protect_CardPtr(0)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_CardPtr(0)
    if card ~= nil and card:GetCardName() ~= "TOKEN_MANA_C" then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_CardPtr(0)
    if card ~= nil and card:GetCardName() ~= "TOKEN_MANA_C" then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Last edited by gorem2k on 27 Aug 2014, 13:12, edited 7 times in total.
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby NeoAnderson » 27 Aug 2014, 12:49

RiiakShiNal wrote:You're going to have some problems with your version unless you fix some things.
  • TOKEN_REGISTRATION needs to be in the card not in the ability. So you need to move it outside of the TRIGGERED_ABILITY otherwise you will have crashes.
  • You should not produce mana in a TRIGGER (no way to prevent duplicate tokens or properly clean up.
  • You need to return true for all untapped tokens trying to leave play, but only override the event for colourless tokens. You can also set an EffectDC() register at this point to keep from having to check the card name if you want (I recommend doing this as it will make later checks a bit easier). Only return false if it is not a mana token.
  • You don't need replacement_query or linked_ability_group since you don't ask the user a question and you aren't using LinkedDC().
  • Since this is a TRIGGERED_ABILITY you don't need RSN_MarkManaAbilityStart() or RSN_MarkManaAbilityEnd().
  • In a RESOLUTION_TIME_ACTION you will check to see if the card is not a colourless token (or check the EffectDC() register if you set it in the trigger) and if it isn't create a colourless token using RSN_ProduceNoTrigger() (like you are).
  • In a second RESOLUTION_TIME_ACTION you will need to first check if it is a colourless token (or check the EffectDC() register) then if not use RSN_EliminateExtraManaTokens() to prevent any extra tokens that may have been created from hanging around (like from Doubling Season).
  • You will need another TRIGGERED_ABILITY to clear the produced mana like this:
    Code: Select all
       <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
          <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
          <RESOLUTION_TIME_ACTION>
             RSN_ClearProducedMana()
          </RESOLUTION_TIME_ACTION>
       </TRIGGERED_ABILITY>
Thanks for you kind attention my friend. You're the master of Mana! :lol:
Here you can find the modified trigger :

Code: Select all
<TRIGGERED_ABILITY replacement_effect="1">
   <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
   if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
      EffectDC():Set_Int(20, 0)
           if (TriggerObject():GetCardName() == "TOKEN_MANA_C") then
       MTG():OverrideEvent()
      return true
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_W") or (TriggerObject():GetCardName() == "TOKEN_MANA_U") or (TriggerObject():GetCardName() == "TOKEN_MANA_U") or (TriggerObject():GetCardName() == "TOKEN_MANA_R") or TriggerObject():GetCardName() == "TOKEN_MANA_B") or (TriggerObject():GetCardName() == "TOKEN_MANA_G") then
                EffectDC():Set_Int(20, 1)
      return true
      end   
        end
   return false
      </TRIGGER>
   <RESOLUTION_TIME_ACTION>
          local value = EffectDC():Get_Int(20)
          if value == 1 then
         RSN_ProduceNoTrigger( "{1}", 1 )   
          end
       </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
          local value = EffectDC():Get_Int(20)
          if value == 1 then
      RSN_EliminateExtraManaTokens()
          end
   </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>

   <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
      <RESOLUTION_TIME_ACTION>
         RSN_ClearProducedMana()
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="1500" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
Here there is the revised card :
Kruphix, God of Horizons Neo Rev 2.0 | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="JOU_152_NEO_KRUPHIX_GOD_OF_HORIZONS_995380446" />
  <CARDNAME text="KRUPHIX_GOD_OF_HORIZONS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Kruphix, God of Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Kruphix, dieu des Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Krufix, dios de los horizontes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kruphix, Gott der Horizonte]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Krufix, Dio degli Orizzonti]]></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[Crufix, Deus dos Horizontes]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="995380446" />
  <ARTID value="995380446" />
  <ARTIST name="Daarken" />
  <CASTING_COST cost="{3}{G}{U}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Enchantment" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="God" />
  <EXPANSION value="JOU" />
  <RARITY metaname="M" />
  <POWER value="4" />
  <TOUGHNESS value="7" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Unzerstörbar]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Indistruttibile]]></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[Indestrutível]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to green and blue is less than seven, Kruphix isn’t a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que votre dévotion au vert et au bleu est inférieure à sept, Kruphix n’est pas une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras tu devoción al verde y al azul sea menor que siete, Krufix no es una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange deine Hingabe zu Grün und Blau weniger als sieben beträgt, ist Kruphix keine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la tua devozione al verde e al blu è inferiore a sette, Krufix non è una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたの緑と青への信心が7未満であるかぎり、彼方の神、クルフィックスはクリーチャーではない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신의 녹청 신앙심이 7 미만인 한, 크루픽스는 생물이 아니다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока ваша Преданность зеленому и синему меньше семи, Круфикс не является существом.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto sua devoção ao verde e ao azul for menor que sete, Crufix não será uma criatura.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
     local source = EffectSource()
     if source ~= nil then
        local WBDevotion = Devotion_Player_Col_A_Col_B(COLOUR_GREEN, COLOUR_BLUE, EffectController())
        if WBDevotion &lt; 7 then
           local characteristics = source:GetCurrentCharacteristics()
           local card_type = characteristics:CardType_GetWritable()
           local sub_type = characteristics:SubType_GetWritable()
           sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
           card_type:Clear()
           card_type:Add( CARD_TYPE_ENCHANTMENT )
        end
    end
  </CONTINUOUS_ACTION>
  </STATIC_ABILITY>

  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You have no maximum hand size.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Il n’y a pas de limite au nombre de cartes dans votre main.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tu mano no tiene tamaño máximo.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Es gibt keine Obergrenze für die Anzahl an Karten, die du auf der Hand halten darfst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Non hai un limite massimo di carte nella tua mano.]]></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[Não há limite para o número máximo de cards em sua mão.]]></LOCALISED_TEXT>
     <CONTINUOUS_ACTION layer="8">
         EffectController():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_NO_HAND_LIMIT, 1)
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Si du mana inutilisé devait être vidé de votre réserve, ce mana devient incolore à la place.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Si fuera a vaciarse maná no utilizado de tu reserva de maná, en vez de eso, ese maná se convierte en incoloro.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls unverbrauchtes Mana aus deinem Manavorrat entfernt würde, wird dieses Mana stattdessen farblos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Se del mana inutilizzato sta per essere rimosso dalla tua riserva di mana, quel mana diventa invece incolore.]]></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[Se o mana não usado for ser esvaziado da sua reserva de mana, em vez disso, aquele mana se tornará incolor.]]></LOCALISED_TEXT>
  </STATIC_ABILITY>


<TRIGGERED_ABILITY replacement_effect="1">
   <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
   if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
      EffectDC():Set_Int(20, 0)
           if (TriggerObject():GetCardName() == "TOKEN_MANA_C") then
       MTG():OverrideEvent()
      return true
              elseif (TriggerObject():GetCardName() == "TOKEN_MANA_W") or (TriggerObject():GetCardName() == "TOKEN_MANA_U") or (TriggerObject():GetCardName() == "TOKEN_MANA_U") or (TriggerObject():GetCardName() == "TOKEN_MANA_R") or TriggerObject():GetCardName() == "TOKEN_MANA_B") or (TriggerObject():GetCardName() == "TOKEN_MANA_G") then
                EffectDC():Set_Int(20, 1)
      return true
      end   
        end
   return false
      </TRIGGER>
   <RESOLUTION_TIME_ACTION>
          local value = EffectDC():Get_Int(20)
          if value == 1 then
         RSN_ProduceNoTrigger( "{1}", 1 )   
          end
       </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
          local value = EffectDC():Get_Int(20)
          if value == 1 then
      RSN_EliminateExtraManaTokens()
          end
   </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>

   <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
      <RESOLUTION_TIME_ACTION>
         RSN_ClearProducedMana()
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>

  <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="1500" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
DualDevotion colour check fixed, thanks gorem2k for the advice.
Last edited by NeoAnderson on 28 Aug 2014, 05:38, edited 1 time in total.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby RiiakShiNal » 28 Aug 2014, 00:20

gorem2k wrote:
test | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="KRUPHIX_GOD_OF_HORIZONS_444380446" />
  <CARDNAME text="KRUPHIX_GOD_OF_HORIZONS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Kruphix, God of Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Kruphix, dieu des Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Krufix, dios de los horizontes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kruphix, Gott der Horizonte]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Krufix, Dio degli Orizzonti]]></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[Crufix, Deus dos Horizontes]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="444380446" />
  <ARTID value="444380446" />
  <ARTIST name="Daarken" />
  <CASTING_COST cost="{3}{G}{U}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Enchantment" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="God" />
  <EXPANSION value="JOU" />
  <RARITY metaname="M" />
  <POWER value="4" />
  <TOUGHNESS value="7" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Unzerstörbar]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Indistruttibile]]></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[Indestrutível]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to green and blue is less than seven, Kruphix isn’t a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que votre dévotion au vert et au bleu est inférieure à sept, Kruphix n’est pas une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras tu devoción al verde y al azul sea menor que siete, Krufix no es una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange deine Hingabe zu Grün und Blau weniger als sieben beträgt, ist Kruphix keine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la tua devozione al verde e al blu è inferiore a sette, Krufix non è una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたの緑と青への信心が7未満であるかぎり、彼方の神、クルフィックスはクリーチャーではない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신의 녹청 신앙심이 7 미만인 한, 크루픽스는 생물이 아니다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока ваша Преданность зеленому и синему меньше семи, Круфикс не является существом.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto sua devoção ao verde e ao azul for menor que sete, Crufix não será uma criatura.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
    local source = EffectSource()
    if source ~= nil then
        local WBDevotion = Devotion_Player_Col_A_Col_B(COLOUR_RED, COLOUR_WHITE, EffectController())
        if WBDevotion &lt; 7 then
           local characteristics = source:GetCurrentCharacteristics()
           local card_type = characteristics:CardType_GetWritable()
           local sub_type = characteristics:SubType_GetWritable()
           sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
           card_type:Clear()
           card_type:Add( CARD_TYPE_ENCHANTMENT )
        end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You have no maximum hand size.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Il n’y a pas de limite au nombre de cartes dans votre main.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tu mano no tiene tamaño máximo.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Es gibt keine Obergrenze für die Anzahl an Karten, die du auf der Hand halten darfst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Non hai un limite massimo di carte nella tua mano.]]></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[Não há limite para o número máximo de cards em sua mão.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="8">
    EffectController():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_NO_HAND_LIMIT, 1)
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Si du mana inutilisé devait être vidé de votre réserve, ce mana devient incolore à la place.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Si fuera a vaciarse maná no utilizado de tu reserva de maná, en vez de eso, ese maná se convierte en incoloro.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls unverbrauchtes Mana aus deinem Manavorrat entfernt würde, wird dieses Mana stattdessen farblos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Se del mana inutilizzato sta per essere rimosso dalla tua riserva di mana, quel mana diventa invece incolore.]]></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[Se o mana não usado for ser esvaziado da sua reserva de mana, em vez disso, aquele mana se tornará incolor.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          RSN_ProduceNoTrigger( "{1}", 1 )
       end
    end
    return false
    </TRIGGER>
  </TRIGGERED_ABILITY>

  <!-- OPTIONAL MANA DISPLAY ABILITY -->
  <STATIC_ABILITY>
    <CONTINUOUS_ACTION layer="8">
    if EffectSource() ~= nil then
       EffectSource():GetCurrentCharacteristics():GrantAbility(1)
    end
    </CONTINUOUS_ACTION>
    <DURATION>
    return EffectSource() == nil
    </DURATION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY resource_id="1" forced_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <AVAILABILITY>
    local filter = ClearFilter()
    filter:Set_And()
    filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
    local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_C" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_B" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_U" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_G" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_R" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_W" )
    return filter:CountStopAt(1) == 1
    </AVAILABILITY>
    <RESOLUTION_TIME_ACTION>
    -- G2K_DisplayManaPool(EffectController())
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>

   <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
      <RESOLUTION_TIME_ACTION>
         RSN_ClearProducedMana()
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="1500" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
I know it's not fixing everything RSN said but it's getting there...
How can you produce mana outside of a triggered_ab/activated_ab or spell_ab ?
oops, I misread trigger with triggered. ok so you put RTAs after the </TRIGGER>.
Yep, still inside the TRIGGERED_ABILITY so that they actually run.

gorem2k wrote:
where do I put an EffectDC() to skip name check? | Open
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local mtName = TriggerObject():GetCardName()
    ...
like this? | Open
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          EffectDC():Set_CardPtr(0, TriggerObject() )
          EffectDC():Protect_CardPtr(0)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local mtName = EffectDC():Get_CardPtr(0):GetCardName()
    if mtName ~= "TOKEN_MANA_C" then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local mtName = EffectDC():Get_CardPtr(0):GetCardName()
    if mtName ~= "TOKEN_MANA_C" then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
ok this works: | Open
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) and mtName ~= "TOKEN_MANA_C" then
          EffectDC():Set_CardPtr(0, TriggerObject() )
          EffectDC():Protect_CardPtr(0)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_CardPtr(0)
    if card ~= nil and card:GetCardName() ~= "TOKEN_MANA_C" then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_CardPtr(0)
    if card ~= nil and card:GetCardName() ~= "TOKEN_MANA_C" then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Actually, I meant something more like this:
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
      EffectDC():Int_Set(50, 1)
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) and mtName ~= "TOKEN_MANA_C" then
          return true
       end
    end
    return false
    </TRIGGER>
That way you only have to check an int and don't have to worry about card pointers.
RiiakShiNal
Programmer
 
Posts: 2185
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 496 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby NeoAnderson » 28 Aug 2014, 01:28

RiiakShiNal wrote:
gorem2k wrote:
test | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="KRUPHIX_GOD_OF_HORIZONS_444380446" />
  <CARDNAME text="KRUPHIX_GOD_OF_HORIZONS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Kruphix, God of Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Kruphix, dieu des Horizons]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Krufix, dios de los horizontes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kruphix, Gott der Horizonte]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Krufix, Dio degli Orizzonti]]></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[Crufix, Deus dos Horizontes]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="444380446" />
  <ARTID value="444380446" />
  <ARTIST name="Daarken" />
  <CASTING_COST cost="{3}{G}{U}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Enchantment" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="God" />
  <EXPANSION value="JOU" />
  <RARITY metaname="M" />
  <POWER value="4" />
  <TOUGHNESS value="7" />
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Indestructible.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Unzerstörbar]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Indistruttibile]]></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[Indestrutível]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to green and blue is less than seven, Kruphix isn’t a creature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tant que votre dévotion au vert et au bleu est inférieure à sept, Kruphix n’est pas une créature.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Mientras tu devoción al verde y al azul sea menor que siete, Krufix no es una criatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Solange deine Hingabe zu Grün und Blau weniger als sieben beträgt, ist Kruphix keine Kreatur.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la tua devozione al verde e al blu è inferiore a sette, Krufix non è una creatura.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたの緑と青への信心が7未満であるかぎり、彼方の神、クルフィックスはクリーチャーではない。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신의 녹청 신앙심이 7 미만인 한, 크루픽스는 생물이 아니다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пока ваша Преданность зеленому и синему меньше семи, Круфикс не является существом.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Enquanto sua devoção ao verde e ao azul for menor que sete, Crufix não será uma criatura.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
    local source = EffectSource()
    if source ~= nil then
        local WBDevotion = Devotion_Player_Col_A_Col_B(COLOUR_RED, COLOUR_WHITE, EffectController())
        if WBDevotion &lt; 7 then
           local characteristics = source:GetCurrentCharacteristics()
           local card_type = characteristics:CardType_GetWritable()
           local sub_type = characteristics:SubType_GetWritable()
           sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
           card_type:Clear()
           card_type:Add( CARD_TYPE_ENCHANTMENT )
        end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You have no maximum hand size.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Il n’y a pas de limite au nombre de cartes dans votre main.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tu mano no tiene tamaño máximo.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Es gibt keine Obergrenze für die Anzahl an Karten, die du auf der Hand halten darfst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Non hai un limite massimo di carte nella tua mano.]]></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[Não há limite para o número máximo de cards em sua mão.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="8">
    EffectController():GetCurrentCharacteristics():Bool_Set(PLAYER_CHARACTERISTIC_NO_HAND_LIMIT, 1)
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Si du mana inutilisé devait être vidé de votre réserve, ce mana devient incolore à la place.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Si fuera a vaciarse maná no utilizado de tu reserva de maná, en vez de eso, ese maná se convierte en incoloro.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls unverbrauchtes Mana aus deinem Manavorrat entfernt würde, wird dieses Mana stattdessen farblos.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Se del mana inutilizzato sta per essere rimosso dalla tua riserva di mana, quel mana diventa invece incolore.]]></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[Se o mana não usado for ser esvaziado da sua reserva de mana, em vez disso, aquele mana se tornará incolor.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          RSN_ProduceNoTrigger( "{1}", 1 )
       end
    end
    return false
    </TRIGGER>
  </TRIGGERED_ABILITY>

  <!-- OPTIONAL MANA DISPLAY ABILITY -->
  <STATIC_ABILITY>
    <CONTINUOUS_ACTION layer="8">
    if EffectSource() ~= nil then
       EffectSource():GetCurrentCharacteristics():GrantAbility(1)
    end
    </CONTINUOUS_ACTION>
    <DURATION>
    return EffectSource() == nil
    </DURATION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY resource_id="1" forced_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Display your mana pool.]]></LOCALISED_TEXT>
    <AVAILABILITY>
    local filter = ClearFilter()
    filter:Set_And()
    filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
    local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_C" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_B" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_U" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_G" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_R" )
      subfilter:Add( FE_CARD_NAME, OP_IS, "TOKEN_MANA_W" )
    return filter:CountStopAt(1) == 1
    </AVAILABILITY>
    <RESOLUTION_TIME_ACTION>
    -- G2K_DisplayManaPool(EffectController())
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>

   <TRIGGERED_ABILITY forced_skip="1" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_STEP" pre_trigger="1" />
      <RESOLUTION_TIME_ACTION>
         RSN_ClearProducedMana()
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
  <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="1500" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
I know it's not fixing everything RSN said but it's getting there...
How can you produce mana outside of a triggered_ab/activated_ab or spell_ab ?
oops, I misread trigger with triggered. ok so you put RTAs after the </TRIGGER>.
Yep, still inside the TRIGGERED_ABILITY so that they actually run.

gorem2k wrote:
where do I put an EffectDC() to skip name check? | Open
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local mtName = TriggerObject():GetCardName()
    ...
like this? | Open
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[If unused mana would empty from your mana pool, that mana becomes colorless instead.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) then
          EffectDC():Set_CardPtr(0, TriggerObject() )
          EffectDC():Protect_CardPtr(0)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local mtName = EffectDC():Get_CardPtr(0):GetCardName()
    if mtName ~= "TOKEN_MANA_C" then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local mtName = EffectDC():Get_CardPtr(0):GetCardName()
    if mtName ~= "TOKEN_MANA_C" then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
ok this works: | Open
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) and mtName ~= "TOKEN_MANA_C" then
          EffectDC():Set_CardPtr(0, TriggerObject() )
          EffectDC():Protect_CardPtr(0)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_CardPtr(0)
    if card ~= nil and card:GetCardName() ~= "TOKEN_MANA_C" then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local card = EffectDC():Get_CardPtr(0)
    if card ~= nil and card:GetCardName() ~= "TOKEN_MANA_C" then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Actually, I meant something more like this:
Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
      EffectDC():Int_Set(50, 1)
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) and mtName ~= "TOKEN_MANA_C" then
          return true
       end
    end
    return false
    </TRIGGER>
That way you only have to check an int and don't have to worry about card pointers.

But why you are setting the EffectDC():Int_Set(50, 1) when it found the colourless untapped token? You should move into elseif when he found an untapped coloured mana token.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby gorem2k » 28 Aug 2014, 02:07

I think he meant to put it after the elseif like you did.

Code: Select all
    <TRIGGER value="ZONECHANGE_CONSIDERED" simple_qualifier="objectyoucontrol" to_zone="ZONE_ANY" from_zone="ZONE_BATTLEFIELD" pre_trigger="1">
    if (TriggerObject() ~= nil) and (TriggerObject():IsTapped() == false) then
       local mtName = TriggerObject():GetCardName()
       EffectDC():Int_Clear(-23528937598792834)
       if (mtName == "TOKEN_MANA_C") then
          MTG():OverrideEvent()
          return true
       elseif string.match( mtName, "TOKEN_MANA_" ) and mtName ~= "TOKEN_MANA_C" then
          EffectDC():Int_Set(-23528937598792834, 1)
          return true
       end
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    if EffectDC():Get_Int(-23528937598792834) == 1 then
       RSN_ProduceNoTrigger( "{1}", 1 )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    if EffectDC():Get_Int(-23528937598792834) == 1 then
       RSN_EliminateExtraManaTokens()
    end
    </RESOLUTION_TIME_ACTION>
hey Neo, your Kruphix, God of Horizons is checking for red and white color devotion while it should check for green and blue.
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby NeoAnderson » 28 Aug 2014, 02:31

gorem2k wrote:hey Neo, your Kruphix, God of Horizons is checking for red and white color devotion while it should check for green and blue.
OMG my eyes probably are gone!!! 8) Fixed into the Full pack! Thanks a lot my friend!
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby RiiakShiNal » 28 Aug 2014, 23:08

NeoAnderson wrote:But why you are setting the EffectDC():Int_Set(50, 1) when it found the colourless untapped token? You should move into elseif when he found an untapped coloured mana token.
It doesn't matter on which one you put it. If you set it for colourless then you just do a negative check:
Code: Select all
if (EffectDC():Int_Get(50) ~= 1) then
If you set it for other mana tokens then you do a positive check:
Code: Select all
if (EffectDC():Int_Get(50) == 1) then
Regardless because you only return true in the trigger for mana tokens you don't have to worry about any other cards.
RiiakShiNal
Programmer
 
Posts: 2185
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 496 times

Re: Question about Mana pool (Kruphix, God of Horizons)

Postby NeoAnderson » 29 Aug 2014, 04:55

RiiakShiNal wrote:
NeoAnderson wrote:But why you are setting the EffectDC():Int_Set(50, 1) when it found the colourless untapped token? You should move into elseif when he found an untapped coloured mana token.
It doesn't matter on which one you put it. If you set it for colourless then you just do a negative check:
Code: Select all
if (EffectDC():Int_Get(50) ~= 1) then
If you set it for other mana tokens then you do a positive check:
Code: Select all
if (EffectDC():Int_Get(50) == 1) then
Regardless because you only return true in the trigger for mana tokens you don't have to worry about any other cards.
You're right is obvious that if you invert the if condition will be ok, anyway please could you come to see the other topic about overload? Your help, also the help Firemind will be really appreciated we are really close to have a good approximation, i have just to make a little fix!
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times


Return to Programming Talk

Who is online

Users browsing this forum: No registered users and 26 guests


Who is online

In total there are 26 users online :: 0 registered, 0 hidden and 26 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 26 guests

Login Form