I finished the first task of this project and its available for testing.
download
EDIT: reuploaded new version which now properly calculates bonus spellslots for high ability score
instructions:
put nwncx_patch.dll and nwnx_patch.dll into NWN folder
put classes.2da and spells_levels.2da into override folder
now, run nwn server via NWNX2.exe or nwn client via NWNCX_Loader.exe. Note, that in multiplayer, clients without nwncx_patch wont be able to see "known" spells in the spellbook panel as thats entirely client-side thing. So in multiplayer it needs both client and server run with NWNX.
the classes.2da included in this package is modified to make assassin base class, arcane spellcaster with a divine-type of spelllist ie. character knows all spells from given level automatically. Also I modified class commoner to be spellcaster. This is quite messed up, I definitely recommend to make your own classes.2da, perhaps to use it for PRC classes like Anti-Paladin. Note: I dont think the class needs to be base class. It should normally work on prestige class too - I changed assassin to be base class just for easier testing.
now technical info
classes.2da
SpellCaster must be 1 to allow spellcasting (obviously)
SpellGainTable must be filled
SpellKnownTable musntn't be filled
CastingAbility is now equal to PrimaryAbil column and it should now be possible to change this for vanilla spellcasters
LearnScroll column is unfinished - it will show the learn scroll GUI but clicking on it will not work for non-wizard yet, so ignore this
CastType is supposed to be a bitflag, but at this moment it has only one flag and thats Arcane = 128, so if you want your spellcaster to be arcane set CastType = 128, otherwise leave 0, arcane spellcasting is affected by armor/shield failure, deafness and maybe something else, not sure
spells_level.2da
this is special 2da that controls which spell shows in custom spellcaster class spellbook
basically, if you add a custom spellcaster class, you need to add a new column in this 2da with name = row_id of the class
so in my case as I allowed to cast Assassin which ID is 30 I added new column "30" without quotes, then just add values for each spell you want this class to know, values are the same as for classes.2da columns.
I tested this in both singleplayer and multiplayer, however my testing wasn't very thorought and Im especially curious whether it will work in a multiplayer without player neededing these 2das in override. It should, however untested.
This is very limited in the current state and only allow to create a memorization spellcaster with preset known spells. It should also be possible to set certain spells to be spontaneous for custom spellcaster via the nwnx_patch spontaneous casting feature as explained in readme. But untested.
Oh yea and I don't think it will be compatible with nwnx_spells plugin for linux. The possibility is there, but I doubt it, the linux plugin works completely differently.