It is currently 26 Apr 2024, 04:10
   
Text Size

Formal Request Thread

Moderator: CCGHQ Admins

Re: Formal Request Thread

Postby thefiremind » 04 Jul 2013, 15:27

NEMESiS wrote:How can Total War be made? Can we check for summoning sickness?
Checking for summoning sickness of the card itself is easy, checking other cards is hard because you would need to save the information somewhere.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 721 times

Re: Formal Request Thread

Postby sumomole » 04 Jul 2013, 16:48

thefiremind wrote:I tried to code Eon Hub like this:
then I made a deck with Eon Hub and Sulfuric Vortex, and it seems to work!
Actually, in my test I was using BEGINNING_OF_STEP, but that probably was making it trigger twice (not that it matters much).
Yes, when I tell you, I suddenly realized that maybe I think too much, I have successfully coded Stonehorn Dignitary, perhaps you gave me inspiration. :lol:
This is a really great news, I'm going to try Time Stop, we will get more fun this year. :mrgreen:
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Formal Request Thread

Postby East Bay » 04 Jul 2013, 19:20

anyone know why PutTokensOntoBattlefieldTappedAndAttacking doesn't work? I made Giest but angel never attacks.
User avatar
East Bay
 
Posts: 85
Joined: 17 Mar 2013, 02:05
Has thanked: 33 times
Been thanked: 30 times

Re: Formal Request Thread

Postby thefiremind » 04 Jul 2013, 19:25

East Bay wrote:anyone know why PutTokensOntoBattlefieldTappedAndAttacking doesn't work? I made Giest but angel never attacks.
I coded Kessig Cagebreakers recently and it works. Remember that you need the player that you want to attack as last parameter:
Code: Select all
MTG():PutTokensOntoBattlefieldTappedAndAttacking( "TOKEN_FILENAME", number_of_tokens, EffectController(), pointer_to_the_player )
which doesn't need to be the same player attacked by the Geist, so you need to ask which opponent you want to attack with the Angel before creating it.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 721 times

Re: Formal Request Thread

Postby East Bay » 04 Jul 2013, 20:33

thefiremind wrote:
East Bay wrote:anyone know why PutTokensOntoBattlefieldTappedAndAttacking doesn't work? I made Giest but angel never attacks.
I coded Kessig Cagebreakers recently and it works. Remember that you need the player that you want to attack as last parameter:
Code: Select all
MTG():PutTokensOntoBattlefieldTappedAndAttacking( "TOKEN_FILENAME", number_of_tokens, EffectController(), pointer_to_the_player )
which doesn't need to be the same player attacked by the Geist, so you need to ask which opponent you want to attack with the Angel before creating it.
Thank You, but quick question what if the player has shroud :shock:

Also when you guys get the chance I would love to see how storm and split second work in D14 :mrgreen:
User avatar
East Bay
 
Posts: 85
Joined: 17 Mar 2013, 02:05
Has thanked: 33 times
Been thanked: 30 times

Re: Formal Request Thread

Postby thefiremind » 04 Jul 2013, 22:17

East Bay wrote:Thank You, but quick question what if the player has shroud :shock:
DotP2014 makes a clear distinction: if you use the TARGET block, then you are targetting (and shroud prevents that); if you just set the filter and then call ChooseItem/ChooseItems, then you are not targetting.

East Bay wrote:Also when you guys get the chance I would love to see how storm and split second work in D14 :mrgreen:
Storm needs to use the new Interrogation object because it seems that the register that was keeping track of all the played spells isn't there anymore. I guess this should work:
Storm | Open
Code: Select all
  <TRIGGERED_ABILITY active_zone="ZONE_STACK">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Storm]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Déluge]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tormenta]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Sturm]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Tempesta]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ストーム]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Storm]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Шторм]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Rajada]]></LOCALISED_TEXT>
    <TRIGGER value="SPELL_PLAYED" simple_qualifier="self" />
    <RESOLUTION_TIME_ACTION>
    local interrogation = MTG():ClearInterrogationQuery()
    local spellsCastBefore = interrogation:Count( INTERROGATE_SPELLS_CAST, INTERROGATE_THIS_TURN ) - 1
    if spellsCastBefore &gt; 0 then
       for i=0,spellsCastBefore-1 do
          local copy = EffectController():CopySpell( EffectSourceLKI() )
          EffectController():ChooseNewTargets(copy)
       end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Split second is easier now because there's a perfect characteristic for players (hoping that it works):
