Difference between revisions of "Category:Detection"

3,347 bytes added ,  20:43, 22 January 2007
Complete re-write.
imported>Csimbi
(Added reference to previosly missing values: fSneakUnseenMin and FSneakSoundsMult)
imported>Csimbi
(Complete re-write.)
Line 1: Line 1:
Detection is a complicated process involving many variables. The factors break down into three categories: skill, light, sound. These three factors are added together. An [[FSneakBaseValue|initial penalty of -25]] is applied. If the result is [[FSneakSeenMin|above zero]], the actor is detected.
Detection is a complicated process involving many variables, and always exactly two actors because It is important to note that the engine does not calculate successful "sneak rolls" for the actor who is sneaking: it is vice versa; the engine calculates successful "detection rolls" for the actor being stalked (''origin'') vs. the sneaking actor (''target''). Therefore, detection is always calculated between two actors: the ''origin'' and the ''target''.


All three are subject to distance attenuation. The further away, the less effect they have. Indoors, the maximum distance is [[FSneakMaxDistance|1500 units]]. Outdoors the maximum is [[FSneakExteriorDistanceMult|3000 units]].
The variables involved break down into three categories: '''Base''', '''Skill''', '''Light''', '''Sound'''. These variables are simply combined together to calculate the end-result. If the end-result is higher than [[fSneakSeenMin]] (default: 0), the ''target'' is detected. When an actor is detected, it can be ''target''ed as well, therefore the hostile units will engage the ''target'' in combat, while non-hostile units will only "notice" the ''target'' - which usually results in looking directly at the ''target'' and making a comment/greeting towards him/her.


At the moment an actor initiates combat, a [[FSneakTargetAttackBonus|one time bonus of +100]] is added, making it a virtual certainty that for a moment the actor will detect his assailant. In that moment, the actor can decide to enter combat or not.
Once detected, the ''target'' remains detected until he/she can get his/her detection end-result below a certain threshold vs. the ''origin''. This threshold varies based on the relation of the ''origin'' and the ''target'':
*"Non-hostile" meaning that the origin does not care much about the fact that the target is trying to hide. It uses the [[fSneakUnseenMin]] value (default: 0.0) as threshold.
*"Hostile" relation has two variants:
**"Cautious" meaning that the hostile unit is looking for the target - typically saying warning lines during the process. It uses the [[fSneakLostMin]] value (default: -20.0) as threshold.
**"Combat" meaning that the hostile unit is actually engaged in combat with the target. It uses the [[iAICombatMinDetection]] value (default: -50.0) as threshold.
Again, this is quite logical because it is easy to hide from someone who does not care, while it is pretty hard to fade out of sight during combat.


Once detected, the actor has to get his detection value below a negative threshold for hostile actors to lose him. [[FSneakLostMin|By default this is -20]]. If the actor is in combat with the target, a [[IAICombatMinDetection|lower threshold of -50]] has to be reached to lose him. Non-hostile actors use [[fSneakUnseenMin]] instead.
<u>Description of the variables in the equation:</u>
*'''Base''' The basis for the calculation of the end-result, independent of any other value.
**Sneak penalty governed by [[fSneakBaseValue]] (default: -25). This value is an absolute base value that always applied to indicate the  the intent to sneak. Basically it means that if the ''target'' makes no noise at all AND hiding in a very dark place AND does not make a move, the detection will fail (e.g. the ''target'' can successfully hide) even with a very low [[Sneak]] skill.
**Combat bonus governed by [[fSneakTargetAttackBonus]] (default: 100). This values is added to the base only fro the moment when the target initiates combat, making it a virtual certainty that for a moment the actor will detect his assailant. In that moment, the origin can decide to enter combat or not.
*'''Skill''' The difference between the actors' sneak skills (the one who is sneaking vs. the one who it being stalked); governed by [[fSneakSkillMult]] (default: 0.5)
**The variable is modified by the distance between the actors.
*'''Light''' The amount of light shining on the sneaking actor; governed by [[fSneakLightMult]] (default: 1.4)
**[[Invisibility]] and [[Chameleon]] effects improve this variable.
**The variable is modified by the distance between the actors.
*'''Sound''' The level of noise that the ''target'' is making; governed by [[fSneakSoundsMult]] (default: 1.6), [[fSneakSoundLosMult]] (default: 1.0)
**Moving makes more noise than standing still.
**Running makes more noise than walking; governed by [[fSneakRunningMult]] (default: 1.3)
**Heavy boots make more noise than bare feet; governed by [[fSneakBootWeightBase]] (default: 14.0), [[fSneakBootWeightMult]] (default: 1.0)
**Fighting makes ultimately high noise; governed by [[fSneakTargetInCombatBonus]] (default: 25.0)
**The variable is modified by the distance between the actors


 
As You can see, all variables except '''Base''' are subject to distance attenuation. The distance is always measured between the ''target'' and the ''origin''. The distance attenuation is always applied to the '''Skill''', '''Light''', '''Sound''' variables before calculating the end-result. The further away the ''target'' is, the less significant the variable is. It is quite logical: while I am far away,
*'''Skill:''' The difference between the actor's sneak skills. It is modified by the distance between actors.
*I do not need good [[Sneak]] skill,
*'''Light:''' The amount of light shining on the actor. Invisibility and Chameleon effects change this. It is modified by the distance between the actors
*it does not matter whether I am in the darkest corner, and
*'''Sound:''' The noises the actor is making. Moving makes more noise than standing still. Running makes more noise than walking. Heavier boots make more noise. Fighting makes more noise. It is modified by the distance between the actors.
*it does not matter whether I make a little noise.
 
Obviously the minimum distance is always zero, however the maximum distance is limited. In [[interior cells]] the maximum distance where detection applies is [[fSneakMaxDistance]] (default: 1500). The maximum distance in [[exterior cells]] is calculated from [[fSneakMaxDistance]] and [[fSneakExteriorDistanceMult]] (default: 2) like this: '''OutDoorDistance = [[fSneakMaxDistance]] * [[fSneakExteriorDistanceMult]]'''; applying the default values this formula gives us 3000. Any actors outside this distance cannot take part in detection rolls - so if You start wondering why can't You hide in combat, this is one of the reasons: You are too far away to trigger detection calculations.
 
There is an additional value, which at this point is believed to govern the importance of sounds made during sneaking. See [[FSneakSoundsMult]] .


[[Category:Actor Behavior]]
[[Category:Actor Behavior]]
[[Category:Gameplay]]
[[Category:Gameplay]]
Anonymous user