Pillars of Eternity Wiki
Register
Advertisement

Scouting mode (also simply called stealth mode or sneaking) is a modal character state that can be toggled on a per character basis. It is primarily used to avoid Detection, a change of state where a character or creature becomes aware of your presence. Scouting mode goes hand-in-hand with the Stealth skill, and it can be used to circumvent encounters, scope out an area ahead of the party, set up good positions from which to start a fight, and pickpocket from unsuspecting characters without drawing suspicion.

While stealthed, a characters movement speed is reduced to walking speed, and their recovery time is reduced by -85%, making most actions recover nearly instantly.

As the name would suggest, scouting mode is also a factor in finding hidden objects and traps. If a character is not in scouting mode, they receive a -4 penalty to their Mechanics score when detecting objects. This can make it impossible to detect some objects that would otherwise be detected just fine. Note that this only applies for Pillars of Eternity - scouting mode has no effect on object detection in Deadfire.

This article is primarily an overview of the stealth, detection, and suspicion mechanics in both Pillars of Eternity and Pillars of Eternity II: Deadfire.

Overview[ | ]

PE2 Stealth Mode Indicator

The suspicion indicator in stealth. The fill amount is a suspicion value of 0-100, wrapping around (and turning red) for values above 100. The eye icon within the circle indicates that the character is within sight of an NPC.
Left - No suspicion
Middle - Increasing suspicion (~33)
Right - The character is being investigated (~166)

When entering scouting mode, the circle under the character's feet becomes dotted and their movement is reduced to walking speed.

The scouting state ends when:

  • The player cancels the scouting mode for that character.
  • The character performs an action (excluding modal abilities) - only in Pillars of Eternity.
  • The circle become fully red (because the character stayed too close to a NPC for too long, see below).

While sneaking, this circle is used to show the maximum "suspicion" level of NPCs around the character, and fills up as the character draws more suspicion.