Split second | Open
Code: Select all
  <STATIC_ABILITY active_zone="ZONE_STACK">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Split second]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Fraction de seconde]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Fracción de segundo
]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Sekundenbruchteil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Battibaleno]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[刹那]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Split second]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Мгновение ока]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Fração de segundo]]></LOCALISED_TEXT>
    <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:SetFilterType(FILTER_TYPE_PLAYERS)
    </FILTER>
    <CONTINUOUS_ACTION layer="8" filter_id="0">
    if FilteredPlayer() ~= nil then
       local characteristics = FilteredPlayer():GetCurrentCharacteristics()
       characteristics:Bool_Set(PLAYER_CHARACTERISTIC_CANT_CAST_SPELLS, 1)
       characteristics:Bool_Set(PLAYER_CHARACTERISTIC_CANT_ACTIVATE_NONMANA_ABILITIES, 1)
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
Both are untested.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 721 times

Re: Formal Request Thread

Postby gorem2k » 04 Jul 2013, 23:13

Populate:

Code: Select all
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Populate.]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_TOKEN_TO_POPULATE" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController())
    filter:Add( FE_IS_TOKEN, true )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then   
       MTG():PutTokenCopiesOntoBattlefield( target, 1, EffectController() )
    end
    </RESOLUTION_TIME_ACTION>
just change or register CARD_QUERY target tag into GLOSSARY.xml or use an existing one. made Wake the Reflections with this and tested by me.

Evolve:

code | Open
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Evolve]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_END" to_zone="ZONE_IN_PLAY" simple_qualifier="objectyoucontrol">
    if TriggerObject():GetCurrentPower() &gt; Object():GetCurrentPower() or TriggerObject():GetCurrentToughness() &gt; Object():GetCurrentToughness() then
      return TriggerObject():GetCardType():Test( CARD_TYPE_CREATURE ) ~= 0
    end 
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    if EffectSource() ~= nil and TriggerObject() ~= nil then
      if TriggerObject():GetCurrentPower() &gt; EffectSource():GetCurrentPower() or TriggerObject():GetCurrentToughness() &gt; EffectSource():GetCurrentToughness() then
         EffectSource():AddCounters( MTG():PlusOnePlusOneCounters(), 1 )
      end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
(exactly the same as DotP2013)
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Formal Request Thread

Postby Master Necro » 05 Jul 2013, 05:23

sumomole wrote:Untested
Detain a permanent. (Until your next turn, that permanent can't attack or block and its activated abilities can't be activated.)
Lyev Skyknight | Open
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[When Lyev Skyknight enters the battlefield, detain target nonland permanent an opponent controls.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
    <TARGET tag="CARD_QUERY_CHOOSE_PERMANENT_TO_DETAIN" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_IS_PERMANENT, true )
    filter:Add( FE_TYPE, OP_NOT, CARD_TYPE_LAND )
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    </TARGET_DEFINITION>
    <CONTINUOUS_ACTION layer="8">
    local detainCard = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if detainCard ~= nil then
       local characteristics = detainCard:GetCurrentCharacteristics()
       characteristics:Bool_Set( CHARACTERISTIC_CANT_ATTACK, 1 )
       characteristics:Bool_Set( CHARACTERISTIC_CANT_BLOCK, 1 )
       characteristics:Bool_Set( CHARACTERISTIC_CANT_USE_ACTIVATED_ABILITIES, 1 )
    end
    </CONTINUOUS_ACTION>
    <DURATION>
    return (EffectController():MyTurn() ~= 0 and MTG():GetStep() == STEP_UNTAP) or EffectController() == nil
    </DURATION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
  </TRIGGERED_ABILITY>
