Tuesday, March 20, 2012

Here's a sneak preview of my next update to Project Dredmon:

<skillDB>

<skill name="Dratini" id="147151" type="wizard" description="It's a baby dragon! Someday it'll grow big and strong!" >
    <art icon="skills/dratini64.png" />
</skill>

    <ability name="Dratini" icon="skills/dratini64.png" skill="147151" startSkill="1" >
        <description text="147: Dratini. The Dragon Pokemon. Long ago considered a mythical Pokemon until recently when a small colony was found living underwater." />
    </ability>

<dratiniskills>

    <ability name="Wrap" icon="skills/wrap64.png" skill="147151" level="0" >
        <spell name="Wrap" />
        <resistbuff conflagratory="1" hyperborean="-1" aethereal="-1" voltaic="1" />
        <description text="Dratini can constrict a foe, holding it in place and gradually crushing its life away." />
    </ability>

    <ability name="Twister" icon="skills/twister64.png" skill="147151" level="1" >
        <spell name="Twister" />
        <description text="Create a vortex in front of you, dealing damage to enemies in its path." />
    </ability>

    <ability name="Evolve into Dragonair" icon="skills/dragonair64.png" skill="147151" level="2" >
        <primarybuff id="1" amount="2" /> <!--sage-->
        <secondarybuff id="3" amount="3" /> <!--magic-->
        <secondarybuff id="18" amount="1" /> <!--sight-->
        <description text="148: Dragonair. A mystical Pokemon that exudes a gentle aura. Has the ability to change climate conditions." />
    </ability>

    <ability name="Thunder Wave" icon="skills/thunderwave64.png" skill="147151" level="3" >
        <spell name="Thunder Wave" />
        <description text="Paralyze enemies with a surge of electric energy." />
    </ability>

    <ability name="Dragon Dance" icon="skills/dragondance64.png" skill="147151" level="4" >
        <spell name="Dragon Dance" />
        <description text="A mystical dance that raises your attack and speed." />
    </ability>

    <ability name="Evolve into Dragonite" icon="skills/dragonite64.png" skill="147151" level="5" >
        <primarybuff id="1" amount="2" /> <!--sage-->
        <primarybuff id="2" amount="1" /> <!--nimble-->
        <primarybuff id="5" amount="2" /> <!--savvy-->
        <secondarybuff id="3" amount="2" /> <!--magic-->
        <resistbuff hyperborean="-1" voltaic="-1" slashing="1" asphyxiative="1" />
        <description text="149: Dragonite. An extremely rarely seen marine Pokemon. Its intelligence is said to match that of humans." />
    </ability>

    <ability name="Outrage" icon="skills/outrage64.png" skill="147151" level="6" >
        <spell name="Outrage" />
        <description text="RAGE! RAGE! RAGE! ...Confusion?" />
    </ability>

    <ability name="Draco Meteor" icon="skills/dracometeor64.png" skill="147151" level="7" >
        <spell name="Draco Meteor" />
        <description text="BOOM! Drop a huge meteor out of the sky to cause mass destruction!" />
    </ability>

</dratiniskills>

</skillDB>
That's Dratini, which was requested by a poster on the Gaslamp Games forums. This is the finished XML for the skillDB file (which sets the level-up abilities and skill descriptions). Basically, the skillDB file is a skeleton--it lays out the general framework for what the skill is going to do, defining the basic attributes like the name and class (wizard, rogue, or warrior) and telling the game which abilities you're supposed to get at which level.

This defines when you get the abilities, but it doesn't define the spells themselves. For that, I need to write the spellDB file. The skillDB tells the game "At level 2, Dratini learns Twister." Then the game asks, "Well that's dandy, but WTF is Twister?" That's where the spellDB comes in: it explains to the game what "Twister" actually means. This is what I'm going to work on next.

Wrap should be easy enough, since I already did Fire Spin for Charizard that had the same effect. This one is going to target an adjacent square instead of any visible square, and the damage will be different, but otherwise it's the same code.

For Twister, I'm going to try the "cone" setting, which I've never used before (and none of the official skills use it either). I'll have to experiment. Since it's a simple damage spell, it shouldn't be too hard, although...I guess it has a chance of causing flinching? I'll see if I can add in a chance of stunning for 1 turn. This could take a couple tries. We'll see.

For Thunder Wave, I know there's a template that just hits a 3x3 area, so I'll just use that and give it a stun effect. That one should be simple.

Dragon Dance is going to be a timed buff that stacks up to six times. My biggest concern with this one is that I don't know how long it should last or how much mana it should cost. I've done buffs before, so I know the XML for it and it's pretty much just balance that I'm worried about.

With Outrage, I want it to go boom boom boom on consecutive turns, then confuse you (the confusion would be a debuff that has a 50% chance of dealing damage to you when you attack). I've never done something like that before, but I know that there are several effects in the game already like it (most of Necronomiconomics does it), so I know it can be done. I'll check those out and do some experimentation until I get it to work.

Draco Meteor should be fun. It's going to basically do a Bolt of Mass Destruction (with the numbers and damage types changed around) and I'll add a trigger to it that slaps you with a debuff reducing your magic power. Nothing too out of the box to code, but I'm looking forward to trying it out in-game; nuke effects like these are fun.

I'll also need to find some images. I've been using mostly pictures from the trading cards, since they have some nice art. The nice thing about doing a mod that's a crossover with another work is that you can rip images from the source instead of having to draw them yourself.

Once I've written up the code and found pictures, I'm going to test it in-game to make sure everything works. I built a special mod just for testing that lets me level up for free whenever I want, to save time debugging high-level skills.

This whole process shouldn't take more than a couple hours unless something goes wrong. If something goes wrong, I have to figure out where I messed up and fix it. There's a nice tool online for checking XML syntax, and since I keep making dumb mistakes like forgetting to close the quotation marks or accidentally closing the tag in the wrong place, I've just been running everything through it in advance to save time. It caught like four errors in the XML that I just posted up there.

If everything seems like it's working okay, I'll post the mod up on the forums and pat myself on the back for  a job well done.

After I finish Dratini, I might start on Weedle. We'll see.

No comments:

Post a Comment