It is currently 26 Apr 2024, 07:25
   
Text Size

Formal Request Thread

Moderator: CCGHQ Admins

Re: Formal Request Thread

Postby migookman » 01 Nov 2014, 01:49

I was finally getting around to trying to code cards similar to Armor of Thorns but it isn't sacrificing when I cast it for flash. The code I used is as follows:
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_ANY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Puoi lanciare il Sigillo delle Reliquie come se avesse lampo. Se è stato lanciato quando non poteva essere lanciata una stregoneria, il controllore del permanente che è diventato lo sacrifica all’inizio della prossima sottofase di cancellazione.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <TRIGGER value="CONSIDERED_FOR_CAST" simple_qualifier="self" pre_trigger="1">
    if (TriggerObject() ~= nil) and (EffectController():IsSorceryTime() == false) then
       return true
    else
       return false
    end
  </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
       TriggerObject():GrantPseudoFlash()
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local effectSource = EffectSource()
    if effectSource ~= nil and
    if effectController():IsSorceryTime() == false then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, effectSource)
       MTG():CreateDelayedTrigger(2, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
      <AI_MODIFIERS worthless="1" />
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2">
      <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_CLEANUP
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_CardPtr(0)   
    if target ~= nil then
       EffectController():Sacrifice( target )
    end
    </RESOLUTION_TIME_ACTION>
      <CLEANUP fire_once="1" />
   </TRIGGERED_ABILITY>
User avatar
migookman
 
Posts: 135
Joined: 05 Aug 2014, 06:37
Has thanked: 21 times
Been thanked: 28 times

Re: Formal Request Thread

Postby Xander9009 » 01 Nov 2014, 01:55

migookman wrote:I was finally getting around to trying to code cards similar to Armor of Thorns but it isn't sacrificing when I cast it for flash. The code I used is as follows:
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_ANY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Puoi lanciare il Sigillo delle Reliquie come se avesse lampo. Se è stato lanciato quando non poteva essere lanciata una stregoneria, il controllore del permanente che è diventato lo sacrifica all’inizio della prossima sottofase di cancellazione.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[You may cast Relic Ward as though it had flash. If you cast it any time a sorcery couldn’t have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.]]></LOCALISED_TEXT>
    <TRIGGER value="CONSIDERED_FOR_CAST" simple_qualifier="self" pre_trigger="1">
    if (TriggerObject() ~= nil) and (EffectController():IsSorceryTime() == false) then
       return true
    else
       return false
    end
  </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
       TriggerObject():GrantPseudoFlash()
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    local effectSource = EffectSource()
    if effectSource ~= nil and
    if effectController():IsSorceryTime() == false then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, effectSource)
       MTG():CreateDelayedTrigger(2, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
      <AI_MODIFIERS worthless="1" />
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2">
      <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_CLEANUP
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_CardPtr(0)   
    if target ~= nil then
       EffectController():Sacrifice( target )
    end
    </RESOLUTION_TIME_ACTION>
      <CLEANUP fire_once="1" />
   </TRIGGERED_ABILITY>
Protect the pointer. Put "delayDC:Protect_CardPtr(0)" immediately after "delayDC:Set_CardPtr(0, effectSource)"
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Formal Request Thread

Postby NeoAnderson » 01 Nov 2014, 02:00

migookman wrote:I was finally getting around to trying to code cards similar to Armor of Thorns but it isn't sacrificing when I cast it for flash. The code I used is as follows:
The card as you trying to code will not work, first of all because you have to use 2 different trigger CONSIDERED_FOR_CAST to grantpseudoflash (but you could also use a static ability), and SPELL_PLAYED simple_qualifier="self" as second trigger.
Inside the Spell played trigger you create the delayDC.

Anyway also in this way it will not work properly because if you cast it with Flash or pseudoflash granted by another card it should not be sacrified, for example with Alchemist's Refuge.
AS by MTG card rules : 10/1/2009: The sacrifice occurs only if you cast it using its own ability. If you cast it using some other effect (for instance, if it gained flash from Vedalken Orrery), then it won't be sacrificed.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby migookman » 01 Nov 2014, 02:53

Thanks for the information Neo. I will use your suggestions to see if I can get it to work as per the pre-2009 ruling.
User avatar
migookman
 
Posts: 135
Joined: 05 Aug 2014, 06:37
Has thanked: 21 times
Been thanked: 28 times

Re: Formal Request Thread

Postby RiiakShiNal » 01 Nov 2014, 12:53

Xander9009 wrote:The issue I was thinking of was whether or not Mana Reflection should allow Generator Servant to grant up to 4 creatures haste. It won't, but I'm just not sure if that's correct or not.
In the case of Mana Reflection, Generator Servant itself should produce {4} (or more if more copies of Mana Reflection), and the effects should apply to all mana produced by Generator Servant. However, the current version of Manual Mana does not have support for this, but it could probably be added though I'll have to think about the best way to do it.
RiiakShiNal
Programmer
 
Posts: 2185
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Formal Request Thread

Postby Xander9009 » 01 Nov 2014, 13:15

RiiakShiNal wrote:
Xander9009 wrote:The issue I was thinking of was whether or not Mana Reflection should allow Generator Servant to grant up to 4 creatures haste. It won't, but I'm just not sure if that's correct or not.
In the case of Mana Reflection, Generator Servant itself should produce {4} (or more if more copies of Mana Reflection), and the effects should apply to all mana produced by Generator Servant. However, the current version of Manual Mana does not have support for this, but it could probably be added though I'll have to think about the best way to do it.
I'm not sure you should bother just yet. Mana Reflection hasn't been coded and I don't know of any others that do similar things except Mana Flare. And since Mana Flare itself produces the mana, it wouldn't grant haste. However, if you want to also consider how to make Mana Reflection as well, then hey, I won't complain :mrgreen:

Best I've got for that is granting a custom characteristic for Produces Double Mana or something and that is an integer which is incremented instead of set. When a card produces mana, check that card's ProducesDoubleMana integer and multiply the production by 1+Var or "for 1+Var do". If you're short on time, I'd be happy to write up the code, though I'd definitely be leaving it up to you to check and release it. I simply don't know enough about the functions to know for sure I'm not breaking hundreds of cards.

That's of course only if you don't already know a way to properly code Mana Reflection.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Formal Request Thread

Postby NeoAnderson » 01 Nov 2014, 13:19

Xander9009 wrote:
RiiakShiNal wrote:
Xander9009 wrote:The issue I was thinking of was whether or not Mana Reflection should allow Generator Servant to grant up to 4 creatures haste. It won't, but I'm just not sure if that's correct or not.
In the case of Mana Reflection, Generator Servant itself should produce {4} (or more if more copies of Mana Reflection), and the effects should apply to all mana produced by Generator Servant. However, the current version of Manual Mana does not have support for this, but it could probably be added though I'll have to think about the best way to do it.
I'm not sure you should bother just yet. Mana Reflection hasn't been coded and I don't know of any others that do similar things except Mana Flare. And since Mana Flare itself produces the mana, it wouldn't grant haste. However, if you want to also consider how to make Mana Reflection as well, then hey, I won't complain :mrgreen:

Best I've got for that is granting a custom characteristic for Produces Double Mana or something and that is an integer which is incremented instead of set. When a card produces mana, check that card's ProducesDoubleMana integer and multiply the production by 1+Var or "for 1+Var do". If you're short on time, I'd be happy to write up the code, though I'd definitely be leaving it up to you to check and release it. I simply don't know enough about the functions to know for sure I'm not breaking hundreds of cards.

That's of course only if you don't already know a way to properly code Mana Reflection.
Anyway i have revised a little bit the Code of Generator Servant, now i store the pointer of each token produced, just to be sure if something will change with new functions when you will implement Mana Reflection effect, now it looks :
Code: Select all
    <RESOLUTION_TIME_ACTION>
    local delayDC = EffectDC():Make_Chest(1)
         local oChest = delayDC:Make_Chest(0)
         EffectDC():Set_Int(10, MTG():GetStep())
         RSN_ProduceForPlayerNoTrigger( "{1}", 2, EffectController() )
         local oTokens = RSN_GetProducedTokenChest()
         if oTokens ~= nil then
            local i = 0
            local token = oTokens:Get_CardPtr(i)
            while (token ~= nil) do
                  oChest:Set_CardPtr( i, token )
                  i=i+1
                  token = oTokens:Get_CardPtr(i)
       end
         end
    </RESOLUTION_TIME_ACTION>
I have used a while cycle, instead of a FOR cycle (0 to 1), so it will store everything inside the Produced Tokens chest.

2. Guys Anyone have a good idea to implement Charging Rhino ?? I think it will not be codable, but i would receive a confirmation.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby Xander9009 » 01 Nov 2014, 13:45

NeoAnderson wrote:Anyway i have revised a little bit the Code of Generator Servant, now i store the pointer of each token produced, just to be sure if something will change with new functions when you will implement Mana Reflection effect, now it looks :
Code: Select all
    <RESOLUTION_TIME_ACTION>
    local delayDC = EffectDC():Make_Chest(1)
         local oChest = delayDC:Make_Chest(0)
         EffectDC():Set_Int(10, MTG():GetStep())
         RSN_ProduceForPlayerNoTrigger( "{1}", 2, EffectController() )
         local oTokens = RSN_GetProducedTokenChest()
         if oTokens ~= nil then
            local i = 0
            local token = oTokens:Get_CardPtr(i)
            while (token ~= nil) do
                  oChest:Set_CardPtr( i, token )
                  i=i+1
                  token = oTokens:Get_CardPtr(i)
       end
         end
    </RESOLUTION_TIME_ACTION>
I have used a while cycle, instead of a FOR cycle (0 to 1), so it will store everything inside the Produced Tokens chest.

2. Guys Anyone have a good idea to implement Charging Rhino ?? I think it will not be codable, but i would receive a confirmation.
1: Good. That should definitely do the trick :)

