It is currently 24 Jun 2025, 22:28
   
Text Size

Card Creation Request Thread

User-made mods in DLC (Downloadable Content) form.
Get MTG cards here for your DotP that aren't available anywhere else!

Moderator: CCGHQ Admins

Re: Card Creation Request Thread

Postby RiiakShiNal » 05 Jun 2013, 00:14

BloodReyvyn wrote:I believe Riku has already been made, just in case you didn't know. ;)

I have been toiling for 3 days to get Urborg, Tomb of Yawgmoth up and working, since somewhere someone had mentioned it not possible to do correctly. Is there no way to add additional land types to lands or make them "count as" another land type?

I got this far with the code, which adds an activated ability to add one black to your mana pool. I only added that part because the additional land type wasn't showing up and I was making sure my filter was working correctly.

Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
  <FILENAME text="URBORG_TOMB_OF_YAWGMOTH_287330" />
  <CARDNAME text="URBORG_TOMB_OF_YAWGMOTH" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Urborg, Tomb of Yawgmoth]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="287330" />
  <ARTID value="A287330" />
  <ARTIST name="John Avon" />
  <CASTING_COST cost="" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[“Yawgmoth’s corpse is a wound in the universe. His foul blood seeps out, infecting the land with his final curse.”
Lord Windgrace]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <SUPERTYPE metaname="Legendary" />
  <TYPE metaname="Land" />
  <EXPANSION value="V12" />
  <RARITY metaname="M" />
  <STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogni terra è una Palude in aggiunta ai suoi altri tipi di terra.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Each land is a Swamp in addition to its other land types.]]></LOCALISED_TEXT>
    <FILTER>
      return (FilteredCard() ~= nil and
      FilteredCard():GetCardType():Test( CARD_TYPE_LAND ) ~= 0)
    </FILTER>
    <CONTINUOUS_ACTION layer="4">
      if FilteredCard() ~= nil then
       FilteredCard():AddSubTypeTo( "LAND_TYPE_SWAMP", FilteredCard() )
      end
    </CONTINUOUS_ACTION>
    <CONTINUOUS_ACTION layer="6">
      if FilteredCard() ~= nil then
       FilteredCard():GetCurrentCharacteristics():GrantAbility(1)
      end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <MANA_ABILITY resource_id="1" immunity="0">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Add {B} toy your mana pool.]]></LOCALISED_TEXT>
    <COST type="TapSelf" />
    <PRODUCES amount="{B}" />
  </MANA_ABILITY>
</CARD_V2>
You have:
Code: Select all
       FilteredCard():AddSubTypeTo( "LAND_TYPE_SWAMP", FilteredCard() )
Should be:
Code: Select all
FilteredCard():GetCurrentCharacteristics():SubType_GetWritable( FilteredCard() ):Add( LAND_TYPE_SWAMP, FilteredCard() )
As for whether it can be coded or not, it can only be approximated and even then that approximation can cause problems. For example if you have an Island and you put Urborg, Tomb of Yawgmoth in play and you have a Tidehollow Strix in hand you can actually play it for free, because the game will see that the Island is a basic land with Island and Swamp types (so it can produce {U} {B}, even though really it should produce {U} OR {B}) and then on top of that you have the {B} from the ability in your code, since the game sees that a single land can produce all the mana needed for the Tidehollow Strix it will attempt to use just the one land, but since it can't tap for two of the three abilities it will just let you play the Tidehollow Strix without actually tapping the land at all (this bug has been in the engine since DotP 2010). There is no implementation that will not cause that bug or even worse bugs.

About the only way to do it would be to recode the Basic supertype to no longer use the game's implementation, change all cards that reference the Basic supertype to instead reference your new implementation, recode all lands to use the new implementation and use manual tapping for mana (activated abilities that produce tokens) and even that would still have a problem with Burning-Tree Shaman. This is way to much work to even think about (especially since you'll need to get other coders to use your recoded basic supertype as well). I have toyed with the idea of recoding all the lands and mana sources for manual tapping so we could actually implement our own mana pool and make some more cards that we haven't previously been able to make, but the amount of work is just overwhelming so I've never bothered to actually do it.

