Category:Detection
This article is incomplete. You can help by filling in any blank descriptions. Further information might be found in a section of the discussion page. Please remove this message when no longer necessary. |
Contents
Detection Value
Detection is a complicated process involving many variables. The factors break down into three categories: skill, visibility, sound. These three factors are added together to determine whether one actor detects another. Actors can also detect Detection Events -- sounds directly or indirectly generated by a target actor -- even if they don't detect the target directly.
The basic formula is as follows:
Detection Value = fSneakBaseValue + Sound Factor + Visual Factor + ((Detector Skill Factor - Target Skill Factor) * fSneakSkillMult)
Individual Settings
Setting | Default | Description |
fSneakBaseValue | -35.0 | Flat modifier to actor's detection value. |
fSneakSkillMult | 0.5 | Multiplies the Detector-Target outcome by this value. |
Distance Attenuation
Each of the three detection factors is modified by distance using the following formula:
((fSneakMaxDistance - distance) / fSneakMaxDistance) ^ fSneakDistanceAttenuationExponent
Sound is further reduced if there is no line of sight between the actor and the target using fSneakSoundLosMult.
Individual Settings
Setting | Default | Description |
fSneakMaxDistance | 2500.0 | Max distance actors can detect other actors (multiplied by fSneakExteriorDistanceMult in exteriors). |
fSneakDistanceAttenuationExponent | 2.0 | Exponent for detection falloff. |
fSneakExteriorDistanceMult | 2.0 | Multiplier for max detection distance in exteriors. |
fSneakSoundLosMult | 0.1 | Multiplier for attenuation when detecting actor does not have line of sight. |
Sound
Sound factor = Distance Attenuation * fSneakSoundsMult * (Movement Sound + Action Sound)
Movement is the sound made when moving. If the target is stationary, this is 0. Otherwise:
Movement Sound = (fSneakBootWeightBase + fSneakBootWeightMult * armor weight) * fSneakRunningMult
fSneakRunningMult is ignored if the Ignore Running During Detection Perk Entry Point is greater than 0.
fSneakRunningMult is treated as 1 if the target isn't running.
Action is the "action sound" made by the target -- the sound of any weapon being used.
Action Sound = Action * fSneakActionMult
Individual Settings
Setting | Default | Description |
fSneakBootWeightBase | 12.0 | Base noise value of any armor worn. |
fSneakBootWeightMult | 0.5 | Multiplies the weight of worn body armor by this value to determine extra noise. |
fSneakRunningMult | 1.5 | Multiplier for movement noise while running. |
fSneakActionMult | 2.0 | Multiplies the sound generated by actions. |
fSneakSoundsMult | 1.6 | Multiplies the noisiness of all sound-related detection calculations. |
iSoundLevelLoud | 100 | The sound value when firing loud weapons. |
iSoundLevelNormal | 50 | The sound value when firing normal weapons. |
iSoundLevelSilent | 10 | The sound value when firing silent weapons. |
Visual
Visual factor = Distance Attenuation * Visual Contact * Light * Movement Multiplier * Blindness * Stealthboy
The visual factor is determined as follows:
Visual Contact: If can't see target, this is 0 Movement Multiplier: 1 + Moving * fSneakLightMoveMult + Running * fSneakLightRunMult Light: (fDetectionSneakLightMod + (light level * night eye bonus)) * fSneakLightMult Blindness: ( 100 - blindness )/100 Stealthboy: If the Invisibility or Chameleon AV are >= 1, multiply by fSneakStealthboyMult
blindness variable is set to 0 in New Vegas and has no effect on the visual factor, i.e. (100 - 0) / 100 = 1.
night eye bonus multiplies the light level by fDetectionNightEyeBonus and caps it at 100 if detecting actor's NightEye actor value is non-zero.
Individual Settings
Setting | Default | Description |
fSneakLightMoveMult | 0.01 | Increases visibility on target by this value while moving (0.01 = +1% visibility). |
fSneakLightRunMult | 0.2 | Increases visibility on target by this value while running (0.2 = +20% visibility). |
fDetectionSneakLightMod | 0.0 | Flat modifier to visibility. |
fSneakLightMult | 1.4 | Multiplies the ambient light by this value. |
fSneakStealthboyMult | 0.0 | Multiplies visibility by this value if the actor's chameleon or invisibility AV is greater than 0. |
fDetectionNightEyeBonus | 3.0 | Multiplies visibility on target by this value if the detector has the NightEye AV. |
Detector Skill
Detector Skill Factor = Detector Skill * Distance Attenuation
The actor detecting uses Perception (not the Sneak skill) to determine a base "perception skill" value:
Perception Skill = fSneakPerceptionSkillMin + (fSneakPerceptionSkillMax - fSneakPerceptionSkillMin) * (Perception / 10)
This can be further modified by various factors: is the actor in the Alert state; is the actor sleeping; is the actor in combat with something else.
Detector Skill = Perception Skill * ((1 + Combat * fSneakAlertMod) + (Sleeping * fSneakSleepBonus) + (IsCombatTarget * fSneakCombatMod))
Individual Settings
Setting | Default | Description |
fSneakPerceptionSkillMax | 90.0 | Maximum perception skill an actor can achieve. |
fSneakPerceptionSkillMin | 10.0 | Minimum perception skill an actor can have. |
fSneakAlertMod | 0.2 | Modifier to perception skill if they're in a combat state (0.2 = +20% bonus). |
fSneakSleepBonus | -0.2 | Modifier to perception skill while actor is sleeping (-0.2 = -20% penalty). |
fSneakCombatMod | -0.4 | Modifier to perception skill against targets the actor's currently in combat againt (-0.4 = -40% penalty). |
Target Skill
The target is the actor (usually the Player) sneaking around. The Target Skill is significantly different between Fallout 3 and New Vegas as FNV accounts for significantly more factors.
In FO3, the Target Skill is simply as follows:
Target Skill Factor = Sneak Skill * IsSneaking
However, in FNV, it becomes significantly more complex due to accounting for levels.
Target Skill Factor = ((Sneak Skill + iSneakLevelBonus * (Target Level - Detector Level)) + max(iSneakStartBonus - iSneakStartBonusLevelPenatly * Target Level, 0) - Armor Penalty) * IsSneaking
Individual Settings (FNV Only)
Setting | Default | Description |
iSneakLevelBonus | 5 | Effective sneak modifier for each level difference between both actors. |
iSneakStartBonus | 50 | Flat bonus to effective sneak skill. |
iSneakStartBonusLevelPenatly | 10 | Reduces iSneakStartBonus by this value with every target level. |
iMediumArmorStealthPenalty | 10 | This setting is used for the armor penalty when an actor is wearing medium armor in their torso slot. |
iHeavyArmorStealthPenalty | 20 | This setting is used for the armor penalty when an actor is wearing heavy armor in their torso slot. |
Detection States
The detection value is used to determine when an actor changes its detection state.
Actors pass through 4 detection states: Normal->Alert->Combat->Lost->Normal. Actors enter the Alert state when they either "almost" detect an enemy, or detect a "detection event" generated by an enemy. Alerted actors will search towards detection events, which will allow them to detect enemies and enter the Combat state. If all targets become undetected, an actor will drop out of combat into the Lost state, searching towards the last known locations of its targets until it either redetects them or a timer expires and they return to Normal state.
Definitions
Actors are always in one of the following detection states:
- Normal
- Default state of all actors.
- Alert
- I am aware of a Detection Event. May include search behavior, but always includes "weapon out". Actors have increased Perception when in this state.
- Combat
- I am in combat with at least one actor in my target list.
- Lost
- I've transitioned from Combat because all of my targets became undetected. Similar to Alert state in most respects.
State Transitions
Actors transition between detection states according to the following rules:
Normal --> Alert
This transition happens when a hostile actor (an actor that I would attack if I detected it) either:
- Crosses the "Alert Threshold" (fSneakNoticedMin = -20). Add a detection event to my alert list at the actor's current location with the magnitude of current detection.
- Creates a "Detection Event" that I detect (e.g. firing a weapon). Add the detection event to my alert list.
- Damages me. Add a detection event to my alert list at the enemy's current location with magnitude of current detection.
Normal --> Combat
This transition happens when a hostile actor suddenly becomes detected without triggering the Alert state on me. For example, a sneaky character fires a gun nearby, going from -30 detection to 20 all at once.
Alert --> Combat
This transition happens when I detect any actor to which I'm hostile.
Alert --> Normal
This transition happens when my alert list is empty -- all detection events have expired.
Combat --> Normal
This transition occurs whenever I have no targets in my combat list (i.e. they're all dead or no longer considered hostile), and I have nothing in my alert list.
Combat --> Lost
This transition occurs whenever all my targets are undetected (detection < 0) AND their timers have all expired (see below), and I have events in my alert list.
Lost --> Normal
This transition occurs whenever all my targets < Alert Threshold AND the Alert Timer has expired.
Lost --> Combat
This transition occurs whenver I detect any of my targets (detection > 0).
Target List
Actors in combat (which includes Alert, Combat, and Lost states) hold a list of hostile actors in their target list.
Whenever an actor in my target list becomes undetected (detection < -20), start running a timer on that target. If timer expires and target is still undetected AND not currently being searched for (either I'm searching for someone else, or still in combat with someone else), remove the target from my list.
Actor Behavior
Alert State
The Alert State is a combat state -- the actor is in combat, although it has not located a target to attack. If allowed by its current package, the actor will engage in search behavior towards detection events in its alert list (see Combat Search).
Lost State
The Lost State is also a combat state -- the actor remains in combat, but has lost detection on its targets. If allowed by its current package, the actor will engage in search behavior (starting with its current combat target if more than one target remains in its list) (see Combat Search); otherwise it should return to its package location, but remain Alert.
Voice/Sound cues
When actors are in a combat search (Alert or Lost states), they will occasionally use these default Detection topics for dialogue barks.
- LostIdle: Used when actors are in the Lost state. Examples: "Nothing yet.", "Keep looking. He's got to be here somewhere."
- AlertIdle: Used when actors are in the Alert state. Examples: "I could have sworn I heard something.", "Hmm. Maybe I'm just hearing things.", "I'll check over here.", "Anybody there?"
Transitions: there also default Detection topics for the transitions between detection states:
- NormalToAlert
- AlertToCombat
- NormalToCombat
- AlertToNormal
- CombatToNormal
- CombatToLost
- LostToNormal
- LostToCombat
Detection Events
A detection event is a sound/action at a location, that can be detected by an actor in a similar manner that it detects other actors. In general, actors will only respond to a detection event if it was produced by an actor that they are aggressive towards.
A Detection Event has the following data attached to it:
- Owner -- Actor that caused it
- Action rating -- this plugs into the detection formula, and is the main component of how "loud" the event is. This comes from the projectile or explosion.
- Location -- used by alerted actors as the location of their search.
Procedure
Generating a Detection Event
A detection event is generated when:
- A projectile impacts something -- grenade, rocket, Fat Man. Action rating = taken from the projectile.
- A world object explodes (car, fuel tank, etc.). Action rating = taken from the exploding object. Owner = whoever caused the object to blow up.
- CreateDetectionEvent is called.
What doesn't generate a detection event?
- When an enemy is within my "Alert Threshold", every time I finish a complete search of the "search area" (see Combat Search), recenter the search area based on the enemy's current location.
- When an enemy damages me, if I can't detect the enemy, I start searching anyway. I will still do a complete search before dropping out of combat even though I have no detection on the enemy.
What happens when a detection event is generated?
- Actors within the detection radius (fSneakMaxDistance) run detection on the event to see if they detect it. Actors who would not respond aggressively toward the detection event owner ignore the event, as do actors who are already in Combat state.
- If an actor detects the event (>fSneakNoticedMin), they are immediately put into Alert state. If they are already Alert, add the event owner to their target list.
Pages in category "Detection"
The following 3 pages are in this category, out of 3 total.