Radiance means target card and each other card that shares a color with it, the code of DotP2013 can still be used.
Brightflame | Open
Code: Select all
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[|Radiance| — Brightflame deals X damage to target creature and each other creature that shares a color with it. You gain life equal to the damage dealt this way.]]></LOCALISED_TEXT>
    <SFX text="GLOBAL_MAGMA_PLAY" />
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_DEAL_X_DAMAGE_RADIANCE" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    </TARGET_DEFINITION>
    <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_LUA_CONDITION, 1, EffectController(), EffectDC())
    </FILTER>
    <FILTER_CONDITION id="1">
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if FilteredCard() ~= nil and target ~= nil and FilteredCard():GetColour():TestAny(target:GetColour()) then
       return true
    else
       return false
    end
    </FILTER_CONDITION>
    <RESOLUTION_TIME_ACTION filter_id="0">
    if FilteredCard() ~= nil then 
       EffectSourceLKI():DealDamageTo( GetEffectX(), FilteredCard() )
    end
    local damage_dealt = EffectSourceLKI():GetLastDamageAmountDealt()
    EffectController():GainLife(damage_dealt)
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
  </SPELL_ABILITY>
thefiremind wrote:
East Bay wrote:anyone know why PutTokensOntoBattlefieldTappedAndAttacking doesn't work? I made Giest but angel never attacks.
I coded Kessig Cagebreakers recently and it works. Remember that you need the player that you want to attack as last parameter:
Code: Select all
MTG():PutTokensOntoBattlefieldTappedAndAttacking( "TOKEN_FILENAME", number_of_tokens, EffectController(), pointer_to_the_player )
which doesn't need to be the same player attacked by the Geist, so you need to ask which opponent you want to attack with the Angel before creating it.
thefiremind wrote:
sumomole wrote:I have tried SkipStep, but I failed, SkipStep(STEP_UNTAP) and SkipStep(STEP_UNTAP, player) are wrong, I don't know what is the correct format. :(
I tried to code Eon Hub like this:
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Players skip their upkeep steps.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Les joueurs passent leurs étapes d’entretien.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Los jugadores se saltan sus pasos de mantenimiento.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Spieler übergehen ihre Versorgungssegmente.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[I giocatori saltano il loro mantenimento.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[プレイヤーはアップキープ・ステップをとばす。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Players skip their upkeep steps.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Players skip their upkeep steps.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Os jogadores pulam suas etapas de manutenção.]]></LOCALISED_TEXT>
    <TRIGGER value="BEGINNING_OF_PLAYERS_STEP" pre_trigger="1">
    return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    MTG():SkipStep()
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
then I made a deck with Eon Hub and Sulfuric Vortex, and it seems to work!
Actually, in my test I was using BEGINNING_OF_STEP, but that probably was making it trigger twice (not that it matters much).
gorem2k wrote:Populate:

Code: Select all
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Populate.]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_TOKEN_TO_POPULATE" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    filter:Add( FE_CONTROLLER, OP_IS, EffectController())
    filter:Add( FE_IS_TOKEN, true )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then   
       MTG():PutTokenCopiesOntoBattlefield( target, 1, EffectController() )
    end
    </RESOLUTION_TIME_ACTION>
just change or register CARD_QUERY target tag into GLOSSARY.xml or use an existing one. made Wake the Reflections with this and tested by me.

Evolve:

code | Open
Code: Select all
  <TRIGGERED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Evolve]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_END" to_zone="ZONE_IN_PLAY" simple_qualifier="objectyoucontrol">
    if TriggerObject():GetCurrentPower() &gt; Object():GetCurrentPower() or TriggerObject():GetCurrentToughness() &gt; Object():GetCurrentToughness() then
      return TriggerObject():GetCardType():Test( CARD_TYPE_CREATURE ) ~= 0
    end 
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    if EffectSource() ~= nil and TriggerObject() ~= nil then
      if TriggerObject():GetCurrentPower() &gt; EffectSource():GetCurrentPower() or TriggerObject():GetCurrentToughness() &gt; EffectSource():GetCurrentToughness() then
         EffectSource():AddCounters( MTG():PlusOnePlusOneCounters(), 1 )
      end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
