I wrote some scripts that combined with two modified GUI screens allow us to provide the assassin and the blackguard classes their spellbooks.
Developed on SOZ 1.23.
The method is transparent to the end user on level up he will choose spells from the proper spell list. In game, he will still use the original spellbook, and cast spells normally.
There's still a bug which I was not able to track down, that causes the GUI to not display some spells in the spell selection screen (and in particular, the 2nd level Darkness spell - now that happens ALWAYS on my box). If that happens, simply changing the displayed spell level (or adding and removing a spell from the learned spells list), and then going back, fixes the problem (the spells are then correctly displayed). Still, it's annoying. Currently I don't know why this happens: if someone finds out, I'd be glad to hear about it.
Assassin and blackguard spells do count as PrCs requisites, however, since the two classes are capped at level 10, keep in mind that the caster level will cap at level 10 too. That means that an assassin 10/eldritch knight 10 still casts as an assassin 10.
I was forced to give the blackguard spontaneous casting to be able to build the spell list in the correct way. The blackguard still learns all the spells that are available to the class though.
I removed the assassin and blackguard old 1x day "spells".
Extra spell slots feats and practiced spell caster feats seem to work correctly, please report any bugs you find.
To speed up the GUI process from slow to acceptable I had to make some changes to the spell level of many powers such as barbarian rage: I usually gave them no spell level. If you find out bugs with this solution, point them out.
Lastly, the code depends on the language of your NWN2 installation. I can't do anything about it, it's just how it works at the engine level. This means that, while things are completely ok for singleplayer, in multiplayer you may end up getting weird or no filters on the spell list of these two classes if the assassin/blackguard player owns a NWN2 version of a different language than the server language. This is because the game, at the GUI level, recognizes the spells by their TLK names.
I provided a hak and an override version: however, the hak version still has an override folder, cause it seems the game does not read packages from haks. If you don't really care about the "Recommended" button doing nothing, you can drop it.
Both archives include a very very simple test module.
UPDATE (08/01/09): added the scripts (both source and compiled) to the hak and override folder - no need to grab them from the module any longer.
Good stuff. A couple of suggestions
Don't add scripts to Haks, when you do, they will show up twice in the module, and the hak one (which you cant edit) overrides the one you can, so folk will be left wondering why their edits to the scripts are not having any effect.
Avoid doing 2DA retrievals from GUI scripts as much as possible. They take a while and will cause the gui to be slow in response. Instead pre-load as much info as possible and sent them on variables on the PC or module or a waypoint, whatever your preference. and retrieve the values from there instead from within the gui scripts.
Close; GetLevelByClass() uses the setting in classes.2da to determine max class level; GetCasterLevel() doesn't touch any 2da files that I am aware of.
Thanks, updated.
This is how I understand it: GetCasterLevel() caps at the number you specify in classes.2da, under the MaxLevel coloumn. I guess if one really wants, it's easy to override GetCasterLevel to take into account the 2 classes, recompile all the spellscripts, and go with it.
@Raelius: two things to point out; one, the scripts need to be placed in the override folder and compiled so they can be used out of the rar file. Two, the only reason that Assassin\EK would be capped at caster level 10 is because the spell scripts for Assassin and Blackguard spells use GetLevelByClass() instead of GetCasterLevel().
10 - A Masterpiece, Genuinely Groundbreaking 9 - Outstanding, a Must Have 8 - Excellent, Recommended to Anyone 7 - Very Good, Deserves a Look 6 - Good, Qualified Recommendation 5 - Fair, Solid yet Unremarkable 4 - Some Merit, Requires Improvements 3 - Poor Execution, Potential Unrealized 2 - Very Little Appeal 1 - Not Recommended to Anyone