Fallout New Vegas

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
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 scripts and effects still applies.

The main issue with ammo effects altogether is that these effects are applied just for having that ammo loaded, NOT when the ammo in question impacts the target. This means that having Hollow Point ammo loaded will apply its damage bonus and DT penalty to targets that trigger your mines, for example. This is also why you see the damage of weapons other than the one you have equipped vary wildly when hovering over them in the pipboy before equipping them, again, if your previous weapon had ammo loaded with damage-altering effects.
Ammo scripts like those of incendiary ammo also trigger from any of the actor's attacks while having the ammo loaded, not just from the weapon. 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 subtractions 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 (was, before JIP swept through it?) 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.

These issues are a "core feature" of the game that's unlikely to be corrected, so I can only make scripted workarounds to try and tighten things up. However, I think I've done a good job of it, and added a few extras while I was at it.

IMPORTANT: this mod uses the JIP LN script runner to initialize from a text file, and do away with a running quest script. However, this needs both the included .txt file under data/nvse/plugins/scripts, and for you to use the JohnnyGuitar NVSE plugin with the bLoadEditorIDs option enabled (it is by default). And yes, I use JohnnyGuitar for more stuff than just that, so just get it.

Since ammo scripts are ubiquitous, it's not much use to advise people to get rid of them. But thankfully JIP LN's functions to retrieve data about the impact can be used in them as well, to tighten up when they are fired. This mod does the following:
  • Patches the scripts from .50MG Incendiary, 12ga Coinshot & Dragon's Breath, and Pulse Slugs to make pretty sure they don't do anything unless the impact that fires them is due to the weapon that has that ammo loaded, in the attacker's hands.
  • 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.
  • Replaces the bugged fatigue effect in bean bag ammo with a script implementation. It doesn't affect robots, it won't trigger if you hit the actor's held weapon, and the amount of fatigue caused varies just like the regular weapon's damage would (headshot, skill, perks, etc). Be wary, the base fatigue it causes to unarmored targets is immense, and can knock out almost any critter in one or two shots, but it is VERY nerfed by the target's DT, just as you'd expect IRL from such a non-lethal ammunition.

NEW IN VERSION 4.0: a scripted workaround is implemented so that ammo effects that alter Damage or DT should only affect attacks made by the weapon with that ammo loaded. At the very least, this should get rid of the errors in the DAM and DPS display in the pipboy when hovering over melee and thrown weapons while having ammo loaded with damage-altering effects. Other ranged weapons will have their DAM and DPS displays altered, but this is pretty much unavoidable and hopefully shouldn't affect actual gameplay.

This should also make damage from your explosives, or other delayed damage sources, not be affected by your current ammo's effects. Internally this is done by countering those effects with a perk. This can correctly counter any DAM effects when they shouldn't apply. It can correctly counter DT adding or subtracting effects like those of AP rounds. For DT multiplying effects like those of HP rounds, it can only correctly counter them for explosions, such as mines and the like, that go off while you have the ammo with that effect loaded, but extensive testing of the bugfixing method here has been limited.
Unfortunately I've been unable to counter DR effects in a correct fashion with this system so those are not handled, but given there are none of those in the vanilla game, it shouldn't be much of an issue.

NEW IN VERSION 3.0: my old Pyromaniac and Plasma Ammo Fix is now folded into this, in a very upgraded fashion.
  • Ammo types found in the vanilla PerkPyromaniacAmmo form list will now grant you the benefits of the Pyromaniac perk if you have it, namely you'll do +50% weapon damage with those ammo types loaded. 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 in the included migAmmoPlasmaFLST form list 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.

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, but if you want to enable it, the global variable CoinshotRain is the percentage chance that each coinshot pellet will have to avoid being destroyed after impact and to spawn in the game (console: set coinshotrain to [0-100]).

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.

Installation is straightforward, just activate AmmoScriptFixes.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 with new ammo scripts, I'd encourage you to replicate what's done here on your end if needed, to fix ammo scripts and do away with fatigue effects in bean bag ammo.

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.