0 of 0

File information

Last updated

Original upload

Created by

qwandisslaundromat

Uploaded by

qwandisslaundromat

Virus scan

Safe to use

About this mod

Actors in combat are assigned a dynamic combat style that is updated based on Confidence, Remaining Health, Faction, Weapon Type and Weapon Skill. REQUIRES: xNVSE, JIP LN NVSE, JohnnyGuitar NVSE

Requirements
Permissions and credits
Changelogs
Requirements:
  • xNVSE - Get the newest version from the GitHub link in the requirements tab
  • JIP LN NVSE
  • JohnnyGuitar NVSE
  • Lonesome Road - required because the Arc Welder is a short-range exception weapon

Description:
This mod aims to diversify combat by assigning dynamically updated Combat Styles to NPCs that change to reflect Confidence values, Health percentage, faction membership, equipped weapon type and relevant weapon skill levels.

Details:
On combat start, actors are assigned one of 16 blank Combat Styles. The following Combat Style fields are then updated:
  • Dodge % Chance: a random value between 15 and 35
  • Block % Chance: a random value between 40 and 60
  • Attack % Chance: a random value between 40 and 60
  • Power Attack % Chance: a random value between 10 and 40
  • Flee Based On Personal Survival: Set to false if the actor is a member of any faction listed in qlcsFLSTFactionFleeOnGroupSurvival. Otherwise set to true. Factions in qlcsFLSTFactionFleeOnGroupSurvival are generally more militarized (e.g. NCR, Legion, BoS) and I'm assuming that group cohesion has been trained into them.
  • Ignore Damaging Self: Set to true if the actor is a member of any faction listed in qlcsFLSTFactionIgnoreDamagingSelf. Otherwise set to false. Currently, the only factions in qlcsFLSTFactionIgnoreDamagingSelf is the Legion to reflect their fanatical devotion and the Fiends to reflect how hopped up on chems they are.
  • Ignore Damaging Group: Set to false.
  • Ignore Damaging Spectators: Set to true if the actor is a member of any faction listed in qlcsFLSTFactionIgnoreDamagingSpectators. Otherwise set to false. Factions in qlcsFLSTFactionIgnoreDamagingSpectators are the Enclave (since I don't think they'd care if they killed more mutants) and the Talon Company (I believe the wiki says that somebody hired them just to cause trouble in the Wasteland)

When the actor draws a weapon and also at the start of combat, the following Combat Style fields are updated:
  • Ranged Weapon Min Range Mult: 6.0 if using a long-range or scoped weapon, 4.0 if using a mid-range weapon and 6.0 for short-range (see the Smart Advance section below)
  • Ranged Weapon Max Range Mult: 6.0 if using a long-range or scoped weapon, 4.0 if using a mid-range weapon and 6.0 for short-range (see the Smart Advance section below)
  • Semi-Auto Firing Delay Max Mult: a value between 10.0 and 1.0 determined by the actor's relevant weapon skill
For these values, a weapons range is determined by its Weapon Type:
  • Long Range: TwoHandRifle, TwoHandRifleEnergy, TwoHandLauncher, scoped weapons, exceptions like the Incinerator
  • Medium Range: TwoHandAutomatic, TwoHandHandle, OneHandGrenade, OneHandThrown, automatic weapons
  • Short Range: HandToHandMelee, OneHandMelee, TwoHandMelee, OneHandPistol, OneHandPistolEnergy, weapons with more than one projectile and exceptions like the flamer
When in an interior, all actors will default to Short Range.
Range mults were increased here to try to get actor's to really use the range of their weapons instead of just unloading at you from 10 feet away.

When the actor's health is damaged and also at the start of combat, the following Combat Style fields are updated:
  • Take Cover Chance: a value between 100.0 and 85.0 determined by the actor's Confidence alpha
  • Cover Search Radius: a value between 4260.0 and 1065.0 determined by the actor's Confidence alpha
  • Wait Timer Min: a value between 10.0 and 1.0 determined by the actor's Confidence alpha
  • Wait Timer Max: a value between 15.0 and 5.0 determined by the actor's Confidence alpha
  • Wait to Fire Timer Min: a value between 1.0 and 5.0 determined by the actor's Confidence alpha
  • Wait to Fire Timer Max: a value between 3.0 and 8.0 determined by the actor's Confidence alpha
  • Fire Timer Min: a value between 1.0 and 5.0 determined by the actor's Confidence alpha
  • Fire Timer Max: a value between 3.0 and 8.0 determined by the actor's Confidence alpha
  • Combat Radius: a value between 1065.0 and 6390.0 determined by the actor's Confidence alpha
