Jump to content

Equal Base Health for All Humans


darlingg

Recommended Posts

I want to do an ultra-realistic run of Fallout New Vegas in which each human's starting Hit Points depends only on their Endurance stat.

In general, the FNV game engine determines starting Hit Points by the following formula (not including any effects of Perks or Chems; recalculated at each change of Endurance or Level):

Hit Points = Base Health + Multiplier1 x (Endurance + Offset) + Multiplier2 x (Level - 1)

Where:

Base Health = a set value for the particular character or template, commonly around 50 but varying from 10 for NCR Troopers (?) through 100 for Jeannie May Crawford (??) and the Player Character, to near 200 for some Companions and human bosses;

Multiplier1 = the Game Setting fAVDHealthEnduranceMult (20) for the Player Character, and fAVDNPCHealthEnduranceMult (default 5) for all other human characters;

Offset = the Game Setting fAVDHealthEnduranceOffset (default 0) for the Player Character, and fAVDNPCHealthEnduranceOffset (default -1) for all other human characters.

Multiplier2 = the Game Setting fAVDHealthLevelMult (default 10) for the Player Character, and fAVDNPCHealthLevelMult (default 5) for all other human characters;

(See Health is Delicate and elsewhere.)

The new formula I want is this:

Hit Points = 50 + 10 x Endurance

This makes for a Hit Point range of 60-150, and an average of around 100, for all humans, including high-level player characters and bosses (which present enough of a challenge for their superior armour, skills, weapons and bodyguards, without utterly unrealistic bodies to boot). With these values, it becomes entirely plausible that Benny expected to kill the courier with a single 9 mm shot to the head: Maria's 20 hp damage per shot x 2 crit (supposing high skill) x 4 for a headshot (from BLEED) = 160 hp, over and out. This would make for a faster, edgier, fairer and more tactical game experience.

I know how to manipulate the above Game Settings with FNVEdit and a Merge Patch to change Multiplier1 to 10 and Offset & Multiplier2 to 0. However, Base Health would also have to be set to 50 for every character that isn't a super mutant or whatnot (which might have a good lore reason for a Base Health of 200; but that the game classifies as a Creature rather than a Non-Player Character, anyway), and there are hundreds, even apart from any quest or population mods I might run.

So, could someone please write a script mod that would automatically apply Base Health of 50 to every Non-Player Character in a load, whether from base game, or DLC, or mod, either when the game starts, or whenever a character is spawned? Or maybe that generates a patch with that effect? Right now no other "rebalance" etc mod on Nexus does anything like this, that I could find.

Link to comment
Share on other sites

I whipped something up, tested it in-game and it kind of works. I say kind of because there are HARD limitations on what's possible without new JIP LN functions, which makes this mod in my opinion impractical at the moment. I'll try to explain what I mean.

 

My test plugin fetches every placed actor reference from every loaded plugin, then sets base health according to that formula (50 + 10 x actor's base endurance). There are two major issues with this approach. First, not every actor reference is flagged as persistent, meaning every temporary actor reference (other than those in currently loaded cells) won't be modified when the function fires. Second, not every persistent actor reference is enabled, meaning every disabled persistent actor at the time the function fires will have 0 Endurance for the calculation.

 

The root of these problems is that there are no functions (that I know of) which affect the base records of NPCs, only their placed references. Now, functions do exist that modify base records ingame, like with armor DT and weapon ImpactSets for example. If the miracle workers at JIP LN ever implement functions that affect NPC base records, this mod would suddenly become trivial to do.

Link to comment
Share on other sites

I whipped something up, tested it in-game and it kind of works. I say kind of because there are HARD limitations on what's possible without new JIP LN functions, which makes this mod in my opinion impractical at the moment. I'll try to explain what I mean.

 

My test plugin fetches every placed actor reference from every loaded plugin, then sets base health according to that formula (50 + 10 x actor's base endurance). There are two major issues with this approach. First, not every actor reference is flagged as persistent, meaning every temporary actor reference (other than those in currently loaded cells) won't be modified when the function fires. Second, not every persistent actor reference is enabled, meaning every disabled persistent actor at the time the function fires will have 0 Endurance for the calculation.

 

The root of these problems is that there are no functions (that I know of) which affect the base records of NPCs, only their placed references. Now, functions do exist that modify base records ingame, like with armor DT and weapon ImpactSets for example. If the miracle workers at JIP LN ever implement functions that affect NPC base records, this mod would suddenly become trivial to do.

 

Thanks! Though I didn't need Base Health = 50 + 10 x Endurance, but only Base Health = 50. Is that more workable?

 

It's fine that this only affects placed references, because those are what the Player Character actually faces, right? So this script could take effect with others that kick in when an enemy spawns?

 

And this only touches Non-Player Character records, right? Creature health works fine for me in the game right now.

Edited by darlingg
Link to comment
Share on other sites

 

 

 

I whipped something up, tested it in-game and it kind of works. I say kind of because there are HARD limitations on what's possible without new JIP LN functions, which makes this mod in my opinion impractical at the moment. I'll try to explain what I mean.

 

My test plugin fetches every placed actor reference from every loaded plugin, then sets base health according to that formula (50 + 10 x actor's base endurance). There are two major issues with this approach. First, not every actor reference is flagged as persistent, meaning every temporary actor reference (other than those in currently loaded cells) won't be modified when the function fires. Second, not every persistent actor reference is enabled, meaning every disabled persistent actor at the time the function fires will have 0 Endurance for the calculation.

 

The root of these problems is that there are no functions (that I know of) which affect the base records of NPCs, only their placed references. Now, functions do exist that modify base records ingame, like with armor DT and weapon ImpactSets for example. If the miracle workers at JIP LN ever implement functions that affect NPC base records, this mod would suddenly become trivial to do.

 

 

Thanks! Though I didn't need Base Health = 50 + 10 x Endurance, but only Base Health = 50. Is that more workable?

 

It's fine that this only affects placed references, because those are what the Player Character actually faces, right? So this script could take effect with others that kick in when an enemy spawns?

 

And this only touches Non-Player Character records, right? Creature health works fine for me in the game right now.

Yes, the test script only filters by placed actor (ACHR) form types. That's actually why the only reason it even partially works, is the same reason it will never work well.

 

Not using the Endurance multiplier would avoid the issue of disabled actors calculating health with 0 Endurance. However, you still have the problem of temporary references not being loaded at the time the script fires. References being temporary restricts what scripts can do with them and there's no workaround for that.

 

If you're running this every time the player moves to a new cell in order to catch the temporary references you might have missed, you're looking at a massive waste of performance. The more I think about this, the more I'm sure there's no good implementation without new JIP LN functions that target NPC base records.

Link to comment
Share on other sites

Another approach I was thinking of would be to generate a patch of all Non-Player Character records, with a command or script in FNVEdit, Wrye Flash or a new application, and set Base Health for each at 50 either during or after that process. I don't know enough to hazard what may or may not work there.

Link to comment
Share on other sites

  • 9 months later...
  • 6 months later...

At least I can change fAVDHealthEnduranceOffset from 0 to -5, while fAVDHealthEnduranceOffset = 0 and fAVDHealthEnduranceMult = fAVDNPCHealthEnduranceMult = 10. This shifts the Player Character's Base Health from vanilla 100 to the average humanoid NPC's 50, thus giving to both the same mean health of 105, and range of 60 to 150.

Edited by darlingg
Link to comment
Share on other sites

  • 5 months later...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...