Obligatory GitHub repository link.

Over the weekend, I got my character generator choosing ability score improvements for Barbarians as they advanced through levels. I wrote a generic method that will ultimately be used by all classes (and eventually subclasses), but only provides for Barbarians at the moment.

While working on it, I realized there was a potentially better, more efficient way of choosing ability score improvements.

At present, when a character reaches a level where they receive an ability score improvement, they make a call to the Feature class (where all race and class features come from), and their scores and class are used to select an appropriate improvement.

Now, I made a decision a week ago that I wasn’t going to support A) feats, or B) split-ability improvements. The former was because feats are of such a selective utility that I don’t see the point in burdening ANYONE with them. The latter was because choosing two ability scores to receive +1 bonuses is more granular than I care to attend to (for now, anyway).

Additionally, rolling 3d6 in order produces a lot fewer “superhero” ability scores, so those +2 bonuses honestly go a lot farther than they otherwise would using 4d6-drop-the-lowest-arrange-as-desired (read: the wrong way).

I’m not bitter or anything. It-it’s just wrong. People need to know.

Anyway. Each class will have a separate sorting method for determining the importance of each ability score–then it will take improvements to that score until it hits a natural (or expanded) cap. I wrote in logic to check against a variable “limit,” rather than an arbitrary number (20). This is so extensions of a character’s personal ability score limit (i.e. from artifacts) can enable higher scores.

But as I said, I realized while I was working on it, that I had a better way of implementing the selection process.

For starters, there are a lot of subclasses now, and some of them will need specialized improvement schedules. A fighter will want improvements to STR, CON, and eventually DEX–but if they’re an eldritch knight, then INT becomes important. Otherwise they’re better off improving like, WIS or CHA.

Now that said, it’s unlikely that a given character will have so many ability bonuses they should need to deviate from a standard improvement schedule. But! If I refactored my code a bit, and gave every subclass an individual improvement schedule, then I could move MOST of the selection process back onto the class and out of my Feature object.

While that change isn’t strictly necessary, it pertains to character class and subclass and perhaps belongs IN the class and subclass objects.

Then again, I don’t know. A lot of these functions are kind of spread around at this point. I’m not sure but I might move ALL character advancement into character class. I mean, if I ever (probably never) support multiclassing, THAT will certainly need to be in the class object.


On a side note… DANG, is it quiet around here. I mean, my blog was never super popular to begin with, but even my crickets have moved on. I don’t know, maybe I’ll recover or build a new audience. School has really done a number on my posting schedule. The most traffic I tend to get is when someone finds my comic for the first time. (Or rereads it… but how often does that happen?)