(exactly the same as DotP2013)
thefiremind wrote:
East Bay wrote:Also when you guys get the chance I would love to see how storm and split second work in D14 :mrgreen:
Storm needs to use the new Interrogation object because it seems that the register that was keeping track of all the played spells isn't there anymore. I guess this should work:
Storm | Open
Code: Select all
  <TRIGGERED_ABILITY active_zone="ZONE_STACK">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Storm]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Déluge]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tormenta]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Sturm]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Tempesta]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[ストーム]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Storm]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Шторм]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Rajada]]></LOCALISED_TEXT>
    <TRIGGER value="SPELL_PLAYED" simple_qualifier="self" />
    <RESOLUTION_TIME_ACTION>
    local interrogation = MTG():ClearInterrogationQuery()
    local spellsCastBefore = interrogation:Count( INTERROGATE_SPELLS_CAST, INTERROGATE_THIS_TURN ) - 1
    if spellsCastBefore &gt; 0 then
       for i=0,spellsCastBefore-1 do
          local copy = EffectController():CopySpell( EffectSourceLKI() )
          EffectController():ChooseNewTargets(copy)
       end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Split second is easier now because there's a perfect characteristic for players (hoping that it works):
Split second | Open
Code: Select all
  <STATIC_ABILITY active_zone="ZONE_STACK">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Split second]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Fraction de seconde]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Fracción de segundo
]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Sekundenbruchteil]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Battibaleno]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[刹那]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Split second]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Мгновение ока]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Fração de segundo]]></LOCALISED_TEXT>
    <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:SetFilterType(FILTER_TYPE_PLAYERS)
    </FILTER>
    <CONTINUOUS_ACTION layer="8" filter_id="0">
    if FilteredPlayer() ~= nil then
       local characteristics = FilteredPlayer():GetCurrentCharacteristics()
       characteristics:Bool_Set(PLAYER_CHARACTERISTIC_CANT_CAST_SPELLS, 1)
       characteristics:Bool_Set(PLAYER_CHARACTERISTIC_CANT_ACTIVATE_NONMANA_ABILITIES, 1)
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
Both are untested.
Thank you guys updated it all to the first post. :)
User avatar
Master Necro
 
Posts: 259
Joined: 24 Apr 2013, 18:25
Has thanked: 83 times
Been thanked: 21 times

Re: Formal Request Thread

Postby CharybdisV » 05 Jul 2013, 05:35

A handful of requests if anyone has the time! :D

Xathrid Necromancer (from the M14 spoilers)
Imposing Sovereign (from the M14 spoilers)
Bitterblossom
Ravenous Demon // Archdemon of Greed

Flip cards are always a pain, so that one's kinda a if someone finds a really easy way to do it with the new framework of Magic 2014.
User avatar
CharybdisV
 
Posts: 8
Joined: 08 Aug 2012, 04:46
Has thanked: 2 times
Been thanked: 2 times

Re: Formal Request Thread

Postby NEMESiS » 05 Jul 2013, 14:59

thefiremind wrote:
NEMESiS wrote:How can Total War be made? Can we check for summoning sickness?
Checking for summoning sickness of the card itself is easy, checking other cards is hard because you would need to save the information somewhere.
Well, I don't have a clue... can someone make it if they can?
User avatar
NEMESiS
 
Posts: 460
Joined: 03 Jan 2013, 04:02
Location: Pools of Becoming
Has thanked: 70 times
Been thanked: 21 times

Re: Formal Request Thread

Postby drleg3nd » 06 Jul 2013, 00:36

is this the right place to request cards ? all I see is coding lol
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: Formal Request Thread

