Using EffectBonusFeat()

I am seeing some quirkiness trying to use EffectBonusFeat() (patch 1.87.8193.35). It seems to work with some feats, but not others. I am thinking this is due to how some feats work, rather than being a problem with EffectBonusFeat().

I was testing using the Great Ability line of feats. Their usual effects (increasing whatever ability) are not applied to a PC, though the feat itself (not the effect of the feat) shows up in the PC’s character sheet. My suspicion is that these particular feats only have their effects applied when a PC is leveling up and are otherwise ignored, aside from being in the feat list.

Can anyone confirm what’s going on here or have any insight about this? Would there be a way to use these feats as applied effects? Is there perhaps a way to trigger the game to re-evaluate a PC to take into account such feats?

Yes. It is the same with bonus feat item property. Many feats are hardcoded to classes, monk AC, RDD stat boosts, PM AC boosts. Great ability feats likewise.

1 Like

Are you trying to permanently assign bonus feats to the PC? If so, try this:

 // Skin #1
        object oSkin = SKIN_SupportGetSkin(oPC);
        itemproperty ipAward = ItemPropertyBonusFeat(FEAT_SKILL_AFFINITY_LORE);
        AddItemProperty(DURATION_TYPE_PERMANENT, ipAward, oSkin);

you can replace LORE with any feat

I appreciate the suggestion, but I am pretty sure that doesn’t work with the Great ability feats. For one thing, I don’t think the ItemPropertyBonusFeat() function uses the FEAT_* constants, it uses the IP_CONST_FEAT_* constants. And, there isn’t one of those for any of the Great * feats. (There also isn’t one for the lore skill, so I am not sure how you got the example to work…)

But, aside from that, some feats’ item feats will be applied to the PC when the item is equipped. For example, if you add the Weapon Finesse feat to an item (like a skin, assuming the PC has one equipped and you are willing to deal with horse and polymorph issues), then the PC will have the feat when the item is equipped. But, some feats have their impact when the feat is chosen (during level-up) and adding the feat at another time doesn’t seem to do anything except add the feat to the feat list, with no change to the PC. The Great ability feats seem to be in that group.

Really, the EffectBonusFeat() function is exactly what I want. But, the Great ability feats don’t work in a way that lets me use it.

You could add lines for the Great Ability feats to itempropdef.2da and itemprops.2da and then try ItemPropertyBonusFeat() but I guess it wouldn’t work either. It’s most likely as you’ve said: they only work on level-up.

This makes sense. I imagine EffectBonusFeat() was introduced as a simpler alternative to skin item feats, so we might expect it to have similar limitations.

Can’t you use EffectAbilityIncrease() instead? It would stack with items, spells only up to +12 (iirc the cap can be changed in ruleset.2da) but EffectBonusFeat() would had the problem that it wouldn’t stack with Great Ability feats taken at level-up.

This doesn’t work. It was already tested and verified years ago. Is a reason why my CPP doesn’t list these feats in bonus feat itemproperty (it otherwise adds all feats that actually works).

The cap is the issue. I’d like to script a permanent increase in an ability, but only when a PC uses just one particular item. The Great ability feats do this (as does the cls_stat_xxx.2da approach that RDD uses). But, there isn’t a good way to use them in a script, as it’s turning out. I am thinking this can only be done in NWNx.

As @Kamiryn said there is a stacking issue, so that approach is a bad one anyway even if it worked.

If you cannot use NWNX for whatever reason (NWNX can do this easily). Then here is a method how to workaround the issue and simulate permanent ability stats:

Lets say you increase the cap from +12 to +20. Then you apply +8 bonus to all stats to every player. And a -8 penalty to all abilities. That essentially makes it that players have +0 to all abilities and +12 cap. Now. if any player is supposed to get permanent ability raise, you substract that from that -8 penalty. Voila.

1 Like

Won’t that mean that someone who stacks up +24 of bonuses will end up with +16?

Good point. No idea. I never tried this, it was just something I thought of when seeing this thread today.

I am not sure how exactly the penalties are calculated when bonuses exceeds the cap maximum. Testing required, but you might be right. If that would be the case then that would be problematic…

I’ll eventually make a list but as others have said its just an easier to use than item properties, and as an unyielding effect can be mostly-permament. A spell could temporarily add proficiency, sneak attack bonus or whatever.

Anything applied only at levelup won’t work and they don’t count as having them for levelup purposes.