Should Improved Critical required Weapon Focus?

I always thought it is odd that it doesn’t require weapon focus.

http://www.d20srd.org/srd/feats.htm#improvedCritical apparently not…

it isn’t that hard to modify it to require it if you would want though and if you do it, then you also fix the fact that dev crit doesn’t require weapon focus which is a bug

1 Like

The very existence of Dev Crit itself is a bug. :slight_smile:

Well stuff from epic levels is generally quite overpowered… though I agree dev crit is probably most broken one - fact that there is no good immunity against it (immunity to crit kills rogues and non-dev melee chars), that it applies on every roll (so DC doesn’t matter, high crit range and lot of attacks = you slain everyone sooner or later, mostly sooner) makes is really over the top.

But generally for action modules epic levels are actually fine. I used to use this https://neverwintervault.org/project/nwn1/script/shadooows-devastating-critical-immunity for NPCs to enable critical hits/sneaks but disable devast.

Now with nwnx there are better choices (immunity to dev crit via variable IMMUNITY_DEVAST, special rule one roll/per creature and ability to modify DC as you see fit) although 1.69 only.

But yes, low magic modules will find a lot of epic stuff unsuitable for them… But as a action/hack&slash player I say “your settings is wrong, not the rules!” :sunglasses:

1 Like

I am trying to reuse the Weapon Master feats in a custom class and all the feats work except for Epic Superior Weapon Focus. It actually gives you a -3 to AB when you first get it. LOL :sweat_smile:
Any advice on this?

reusing that won’t work, the engine afaik calculates specifically levels in WM class for the bonus calculation, though not sure why it is giving -3 maybe some issue with fact that your character has 0 levels…

So lets see other options, you build for NWN:EE right? singleplayer or multiplayer?

if multiplayer there might be a linux plugin that allows to grant uncapped AB bonus

if sungleplayer NWN:EE you can do this: grant player AB bonus as normal effect (you can hide the effect with this trick:

void ApplyEffectToPCAndHideIcon(int nDurationType, effect eEffect, object oPC, float fDuration=0.0)
{
ApplyEffectToObject(nDurationType,eEffect,oPC,fDuration);
effect eNew;
eEffect = EffectLinkEffects(eEffect,eNew);
ApplyEffectToObject(nDurationType,eEffect,oPC,fDuration);
RemoveEffect(oPC,eEffect);
}

then increase module AB cap from 20 to 20+fake WM bonus

if you don’t build for NWN:EE then the choice is obvious, nwnx_patch plugin allows almost everything you could want including uncapped ab bonus and it works for both single and multiplayer

1 Like

Yes I build for EE single player. That’s a neat trick!

I tried giving the epic PC the Epic Weapon Master feat too but that still gives -3 AB. LOL

Is there anyway to get a script to run in the Override directory regardless of which module is being played? I am thinking of overriding a commonly used script to just add an ExecuteScript statement but not sure which one.

Yes and no.

If you put script (*.ncs is required) into override and game calls it, it will work. However the problem here will be that you cannot make the script running.

For example, if you going to apply this effect on a player then you will have to call the script in these events: OnLevelUp (and OnLevelDown but that doesn’t exist), OnRespawn and when raise dead/ressurection is used (70_mod_resurrect if you use 1.72). 70_mod_resurrect will work in all modules except those where nw_s0_raisdead or nw_s0_resurrect are modified. However, you cannot make module events scripts to dynamically call your script.

So, no… unless NWN:EE implements the module event duplicate feature from NWNX_Patch plugin (I added it on internal bugtracker but I have this feeling it won’t be considered because nobody understands the application) this won’t be doable, the only way would be to edit the module in toolset and merge the module event scripts.

1 Like

Aren’t there certain scripts that always gets run when the module is loaded? If we can override that then we can use SetEventScript to hook into those events you listed automatically.

hmmm NWN:EE has geteventscript and seteventscript? then you are correct however, I can’t think of any script that would be running in every module.

script in OnModuleLoad can be anything

maybe you could use a NPC heartbeat script, this is not going to work 100% and it is quite bad place for it, but I suppose that almost every module will have at least one NPC which will run nw_c2_default2 script.

Alternatively you could use script called “default” which is a script that runs on PC in heartbeat (or used to in 1.69, didn’t test in EE), but that will run 6seconds after you enter with player so it might be late (all events already ran - though maybe you can call them again).

1 Like

Yes EE have both GetEventScript and SetEventScript with lots of EVENT_SCRIPT_* constants defined too! Though not sure if all of them will work. lol https://nwnlexicon.com/index.php?title=EVENT_SCRIPT

“default” should do the trick. Thanks!

I totally missed that. This is quite good feature, though “default.nss” is not ideal script for it, we can have module duplicate events in NWN:EE already!

Basically in default.nss

check if variable SOMETHING is set on module, if not then
Loop nEvent = EVENT_SCRIPT_MODULE_ON_HEARTBEAT to nEvent <= EVENT_SCRIPT_MODULE_ON_PLAYER_CHAT
then use GetEventScript and store existing value into variable “MODULE_EVENT_”+IntToString(nEvent)
then use SetEventScript and set the event to your script

then in your custom event script do code you need and then call script from variable “MODULE_EVENT_”+IntToString(nEvent) if the variable is not “”

Hell I might consider doing this for 1.72 for NWN:EE - version for 1.69 uses nwnx_patch feature that runs specific scripts in module events before originals so fixes reliant on module events can work in all modules without merging… But that functionality is not in NWN:EE version.

Just tested. It works on EE just like you described for 1.69, running after all the other events have been fired.

probably when you find out the script was ran for first time, then after you change the module events as you need, ExecuteScript new OnClientEnter on player. That will grant character the custom class AB bonus.

There will be minor delay to that bonus but still awesome it works

Yes all without the need to merge scripts! :smile:

Just got an idea how to do this perfectly.

I had an experimental feature for community patch which added system Area into every module. I tested it and area files in *.bif worked - every module had this area in it when opened if I remember correctly. (though it is a question if they will work in override - where are CPP files for NWN:EE…)

I dropped that idea because there wasn’t big merit in it, but now this gives an opportunity.

There can be a placeable with heartbeat script or better OnEnter script on area/trigger which should run for an NPC in this area. This will basically replace what is default script doing. And it should work before player enters module. In multiplayer thats granted, in singleplayer this needs testing. But should work.

1 Like

That’s a brilliant idea!! Will test this on EE override and see.

That didn’t work for EE in Single player at all. Create an area with just a single badger, then placed the .are, .gic, .git and the OnAreaEnter script into Override. Nothing happens. The Area is not even showing up in the Debug Chooser menu.

Maybe it will only load areas specified in the module.ifo ?

All modules have a Limbo area. Anything we can do to it? :slight_smile:

wait did you try the “ovr” folder in game installation folder that uses CPP or regular override in NWN user folder?
if you didn’t please try it and let me know

as for limbo, no we cannot do anything with it, it is a system area that runs no scripts and cannot be accessed, so if this doesn’t work then defautt script is the only way

Tried both ovr and override. Area was never loaded. Didn’t show up in the chooser.

When I loaded the test module with this one area in it. default.nss actually got fired before AreaOnEnter for the PC as the badger was already in the area so it’s OnEnter never fired.

EDIT: Area HB actually gets fired after default.nss