Information is saved (SetPlayerStat) directly after it is received. I'm working on an implementation for on-the-fly saving, but moving it into "batches" seemed easiest for now (perhaps always). GetPlayerStat should now be able to be called if the GUICGX comes after the value would have been gotten, which could help clean up some of the code. I'll look into that coming up.
I added a function: IsMultiClassed(actor, verbose) to GUICommonWindows that acts similar to IsDualClassed. I haven't implemented it yet, but it should clean up some of my level up script and make checking elsewhere simpler. It return an array whereby the first value is the number of classes and the subsequent values are the class id's of the given classes. If verbose is set to 0, it returns 0 if the actor isn't multiclassed.
Added full multi-class support to GetStatOverview(pc, LevelDiff) in GUIREC. It expects an array for LevelDiff if the character is multiclassed, and either an array with LevelDiff being the correct difference for a dual-classed character, or just an integer. If no value is passed, LevelDiff is properly changed to an array of [0,0,0] if the character is multi-class.
Updated LevelUp. Update information is now saved, including: hp, proficiencies, saves, skills, thac0, backstab (needed?), lay-on-hands (not fully), lore, and, of course, level. Still pretty rough, but it works for the most part. I'm working on implementing new wizard and divine spells and generally cleaning it up. It'd be nice if people can give it a look or test it out.