2: As far as I know, you're right in that it can't be coded. RSN, TFM, and Sumo would know with more certainty, though. The only thing I've got in the CW that does that is Stalking Tiger. However, it's using DUEL_CHARACTERISTIC_MAX_ONE_BLOCKER, and that's the wrong thing (the card needs removed). That's what Silent Arbiter uses to only allow one blocker total. Another card that can't be done, I think.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Formal Request Thread

Postby migookman » 01 Nov 2014, 15:29

Yes, I noticed that when testing Charging Rhino. It was actually using DUEL_CHARACTERISTIC_MAX_ONE_
BLOCKER globally. Not sure how I didn't catch that when testing Stalking Tiger.
User avatar
migookman
 
Posts: 135
Joined: 05 Aug 2014, 06:37
Has thanked: 21 times
Been thanked: 28 times

Re: Formal Request Thread

Postby migookman » 01 Nov 2014, 22:59

I tried using the suggestions for coding Armor of Thorns but it is still not sacrificing:
Code: Select all
<TRIGGER value="CONSIDERED_FOR_CAST" simple_qualifier="self" pre_trigger="1">
    if (TriggerObject() ~= nil) and (EffectController():IsSorceryTime() == false) then
       return true
    else
       return false
    end
  </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
       TriggerObject():GrantPseudoFlash()
    end
    </RESOLUTION_TIME_ACTION>
  <TRIGGER value="SPELL_PLAYED" simple_qualifier="self" >
  if (TriggerObject() ~= nil) and (EffectController():IsSorceryTime() == false) then
       return true
    else
       return false
    end
  </TRIGGER>
   <RESOLUTION_TIME_ACTION>
    local effectSource = EffectSource()
    if effectSource ~= nil and
    if effectController():IsSorceryTime() == false then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, effectSource)
        delayDC:Protect_CardPtr(0)
       MTG():CreateDelayedTrigger(2, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
      <AI_MODIFIERS worthless="1" />
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2">
      <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_CLEANUP
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_CardPtr(0)   
    if target ~= nil then
       EffectController():Sacrifice( target )
    end
    </RESOLUTION_TIME_ACTION>
      <CLEANUP fire_once="1" />
   </TRIGGERED_ABILITY>
Also, do you think the code in Sigarda, Host of Herons would help to make it compliant with the 2009 rulings?
User avatar
migookman
 
Posts: 135
Joined: 05 Aug 2014, 06:37
Has thanked: 21 times
Been thanked: 28 times

Re: Formal Request Thread

Postby NeoAnderson » 02 Nov 2014, 04:50

migookman wrote:I tried using the suggestions for coding Armor of Thorns but it is still not sacrificing:
Code: Select all
<TRIGGER value="CONSIDERED_FOR_CAST" simple_qualifier="self" pre_trigger="1">
    if (TriggerObject() ~= nil) and (EffectController():IsSorceryTime() == false) then
       return true
    else
       return false
    end
  </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
       TriggerObject():GrantPseudoFlash()
    end
    </RESOLUTION_TIME_ACTION>
  <TRIGGER value="SPELL_PLAYED" simple_qualifier="self" >
  if (TriggerObject() ~= nil) and (EffectController():IsSorceryTime() == false) then
       return true
    else
       return false
    end
  </TRIGGER>
   <RESOLUTION_TIME_ACTION>
    local effectSource = EffectSource()
    if effectSource ~= nil and
    if effectController():IsSorceryTime() == false then
       local delayDC = EffectDC():Make_Chest(1)
       delayDC:Set_CardPtr(0, effectSource)
        delayDC:Protect_CardPtr(0)
       MTG():CreateDelayedTrigger(2, delayDC)
    end
    </RESOLUTION_TIME_ACTION>
      <AI_MODIFIERS worthless="1" />
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2">
      <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_CLEANUP
    </TRIGGER>
      <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_CardPtr(0)   
    if target ~= nil then
       EffectController():Sacrifice( target )
    end
    </RESOLUTION_TIME_ACTION>
      <CLEANUP fire_once="1" />
   </TRIGGERED_ABILITY>
Also, do you think the code in Sigarda, Host of Herons would help to make it compliant with the 2009 rulings?
The main problem is about this line :
Code: Select all
if effectController():IsSorceryTime() == false then
you wrote EffectController with a Lower case "e".
Anyway you can remove that line because you are already checking the condition inside the trigger. About Sigarda, Host of Herons you don't need it.
About how to make this card full compliant i have to make some tests and i can tell you if is possible.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby NeoAnderson » 03 Nov 2014, 17:27

I would receive an opinion about the possibility to code the follow card : Sliver Hive.
Did someone attempted to code it?
I think it should be codable...
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby Xander9009 » 03 Nov 2014, 17:42

NeoAnderson wrote:I would receive an opinion about the possibility to code the follow card : Sliver Hive.
Did someone attempted to code it?
I think it should be codable...
There are a few other mana sources that restrict what the mana can be used for. Perhaps create a special mana token which gains/loses its mana producing ability based on the card which is being considered for cast? I don't think that would work for casting cards from other zones besides the hand, but it might be a starting point.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Formal Request Thread

Postby NeoAnderson » 03 Nov 2014, 17:54

Xander9009 wrote:
NeoAnderson wrote:I would receive an opinion about the possibility to code the follow card : Sliver Hive.
Did someone attempted to code it?
I think it should be codable...
There are a few other mana sources that restrict what the mana can be used for. Perhaps create a special mana token which gains/loses its mana producing ability based on the card which is being considered for cast? I don't think that would work for casting cards from other zones besides the hand, but it might be a starting point.
As i remember sometime ago i was discussing with Riiak about the issues of the engine to handle this kind of effects, but now i had some new ideas from my experience with other cards i have coded.
I think i have found a solution would you test it and let me know your feedback??
I still don't know if something could break other interactions!If not we have a solution for all the cards who produce mana with restrictions!
Sliver Hive - Neo Ver 1.0 | Open
Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="NEO_M15_247_SLIVER_HIVE_915383384" />
  <CARDNAME text="SLIVER_HIVE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Sliver Hive]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Essaim de slivoïdes]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Colmena de fragmentados]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Remasuri-Nest]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Alveare dei Tramutanti]]></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[Colônia de Fractius]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[裂片妖母巢]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[裂片妖母巢]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="915383384" />
  <ARTID value="915383384" />
  <ARTIST name="Igor Kieryluk" />
  <CASTING_COST cost="" />
  <TYPE metaname="Land" />
  <EXPANSION value="M15" />
  <RARITY metaname="R" />
  <ACTIVATED_ABILITY forced_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T} : Ajoutez {1} à votre réserve.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agrega {1} a tu reserva de maná.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Erhöhe deinen Manavorrat um {1}.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi {1} alla tua riserva di mana.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:あなたのマナ・プールに{1}を加える。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: {1}을 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: добавьте {1} в ваше хранилище маны.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione {1} à sua reserva de mana.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{T}:加{1}到你的法术力池中。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{T}:加{1}到你的魔法力池中。]]></LOCALISED_TEXT>
    <COST type="TapSelf" />
    <PLAY_TIME_ACTION>
   RSN_MarkManaAbilityStart()
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
   RSN_Produce( "{1}", 1 )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
   RSN_EliminateExtraManaTokens()
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
   S_DisplayManaPool(EffectController())
        RSN_MarkManaAbilityEnd()
    </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY window_step="upkeep" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_blockers" type="window" />
      <AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="end_of_turn" type="window" />
      <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
      <AI_AVAILABILITY type="in_response" response_source="1" />
      <AI_AVAILABILITY type="in_response" response_target="1" />
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY linked_ability_group="1" forced_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add one mana of any color to your mana pool. Spend this mana only to cast a Sliver spell.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T} : Ajoutez un mana de la couleur de votre choix à votre réserve. Ne dépensez ce mana que pour lancer un sort de slivoïde.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agrega un maná de cualquier color a tu reserva de maná. Usa este maná solo para lanzar un hechizo de Fragmentado.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Erhöhe deinen Manavorrat um ein Mana einer beliebigen Farbe. Verwende dieses Mana nur, um einen Remasuri-Zauberspruch zu wirken.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi un mana di un qualsiasi colore alla tua riserva di mana. Spendi questo mana solo per lanciare una magia Tramutante.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:あなたのマナ・プールに、好きな色1色のマナ1点を加える。このマナは、スリヴァー・呪文を唱えるためにのみ使用できる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: 당신의 마나풀에 원하는 색의 마나 한 개를 담는다. 이 마나는 슬리버 주문을 발동하는 데에만 사용할 수 있다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: добавьте одну ману любого цвета в ваше хранилище маны. Тратьте эту ману только на разыгрывание заклинания Щепки.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione um mana de qualquer cor à sua reserva de mana. Gaste este mana apenas para conjurar uma mágica de Fractius.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{T}:加一点任意颜色的法术力到你的法术力池中。此法术力只能用来施放裂片妖咒语。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{T}:加一點任意顏色的魔法力到你的魔法力池中。此魔法力只能用來施放裂片妖咒語。]]></LOCALISED_TEXT>
    <COST type="TapSelf" />
     <PLAY_TIME_ACTION>
   RSN_MarkManaAbilityStart()
   local oPlayer = EffectController()
   local oCard = EffectSource()
   if (oPlayer ~= nil) then
       oPlayer:BeginNewMultipleChoice()
        oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_W" )
       oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_U" )
       oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_B" )
       oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_R" )
            oPlayer:AddMultipleChoiceAnswer( "RSN_MODE_PRODUCE_G" )
       oPlayer:AskMultipleChoiceQuestion( "MODE_CHOOSE_ONE", oCard )
   end
    </PLAY_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         local nColour = EffectController():GetMultipleChoiceResult() + 1
         if (nColour == COLOUR_BLACK) then
                                RSN_ProduceForPlayerNoTrigger( "{B}", 1, EffectController() )
         elseif (nColour == COLOUR_BLUE) then
                                RSN_ProduceForPlayerNoTrigger( "{U}", 1, EffectController() )
         elseif (nColour == COLOUR_GREEN) then
                                RSN_ProduceForPlayerNoTrigger( "{G}", 1, EffectController() )
         elseif (nColour == COLOUR_RED) then
                                RSN_ProduceForPlayerNoTrigger( "{R}", 1, EffectController() )
         elseif (nColour == COLOUR_WHITE) then
                                RSN_ProduceForPlayerNoTrigger( "{W}", 1, EffectController() )
         end
          local oTokens = RSN_GetProducedTokenChest()
                         local delayDC = nil
          local oChest = nil
                         local shifter = 0
                         if LinkedDC():Get_Chest(1) == nil then
                          delayDC = LinkedDC():Make_Chest(1)
             oChest = delayDC:Make_Chest(0)
                         else
             delayDC = LinkedDC():Get_Chest(1)
             oChest = delayDC:Get_Chest(0)
                            local tokenA = oChest:Get_CardPtr(shifter)
                  while (tokenA ~= nil) do
                        shifter=shifter+1
                        tokenA = oChest:Get_CardPtr(shifter)
             end
                         end
                         LinkedDC():Set_Int(1000, MTG():GetStep()) 
                         local ActivChest = EffectController():PlayerDataChest():Make_Chest(NEO_SLIVER_MANA_ACTIVATION)   
                         ActivChest:Set_Int(100, 1)
               if oTokens ~= nil then
                  local i = 0
                  local token = oTokens:Get_CardPtr(i)
                  while (token ~= nil) do
                        oChest:Set_CardPtr(shifter+i, token )
                        i=i+1
                        token = oTokens:Get_CardPtr(i)
             end
               end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         RSN_EliminateExtraManaTokens()
      </RESOLUTION_TIME_ACTION>
           <RESOLUTION_TIME_ACTION>
             MTG():CreateDelayedTrigger(3, nil)
               </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
        S_DisplayManaPool(EffectController())
        RSN_MarkManaAbilityEnd()
      </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY window_step="upkeep" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_blockers" type="window" />
      <AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="end_of_turn" type="window" />
      <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
      <AI_AVAILABILITY type="in_response" response_source="1" />
      <AI_AVAILABILITY type="in_response" response_target="1" />
  </ACTIVATED_ABILITY>


   <STATIC_ABILITY linked_ability_group="1">
       <CONTINUOUS_ACTION layer="6">
               if EffectController():PlayerDataChest():Get_Chest(NEO_SLIVER_MANA_ACTIVATION) ~= nil then
                  local ActivChest = EffectController():PlayerDataChest():Get_Chest(NEO_SLIVER_MANA_ACTIVATION)
                  local value = ActivChest:Get_Int(100)
                  if value ~= 1 then
          local i = 0
          local delayDC = LinkedDC():Get_Chest(1)
          if delayDC ~= nil then
             local token_chest = delayDC:Get_Chest(0)
             if token_chest ~= nil then
               local token = token_chest:Get_NthCardPtr(i)
                if token ~= nil then
                   token:GetCurrentCharacteristics():LoseAllAbilities()
                end
               while (token ~= nil) do
                i = i + 1
                token = token_chest:Get_NthCardPtr(i)
                      if token ~= nil then
                         token:GetCurrentCharacteristics():LoseAllAbilities()
                      end
                end
             end
          end
                 end
               end
          </CONTINUOUS_ACTION>
   </STATIC_ABILITY>

  <TRIGGERED_ABILITY replacement_effect="1">
  <TRIGGER value="CONSIDERED_FOR_CAST" simple_qualifier="controller" pre_trigger="1" />
     <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
       local ActivChest = nil
       if EffectController():PlayerDataChest():Get_Chest(NEO_SLIVER_MANA_ACTIVATION) == nil then
          ActivChest = EffectController():PlayerDataChest():Make_Chest(NEO_SLIVER_MANA_ACTIVATION)   
       else
     ActivChest = EffectController():PlayerDataChest():Get_Chest(NEO_SLIVER_MANA_ACTIVATION)
       end
       if TriggerObject():GetSubType():Test( CREATURE_TYPE_SLIVER ) then
          ActivChest:Set_Int(100, 1)
       else
          ActivChest:Set_Int(100, 0)
       end           
    end
    </RESOLUTION_TIME_ACTION>
       <RESOLUTION_TIME_ACTION>
          MTG():CreateDelayedTrigger(2, nil)
        </RESOLUTION_TIME_ACTION>
       <RESOLUTION_TIME_ACTION>
         MTG():ReevaluateContinuousEffects()
        </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>


 <TRIGGERED_ABILITY resource_id="2" replacement_effect="1" priority="20">
    <TRIGGER value="STATE_BASED_EFFECTS"/>
    <CLEANUP fire_once="1" />
       <RESOLUTION_TIME_ACTION>
         MTG():ReevaluateContinuousEffects()
        </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>

 <TRIGGERED_ABILITY resource_id="3" linked_ability_group="1" replacement_effect="1" priority="20">
    <TRIGGER value="STATE_BASED_EFFECTS">
     local StoredStep = LinkedDC():Get_Int(1000)
     local ActualStep = MTG():GetStep()
     if ActualStep &gt; StoredStep then
        return true
     else
        return false
     end
   </TRIGGER>
    <CLEANUP fire_once="1" />
       <RESOLUTION_TIME_ACTION>
            local i = 0
      local delayDC = LinkedDC():Get_Chest(1)
      if delayDC ~= nil then
         local token_chest = delayDC:Get_Chest(0)
         if token_chest ~= nil then
            local token = token_chest:Get_NthCardPtr(i)
            if token ~= nil then
                     token:QueueZoneChange( ZONE_CEASED_TO_EXIST, EffectController() )
            end
            while (token ~= nil) do
                  i = i + 1
                  token = token_chest:Get_NthCardPtr(i)
                   if token ~= nil then
                      token:QueueZoneChange( ZONE_CEASED_TO_EXIST, EffectController() )
                   end
           end
        end
               end
        </RESOLUTION_TIME_ACTION>
       <RESOLUTION_TIME_ACTION>
               LinkedDC():Clear()
        </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>


 <ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{5}, {T}: Put a 1/1 colorless Sliver creature token onto the battlefield. Activate this ability only if you control a Sliver.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{5}, {T} : Mettez sur le champ de bataille un jeton de créature 1/1 incolore Slivoïde. N’activez cette capacité que si vous contrôlez un slivoïde.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{5}, {T}: Pon en el campo de batalla una ficha de criatura Fragmentado incolora 1/1. Activa esta habilidad solo si controlas un Fragmentado.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{5}, {T}: Bringe einen 1/1 farblosen Remasuri-Kreaturenspielstein ins Spiel. Aktiviere diese Fähigkeit nur, falls du einen Remasuri kontrollierst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{5}, {T}: Metti sul campo di battaglia una pedina creatura Tramutante 1/1 incolore. Attiva questa abilità solo se controlli un Tramutante.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{5}, {T}:無色の1/1のスリヴァー・クリーチャー・トークンを1体戦場に出す。この能力は、あなたがスリヴァーをコントロールしているときにのみ起動できる。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{5}, {T}: 1/1 무색 슬리버 생물 토큰 한 개를 전장에 놓는다. 이 능력은 당신이 슬리버를 조종할 때에만 활성화할 수 있다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{5}, {T}: положите на поле битвы одну фишку существа 1/1 бесцветная Щепка. Активируйте эту способность, только если вы контролируете Щепку.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{5}, {T}: Coloque no campo de batalha uma ficha de criatura incolor 1/1 do tipo Fractius. Ative esta habilidade somente se você controlar um Fractius.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[{5},{T}:将一个1/1无色裂片妖衍生生物放进战场。只能于你操控裂片妖时起动此异能。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[{5},{T}:將一個1/1無色裂片妖衍生生物放進戰場。只能於你操控裂片妖時起動此異能。]]></LOCALISED_TEXT>
    <COST mana_cost="{5}" type="Mana" />
    <COST type="TapSelf" />
    <AVAILABILITY>
     local filter = ClearFilter()
     filter:Add( FE_SUBTYPE, OP_IS, CREATURE_TYPE_SLIVER )
     filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
     local total = filter:CountStopAt(1)
     return total &gt; 0
    </AVAILABILITY>
    <RESOLUTION_TIME_ACTION>
       MTG():PutTokensOntoBattlefield( "NEO_M15_TOKEN_011_SLIVER_1_1_C_915938311", 1, EffectController() )
    </RESOLUTION_TIME_ACTION>
