@Putnam, I have downloaded your fortbent mod in order to do my testing, so far it appears to be in working order. As mentioned earlier, you can keep your classes as defined.
[CLASS:BREATH_1]
[NAME:breath]
[EXP:15]
[LEVELS:1]
[SPELL:WINDY_BULLET_I:AUTO]
[AUTO_UPGRADE:BREATH_2]
[CLASS:BREATH_2]
[NAME:breath]
[EXP:20]
[LEVELS:1]
[SPELL:WINDY_BULLET_II:AUTO]
[AUTO_UPGRADE:BREATH_3]
[CLASS:BREATH_3]
[NAME:breath]
[EXP:25]
[LEVELS:1]
[SPELL:WINDY_BULLET_III:AUTO]
[AUTO_UPGRADE:BREATH_4]
[CLASS:BREATH_4]
[NAME:breath]
[EXP:30]
[LEVELS:1]
[SPELL:WINDY_BULLET_IV:AUTO]
[AUTO_UPGRADE:BREATH_5]
[CLASS:BREATH_5]
[NAME:breath]
[EXP:100]
[LEVELS:1]
[SPELL:WINDY_DELAY:AUTO]
[AUTO_UPGRADE:BREATH_GOD_TIER_1]
Or you can change to the new, more compact system
[CLASS:BREATH]
[NAME:breath]
[EXP:15:20:25:30:100]
[LEVELS:5]
[SPELL:WINDY_BULLET_I:0]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_BULLET_II:1]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_BULLET_III:2]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_BULLET_IV:3]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_DELAY:4]
[SPELL_AUTO_LEARN]
[AUTO_UPGRADE:BREATH_GOD_TIER]
Your choice, but I will continue to make sure it is backwards compatible
Also, you now how the option of changing the [NAME] to the format [NAME:singular:plural:adjective]. If you leave out adjective (i.e. [NAME:singular:plural] it will use the singular for the adjective. If you leave out both plural and adjective it will use the singular for adjective and the singular+s for plural. (So it would be imputed in the game as breath:breaths:breath)
Again, sorry this has taken me so long, I am planning on uploading it soon, but want to make good and sure I have squashed some of the more egregious errors.
EDIT: You also have the option of replacing the previously learned spells if you wish (i.e. replace WINDY_BULLET_II with WINDY_BULLET_III) by using
[CLASS:BREATH]
[NAME:breath]
[EXP:15:20:25:30:100]
[LEVELS:5]
[SPELL:WINDY_BULLET_I:0]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_BULLET_II:1]
[SPELL_UPGRADE:WINDY_BULLET_I]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_BULLET_III:2]
[SPELL_UPGRADE:WINDY_BULLET_II]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_BULLET_IV:3]
[SPELL_UPGRADE:WINDY_BULLET_III]
[SPELL_AUTO_LEARN]
[SPELL:WINDY_DELAY:4]
[SPELL_AUTO_LEARN]
[AUTO_UPGRADE:BREATH_GOD_TIER]
EDIT2: @expwnent, everything with the new persistent system seems to be working just fine after I made that one change. It's been a little tough getting used to the metatable thing, but some very easy changes to make it work. Thanks very much for doing this! I am currently writing a little list (mostly for myself, but for anyone else thats interested to) of the table names I am using and what information they are saving. That way if anyone else wants to access anything they can easily see where the information is stored. I prefixed everything with roses so that no one else using the system should overwrite anything I write (i.e. persistTable.GlobalTable.roses.BLAHBLAHBLAH)
EDIT3: I have also added the option to have multiple class files all be read in. So if you would prefer to split up your classes you can, although it is mainly for people to be able to trade their files and not have to worry about copying anything anywhere, just drag and drop. It will look for all files named classes_something.txt (also just plain classes.txt) and read in all the classes. It does not check for duplicates, however, so the user would have to make sure they do not have any duplicates themselves.