Obligatory GitHub repository link.

I figured going through character classes in alphabetical order was as good an idea as any other way I might go through them — I considered going through all the non-spellcasters first, I also considered the four archetypal classes.

I’m thinking it was probably a good idea to have started in on the bard early, despite the difficulties. I’ve been forced to figure out a couple weird advancement ideas, like gaining new skill, weapon, and armor proficiency after first level.

Currently, I’m trying to figure out how I want to handle cantrips, specifically. The bard isn’t unique in how it receives or uses cantrips, but the fact that it has cantrips (among other class features), means I have to figure out how to represent them.

It seems like an obvious thing to just incorporate cantrips in my Spellcasting object, but there isn’t a single character class that receives or uses cantrips the same way it uses spells. Cantrips have different usage, different scaling, and are gained on a different schedule from other spells. Also, you can get cantrips from sources other than like, your character class. High elves get a free wizard cantrip.

So, I thought perhaps that I would break cantrips out into a separate object. I ran into a weird problem of trying to count and keep track of which cantrips a character already had, and why. Part of the problem is I’m tracking all spells known in the same place. With that comes trying to track where spells came from… does it matter? Should it?

Say a character multiclasses–not that I plan to implement it, only that considering the problem helps me create more abstract solutions–they have this pool of spells that I have to keep distinct enough that I can keep track of when they have what they’re earned.

A multiclassed spellcaster has separate lists of spells known for each class they have, but one table of “spells per day” that they’re supposed to adhere to–and with the ability of most spells to scale with spell slots, that’s supposed to be somewhat balanced. I haven’t really seen multiclass spellcasters in practice though. It seems like it should be fine though? I don’t know.

But I’ve been struggling with getting bard cantrips setup as a separate object, and I’m wondering if maybe I shouldn’t just incorporate cantrips into the Spellcasting object the way it… probably should have been all along? I guess the difference between now and then (beside the time I’ve spent working on it) is how much each of the objects has grown in size (code).

Spellcasting (the object) actually seems like the best place to keep track of all the spells, cantrips or otherwise. Kind of like an inventory of… spells. Come to think of it, perhaps it wouldn’t be so hard to keep separate lists of spells gained from each class, contained within a single spellcasting object. Now that I think about it, that makes a lot of sense. Spellcasting inventory.