Difference between revisions of "Category:Detection"
Jump to navigation
Jump to search
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 | 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''. | ||
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. | |||
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. | |||
<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, | |||
*I do not need good [[Sneak]] skill, | |||
*it does not matter whether I am in the darkest corner, and | |||
*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. | |||
[[Category:Actor Behavior]] | [[Category:Actor Behavior]] | ||
[[Category:Gameplay]] | [[Category:Gameplay]] |