</ACTIVATED_ABILITY>

   <STATIC_ABILITY>
      <CONTINUOUS_ACTION layer="0">
         RSN_ClearCanProduceMana()
         RSN_MarkCanProduceMana( "{1}{B}{G}{R}{U}{W}" )
      </CONTINUOUS_ACTION>
      <CONTINUOUS_ACTION layer="8">
         local oCard = EffectSource()
         if (RSN_CheckSwitchToFallback( oCard )) then
            local oCharacteristics = oCard:GetCurrentCharacteristics()
            oCharacteristics:GrantAbility( 0 )
         end
      </CONTINUOUS_ACTION>
   </STATIC_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>
   <MANA_ABILITY resource_id="0">
      <COST type="TapSelf" />
      <PRODUCES amount="{1}" />
   </MANA_ABILITY>
        <TOKEN_REGISTRATION reservation="1" type="NEO_M15_TOKEN_011_SLIVER_1_1_C_915938311" />
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_B" />
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_G" />
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_R" />
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_U" />
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_W" />
   <TOKEN_REGISTRATION reservation="1" type="RSN_TOKEN_MANA_C" />
</CARD_V2>
Here you can download the Card Xml, the token, the artworks, and also the Lol file for the constant declaration :
Attachments
Sliver Hive.rar
Sliver Hive - Neo Ver 1.0
(214.2 KiB) Downloaded 248 times
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: Formal Request Thread

Postby Xander9009 » 03 Nov 2014, 18:28

NeoAnderson wrote:As i remember sometime ago i was discussing with Riiak about the issues of the engine to handle this kind of effects, but now i had some new ideas from my experience with other cards i have coded.
I think i have found a solution would you test it and let me know your feedback??
I still don't know if something could break other interactions!If not we have a solution for all the cards who produce mana with restrictions!
Nope. It was quite happy to let me play Birds of Paradise.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 44 guests


Who is online

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

Login Form