Edit: With Killing Wave I see at least one problem (which would necessity recoding the card anyway):
  • You ask which creatures to sacrifice rather than which creatures to save. This basically forces players to rescue as many creatures as they can even if there is no good reason to do so. For example say I have 20 life, 5 1/1 Green Elf tokens in play, and X is 4, with the way you have the card coded, I will instantly lose because I'm never asked to sacrifice any creatures the card just assumes I want to rescue them all.

When recoding the card you should store targets based on playerindex instead of RepCount (it will reduce the number of loop iterations, and make the code easier to follow).
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Card Creation Request Thread

Postby BloodReyvyn » 05 Jun 2013, 00:46

Wow, that would be a lot of work, especially with the new game coming out soon-ish... Oh well, just another one to chalk up to engine limitations. Again, hoping the new game will be a little more mana-pool friendly, but with the track record of bugs they've had on release, I won't hold my breath. lol
"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

Re: Card Creation Request Thread

Postby AriesKiki » 05 Jun 2013, 01:39

It is possible to create Guile? May I request it if possible? Thanks! :)
User avatar
AriesKiki
 
Posts: 53
Joined: 05 Mar 2013, 17:46
Has thanked: 15 times
Been thanked: 3 times

Re: Card Creation Request Thread

Postby RiiakShiNal » 05 Jun 2013, 01:54

AriesKiki wrote:It is possible to create Guile? May I request it if possible? Thanks! :)
No, the first ability can't be coded.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Card Creation Request Thread

Postby sumomole » 05 Jun 2013, 02:00

RiiakShiNal wrote:
AriesKiki wrote:It is possible to create Guile? May I request it if possible? Thanks! :)
No, the first ability can't be coded.
But very soon, it can be coded in DOTP2014. :lol:

RiiakShiNal wrote:About the only way to do it would be to recode the Basic supertype to no longer use the game's implementation, change all cards that reference the Basic supertype to instead reference your new implementation, recode all lands to use the new implementation and use manual tapping for mana (activated abilities that produce tokens) and even that would still have a problem with Burning-Tree Shaman. This is way to much work to even think about (especially since you'll need to get other coders to use your recoded basic supertype as well). I have toyed with the idea of recoding all the lands and mana sources for manual tapping so we could actually implement our own mana pool and make some more cards that we haven't previously been able to make, but the amount of work is just overwhelming so I've never bothered to actually do it.
I think we need a banned list for DOTP, suggest all modders not to code some useless cards that will cause some bugs, the first card is Burning-Tree Shaman, because AI doesn't like and doesn't know how to use activated ability.
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Card Creation Request Thread

Postby RiiakShiNal » 05 Jun 2013, 02:31

sumomole wrote:I think we need a banned list for DOTP, suggest all modders not to code some useless cards that will cause some bugs, the first card is Burning-Tree Shaman, because AI doesn't like and doesn't know how to use activated ability.
Technically, Burning-Tree Shaman doesn't cause bugs, it merely illustrates problems that are inherent in the engine itself. However, I do agree that Burning-Tree Shaman does cause several headaches when trying to work around problems with the engine (poor mana ability support, unable to choose mana color for dual-multi lands without activated ability, etc...).

Before we start banning (or simply discouraging certain cards from being made) we need to see what the DotP 2014 engine will give us and what it's limitations are. For all we know they've completely cleaned up and fixed the Mana system so workarounds such as tokens and activated abilities for choosing color are unnecessary (doubtful, but it is possible) in which case there should be no problem with Burning-Tree Shaman.

So for now we should have a wait and see policy before we start do something as extreme as banning cards.

Something I can see as being useful for DotP 2014 is creating a registry and standards for constants, register assignments, and naming (cards, functions, files, etc...) so that we can reduce or completely eliminate conflicts. For example having modders prefix their work so that functions won't conflict and break cards, function/card files don't get overridden by a different mod, etc....

We've built better tools than we've ever had before, if we keep improving the tools we can probably make checking for some conflicts and detecting dependencies even easier and faster. Also because of these tools we can build cards and decks faster and with fewer errors (Card Generators help immensely here, some deck creators also have rudimentary checking for card errors [mostly XML structure errors]).
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Card Creation Request Thread

