Detection

Revision as of 18:19, 28 June 2007 by imported>Qazaaq (this could use some attention, moved to unfinished articles)

ON DETECTION by Jonathan W. Edwards A.K.A. SundayScour

ALL OF THE ORIGINAL DATA FOR THIS ARTICLE CAME FROM "The Elder Scrolls Construction Set Wiki"
        http://cs.elderscrolls.com/constwiki/index.php/Category:Detection
THE COMPILATION OF DATA AND SYNTHESIS OF EQUATIONS ARE MY OWN
PLEASE CORRECT IF YOU *KNOW* SOMETHING I'VE SAID IS WRONG!
NONE OF THIS WORK HAS BEEN TESTED "IN ENGINE".
HOWEVER, KNOWING HOW GAME MECHANICS WORK FOR MORROWIND AND THE NAMES AND VALUES OF THE VARIABLES THE FOLLOWING HYPOTHESIS SEEMS TO MAKE SENSE
DEFAULT VALUES FOR ALL VARIABLES ARE GIVEN AT THE END

Definitions

The actor who is sneaking = sneaker
The actor who is detecting = detector
The detection score of the actor who is sneaking = sneakers score
The detection score of the actor who is detecting = detectors score
First of all it should be noted how the detection process is initiated.
Each NPC actor initiates detection against another actor who passes or fails.
If the detection is against you, you may or may not be sneaking.
In other words, there are no "Sneak success rolls" only "Detection success rolls".
In Oblivion there are two equations that have to do with detection.
The first is simple and if detected, a warning is communicated.
This is considered "being noticed", and the detector is considered "aroused".
The second detection equation is more complex and if detected the detector has seen the sneaker and can use the sneaker as a target for its action routines.
The sneakers side of the equation is the same in both cases, however the detectors mathematical expression is different in each case.

Equation One: Noticing

This equation is only used if detector has not already seen the sneaker and is not aroused.
If sneakers score is GREATER than detectors, the sneaker is noticed and a warning is issued.
(i.e. "Who goes there?" or "What was that?" or "Did you see something?")

T H E S N E A K E R:

sneakers score = (same as below)

T H E D E T E C T O R:

detectors score = FSneakNoticedMin

Equation Two: Seeing

This is the important equation with regards to sneaking around without being attacked.
If sneakers score is GREATER than the detectors score, the detector sees the sneaker and the sneaker is available as a target in the detectors actions.

T H E S N E A K E R:

sneakers score = BASE + {Distance scaler * SKILL} + {Distance Scaler * LIGHT} + {Distance scaler * SOUND}
simplified to
sneakers score = BASE + Distance scaler * {SKILL + LIGHT + SOUND)
where:
  1. BASE = FSneakBaseValue + (FSneakSleepBonus OR Zero) + (FSneakTargetInCombatBonus OR FSneakTargetAttackBonus OR Zero)
    • Use "FSneakSleepBonus" if detector is asleep
    • Use "FSneakTargetInCombatBonus if Sneaker is in combat but NOT WITH Detector
    • Use "FSneakTargetAttackBonus if Sneaker is being attacked by detector
  2. Distance Scaler = Distance to Detector / {FSneakMaxDistance * [FSneakExteriorDistanceMult OR Zero]}
    • Use FSneakExteriorDistanceMult if the cell you are in is marked as an Exterior cell, otherwise use zero
  3. SKILL = FSneakSkillMult * (Detectors sneak skill - Sneakers sneak skill)
  4. LIGHT = (FSneakLightMult OR FSneakSwimmingLightMult) * (ambient light level number)
    • Use FSneakLightMult if sneaker is NOT swimming
    • Use FSneakSwimmingLightMult if sneaker IS swimming
  5. SOUND = (FSneakSoundsMult OR FSneakSoundLosMult) * (FSneakRunningMult * <[FSneakBootWeightBase OR Zero] + [{FSneakBootWeightMult OR Zero} * actual weight of boots worn]>)
    • Use FSneakSoundLosMult if sneaker is OUT of the Line of Sight (LoS) of detector
    • Use FSneakSoundsMult if sneaker is IN the LoS of detector
    • Use FSneakBootWeightBase if sneaker has boots equiped
    • Use FSneakBootWeightMult if sneaker has boots equiped

T H E D E T E C T O R:

  1. detectors score = IAICombatMinDetection OR FSneakLostMin OR FSneakSeenMin OR FSneakUnseenMin
    • Use IAICombatMinDetection if detector is in combat with sneaker
    • Use FSneakLostMin if detector is already NOTICED by sneaker but NOT SEEN
    • I DON'T KNOW EXACTLY WHAT FSneakSeenMin or FSneakUnseenMin mean, but BOTH default to zero and should be used if the sneaker is unnoticed by detector

(In other words they should be used if the sneaker has passed through equation one undetected and unnoticed)




VALUES

In no particular order:

FSneakSleepBonus = -10.0

FSneakSoundLosMult = 1.0

FSneakSoundsMult = 1.6

FSneakSwimmingLightMult = 0.5

FSneakTargetAttackBonus = 100.0

FSneakTargetInCombatBonus = 25.0

FSneakUnseenMin = 0.0

IAICombatMinDetection = -50.0

FSneakMaxDistance = 1500.0 @ 128 units per 6 feet

FSneakNoticedMin = -20.0

FSneakRunningMult = 1.3

FSneakSeenMin = 0.0

FSneakBaseValue = -25.0

FSneakBootWeightBase = 14.0

FSneakBootWeightMult = 1.0

FSneakExteriorDistanceMult = 2.0

FSneakLostMin = -20.0


LOOK FORWARD TO FEEDBACK!

sundayscour

sunday_scour@yahoo.com