Postby gorem2k » 06 Jul 2013, 00:57

I think Master Necro made this thread for reference in simplifying code mechanics. I thought about an idea this morning; would be nice if thefiremind web generator would include them when there's a need for it. this would save us time. but then, the tool is already priceless.
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Formal Request Thread

Postby Xander9009 » 06 Jul 2013, 01:36

CharybdisV wrote:A handful of requests if anyone has the time! :D

Xathrid Necromancer (from the M14 spoilers)
Imposing Sovereign (from the M14 spoilers)
Bitterblossom
Ravenous Demon // Archdemon of Greed

Flip cards are always a pain, so that one's kinda a if someone finds a really easy way to do it with the new framework of Magic 2014.
I don't know how to do flip cards. Don't even know where to begin with them. But I got the others working for you. At least, they appear to be working. The Imposing Sovereign is slightly messed up. I couldn't get it to make them enter the battlefield tapped, so it taps them as soon as then enter. This should really only be a problem rarely, possibly creatures with haste and tap abilities. Anyway, if I manage to get it fixed, I'll post it. But I've worked on that in particular far too long haha.

I don't know how to make a wad file with just cards and have them be usable, so you'll need to do that bit (or, as I did, stick them in another working wad and repack it...).

I've got a few requests of my own. I'm trying to make a deck (one that I actually own), but I've found a few cards that I can't figure out. I got all the rest. I don't necessarily need the cards done, just some advice on HOW to do them would be amazing :)

Mystic Genesis - I can't quite get it to work. It makes the token, but I can't get it to change the token's power and toughness.
| Open
Code: Select all
   <TARGET tag="CARD_QUERY_CHOOSE_SPELL_TO_COUNTER" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:SetZone( ZONE_STACK )
    </TARGET_DEFINITION>
   <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       local cmc = target:GetConvertedManaCost()
       EffectDC():Set_Int( 1, cmc )
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       target:CounterSpell()
    end
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
    MTG():PutTokensOntoBattlefield( "TOKEN_OOZE_0_1_G_909002", 1, EffectController(), EffectDC():Make_Chest(0) )
    </RESOLUTION_TIME_ACTION>
   <RESOLUTION_TIME_ACTION>
   local TokenPT = EffectDC():Get_Int(1)
   local token = EffectDC():Get_Chest(0):Get_CardPtr(0)
    if token ~= nil then
       local characteristics = token:GetCurrentCharacteristics()
       characteristics:Power_Set( TokenPT )
       characteristics:Toughness_Set( TokenPT )
    end
    </RESOLUTION_TIME_ACTION>
Sphinx of Uthuun - Too many chests! This one's got my brain scrambled through and through. Unlike with Mystic Genesis, I don't even have basic code to work from.
Triumph of Ferocity - If someone knows how to do this one easily, that would be awesome. At the moment I'm planning to copy Overwhelming Stampede for myself and then all opponents' creatures and then compare the results.
Zameck Guildmage - I've got its second ability working, but the first ability simply won't trigger no matter how much I mess with it.
| Open
Code: Select all
<ACTIVATED_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{G}{U}: This turn, each creature you control enters the battlefield with an additional +1/+1 counter on it.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{G}{U} : Ce tour-ci, chaque créature que vous contrôlez arrive sur le champ de bataille avec un marqueur +1/+1 supplémentaire sur elle.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{G}{U}: Este turno, cada criatura que controlas entra al campo de batalla con un contador +1/+1 adicional sobre ella.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{G}{U}: In diesem Zug kommt jede Kreatur, die du kontrollierst, mit einer zusätzlichen +1/+1-Marke ins Spiel.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{G}{U}: In questo turno, ogni creatura che controlli entra nel campo di battaglia con un segnalino +1/+1 addizionale.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{G}{U}:このターン、あなたがコントロールする各クリーチャーは、それぞれ+1/+1カウンターが追加で1個置かれた状態で戦場に出る。{G}{U}, あなたがコントロールするクリーチャー1体の上から+1/+1カウンターを1個取り除く:カードを1枚引く。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{G}{U}: 이 턴에, 당신이 조종하는 각 생물은 +1/+1 카운터 한 개를 추가로 가진 채로 전장에 들어온다.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{G}{U}: в этом ходу каждое существо под вашим контролем выходит на поле битвы с дополнительным жетоном +1/+1 на нем.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{G}{U}: Neste turno, cada criatura que você controla entra no campo de batalha com um marcador +1/+1 adicional.]]></LOCALISED_TEXT>
   <COST mana_cost="{G}{U}" type="Mana" />
   <TRIGGERED_EFFECT replacement_effect="1">
    <TRIGGER value="ZONECHANGE_TRANSITION" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" pre_trigger="1">
    return (TriggerObject() == EffectDC():Get_CardPtr(0))
    </TRIGGER>
    <CLEANUP simple_cleanup="EndOfTurn" />
    <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
      if TriggerObject():GetCardType():Test( CARD_TYPE_CREATURE ) then
         TriggerObject():AddCounters( MTG():PlusOnePlusOneCounters(), 1)
      end
    end
    </RESOLUTION_TIME_ACTION>
   </TRIGGERED_EFFECT>
  </ACTIVATED_ABILITY>
