File information

Last updated

Original upload

Created by

migck

Uploaded by

miguick

Virus scan

Safe to use

About this mod

Fixes several problems at the core level with how ammo scripts and effects work, plus some tweaks for consistency and fun.

Requirements
Permissions and credits
Changelogs
AMMO SCRIPT FIXES
An attempt to fix how ammo effects and scripts are handled by the game.

The main issue with ammo effects altogether WAS that these effects are applied just for having that ammo loaded, NOT when the ammo in question impacts the target. This meant that having Hollow Point ammo loaded would apply its damage bonus and DT penalty to targets that trigger your mines, for example.

But version 57.21 of JIP LN has fixed this, finally. Ammo effects and scripts now belong to the projectile that they deliver as it should be, not to the actor that has them equipped.

The other main problem is ammo scripts, as in effect scripts placed directly on ammo with a Script Effect Start block to do zany stuff when the ammo impacts the target. These have a two-fold problem, in that they work as if the impacted actor applied that script onto himself, so things like a burning effect that causes their death is not attributed to the player for example. The other is that scripts on active objects are always kept running by the game even if they don't actually execute anything, and the performance impact of every instance of these scripts add up. In the particular case of scripts on ammo, it's easy to have hundreds or thousands of copies of them, each with a running script, and their combined footprint causing a noticeable degradation in performance.

There's also the old issue with fatigue damage from "bean bag"-type (12ga in vanilla) ammo. Basically, 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.


Since ammo scripts are ubiquitous, it's not much use to advise people to get rid of them. BUT I DON'T CARE ABOUT THAT SMALL DETAIL. THAT'S RIGHT. Ammo scripts are GONE.
Long story short, the mod removes all scripts placed on all ammo at once, but keeps applying them through a universal handler that executes them only when they impact a target. This works even if other mods you use are placing new scripts on ammo. This mod will catch and apply all of them through its system. But if you really need a particular kind of ammo to not be affected for some reason, you can give it the AmmoScriptEXCLUDE keyword.

I've also tweaked the regular vanilla ammo scripts to my liking:
  • Changes .50MG Incendiary from using the Flamer's burning effect, which is a measly 2 dmg/5 sec that hardly makes a difference, to the much stronger Dragon's Breath effect of 8 dmg/5 sec, so that the target may lose a noticeable amount of health to fire damage between shots. This flatly goes out of bugfixing territory, but you can't convince me that's a bad thing. That's just terrible.
  • Puts a dummy script on 12ga Beanbag rounds purely to avoid YUP's fix for them, since this is now fixed by this mod's handlers. More on that later.

Plus, the few vanilla ammo scripts have been reworked so that any damage they cause is now correctly attributed to the actor firing the ammo. Namely the aforementioned incendiary ammo, and GRA's dragon breath and pulse slugs.
It might be worth noting (again) that other mods can continue adding their scripts to ammo the usual way, and have those scripts apply damaging effects with correctly identified sources of it using some script extender commands. This mod will simply move those scripts unchanged to its handled method so they can't affect performance negatively. Or the other mods can simply use their own handlers to deliver their ammo scripts to begin with, which will usually allow much better fine tuning than using effect scripts.

The KEYWORDS framework is used for the following features
  • Ammo types found in the vanilla PerkPyromaniacAmmo form list, or which have the AmmoPyromaniac keyword, can grant you the benefits of the Pyromaniac perk if you have it, namely extra weapon damage with those ammo types loaded. NOTE: this has been dropped in version 5, you can still enable it in the configuration file, but I don't recommend it. See this mod for a better implementation of a Pyromaniac ammo buff. Plus, critical deaths with these munitions will cause the target's corpse to burst into flames just like flamethrowers and the like can do.
  • Ammo types with the AmmoPlasma keyword will now make your weapon behave more like a plasma weapon while loaded: the weapon's damage will be affected by the target's Energy Resistance stat, and the weapon will benefit from the Plasma Spaz perk while the ammo is loaded. Plus, critical deaths will "gooify" the target as well, even inheriting the effects of mods like EVE if installed. This feature is now much more compatible and unobtrusive since it uses a novel system based on event handlers and temporary clones of the weapon records, so that there's no need to mess with their critical effect nor resistance types at runtime.
  • Ammo types with the AmmoBeanbag keyword, and with a fatigue ammo effect, will have this effect aided by the handler. The main difference with the vanilla implementation is that the extremely low damage multiplier of this ammo is now factored in the BASE weapon damage to determine how much fatigue the impact will cause. Unfortunately, this also means that this fatigue damage will most likely be in full, no matter how armored the target is, due to how the game enforces the fMinDamMultiplier game setting. Ideally you'd have separate damage formulas for HP and Fatigue, but that isn't the case. Instead, with this mod's fix enabled, fatigue damage can be reduced by a flat % depending on the weight class of the actor's body or head armor, making power armor immune to it. The fix will also counter fatigue damage done to robotic targets or when hitting the actor's held weapon, and also counter excess damage to the actor's HP and the condition of the limb that was hit if the ammo uses a damage multiplier lower than the aforementioned fMinDamMultiplier setting. It doesn't work on killing or crippling blows, but at least it should make these ammo types almost as un-lethal as they were intended.


BONUS ROUND
: 12 gauge Coinshot can now optionally cause Legion Denarii to splatter around the game world, instead of being restricted to have a chance of spawning Denarii in the inventory of the targets you shoot at. This is disabled by default as it can get a tad bloaty and for the most part is just for show. See the config file to enable it.

The Mangled Legion Denarii that can result from this feature, and any mangled denarius you recover, now use a bent model from the Projectile Hilarity mod by Madcat221, so you can tell them apart from regular, unbent denarii. You can unbend them at the workbench with a Barter skill of 25.

This mod acts as an upgrade to the ammo fixes found in the Unofficial Patch NVSE Plus. You can use both mods together without issue, UPNVSEP will detect this mod's filename if active and will defer its ammo fixes to it.

Special thanks go to Roy Batty for his Scripted Ammo Fix mod. Roy had already come up with a system to get rid of the vanilla ammo scripts and replace them with impact handlers in TTW, this mod upgrades on it to affect any ammo your game has.

Thanks to Madcat221, for the denarius models from the Projectile Hilarity mod.
Thanks to beelzetoxic for finding the issue with ammo scripts, and of course to jazzisparis for his amazing plugin.