Postby BloodReyvyn » 05 Jun 2013, 02:37

Having one minor issue with the last card I need for a deck. For some reason, I can choose all targets correctly, but he still deals no damage regardless of the target.

Bloodshot Cyclops

Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
  <FILENAME text="BLOODSHOT_CYCLOPS_45387" />
  <CARDNAME text="BLOODSHOT_CYCLOPS" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Bloodshot Cyclops]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Cyclope sanguin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cíclope cruento]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Blutaugenzyklop]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ciclopi Sanguinari]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Bloodshot Cyclops]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Bloodshot Cyclops]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Bloodshot Cyclops]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Cíclope de Olho Injetado]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="45387" />
  <ARTID value="A45387" />
  <ARTIST name="Daren Bader" />
  <CASTING_COST cost="{5}{R}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[After their first encounter, the goblins named him Chuck.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Après leur première rencontre, les gobelins le nommèrent Chuck.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Después de su primer encuentro, los trasgos lo llamaron “Lanzador”.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Nach ihrem ersten Aufeinandertreffen nannten ihn die Goblins Charlie.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Dopo il loro primo incontro, i goblin lo avevano battezzato Chuck.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[After their first encounter, the goblins named him Chuck.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[After their first encounter, the goblins named him Chuck.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[After their first encounter, the goblins named him Chuck.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Depois de seu primeiro encontro, os goblins passaram a chamá-lo de Vermelhão.]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Cyclops" order_fr-FR="0" order_es-ES="1" order_de-DE="0" order_it-IT="1" order_jp-JA="0" order_ko-KR="0" order_ru-RU="0" order_pt-BR="0" />
  <SUB_TYPE metaname="Giant" order_fr-FR="1" order_es-ES="0" order_de-DE="1" order_it-IT="0" order_jp-JA="1" order_ko-KR="1" order_ru-RU="1" order_pt-BR="1" />
  <EXPANSION value="8ED" />
  <RARITY metaname="R" />
  <POWER value="4" />
  <TOUGHNESS value="4" />
  <ACTIVATED_ABILITY filter_zone="ZONE_IN_PLAY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}, Sacrifice a creature: Bloodshot Cyclops deals damage equal to the sacrificed creature’s power to target creature or player.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}, sacrifiez une créature : Le Cyclope sanguin inflige à une cible, créature ou joueur, autant de blessures que la force de la créature sacrifiée.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}, sacrificar una criatura: El Cíclope cruento hace una cantidad de daño igual a la fuerza de la criatura sacrificada a la criatura o jugador objetivo.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}, opfere eine Kreatur: Der Blutaugenzyklop fügt einer Kreatur oder einem Spieler deiner Wahl Schadenspunkte in Höhe der Stärke der geopferten Kreatur zu.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}, Sacrifica una creatura: I Ciclopi Sanguinari infliggono a una creatura o a un giocatore bersaglio un danno pari alla forza della creatura sacrificata.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}, Sacrifice a creature: Bloodshot Cyclops deals damage equal to the sacrificed creature’s power to target creature or player.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}, Sacrifice a creature: Bloodshot Cyclops deals damage equal to the sacrificed creature’s power to target creature or player.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}, Sacrifice a creature: Bloodshot Cyclops deals damage equal to the sacrificed creature’s power to target creature or player.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}, Sacrifique uma criatura: Cíclope de Olho Injetado causa à criatura alvo ou ao jogador alvo uma quantidade de pontos de dano igual ao poder da criatura sacrificada.]]></LOCALISED_TEXT>
    <COST type="TapSelf" />
    <COST type="Generic">
      <TARGET_DEFINITION id="6">
   local filter = Object():GetFilter()
   filter:Clear()
   filter:AddCardType( CARD_TYPE_CREATURE )
   filter:SetPlayer( EffectController() )
   filter:SetZone( ZONE_IN_PLAY )
   filter:SetHint( HINT_ENEMY, EffectController() )
   filter:SetCardInstance( Object() )
   filter:AddExtra( FILTER_EXTRA_FLIP_CARD_INSTANCE )
   filter:NotTargetted()
      </TARGET_DEFINITION>
      <TARGET_DETERMINATION>
   return AtLeastOneTargetFromDefinition(6)
      </TARGET_DETERMINATION>
      <PLAY_TIME_ACTION target_choosing="1">
   EffectController():ChooseTarget( 6, "CARD_QUERY_CHOOSE_CREATURE_TO_SACRIFICE", EffectDC():Make_Targets(0) )
      </PLAY_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
          local creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
     if (creature ~= nil) then
      EffectDC():Int_Set( 0, creature:GetCurrentCharacteristics():Power_Get() )
      creature:Sacrifice( EffectController() )
     end
      </RESOLUTION_TIME_ACTION>
    </COST>
    <TARGET_DEFINITION id="0">
      local filter = Object():GetFilter()
      filter:Clear()
      filter:SetFilterType( FILTER_TYPE_CARDS + FILTER_TYPE_PLAYERS )
      filter:SetZone( ZONE_IN_PLAY )
      filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
      filter:AddCardType( CARD_TYPE_CREATURE )
    </TARGET_DEFINITION>
    <TARGET_DETERMINATION>
      return AtLeastOneTargetFromDefinition(0)
    </TARGET_DETERMINATION>
    <PLAY_TIME_ACTION target_choosing="1">
      EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_DEAL_DAMAGE", EffectDC():Make_Targets(1) )
    </PLAY_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
   local player = EffectDC():Get_Targets(1):Get_PlayerPtr(0)
   local creature = EffectDC():Get_Targets(1):Get_ObjectPtr(0)
   local damage = EffectDC():Int_Get( 0 )
   if player ~= nil then
      player:DealDamage( damage, Object() )
        elseif creature ~= nil then
                creature:DealDamage( damage, Object() )
   end
    </RESOLUTION_TIME_ACTION>
  </ACTIVATED_ABILITY>
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
</CARD_V2>
"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