Attachments
Test Cards.zip
The cards I coded. I hope they work for you!
(1.46 MiB) Downloaded 275 times
Last edited by Xander9009 on 10 Jul 2013, 00:25, edited 1 time in total.
_______________________________
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 gorem2k » 06 Jul 2013, 02:20

Xander9009 wrote:The Imposing Sovereign is slightly messed up. I couldn't get it to make them enter the battlefield tapped, so it taps them as soon as then enter. This should really only be a problem rarely, possibly creatures with haste and tap abilities. Anyway, if I manage to get it fixed, I'll post it. But I've worked on that in particular far too long haha.
Maybe this:
Code: Select all
  <TRIGGERED_ABILITY replacement_effect="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Creatures your opponents control enter the battlefield tapped.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_TRANSITION" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" pre_trigger="1">
    return TriggerObject():GetCardType():Test( CARD_TYPE_CREATURE ) and TriggerObject():GetPlayer():GetTeam() ~= EffectSource():GetPlayer():GetTeam()
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    if TriggerObject() ~= nil then
        TriggerObject():Tap()
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
I think ZONECHANGE_TRANSITION comes before ZONECHANGE_END

For the token, I will experiment with it... I've just noticed a function called "PutPTTokensOntoBattlefield"
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Formal Request Thread

Postby BloodReyvyn » 06 Jul 2013, 08:25

Cool thread. At least a couple of the functions I needed were already here. One question and some semi-related help though;

Has anyone made a Grandeur card as of yet?

I tried to make Korlash, Heir to Blackblade and I am obviously failing at something since it (a) allows me to discard any card from my hand and (b) acts like it is activating an ability, but nothing happens when it resolves.

