Jump to content

Difference between various 'Stealth' modifiers


PJMail

Recommended Posts

I am making a 'Stealth' effect and can't seem to find any info on the various Stealth modifiers. I would like to know how they effect NPC/Player 'detectability' -
 
- The "Chameleon" and "Invisibilty" Magic Effect ArchTypes both seem to make you invisible and set the AV "Visibility". Is there actually a difference?
- The  Perk modifiers "Mod Detection Movement", "Mod Detection Light", and "Set Undetectable"?
- The Actor Values "ArmorShadowHide" and "ArmorQuietMod"?
- What about the Object Modifier "SoundLevel" (set in Silencers to "Silent")?
 
I don't actually want the invisibility effect of "Chameleon" so any suggestions?
I am doing this as a request for Vertibirds - as they agro everything for miles. No idea who detects who first...
Link to comment
Share on other sites

All of them does different things, here's what I know about these.

   - Chameleon effect: applies the "invisible shader" on the actor; AV Visibility: used by the hardcoded detection formula to determine the "visual detection level" of the actor

   - Mod Detection Movement: used by the hardcoded detection formula to determine by how many values an actor's movement (e.g. speed) affects their detectability

   - Mod Detection Light: used by the hardcoded detection formula to determine an actor's "light detection level"

   - SoundLevel: used by the hardcoded detection formula to determine an actor's "sound level"

    (e.g. jumping near an enemy sends a "low suspicion" (see hardcoded AV Suspicious = 1 or 2) detection event to hostile nearby actors; what nearby means is determined by the detected-detector distance and the sound level)

   - Set Undetectable: overwrites everything above and makes the actor undetectable

   - notes:

        - Detection is a derived value of Light, Audio, Visual and Sound detection; calculation is pretty complex and is relatively CPU intensive

        - For the player the engine cares about the "highest detector" (e.g. the Stealth Meter level calc: determined by the highest detector actor)

        - Detection is also determined by the summed up weight of all worn items of the detected NPC, the detector's Perception and the Active Effects applied onto the detected NPC

         ("determined by (...) active effects applied onto the decected NPC": like detected NPC >> worn outfit >> outfit instance data (includes ObjectMods) >> applied enchanements (which are in the actor's Active Effects array, similarly to applied MagicEffects))

        - I wrote GetDetectionState, GetActorsDetectedBy(Actor akActor, bool bMustHaveLOS = false) and GetActorsDetecting(Actor akActor, bool bMustHaveLOS = false) for Garden of Eden SE, that's why I know these. Hopefully I remember correctly 🙂 

AI sends a detection event (I think assault alarm) upon detecting an "explosive theat". It's somewhat similar when on a few occasions the combat formula (based on combat timers) calls for one of randomly picked combatant native SayTopic() (on manager "BGSStoryTeller" if you're interested) with the Topic "AvoidTheat".

The "send alarm on detecing a hostile mine" behavior is hardcoded. I don't know of any non .dll way to disable it (without editing the ownership of the mine, or MoveTo() it elsewhere and so on).

Link to comment
Share on other sites

Thank you again LarannKiar. The names of the modifiers suggested their approximate effect, but I was unaware there is a complex calculation going on to determine a 'threat'.

I suppose unless we had details of the actual formulation we can never really know how the various modifiers interact (or even their scales).

Things like "what is the actual range of the AV "Visibility"? 0-100? 0-1000? Does the max value mean 'undetectable' or is it just a term in a bigger equation..

Same is true for "light detection", "sound level" etc.

Anyway - no matter. I will play with "Visibility" AV and "Undetectable" to see if can come to a acceptable (but overpowered) result.

As always, this game is about experimenting as nothing is documented...

Link to comment
Share on other sites

Unfortunately yes, without the source it's very difficult to figure out how the values are used in the formula.

The native functions HasDetectionLOS, IsDetectedBy, PlayerVisualDetection (and the like) were meant to be exposed to the condition functions list. They do all the calculation needed internally.

I think PlayerXXXXXDetection >= 0 means HasDetectionLOS = true but I'm not sure...

Documenting Detection isn't really possible as it's too long with many "special cases" that's hard to document without writing a very long text.

 

For altering the Detection behavior, I'd "Set Undetectable" for full undetectability while applying some detection modifiers then unset the Undetectable flag when needed from a script.

This way, one can control when the Vertibird is supposed to be detected but unsetting the Undetectable flag on it won't cause high level detection from any detector immediatelly (due to the changed modifiers), e.g. when an enemy receives LOS on the Vertibird, they won't engage it immediatelly (CombatLevel = 1) just starts "searching" for it (CombatLevel = 2).

Link to comment
Share on other sites

Interestingly I found the "set undetectable" didn't do as it said, even with various other sight and sound detection modifiers set to zero. Setting the "invisibility" AV to 100 did however make it possible to almost land on hostile NPCs with only minor agitation (searching). Note the invisibility AV seems to act like "Chameleon" without the invisibility effect.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...