Where Confidence alpha = ((1 - qlcsGLOBConfidenceHealthWeight) * (Confidence / 4)) + ((qlcsGLOBConfidenceHealthWeight) * HeathPercentage)
The Global float qlcsGLOBConfidenceHealthWeight is set to 0.5 by default

* New in version 2.0 *
===Smart Advance===
NPCs now keep a greater distance until they feel it is safe to advance on their enemy.
At the start of combat and when equipping a weapon, NPCs using a long-range weapon will be assigned Weapon Range Mults of 6.0, 4.0 if using a mid-range weapon and 6.0 for short-range weapons. An update script checks whether each individual NPC is confident enough to advance on the enemy. When the Confidence threshold is met, the NPC's Weapon Range Mults are set to 2.0; if the NPC does not meet the Confidence threshold, they are assigned the default values shown above.
An NPC determines whether to advance by comparing it's Threat Ratio against it's Confidence threshold
where Threat Ratio is the average of the calling NPC's threat ratio compared to each enemy. NPCs that are members of a qlcsFLSTFactionFleeOnGroupSurvival faction will multiply this value by (Ally Count / Enemy Count)
and Confidence threshold is determined by the Game Settings:
  • fConfidenceFoolhardy when NPC's Confidence = 4 (default value 0.0)
  • fConfidenceBrave when NPC's Confidence = 3 (default value 0.037500)
  • fConfidenceAverage when NPC's Confidence = 2 (default value 0.187500)
  • fConfidenceCautious when NPC's Confidence = 1 (default value 0.375000)
  • fConfidenceCowardly when NPC's Confidence = 0 (default value 1000.0)
The Confidence threshold is then multiplied by the Global value qlcsGLOBThreatRatioThresholdMult (default value 8.0)The update time for the script is dependent on the default Game Setting fCombatThreatRatioUpdateTime which has a default value of 7.5 seconds

On death, combat end or game load, actors are given back their original combat style.
Refer to the GECK wiki for explanations of these Combat Style fields: Combat Style - GECK (geckwiki.com)

Mod Compatibility:
  • The TTW download adds the DC Brotherhood of Steel to the qlcsFLSTFactionFleeOnGroupSurvival list
  • Mod-added factions can easily be supported by adding their faction records to the correct Form Lists
  • Vicious Wastes: Partial Changes made by Vicious Wastes to vanilla Combat Styles will be overwritten when valid actors start combat and are assigned a dynamic combat style. However, Vicious Waste's changes will still apply to creatures and whenever a dynamic combat style cannot be assigned to an NPC
  • NPCs Sprint: Compatible
  • NPCs Can Miss: Compatible However, NPCs might be missing too much for your liking when used alongside this mod and it's increased weapon range multipliers
  • Immersive Recoil NPC: Compatible However, NPCs might experience recoil less when used alongside this mod's increased semi-auto firing delay multipliers
  • Combat Enhancer: Compatible Game Setting changes made by Combat Enhancer won't conflict with this mod
  • XFO Enemy AI - Tactics - NPC Healing: Partial Changes made by XFO to vanilla Combat Styles will be overwritten when valid actors start combat and are assigned a dynamic combat style. However, XFO's changes will still apply to creatures and whenever a dynamic combat style cannot be assigned to an NPC
  • MCV Modified Combat Values: Compatible Game Setting changes made by MCV won't conflict with this mod
  • Nevada Combat: Compatible Game Setting changes made by Nevada Combat won't conflict with this mod

Please report any bugs or unexpected behavior in the comments or the bugs section.
Let me know if you've already been looking into Combat Styles and can suggest changes to any of the values.
Debug information can be seen by putting the mod into debug mode with SetDebugMode

Thanks to everyone on the xNVSE discord for being so helpful and creating such useful script extenders!
Thanks to everyone who's downloaded and provided feedback or ideas in the comments