The circle is initially empty - as long as scouting mode was entered more than 16 meters from an NPC, or out of their direct line-of-sight. It starts to fill up yellow when getting too close to any NPC, and continues to fill up at a rate inversely proportional (more or less) to the distance between the two protagonists. In other words, if the ally stands at the very edge of the NPC's detection radii, the ally's circle will slowly fill up yellow. If the ally or NPC get closer to each other, the fill rate increases. Nothing more happens at this point (NPC don't react yet). This is just a warning to the player.

When the circle is filled with yellow color, hostile NPCs goes into investigation state and approaches the ally while the circle starts to fill red with the same rate rules. At this point, the ally is not visible yet (mechanically speaking, the scouting mode is not disclosed), but usually will be visible soon as the enemy is approaching (unless the ally flees in time, which can be difficult since its speed is greatly reduced).

When the circle is filled with red color, ally is detected. If the detecting NPC is hostile, scouting mode is cancelled and combat starts. Note that if the NPC is friendly, he/she will not investigate and scouting mode will not be cancelled, though stealing items will be noticed by the NPC and he/she may even become hostile (you can steal items unnoticed as long as the circle is empty or yellow).

The Stealth skill of the party member determines the fill rate of the circle (not the distance at which the circle starts to fill up).

In Pillars of Eternity[ | ]

Perception distance[ | ]

Also called "suspicion distance/radius" and "detection distance/radius". Determines the range a creature/NPC can detect a stealthed character (party member) or someone stealing from containers. This value is predetermined based on the character's perceptiveness (unrelated to Perception). While within an NPC's perception radius, their suspicion toward you increases at a base rate of 20 units per second.

The following table lists the perception radius of an NPC given their perceptiveness. The actual detection radius is double of either: half this radius or the character's model diameter - whichever is larger. The default perception level is Normal (5m radius).

Perception level Radius
Oblivious 1m
Poor 3m
Normal 5m
Keen 6m
Supernatural 9m

Noise[ | ]

Pillars of Eternity employs a basic noise mechanic. When a character casts an ability, the ability makes noise at a particular noise level. For a set duration (of 1 second), the character retains this noise level, and all NPC's within two times the noise level's radius of the character will immediately investigate its source (setting the suspicion level towards the character to 100, if not already).

Noise level Radius
Quiet 0m
Loud 4m
Extremely Loud 7m

Notes[ | ]

The Stealth system in Pillars of Eternity is deterministic, not random.[1] Light-level, facing, or other mechanics aren't used as part of stealth because it becomes extremely complicated and difficult with six characters[2]

Originally the stealth system in Pillars of Eternity was designed so that the player character had a "stealth distance", which would determine how close a party member could get to enemies without being detected (instead of this being a factor per-NPC) - without any concept of detection rate or suspicion. In this system, having a smaller stealth distance was better. This value was calculated based on the character's radius, their stealth level, as well as the average stealth level of the party, with a multiplier applied based on whether the party member was making any noise. This code carried over to Pillars of Eternity II: Deadfire where it is similarly unused.

In Pillars of Eternity II: Deadfire[ | ]

The stealth system in Pillars of Eternity II: Deadfire is based on the same basic principles, but adds a few more mechanics which change much of how detection works while in stealth.

Vision and hearing[ | ]

PE2 Stealth Mode Radius

The hearing radius and cone-of-vision in Deadfire
The radius is only shown while the player or companion is within it, while the cone of vision is always shown (orange) until a party member enters, turning it red.

Vision is the direction that an NPC is facing, represented by a cone of vision. The default vision is 8 meters ahead of the NPC in a 90 degree cone. While in an NPC's vision, their suspicion toward you increases at a base rate of 80 units per second.

Hearing is perceptiveness to noises made in an area around the NPC, represented by a hearing radius. For most characters this radius is 6.0m in length, and cannot go below 1m, and cannot be less than their physical mover radius (the size their model takes up in the scene).

While in a bystander's hearing radius, their suspicion toward you increases at a base rate of 40 units per second. While moving, a character's hearing radius is reduced by 25%, as they themselves are muffling their ability to hear other characters. "Hearing" is the equivalent of the detection radius in Pillars of Eternity.

Note that while sneaking, you can hover over an NPC to view their hearing radius and cone of vision.

The following is a list of different detection settings used for creatures and NPCs:

Group or creature Hearing radius Cone of vision
Default 6 8m, 90°
Omnidirectional - All oozes, All blights, Assassin vine, Soul Collector, Will-o'-wisp, Ice wisp 6 3m, 360°
Sleeping - Sleeping kith, all totems and wards, Ngeme, Crazed Priest, Crazed Pistoleer, Shattered Realms 4 0m, 0°
Dank Spore 9 0m, 0°
Eoten 3 6m, 240°
Giant cave grub 10 8m, 160°
Kraken 12 8m, 360°
Kraken (tentacle) 10 5m, 360°
Scyorielaphas 16 6m, 160°
Guardian of Ukaizo 8 14m, 179°
Chief Librarian [FS] 5 0m, 0°
Oracle of Wael [FS] 8 16m, 360°

Noise[ | ]

Noise is a minor mechanic that is tied to both enemy AI and scouting mode. Every time something makes a noise (both in and out of combat), its position is broadcast to nearby NPC's - who take action on it by either roaming to investigate its source, or by entering combat if the attack was made against them or a faction member.

The noise mechanic doesn't contribute to rate of detection, but does factor into suspicion and scouting in general. If the stealthed character is making noise and the enemy is within 2x of the radius of that noise, they will immediately enter an investigation state and will start walking towards the character in stealth.

Otherwise, noise is important to keep in mind to avoid attracting enemies to your position. NPCs are able to hear noise (and thus react to it) when they're within earshot. If the distance between the position of the noise and the position of the character is less than the noise radius + hearing radius, the character can hear the noise.

Noisemakers such as Sparkcrackers can be used as a distraction to purposely attract enemies to a position, creating enough space for your party to sneak by or gain a positional advantage.

Noise sources[ | ]

All attacks make noise. This includes attacks made by wielded weapons, spells, abilities (excluding passives and modals), and damage-dealing consumables like bombs.

When a character casts an ability or performs an attack, they make noise at a particular noise level. For a set duration (of 1 second), the character retains this noise level, and all NPC's within two times the noise level's radius of the character will immediately investigate its source (setting the suspicion level towards the character to 100, if not already).

Many ranged, beam, and AoE spells make noise twice. Once "on use" at the caster's position, and another "on impact" at the destination of the projectile or target. Both often have different noise levels.

Noise level Radius
Silent 0m
Quiet 2m
Loud 4m
Extremely Loud 7m

Investigation[ | ]

Noise made by party members triggers reactivity in characters by putting them in an investigation state. In most cases this only affects hostile enemies and guards. In fact, the only effect of a character being marked as a guard is that they can react to noise and investigate without being hostile.

When an NPC is polled for reactivity:

  • If the NPC is in combat, no reaction is made.
  • If the NPC is already investigating a noise, and the noise is within 3.16m (square root of 10) of the position they're investigating, no reaction is made.
  • Otherwise, the NPC starts investigating the noise.

When an NPC starts investigation, an indicator icon appears above their head, and any bark dialogue that they may have for investigating is triggered. They will then turn towards the noise and wait 1.0 second. After this, mobile characters will then begin walking to the source of the noise. Immobile characters will instead wait 6.0 seconds. Once the position is reached, the character will wait an additional 3.0 seconds before starting to move back to their original position.

Action while sneaking[ | ]

Characters may now take actions while sneaking, including casting spells, using consumables, etc. Previously in Pillars of Eternity this would force a character out of Scouting Mode. The noise mechanic adds a risk to using abilities while in stealth, as most abilities make noise which may alert bystanders.

Indicators[ | ]

The following indicators are shown above certain NPCs to indicate their current status:

ICO stealth curious
This indicator is shown above NPCs when they start to investigate.
ICO stealth alert
This indicator is shown above hostile NPCs when they spot a party member.
ICO stealth guard
This indicator is shown above guards.

Suspicion rate and calculation[ | ]

The suspicion/detection rate calculations are virtually identical across both games, albeit with different base suspicion rates (20 in Pillars of Eternity, vs 80 in Pillars of Eternity II: Deadfire). Deadfire also adds another layer of difficulty with its facing mechanic.

The rate of detection is determined by two main factors:

  • The character's Stealth skill versus the level of the NPC.
  • The distance between the character and the NPC.

While in the process of being detected, an NPC's suspicion towards a character increases by a base suspicion rate with a number of modifiers applied that take these factors into account. A separate suspicion level is calculated for each party member being detected. At the same time, each party member keeps track of all NPC's that have suspicion towards them. The NPC will begin to investigate a character once their suspicion reaches 100, and will detect the character when it reaches 200 or more. The fill amount of the circular suspicion indicator uses the highest suspicion level of all detecting NPCs, and is out of 100 (values > 100 wrap around, and change the indicator to red).

In Pillars of Eternity II: Deadfire, NPC's use both their hearing and vision to detect characters. These sensing methods use the exact same calculation, but increase suspicion at a different base rate. They both take the character's Stealth skill and NPC level into account, however only hearing is influenced by the distance between the character and the NPC. If the character is within the hearing radius, and the cone of vision of the NPC, the result from both sources is added together.
In Pillars of Eternity, the only way an NPC is able to detect characters is via their detection radius

Noise made by the character causes the NPC to immediately enter an investigation state (suspicion >= 100) if they are within twice the noise radius.

If you can't physically see an NPC, are more than 16 meters from an NPC, or if you don't have direct line of sight with them (i.e. when there's a wall or obstacle in the way), they will not be able to detect you and the suspicion will not be changed regardless.

Once the character leaves the detection radius (hearing radius and cone of vision), the NPC's suspicion level will begin to drop after a short delay (0.75 seconds). It will then be reduced at a rate of 15 units per second, until it reaches zero.

The following is a detailed overview of factors that contribute to the suspicion rate:

Distance from NPC[ | ]

The distance between the character and the NPC is used to calculate a multiplier that is applied to the base suspicion rate. At the furthest edge of the hearing radius, the multiplier is 0.5 (halved), and at the closest it is 2.0 (doubled). Note that this is measured from the edge of the character and NPC's model radius, and not the center.

Distance does not apply to the cone of vision calculation, and it instead uses a constant distance multiplier of 0.5, which will increase the suspicion at a rate of 40 per second (not taking into account Stealth vs NPC level).

Base suspicion multiplier given a hearing radius of 6m
Distance from NPC (meters) 1.0 2.0 3.0 4.0 5.0 6.0
Distance percentage (minus radius) 0.0 (0%) 0.2 (20%) 0.4 (40%) 0.6 (60%) 0.8 (80%) 1.0 (100%)
Suspicion multiplier x2.0 x1.7 x1.4 x1.1 x0.8 x0.5
Suspicion rate (in hearing radius) 80 68 56 44 32 20
Suspicion rate (in vision cone) Forced to 40 (80 * 0.5)
Click "Expand" to show more details

Firstly, a radius is calculated which represents the sum of the model radius of both the enemy and the party member. This is done so that measurements are from the edge of both party's models, rather than from the center of their position, otherwise you could be standing on top of a character and still be some distance from them. Most characters have a radius of 0.5 meters.

radius = playerRadius + npcRadius

Next, a distancePercent value is calculated (in a range of 0.0 - 1.0). This represents how far the character is within the hearing radius, using the distance between themselves and the NPC. The distancePercent is 1.0 when the character is at the very outer edge of the hearing radius, and 0.0 when the character is directly next to the NPC. It is set to zero if the character is less than 0.9 meters from the NPC.

distancePercent = (distance - radius) / (characterHearingRadius - radius)

Note that in actuality, the distance is originally squared as a result of using a performant vector distance calculation, so the square root would have to be calculated for this - but is not shown here for simplicity.

For the cone-of-vision calculation, distancePercent is fixed at 1.0, therefore distance is not taken into account.


The distance multiplier is then calculated, which increases the rate of change the closer the character is towards the NPC. This gives us a value of MaxDistanceMultiplier (0.5) if the character is on the furthest edge of the hearing radius, and MinDistanceMultiplier (2.0) if the character is the closest to the NPC. The inputted distancePercent is clamped to never be above 1.0 or below 0.0.

multiplier = (MaxDistanceMultiplier - MinDistanceMultiplier) * distancePercent + MinDistanceMultiplier

Finally the rate is as simple as rate = baseSuspicionRate * distanceMultiplier. As previously mentioned, the baseSuspicionRate is 40 for hearing, and 80 for vision. Internally the rate is also multiplied by the current frame time to determine the exact change on this frame, but can be ignored for the purposes of this example and is therefore shown as a per-second value.

Skill vs NPC level[ | ]

The difference between the character's Stealth skill and the NPC's level is taken into account as a modifier to the suspicion rate (as calculated above). If your Stealth skill level is at least 75% of the NPC's level, you get a bonus reduction to the suspicion rate, otherwise you get a penalty of an increased rate. The bonus/penalty is always 25% of the character's level for each point of difference between the two, and is limited to a maximum bonus of -95%, and an inherent maximum penalty of +75%.

The calculated skill modifier is applied to the suspicionRate to get the final rate, using rate = suspicionRate + (suspicionRate * skillModifier).

Modifier (as percentage) given difference between Stealth level and NPC level
Stealth level
0 1 2 3 4 5 6 7 8 9 10
NPC level 1 0.75 -0.25 -0.95 -0.95 -0.95 -0.95 -0.95 -0.95 -0.95 -0.95 -0.95
2 0.75 0.25 -0.25 -0.75 -0.95 -0.95 -0.95 -0.95 -0.95 -0.95 -0.95
3 0.75 0.42 0.08 -0.25 -0.58 -0.92 -0.95 -0.95 -0.95 -0.95 -0.95
4 0.75 0.50 0.25 0.00 -0.25 -0.50 -0.75 -0.95 -0.95 -0.95 -0.95
5 0.75 0.55 0.35 0.15 -0.05 -0.25 -0.45 -0.65 -0.85 -0.95 -0.95
6 0.75 0.58 0.42 0.25 0.08 -0.08 -0.25 -0.42 -0.58 -0.75 -0.92
7 0.75 0.61 0.46 0.32 0.18 0.04 -0.11 -0.25 -0.39 -0.54 -0.68
8 0.75 0.63 0.50 0.38 0.25 0.13 0.00 -0.13 -0.25 -0.38 -0.50
9 0.75 0.64 0.53 0.42 0.31 0.19 0.08 -0.03 -0.14 -0.25 -0.36
10 0.75 0.65 0.55 0.45 0.35 0.25 0.15 0.05 -0.05 -0.15 -0.25
Negative values are a decrease to the suspicion rate (good), while positive values are an increase (bad).
Click "Expand" to show more details

The skill modifier is calculated using the formula:

skillModifier = (stealthSkill - (creatureLevel * 0.75f)) / Math.Max(1.0, creatureLevel)

The creatureLevel value on the right hand side of the division operator is limited to a minimum of 1.0, as to avoid dividing by zero. Note that the above table's results are not a direct result of this calculation! They have had their sign inverted to fit the general-use final suspicion rate calculation: suspicionRate = suspicionRate + (suspicionRate * skillModifier).

In-game the skillModifier's result is subtracted from the rate if it's a bonus (i.e. is > 0.0 using the above skill modifier calculation), or it's absolute (non-negative) value is added if it's a penalty (<= 0.0 using the above skill modifier calculation).

  • The skillModifier will be > 0.0 if your Stealth skill is at least 75% of the NPC's level. If this is the case, the skillModifier is set to be the smaller value of either itself or 1.0 - MaxSuspicionStealthDecelerationMultiplier (0.95). In other words it is capped at a maximum of 0.95. Then the final rate is calculated using:
finalSuspicionRate = suspicionRate - (suspicionRate * skillModifier)
  • Otherwise, if your Stealth skill is less than 75% of the NPC's level, the skillModifier is set to the smaller of the absolute (non-negative) value of itself, or MaxSuspicionStealthAccelerationMultiplier (4.0). In other words, it is capped at a maximum of 4.0. Then the final rate is calculated using:
finalSuspicionRate = suspicionRate + (suspicionRate * skillModifier)
Example

As an example, here are the calculations if:

  • Both characters have a character radius of 0.5 (default).
  • The player character is 3 meters from an NPC, and their Stealth skill is 8.
  • The NPC's hearing radius is 6 meters (the default), and they are level 10.
  • The base HearingSuspicionRate is 40 and the VisionSuspicionRate is 80.
Click "Expand" to show more details
This follows the format:
Worded example
Actual example
Result
Description

// Model radius
radius = playerRadius + npcRadius
radius = 0.5 + 0.5
radius = 1.0
The sum of the character's model radii - a distance that should not be taken into account

// Distance percent/alpha
distancePercent = (distance - radius) / (characterHearingDistance - radius)
distancePercent = (3.0 - 1.0) / (6.0 - 1.0)
distancePercent = 0.4
The character is 40% from the edge of the NPC to the edge of the NPC's hearing radius)

// At this point, the suspicion is calculated with the above values.
// If the distancePercent is less than or equal to ~0, the suspicion is set to 200

// Distance multiplier
distanceMultiplier = (MaxDistanceMultiplier - MinDistanceMultiplier) * distancePercent + MinDistanceMultiplier
distanceMultiplier = (0.5 - 2.0) * 0.4 + 2.0
distanceMultiplier = 1.4
The character gets a +40% to the base suspicion rate.

// Suspicion rate
suspicionRate = baseSuspicionRate * distanceMultiplier
suspicionRate = 40 * 1.4 
suspicionRate = 56
The NPC's suspicion is increased by 56 points per second.

// Skill modifier
skillModifier = (stealthSkill - (creatureLevel * 0.75)) / creatureLevel
skillModifier = (8 - (10 * 0.75)) / 10
skillModifier = 0.05
This a modifier to the suspicion rate, and is subtracted or added as a percentage from it.

// The calculation of the following final result depends on whether the skillModifier is > 0 or <= 0. Below are the two calculations used

// Final calculation - If skillModifier > 0
// Firstly, limit the skillModifier to a maximum of 0.95
skillModifier = Math.Min(skillModifier, 1.0 - MaxSuspicionStealthDecelerationMultiplier)
result = suspicionRate - (suspicionRate * skillModifier)

// Final calculation - If skillModifier <= 0
// Firstly, set the skillModifier to an absolute value and limit it to a maximum of 4.0 (although this limit is never hit)
skillModifier = Math.Abs(skillModifier)
skillModifier = Mathf.Min(skillModifier, MaxSuspicionStealthDecelerationMultiplier)
result = suspicionRate + (suspicionRate * skillModifier)

// In this case, the final result is calculated using the first
result = suspicionRate - (suspicionRate * skillModifier)
result = 56 - (56 * 0.05)
result = 56 - 2.8
result = 53.2
The suspicion rate of this NPC (for their hearing radius) is 53.2 points per second

References

Advertisement