I'm not sure if this can be done, but figured I'd throw out the idea for the geniuses (such as virusman) to think about. Hey, it worked with weapon VFX (and beams, and skins, and open face helms), right?
So, here's the idea, and I'm sure it would take a combination of NWNX2 and NWNCX...
Add a string column to the end of classes.2da called "SpellList". This string would contain the name of the column in spells.2da that governs what spells a given class has access to and at what spell levels. There's already columns for "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Wiz_Sorc", and "Innate".
If NWNX2 & NWNCX could be used to force the game to read from whatever column is designated in classes.2da, that could conceivably open up customization (or at least, experimentation) by letting builders use the SpellGainTable and SpellKnownTable columns in classes.2da to give actual spell lists to Assassins, Blackguards, and even completely new classes.
As an example (assuming new plugins work as intended), a builder could then experiment with giving the Assassin class an actual spell list and casting ability by:
1. changing the value of the SpellCaster column from 0 to 1 (classes.2da)
2. changing the value of the SpellGainTable column from **** to cls_spgn_asasin (classes.2da)
3. changing the value of the (new) SpellList column from **** to Assassin (classes.2da)
4. adding a new column (titled "Assassin"), mimicking other caster columns to assign levels to spells for Assassins (spells.2da)