Beamdog / nwn-issues

Neverwinter Nights: Enhanced Edition Technical Bug Tracker
http://nwn.beamdog.com
31 stars 1 forks source link

Shifted abilities caster level #547

Closed shadguy closed 5 months ago

shadguy commented 11 months ago

To Reproduce

Specifics

If needed, describe the bug

Reference: https://nwn.fandom.com/wiki/Shifted_ability

I was sent this screenshot of a cellphone for the bug report. It's legible on github (at least in preview):

Screenshot_20231207_082540_Messenger

Basically, for some spell abilities, a Rogue1/Druid10/ShifterX gets caster level 1, while a Druid10/Rogue1/ShifterX gets caster level 10. The bug reporter specifically calls out the Raksasha Ice Storm spell ability. Wiki says some other abilities pick up the Shifter level. Likely more exposed now with greater than 3 classes available for builds.

-Dave

Shad000w commented 11 months ago

It is even more complicated because it depends on whether you cast the spell from polymorph radial menu or from quickslot where it as dragged from spellbook. Which is why the build in question should have CL 10 anyway as he should have the Ice Storm in his spellbook and after dragging it into quickbard the CL will be of Druid. Not every build can do that of course, and then the CL is equal to 1st class level.

This is nothing new, was even discussed before on Beamdog bugtracker (on of the two that got shutdown) and the problem is or rather was that apparently this is not a bug but balance decision and it can negatively impact builds that abuses this such as 25monk 5 druid 10 shifter.

On the other hand, it could be probably easily coded as whichever class level is higher and then it should not impact any build negatively, only positively.

Finaldeath commented 11 months ago

I have some other Polymorph fixes in the works I'll add this to them, musing thoughts:

Caster level is easy - use what's stored on the polymorph effect itself, which when a shifter uses their abilities will be set to the shifter level and can now be overriden in 36 (say if you wanted to add druid + shifter levels). This would automatically affect ResistSpell etc. as well.

Save DC is harder I think the best is probably to have a parameter in EffectPolymorph for the "Spellcasting Ability" and if not set it defaults to the script's caster class's spellcasting ability modifier. Then it acts like the games default spell-like abilities and so is 10 + innate spell level + ability modifier. No focus feats or negative levels. If a scripter wanted to they can just override the save DC in their scripts.

I'll also make the class using the ability CLASS_TYPE_INVALID for most accessible purposes, since as noted above setting a class the person being polymorphed doesn't have makes it difficult, and it is by all accounts a spell-like ability so fits with them.

These changes would only affect the 3 spell IDs baked into the polymorph.2da choices, means any PW that enables casting while polymorphed shouldn't be affected really.

Shad000w commented 11 months ago

In case you are looking for feedback.

Caster level is easy - use what's stored on the polymorph effect itself, which when a shifter uses their abilities will be set to the shifter level and can now be overriden in 36 (say if you wanted to add druid + shifter levels). This would automatically affect ResistSpell etc. as well.

Well logially the CL should be Shifter level. However, that just makes the typical Rakshasa builds (25 monk 5 druid 10 shifter and 28druid 10 shifter 2 monk) quite weak and useless. You can argue that that is more of a PW problem, but there are singleplayer modules designed for epic levels where this would make these build non viable. Maybe they are viable only thanks to bug, but they are viable and it is kind of backwards compatibility. If builders can override this anyway, wouldn't it be better to change it to "highest class level in build" instead? That way the builds that were viable in 1.69 will be still viable in EE and it will fix the build in original post. And SP players won't need to download override to make it work as before. Also note that shifter has been hit hard with metamagic ban on shifted abilities. This will kill it completely. It gives meaning to high level shifter builds (where there is none right now), but those builds are still gonna be awfully bad anyway.

Finaldeath commented 11 months ago

I dunno, the class that took the feat seems the obvious choice of caster level compared to slot 0. Makes pure shifters get a decent caster level. But yes scripts can override it.

Finaldeath commented 11 months ago

I'll add a parameter for the ability score and the caster level, if the caster level isn't set (which it won't be by default) it'll default to the first class for "compatibility". Then people can fix it (and even have a different level to the caster level set on the effect).