Re: Card Creation Request Thread

Postby BloodReyvyn » 05 Jun 2013, 02:46

NEVERMIND, I caught the typos right after I posted this

ObjectPtr should have been CardPtr... :oops:
"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

Re: Card Creation Request Thread

Postby thefiremind » 05 Jun 2013, 12:15

The Killing Wave was coded by me, and I'm quite surprised that nobody tested it until now... anyway I don't have time to fix it at the moment, so if someone wants to try, be my guest. :D

RiiakShiNal wrote:Something I can see as being useful for DotP 2014 is creating a registry and standards for constants, register assignments, and naming (cards, functions, files, etc...) so that we can reduce or completely eliminate conflicts. For example having modders prefix their work so that functions won't conflict and break cards, function/card files don't get overridden by a different mod, etc....
I definitely want to do that for DotP2014. I'll probably add another box on my web generator where we can write a prefix for the card IDs that will be automatically added on the XML when it's generated. I'll use 199 for myself (being 1999 probably too long together with the 6-digit official Multiverse ID).
< 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: 722 times

Re: Card Creation Request Thread

Postby Scion of Darkness » 05 Jun 2013, 15:02

Thats a great idea, Chuck Norris approves :D
User avatar
Scion of Darkness
 
Posts: 235
Joined: 27 Aug 2012, 13:14
Has thanked: 17 times
Been thanked: 23 times

Re: Card Creation Request Thread

Postby gorem2k » 05 Jun 2013, 17:27

Req'ing Assemble the Legion with token + tdx, Battlegate Mimic and Blaze Commando. Please, SVP, por favor :)
gorem2k
 
Posts: 464
Joined: 01 Apr 2013, 04:21
Has thanked: 48 times
Been thanked: 33 times

Re: Card Creation Request Thread

Postby sumomole » 05 Jun 2013, 18:27

gorem2k wrote:Req'ing Assemble the Legion with token + tdx, Battlegate Mimic and Blaze Commando. Please, SVP, por favor :)
cards.zip
Assemble the Legion & Battlegate Mimic & token
(325.35 KiB) Downloaded 260 times

EDIT: I think this card may be has problems, if you don't care, test it. :lol:
Blaze Commando(untested).zip
(108.55 KiB) Downloaded 257 times
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Card Creation Request Thread

