Okay, so.. I typed up a big ol' message and I THOUGHT I had it, but turns out I don't quite.
Here's the short version, I am playing for the umpteenth time and tried to make a character who gets sneak attack + magic (arcane trickster) but also armored mage (warmage.) The problem is that I forgot NWN only allows 3 classes, not four, so I got stuck as wiz/rog/warm kinda dead in the water.
So I figure okay, no problem, I'll just slap the warmage feats onto Rogue. Let me say here I have done no real NWN modding of any kind - I don't fully understand how it all ties together or works at all, so I was totally fudging my way throguh things by means of awkward intuition alone. I managed to pull out the rogue's class feats 2da, grab the lines from the warmage, bring 'em over, make sure the columns were renumbered right, and loaded in and, lo and behold, the feats were there. However, I quickly realized it didn't work.
Next step I poked around some more, noticed the 2das had no actual code/instruction, so poked at the prc_scripts, pulled the .hak for that open and grabbed the warmage script. I tried changing the GetLevelByClass to _ROGUE instead of _WARMAGE but that didn't work. I played with it a bit and, ultimately, I just can't get anything that works.
I DID manage to get a temporary solution by having the server (who is my friend) turn DebuMode on so I can run dm_runscript prc_warmage, which will actually remove the ASF, but when I rest it comes right back.
I did try using the skin method via the script:
#include "x2_inc_itemprop"
void main()
{
object oPC = OBJECT_SELF;
object oSkin = GetItemInSlot (INVENTORY_SLOT_CARMOUR, oPC);
itemproperty ipSkin = ItemPropertyBonusFeat (IP_CONST_FEAT_KNOCKDOWN);
IPSafeAddItemProperty(oSkin, ipSkin, 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
}
Which I found by googling. however, I obviously had to change it as ASF is not a feat, so I swapped it around to replace the itemproperty line above with the two following, I found via the lexicon for NwScript:
int nModLevel = IP_CONST_ARCANE_SPELL_FAILURE_MINUS_45_PERCENT;
itemproperty ipSkin = ItemPropertyArcaneSpellFailure(nModLevel);
I named it asf and then used the tlkedit to put it into prc_scripts.hak, not knowing how else to get it available within the game. Lo and behold this also worked but, much the same, disappeared after resting!
I ALSO attempted, as a last ditch effort, a totally different angle. I figured, okay, maybe it'd be easier to just quickly strip the spell failure from any light armor I get, and I used the example from
http://www.nwnlexicon.com/index.php/ItemPropertyArcaneSpellFailure to attempt that. However, when I run the script is simply does nothing, the ASF remains the same.
I would LOVE a much more elegant, permanent and un-awkward solution than where I ended up, so if anyone can help with a simple solution I'd appreciate it a lot!