Monday, May 12, 2008

Scripting the XP System

I said that this time I'd offer some more information on the world, but instead I felt like ranting about scripting. The reason for this is that I'm needing to get a lot of scripting done before I can really build anything that's guaranteed for inclusion in the draft of the module. Earlier I listed several custom systems I'm planning on/am in the process of scripting, and they're some of the things that make up the core of the world. You've gotta have a foundation before your walls can stand.

Well, the problem with scripting is that it's not like building. With building you can open the toolset and fiddle around until you have a nifty idea or a fit of inspiration. With scripting, you need to know what you want and have already figured out how to get there. It's harder, I suppose, though I honestly prefer scripting because constant planning is more reliable for me than fits of inspiration, and I'm more likely to get a bunch of scripting done than a bit of building.

Why the rant, then? Well, I'm getting jittery. I've got so many neat ideas that I want to pull off in this world, but I'm still stuck doing the basic systems. I know that if I jump into scripting the cool ideas I have that I'll just have to come back later and restructure things to work within the confines of my base, which means more work and lots of headaches. Still, it's aggravating to still be working on an XP system, my current project. That said, I've accomplished quite a bit on it, and it's an extremely robust system that Casa and I will both be using in our worlds. The trouble is, I've had to cut some of the features because they were just impractical. That's the problem with designing large systems (and the XP system is well over 1500 lines right now): you're tempted to throw too much in, and if you're not careful, it becomes a veritable maze.

I'm to the point where I can start writing some documentation on it, and documentation helps, not only because it lets others know how to use the scripts, but also because it makes sure you've covered everything you needed to. You'd be surprised how often you can build a large system only to realize later that you've forgotten one or two pieces of the puzzle that are necessary to actually make it work. For now, though, let's look at the features of my XP system (based on Knat's Flexible PW XP System and the Vives class-based rewards). The following is a list of features I told Casa the system should have. What I've finished (for the most part) is crossed out, what I still have to do is in red, and what I've dropped from the system is grey:
  • Change the overall XP gain rate in one setting
  • Change XP gain for custom subraces
  • Overcome multiclassing XP penalties
  • Keep players from exploiting the game by not levelling up as soon as they get the chance
  • Change XP gain for individual levels to make advancement easier or harder
  • Change XP gain for individual classes (useful for putting those HiPS-spamming
  • Shadowdancers in their place)
  • Modify the XP gain of each class based on whether it's Ability, Combat, Crafting, Discovery, or Magic XP
  • Change the overall Ability, Combat, Crafting, Discovery, and Magic XP gain for all classes
  • Easily change whether or not XP types base their rewards on DC or flat rates
  • Award extra XP for extraordinary success in skill rolls
  • Reward partying in combat
  • Give a kill bonus to the PC to deliver a killing blow
  • Modify the XP gained from monsters too far from the PC's level
  • Reduce XP for PCs too far from the average party level
  • Persistently reduce XP gains from killing the same monster or casting the same spell over and over
  • Give Rangers a bonus for killing their favored enemies
  • Keep PCs who are miles away from the party from getting everyone else's combat XP
  • Change the XP soaked up by other PCs in the party, henchmen, and summons
  • Gain XP for using skills, including perception, diplomacy, and thievery
  • Gain XP for using Bard Song, Animal Empathy, and combat-related feats
  • Get XP for crafting based on the difficulty of making the item
  • Get XP for discovering new areas, tidbits of information, and random things of interest
  • And most importantly, every setting can be customized or even turned off

As you can see, things have come a long way. Using the system will be easy, but there's a lot of complicated stuff going on in the background. There's only a few things left in the list, but those things are incredibly tedious. I need to hook into Bard Song, spells, combat-related feats, and plenty of other really boring things. Hopefully I'll force myself to do it in just a couple of days and I'll have something Casa can test.

Until then, folks!

No comments: