Last updated at 22:38, 8 Oct 2017 Uploaded at 22:42, 8 Oct 2017
Ammo Effect Fixes
Gun Runner's Arsenal
JIP LN plugin
Optional CaliberX patch included
You might be thinking about a similarly named mod I also released, Ammo Fixes. While the first issue with launcher weapons and impact damage has been fixed at the engine level now by JIP, the second one dealing with ammo script effects still applies. Ammo scripts trigger from any of the actor's attacks while having the ammo loaded, not just from the weapon, so they trigger together with mines and the like. Also, effects applied from an ammo script, like incendiary ammo, just use the CIOS command which means that the game considers that the actor affected is damaging himself.
There's also the old issue with fatigue damage from "bean bag"-type (12ga in vanilla) ammo. Basically, it looks like ammo effects go through mathematical ordering so that additions and substractions come before multiplications, so that ammo's +250 to fatigue damage is also run through its x0.05 damage multiplier. The fMinDamMultiplier game setting is also enforced, so under vanilla rules that multiplier in practice becomes x0.20 at most... for a total of +50 fatigue damage and (regular health damage x 0.20). Plus, it doesn't check anything about the actor, so it works on robots for example.
... So, if hopefully you've understood anything until this point, what I've done is to get rid of ammo scripts and ammo fatigue effects, replacing them with a scripted implementation, instead of the old Ammo Fixes somewhat clunky method of using explosion effects. JIP LN can retrieve the weapon and projectile causing a hit event, incidentally all but obsoleting the OnHitWith event. By scanning which projectile was responsible, the mod applies the effects previously applied by the ammo scripts, again using a new JIP LN innovation that allows casting effects with an attacking actor as the responsible party:
- .50MG Incendiary and Dragon's Breath (GRA) cause 8 fire damage over 5 seconds. .50MG Incendiary had to be given a custom projectile, since the script needs that to differentiate an impact from the standard .50MG round. With the Caliber patch, the same treatment is given to .50MG API and Raufoss, .408 CheyTac (Incendiary) and 7.62x54mmR (API)
- 12ga and 20ga pulse slugs now use the same effect of the Zap Glove, causing up to 50 EMP damage to robots, power armor, etc.
- 12ga Coinshot and .50MG HV from Caliber also have their custom effects applied from this system, for adding legion denarii and knocking down actors. It's less critical since these don't do damage per se, but best to get rid of all ammo scripts.
- Finally, bean bags is were most of the scripting had to go. All fatigue ammo effects are removed, and the script now makes up for lost health and limb damage on the actor, as the difference between 0.05 and the fMinDamMultiplier game setting, if necessary. So they should be now much less lethal as intended. A more correct amount of fatigue is applied adjusting the old value of the ammo effect into a weapon effect, multiplied by the damage mult of the body part hit. That can mean twice as much fatigue loss from bean bag hits to the head, for example. And of course, it no longer works on robots and the like. The calculation is somewhat preliminary though, I'd also like to include modifiers for things like perks and the like.
Installation is straightforward, just activate AmmoEffectFixes.esp, and optionally the patch if you use CaliberX. Best don't use together with the old Ammo Fixes mod, I'd consider it obsolete by now.
For the most part this mod is kinda "closed" in that it specifically targets vanilla and GRA ammo, with not much in the way of other mods' support. I did think about some sort of config file, but viewed it as too cumbersome and of little use. If you have a mod adding new kinds of ammo, I'd encourage you to replicate what's done here on your end if needed to do away with ammo scripts and fatigue effects.
Thanks go again to beelzetoxic for finding the issue with ammo scripts, and and of course to jazzisparis for his amazing plugin.