Postby thefiremind » 05 Jun 2013, 19:23

I made another version. It has approximations as well, but it works, at least with Shock. :D I also made a R/W Soldier token with the picture of the promo version. Use the token and the creature you like most, and in case you find a bug in one of the Commandos, you'll have the other one. :lol:
Attachments
Blaze Commando + promo token.zip
(189.3 KiB) Downloaded 244 times
< 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: 722 times

Re: Card Creation Request Thread

Postby MC Brodie » 05 Jun 2013, 22:53

Ok I believe (hope) I only have 2 more questions before the deck I am building is finished. First, I am having trouble with Turntimber Ranger. The card works appropriately, but when its in my deck and I leave the game, the game crashes. I don't know if I messed up something in the card coding (though I don't think so since the card works correctly and the game only crashes on exit) or have a bad ID name somewhere. The 2nd question, a few of the cards I coded have a question or query (e.g., put a 2/2 wolf token into play) but I cannot figure out how to change the query text. I copied some "draw card" query, so all of my queries ask if I want to draw a card. How can I modify this text?

Thank you for all of the help and sorry for such greenish questions.
-----------------------------------------------------------------------
Song of the Day: 46 and 2 (cover)
MC Brodie
 
Posts: 310
Joined: 01 Jun 2013, 00:10
Has thanked: 44 times
Been thanked: 34 times

Re: Card Creation Request Thread

Postby thefiremind » 05 Jun 2013, 23:07

MC Brodie wrote:First, I am having trouble with Turntimber Ranger. The card works appropriately, but when its in my deck and I leave the game, the game crashes.
Don't worry, this is a classic: you just forgot the TOKEN_REGISTRATION block. Copy it from another creature that produces wolves (for example Master of the Wild Hunt). Any card that produces tokens must have a TOKEN_REGISTRATION block for each kind of token it produces, otherwise that's what happens. But if a token produces another token (Mitotic Slime tokens for example), you need to put all TOKEN_REGISTRATIONs on the main card because the game doesn't like those blocks on tokens.

MC Brodie wrote:a few of the cards I coded have a question or query (e.g., put a 2/2 wolf token into play) but I cannot figure out how to change the query text. I copied some "draw card" query, so all of my queries ask if I want to draw a card. How can I modify this text?
Code: Select all
EffectController():BeginNewMultipleChoice()
EffectController():AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" ) -- first possible answer
EffectController():AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_NO" ) -- second possible answer
-- there can be a third possible answer, no more than 3
EffectController():AskMultipleChoiceQuestion( "CARD_QUERY_DRAW_A_CARD" ) -- question
Change the strings "CARD_QUERY_etc." according to what you need to ask and/or which answers you need to choose from. Those strings are localised according to Excel-style XML files inside TEXT_PERMANENT directories, so there's a preconstructed list of strings that you can use without the need of adding them to an XML file of your own. The list basically corresponds to the strings used in the official cards (there are some more which are leftovers from DotP2012), but you can also use strings from other mods if you want, and you can add your own strings with ease if you look at how those XML files are organized, which is something I suggest you to learn because you need to localise also deck names and AI avatar names the same way if you don't want to have [BRACKETED_NAMES]. :wink:
Some of those strings have a special escape sequence inside their localisations which is %d. This will be replaced by something according to the latest call of
Code: Select all
EffectController():SetCustomQueryInstructionValue(...)
or
Code: Select all
EffectController():SetCustomQueryInstructionCardPtr(...)
where the first one replaces %d with a number (passed as argument), and the second replaces %d with the name of a card (whose pointer - to the card, not to the name - is passed as argument).

By the way, when the "may" is likely to get an affirmative answer 99.999% of the times, like when you "may" gain life or when you "may" generate tokens, I'd suggest you to just ignore the "may" and do your thing without asking. Drawing cards is something that you could want to avoid a considerable number of times (against a mill deck for example) so that's why asking is a good thing in that case.
< 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: 722 times

PreviousNext

Return to New MTG Cards and Decks (2010, 2012, 2013, 2014, 2015, Magic Duels)

Who is online

Users browsing this forum: No registered users and 8 guests

Main Menu

User Menu

Our Partners


Who is online

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

Login Form