Category:Detection

Revision as of 14:45, 23 January 2007 by imported>Csimbi (Typos again)

Detection is a complicated process involving many variables, and always exactly two actors. 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 targeted 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.

Description of the variables in the equation:

  • 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 is always applied, in order to indicate 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 for a 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 (origin vs. target); 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.

This category currently contains no pages or media.