Korlash, Heir to Blackblade Code | Open
Code: Select all
<?xml version='1.0'?>
<CARD_V2 ExportVersion="18">
  <FILENAME text="KORLASH_HEIR_TO_BLACKBLADE_38136208" />
  <CARDNAME text="KORLASH_HEIR_TO_BLACKBLADE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Korlash, Heir to Blackblade]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Korlash, Erede di Blackblade]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Korlash, Erbe der Schwarzklinge]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Korlash, héritier de Lamenoire]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Korlash, heredero de Blackblade]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[黒き剣の継承者コーラシュ]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Korlash, Heir to Blackblade]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Корлаш, Наследник Черного Меча]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Korlash, Herdeiro da Espada Sombria]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="38136208" />
  <ARTID value="38136208" />
  <ARTIST name="Daarken" />
  <CASTING_COST cost="{2}{B}{B}" />
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Zombie" order_de-DE="0" order_es-ES="1" order_fr-FR="0" order_it-IT="1" order_jp-JA="0" order_ko-KR="0" order_pt-BR="0" order_ru-RU="0" />
  <SUB_TYPE metaname="Warrior" order_de-DE="1" order_es-ES="0" order_fr-FR="1" order_it-IT="0" order_jp-JA="1" order_ko-KR="1" order_pt-BR="1" order_ru-RU="1" />
  <EXPANSION value="DPG" />
  <RARITY metaname="R" />
  <POWER value="*" />
  <TOUGHNESS value="*" />
  <STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Korlash, Heir to Blackblade’s power and toughness are each equal to the number of Swamps you control.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[La forza e la costituzione di Korlash, Erede di Blackblade sono pari al numero di Paludi che controlli.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Stärke und Widerstandskraft von Korlash, Erbe der Schwarzklinge sind gleich der Anzahl der Sümpfe, die du kontrollierst.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Korlash, héritier de Lamenoire a une force et une endurance chacune égale au nombre de marais que vous contrôlez.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Korlash, Heir to Blackblade’s power and toughness are each equal to the number of Swamps you control.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[黒き剣の継承者コーラシュのパワーとタフネスは、それぞれあなたがコントロールする沼の総数に等しい。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Korlash, Heir to Blackblade’s power and toughness are each equal to the number of Swamps you control.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Сила и выносливость Корлаша, Наследника Черного Меча равны количеству Болот под вашим контролем.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[O poder e a resistência de Korlash, Herdeiro da Espada Sombria são iguais ao número de Pântanos que você controla.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="7A">
      if EffectSource() ~= nil then
       local characteristics = EffectSource():GetCurrentCharacteristics()
       local filter = ClearFilter()
       
       filter:Add( FE_SUBTYPE, OP_IS, LAND_TYPE_SWAMP )
       filter:Add( FE_CONTROLLER, OP_IS, EffectController())
       local total = filter:Count()
       
       characteristics:Power_Set( total )
       characteristics:Toughness_Set( total )
      end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY immunity="1" hint_name="HINT_REGENERATION">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{1}{B}: Regenerate Korlash.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{1}{B}: Rigenera Korlash.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{1}{B}: Regeneriere Korlash.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{1}{B} : Régénérez Korlash.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{1}{B}: Regenerate Korlash.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{1}{B}:黒き剣の継承者コーラシュを再生する。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{1}{B}: Regenerate Korlash.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{1}{B}: Регенерируйте Корлаша.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{1}{B}: Regenere Korlash.]]></LOCALISED_TEXT>
    <COST mana_cost="{1}{B}" type="Mana" />
    <RESOLUTION_TIME_ACTION>
      if EffectSource() ~= nil then
       EffectSource():GiveRegeneration()
      end
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY window_step="declare_blockers" type="window" window_in_combat="1" />
    <AI_AVAILABILITY type="in_response" response_source="1" />
    <AI_AVAILABILITY type="restriction" restriction_type="no_regeneration_shield" />
    <AI_MODIFIERS combat_immunity="1" />
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY auto_skip="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[|Grandeur| — Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[|Magnificenza| — Scarta un’altra carta chiamata Korlash, Erede di Blackblade: Passa in rassegna il tuo grimorio per trovare fino a due carte Palude, mettile in gioco TAPpate, poi rimescola il tuo grimorio.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[|Erhabenheit| — Wirf ein andere Karte namens Korlash, Erbe der Schwarzklinge aus deiner Hand ab: Durchsuche deine Bibliothek nach bis zu zwei Sümpfen, bringe sie getappt ins Spiel und mische deine Bibliothek danach.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[|Majesté| — Défaussez-vous d’une autre carte appelée Korlash, héritier de Lamenoire : Cherchez jusqu’à deux cartes de marais dans votre bibliothèque, mettez-les en jeu engagées et mélangez ensuite votre bibliothèque.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[|Grandeza| — Descartar otra carta llamada Korlash, heredero de Blackblade: Busca en tu biblioteca hasta dos cartas de pantano, ponlas en juego giradas, luego baraja tu biblioteca.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[壮大 ― 他の「黒き剣の継承者コーラシュ」という名前のカードを1枚捨てる:あなたのライブラリーから最大2枚までの沼カードを探し、それらをタップ状態で場に出し、その後あなたのライブラリーを切り直す。]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[|Grandeur| — Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[|Сила духа| — Сбросьте другую карту с именем Корлаш, Наследник Черного Меча: Найдите в вашей библиотеке до двух карт Болота, положите их в игру повернутыми, затем перетасуйте вашу библиотеку.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[|Grandeza| — Descarte outro card chamado Korlash, Herdeiro da Espada Sombria: Em seu grimório, procure no máximo dois cards de Pântano, coloque-os em jogo virados e embaralhe seu grimório.]]></LOCALISED_TEXT>
    <COST type="Discard">
      <TARGET_DEFINITION id="6">
        filter = ClearFilter()
        filter:SetZone( ZONE_HAND, EffectController() )
        filter:AddCardName( "KORLASH_HEIR_TO_BLACKBLADE" )
      </TARGET_DEFINITION>
      <TARGET_DETERMINATION>
        return AtLeastOneTargetFromDefinition(6)
      </TARGET_DETERMINATION>
      <PLAYTIME>
        EffectController():ChooseTarget( 6, "CARD_QUERY_CHOOSE_CARD_TO_DISCARD", EffectDC():Make_Targets(0) )
      </PLAYTIME></COST>
    <RESOLUTION_TIME_ACTION>
      local filter = ClearFilter()
      local effectController = EffectController()
      filter:NotTargetted()
      filter:Add( FE_SUBTYPE, OP_IS, LAND_TYPE_SWAMP )
      filter:SetZone( ZONE_LIBRARY, effectController)
      filter:SetTargets( 2 )
      filter:May( 1 )
      EffectController:ChooseItem( "CARD_QUERY_CHOOSE_LAND_SWAMP_TO_PUT_ONTO_BATTLEFIELD", EffectDC():Make_Targets(0) )
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      local target_DC = EffectDC():Get_Targets(0)
      local target_card = target_DC:Get_CardPtr(0)
      local i = 1
      if target_DC ~= nil then
       while (target_card ~= nil) do
          target_card:PutIntoPlayTapped(EffectController())
          target_card = target_DC:Get_CardPtr(i)
          i=i+1
       end
      end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
      EffectController():ShuffleLibrary()
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY step="end_of_turn" turn="their_turn" />
    <AI_PLAY_SCORE>
      local filter = Object():GetFilter()
      filter:Clear()
      filter:SetZone( ZONE_HAND )
      filter:AddCardName( "KORLASH_HEIR_TO_BLACKBLADE" )
      filter:SetPlayer( EffectController() )
      if filter:CountStopAt(1) == 1 then
   return 1000
      else
   return 0
      end
    </AI_PLAY_SCORE>
  </ACTIVATED_ABILITY>
  <HELP title="MORE_INFO_TITLE_REGENERATE" body="MORE_INFO_BODY_REGENERATE" zone="ZONE_ANY" />
  <SFX text="COMBAT_DEATHSWORD_ATTACK" power_boundary_min="-1" power_boundary_max="-1" />
  <AI_BASE_SCORE score="600" zone="ZONE_IN_PLAY" />
</CARD_V2>
I remember I jacked the code from Nature's Lore for the Swamp-finding ability, but apprently I did it wrong.

On an unrelated note, I was going to try to make Cabal Coffers but I am unsure of how to approach that one. Is there a better way to do this in D14 or am I going to have to make mana tokens to get it to work?
"There's an experience worse than blindness - it's the certainty that your vision is perfect and the horror that there's no world around you to see."
User avatar
BloodReyvyn
 
Posts: 421
Joined: 19 May 2013, 13:29
Has thanked: 53 times
Been thanked: 40 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 33 guests


Who is online

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

Login Form