It is currently 11 May 2025, 03:13
   
Text Size

Coding Mana Bloom

Moderator: CCGHQ Admins

Coding Mana Bloom

Postby Zarroc » 06 Aug 2013, 18:19

Hi to everyone

After lurking around couple of months, i finally decided to code some cards :mrgreen: I started coding Mana Bloom and most of the code works fine but i am struggling with "Activate this ability only once each turn."

Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="MANA_BLOOM_500253592" />
  <CARDNAME text="MANA_BLOOM" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Mana Bloom]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Floraison de mana]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Florecimiento de maná]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Manablüte]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fioritura di Mana]]></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[Florescência de Mana]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="500253592" />
  <ARTID value="500253592" />
  <ARTIST name="Mike Bierek" />
  <CASTING_COST cost="{X}{G}" />
  <TYPE metaname="Enchantment" />
  <EXPANSION value="RTR" />
  <RARITY metaname="R" />
  <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_TRANSITION">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Mana Bloom enters the battlefield with X charge counters on it.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[La Floraison de mana arrive sur le champ de bataille avec X marqueurs « charge » sur elle.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[El Florecimiento de maná entra al campo de batalla con X contadores de carga sobre él.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Die Manablüte kommt mit X Ladungsmarken ins Spiel.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[La Fioritura di Mana entra nel campo di battaglia con X segnalini carica.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[マナの花は、蓄積カウンターがX個置かれた状態で戦場に出る。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[마나 만발은 충전 카운터 X개를 가진 채로 전장에 들어온다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Расцвет Маны выходит на поле битвы с X жетонами заряда на нем.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Florescência de Mana entra no campo de batalha com X marcadores de carga.]]></LOCALISED_TEXT>
    <COUNTER_REGISTRATION name="Charge" proliferate="11" />
    <TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" />
    <RESOLUTION_TIME_ACTION>
      if EffectSource() ~= nil then
        RSN_GetObjectDC(EffectSource(), true):Int_Set(0,0)
         EffectSource():AddCounters( MTG():GetCountersType("Charge"), EffectSource():GetPaidX())
      end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Remove a charge counter from Mana Bloom: Add one mana of any color to your mana pool. Activate this ability only once each turn.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Retirez un marqueur « charge » de la Floraison de mana : Ajoutez un mana de la couleur de votre choix à votre réserve. N’activez cette capacité qu’une seule fois par tour.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Remover un contador de carga del Florecimiento de maná: Agrega un maná de cualquier color a tu reserva de maná. Activa esta habilidad sólo una vez cada turno.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Entferne eine Ladungsmarke von der Manablüte: Erhöhe deinen Manavorrat um ein Mana einer beliebigen Farbe. Aktiviere diese Fähigkeit nur einmal pro Zug.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Rimuovi un segnalino carica dalla Fioritura di Mana: Aggiungi un mana di un qualsiasi colore alla tua riserva di mana. Attiva questa abilità solo una volta per turno.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[マナの花の上から蓄積カウンターを1個取り除く:あなたのマナ・プールに、好きな色1色のマナ1点を加える。この能力は、毎ターン1回のみ起動できる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[마나 만발에서 충전 카운터 한 개를 제거한다: 당신의 마나풀에 원하는 색의 마나 한 개를 담는다. 이 능력은 한 턴에 한 번씩만 활성화할 수 있다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Удалите один жетон заряда с Расцвета Маны: добавьте одну ману любого цвета в ваше хранилище маны. Активируйте эту способность только один раз за ход.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Remova um marcador de carga de Florescência de Mana: Adicione um mana de qualquer cor à sua reserva de mana. Ative esta habilidade apenas uma vez a cada turno.]]></LOCALISED_TEXT>
    <COUNTER_REGISTRATION name="Charge" proliferate="11" />
    <COST type="RemoveCountersSelf" amount="1" counter_type="Charge" />
    <AVAILABILITY>
      return RSN_GetObjectDC(EffectSource()):Int_Get(0) == 0
    </AVAILABILITY>
    <RESOLUTION_TIME_ACTION>
      local player = EffectController()
      player:BeginNewMultipleChoice()
      player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_MANA_W" )
      player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_MANA_U" )
      player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_MANA_B" )
      player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_MANA_R" )
      player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_MANA_G" )
      player:AskMultipleChoiceQuestion( "CARD_QUERY_CHOOSE_COLOUR" )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      local colour = EffectController():GetMultipleChoiceResult()
      if (colour == 0) then
      RSN_Produce( "{W}", 1 )
      elseif (colour == 1) then
      RSN_Produce( "{U}", 1)
      elseif (colour == 2) then
      RSN_Produce( "{B}", 1)
      elseif (colour == 3) then
      RSN_Produce( "{R}", 1)
      elseif (colour == 4) then
      RSN_Produce( "{G}", 1)
      end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      RSN_EliminateExtraManaTokens()
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      S_DisplayManaPool(EffectController())
      RSN_GetObjectDC(EffectSource()):Set_Int( 0, 1 )
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of your upkeep, if Mana Bloom has no charge counters on it, return it to its owner’s hand.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Au début de votre entretien, si la Floraison de mana n’a aucun marqueur « charge » sur elle, renvoyez-la dans la main de son propriétaire.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Al comienzo de tu mantenimiento, si el Florecimiento de maná no tiene contadores de carga sobre él, regrésalo a la mano de su propietario.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Falls zu Beginn deines Versorgungssegments keine Ladungsmarken auf der Manablüte liegen, bringe sie auf die Hand ihres Besitzers zurück.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[All’inizio del tuo mantenimento, se la Fioritura di Mana non ha segnalini carica, falla tornare in mano al suo proprietario.]]></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[No início de sua manutenção, se Florescência de Mana não tiver um marcador, devolva-a para a mão de seu dono.]]></LOCALISED_TEXT>
    <COUNTER_REGISTRATION name="Charge" proliferate="11" />
    <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" simple_qualifier="controller">
      return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
      if EffectSource() ~= nil then
        RSN_GetObjectDC(EffectSource()):Int_Set(0, 0)
        if EffectSource():CountCounters(MTG():GetCountersType("Charge")) == 0 then
          EffectSource():ReturnToOwnersHand()
        end
      end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
  <TOKEN_REGISTRATION reservation="2" type="RSN_TOKEN_MANA_W" />
  <TOKEN_REGISTRATION reservation="3" type="RSN_TOKEN_MANA_R" />
  <TOKEN_REGISTRATION reservation="4" type="RSN_TOKEN_MANA_G" />
  <TOKEN_REGISTRATION reservation="5" type="RSN_TOKEN_MANA_U" />
  <AI_BASE_SCORE score="200" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
