The Weapon Finesse feat bug. Is there a more elegant solution?

The Weapon Finesse feat doesn’t work with creature weapons. Is there any way to get it fixed at least for animal companions and familiars? Currently I’m using a “workaround” suggested by Cyphre (from his animal companion pack):

“You won’t find/see a ‘Weapon Finesse’ feat in the list of feats of companions, that should have it and their attack bonus will still rely on ‘Strength’, BUT they will still receive a bonus to their attack equal to the difference between the unmodified STR/DEX-modifier (if the DEX modifier is higher of course) which is not weapon-related and hence stacks with spells that improve the attack bonus of natural weapons. Not perfect, but much better than a feat, that doesn’t work at all!”

But maybe there’s a better or more general solution?


The main way of doing these kinds of hacks are to either re-implement the feat, or hook the OnEquip / UnEquip checking for the feat and then adding the proper stackable Item Properties to your weapon.

Most of the NWN1 stuff is hardcoded. So if you want to fix or beef up Finesse / Knockdown / ect, you are really looking at re-implementing the feat from scratch or doing a hack fix.

NWN2 stuff going forward was mostly all open source - which is nice.

I know it’s hardcoded. I asked about the best way to implement this fix. I don’t want to re-implement it completely since it leads to a pretty ugly solution where the player has to manually re-equip a weapon each time he applies any buffs to attack bonus. Check the Intuitive attack feat in Kaedrin’s PrC pack to see what I’m talking about. I’d like to alter only creatures. But you’re right here, it’s probably better to do this using OnEquip/UnEquip-scripts, though it will interfere with spells that apply AB directly to natural weapons.

How does it interfere?

ab cap?

only the best effect is used in 3.5e … ps: I dislike stacking rules and wish they’d been left unrestricted

You can iterate over the current set of item properties and then figure out what the current +ab should be and reapply a new IP.

So if my sword has +2 AB and Finesse should give +1. Iterate over sword, Figure out I have +2, add +3. It’s not elegant but it works.

(We had to do this for our crafting system on SP)

true nuff  :station:

Hacks… Hacks everywhere. :grin:

so, I’m guessing that Cyphre removed the feat WeaponFinesse from the AnimalCompanions and added creature-weapon blueprints with IP ab-bonus instead.

i’d rather do it on the fly … here’s somethings i jotted down to think about as a possible avenue:

Kaedrin uses the OnEquip/Unequip handlers a lot, ofc. But i think a slightly more elegant solution … if some assumptions can be made first … could be to modify the OnSpawn script(s) - check for WeaponFinesse, check str vs. dex, check for creature-weapons, and if true add or modify the IP attack bonus for the difference.

it’d generally assume, however (and somewhat incorrectly), that

a. creature-weapons don’t get swapped in and out
b. PCs and Companions don’t use creature-weapons
c. associates like animal companions maintain their originally given creature-weapons

I imagine that those assumptions could be nullified by modifying code to other scripts (eg. companion OnSpawn, module OnClientEnter perhaps, associate OnSpawn, blah )

@Aqvilinus ( i believe Kaedrin removed the IntuitiveAttack feat after 1.41.4 … there’s a bug in it - you can swap onhand/offhand weapons out and retain the bonus for weapons that shouldn’t allow IA, or similar to that )

don’t even get me started lul

recently i’ve been refactoring this function and as mucky as it is, it’s bliss compared to, well, WeaponFinesse not working on creature-weapons for example. because, uh you know, it’s opensource

like xorEos.

after thinking about it some more (ie, after 2 seconds of actually trying to implement a workaround…)

it’s bad. It needs to update whenever Str or Dex changes. That could be done by a spell or an IP (or any abitrary script).

if fixing things w/ IP ab-bonus, the original IP of the creature-weapon needs to be stored so that it can be replaced on the item when Dex drops below Str.

if fixing things w/ effect ab-bonus, a custom SpellID could be used to positively identify the effect and clear it. But then stacking-rules could interfere/hinder it, which could likely be further worked around only awkwardly.

Even changing creature-weapon blueprints isn’t accurate, since a strength-enhancing buff could suddenly raise Str above Dex but the IP ab-bonus on the blueprint is still valid.

edit: i mean, I’m sure it’s possible … but then so is rewriting the sourcecode (to be blunt)

As far as I know. AB cap only applies to buffs on the character.

To fix that you for sure want to apply an IP to the item. There is a potential exploit where you can equip and unequip gear to fiddle with your stats and get artificially high AB on your weapon.

The solution there is to do your finesse code every time a weapon is equipped or unequipped… not just weapon slot. So no matter what gear they are changing, you are always reapplying your finesse calculations.

Additionally you could do a heartbeat script / hook cats grace spells and potions.

The problem is that creatures don’t equip/unequip a weapon, you can’t change AB dynamically using OnEquip/OnUnequip-scripts, as KevL already said.

No, he didn’t. I have 1.42.1 version installed, it’s still there.

Seems like fixing this problem requires a considerable amount of time and effort + rewriting some spellscripts… It’s not worth it, I believe.

What do you mean by that? You can equip weapons to them if you want…

You mean ActionEquipItem and ActionUnequipItem? Ok, you definitely can do that (although in case with polymorphs it will fail), but… you’d have to change every spellscript that applies buffs/penalties to Dex/Str to do that trick with re-equipping a weapon. It’s possible, yes, but there’s still too much work.

Wait wait… Polymorphs? Those are blueprint swaps based on polymorph.2da. They won’t even use your characters feats at all.

That’s completely different… what are you trying to do here? ^^;;

I know about weapon swapping. What if a polymorph shape has this feat? You can’t re-equip creature weapons while polymorphed, AFAIK.

nvm %)


the problem is sorta like this, take an Animal Companion with claws, 14 dex, 10str, with WeaponFinesse

+2 ab, okay find a place to IP it. (blueprint, spawnscript, onequip script…)

lalala adventureadventure

BUFF +8 str

new stats: 14 dex, 18 str

+4 ab, but the IP to ‘fix’ weaponfinesse is still active = +6 ab

Things just get more tedious from there. If the creature’s weapons were already +1, and a +2 for WF turns the IP into +3, then a strength buff says that it should be +1 only … a further mechanic has to remember that the IP was +1 and do that. what if a creature has claws with +ab but no WF … and gets temporary WF feat … now we’re talking heartbeat scripts, OnEquip/Unequip scripts, examining IPs, examining current effects/abilities, cows come wandering home …

after that, some module is going to use a different event-handler and snap

Should see if this is a problem in nwn1, and if it is submit it as a bug for nwn:ee so it can get a proper fix. If we ever get a nwn2:ee we’re going to get a lot of their code brought over.

The solution would be to open source all feats. NWN2 only open sourced their feats going forward… all the old NWN1 feats are still hard coded.