SCRIPT_LOG.TXT:
[lua] [string "MANA_BLOOM_500253592_TITLE (RESOLUTION_TIME_ACTION)~0x000002e2"]:3: attempt to index a nil value
[lua] ?:0: attempt to index a nil value

I think I'm getting something wrong with the DataChest. Hope you guys can help :)

Edit:
I'm using the DC to store an integer which indicates whether the ability was used.
User avatar
Zarroc
 
Posts: 16
Joined: 28 Jun 2013, 13:06
Has thanked: 1 time
Been thanked: 3 times

Re: Coding Mana Bloom

Postby RiiakShiNal » 06 Aug 2013, 19:49

The easiest way to code "activate only once per turn" would be to use the per_turn_limit attribute in the AVAILABILITY block:
Code: Select all
<AVAILABILITY per_turn_limit="1" />
Though the error you are encountering is probably this block:
Code: Select all
    <RESOLUTION_TIME_ACTION>
      if EffectSource() ~= nil then
        RSN_GetObjectDC(EffectSource()):Int_Set(0, 0)
        if EffectSource():CountCounters(MTG():GetCountersType("Charge")) == 0 then
          EffectSource():ReturnToOwnersHand()
        end
      end
    </RESOLUTION_TIME_ACTION>
Here you did not use true for the second parameter, so it isn't creating the ObjectDC if it doesn't find it. Since you are only referencing EffectSource() you could simply use RSN_ObjectDC() instead of RSN_GetObjectDC(EffectSource(), true). It is still preferable to use the per_turn_limit attribute.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Coding Mana Bloom

Postby Zarroc » 06 Aug 2013, 20:53

Thank you very much riiak!

Guess i should've read the xml tag list more carefully :/
User avatar
Zarroc
 
Posts: 16
Joined: 28 Jun 2013, 13:06
Has thanked: 1 time
Been thanked: 3 times


Return to 2014

Who is online

Users browsing this forum: No registered users and 5 guests


Who is online

In total there are 5 users online :: 0 registered, 0 hidden and 5 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 5 guests

Login Form