From 1c7230a7996ec0e1c572fe71e4dce43d7fe0dc5c Mon Sep 17 00:00:00 2001
From: catloversg <152669316+catloversg@users.noreply.github.com>
Date: Thu, 12 Dec 2024 18:10:51 +0700
Subject: [PATCH] DOCUMENTATION: Improve Infiltration docs (#1842)
---
src/Documentation/doc/basic/infiltration.md | 49 ++++++++++++++++-----
src/Infiltration/formulas/victory.ts | 20 ++++++---
src/Infiltration/ui/Intro.tsx | 2 +-
3 files changed, 53 insertions(+), 18 deletions(-)
diff --git a/src/Documentation/doc/basic/infiltration.md b/src/Documentation/doc/basic/infiltration.md
index ac4006394..9cd829167 100644
--- a/src/Documentation/doc/basic/infiltration.md
+++ b/src/Documentation/doc/basic/infiltration.md
@@ -11,20 +11,47 @@ To try and infiltrate a [Company](companies.md), visit a [Company](companies.md)
There will be an option that says 'Infiltrate [Company](companies.md)'.
When infiltrating a [Company](companies.md), you will be presented with short active challenges.
-None of the challenges use the mouse.
-The difficulty at the top lowers with better combat stats and charisma.
-It is not recommended to attempt infiltrations above mid-normal.
-
-The `maximum level` is the number of challenges you will need to pass to receive the infiltration reward.
-
-Every time you fail an infiltration challenge, you will take damage based on the difficulty of the infiltration.
-If you are reduced to `0` hp or below, the infiltration will immediately end.
-
-- Most use spacebar as `action`
-- Some use WASD or arrows interchangeably.
+- None of the challenges uses the mouse.
+- Most challenges use spacebar as the `action`.
+- Some challenges use WASD or arrows interchangeably.
- A few others use the rest of the keyboard.
+Each location that can be infiltrated has 3 important values:
+
+- Difficulty: It affects how difficult the challenges are. This value depends on your "common" stats (combat stats and charisma). It's reduced when you improve your stats. It is not recommended to attempt infiltrations when the difficulty is above normal.
+- Max clearance level: It is the number of challenges you need to pass to receive the infiltration reward.
+- Starting security level: It affects the difficulty and rewards.
+
+Every time you successfully complete an infiltration challenge and go to the higher clearance level, the "effective" difficulty is increased. The difficulty value in the introduction screen is the initial value for the first clearance level. When you go to higher levels, this value will be increased, so the challenges will become harder.
+
+Every time you fail an infiltration challenge, you will take damage based on the starting security level of the location.
+If your HP is reduced to 0, you will be hospitalized, and the infiltration will immediately end.
+
+Infiltration rewards depend on:
+
+- Max clearance level. Higher max clearance level = Higher rewards.
+- Starting security level. Higher starting security level = Higher rewards.
+- Your stats' **multipliers** (**NOT** skill levels). **Lower** multipliers = Higher rewards.
+- "SoA - phyzical WKS harmonizer" augmentation.
+- An endgame stat [1]. You will know what it is when you reach the endgame.
+- An endgame multiplier [2]. You will know what it is when you reach the endgame.
+
+The most common misconception of infiltration rewards is that they depend on skill levels. This is wrong. The rewards do **NOT** depend on skill levels. They depend on stats' multipliers. When you install augmentations that improve stats' multipliers, the rewards are reduced.
+
+In some special cases, you may observe this behavior: When you install augmentations or soft reset, your skill levels drop to 1 and infiltration rewards are increased. Some players mistakenly think that this is why infiltrations should be done with low stats to optimize the rewards. This is totally wrong. Again, infiltration rewards do **NOT** depend on skill levels. In these special cases, the rewards are increased because stats' **multipliers** are reduced due to losing bonuses from other mechanics (IPvGO and some endgame mechanics).
+
+Raising raw values of stats (skill levels) is one of the proper ways to optimize the infiltration. Having higher stats does not increase the rewards, but it allows you to infiltrate harder locations (higher max clearance level, higher starting security level, easier to complete more infiltrations in the same time frame, etc.).
+
+Proper ways to optimize the infiltration (with the same [2] and the same stats' multipliers) are:
+
+- Raise stats. Do NOT purposely keep them low. Having higher stats does not increase the rewards, but it allows you to infiltrate harder locations. Training at gyms, committing crimes, and working for companies/factions are good and easy ways to raise stats without changing stats' multipliers.
+- Infiltrate harder locations after getting higher stats (higher max clearance level, higher starting security level, easier to complete more infiltrations in the same time frame, etc.).
+- Increase [1].
+- Buy SoA augmentations (especially "SoA - phyzical WKS harmonizer").
+
+## Challenge list
+
### Attack the distracted sentinel
Press space bar to attack when the sentinel drops his guard and is distracted. Do not alert him!
diff --git a/src/Infiltration/formulas/victory.ts b/src/Infiltration/formulas/victory.ts
index f5041c137..065b6eeeb 100644
--- a/src/Infiltration/formulas/victory.ts
+++ b/src/Infiltration/formulas/victory.ts
@@ -4,12 +4,16 @@ import { LocationsMetadata } from "../../Locations/data/LocationsMetadata";
import { AugmentationName } from "@enums";
import { Faction } from "../../Faction/Faction";
-export function calculateSellInformationCashReward(reward: number, maxLevel: number, difficulty: number): number {
+export function calculateSellInformationCashReward(
+ reward: number,
+ maxLevel: number,
+ startingSecurityLevel: number,
+): number {
const levelBonus = maxLevel * Math.pow(1.01, maxLevel);
return (
Math.pow(reward + 1, 2) *
- Math.pow(difficulty, 3) *
+ Math.pow(startingSecurityLevel, 3) *
3e3 *
levelBonus *
(Player.hasAugmentation(AugmentationName.WKSharmonizer, true) ? 1.5 : 1) *
@@ -17,12 +21,16 @@ export function calculateSellInformationCashReward(reward: number, maxLevel: num
);
}
-export function calculateTradeInformationRepReward(reward: number, maxLevel: number, difficulty: number): number {
+export function calculateTradeInformationRepReward(
+ reward: number,
+ maxLevel: number,
+ startingSecurityLevel: number,
+): number {
const levelBonus = maxLevel * Math.pow(1.01, maxLevel);
return (
Math.pow(reward + 1, 1.1) *
- Math.pow(difficulty, 1.2) *
+ Math.pow(startingSecurityLevel, 1.2) *
30 *
levelBonus *
(Player.hasAugmentation(AugmentationName.WKSharmonizer, true) ? 1.5 : 1) *
@@ -30,12 +38,12 @@ export function calculateTradeInformationRepReward(reward: number, maxLevel: num
);
}
-export function calculateInfiltratorsRepReward(faction: Faction, difficulty: number): number {
+export function calculateInfiltratorsRepReward(faction: Faction, startingSecurityLevel: number): number {
const maxStartingSecurityLevel = LocationsMetadata.reduce((acc, data): number => {
const startingSecurityLevel = data.infiltrationData?.startingSecurityLevel || 0;
return acc > startingSecurityLevel ? acc : startingSecurityLevel;
}, 0);
- const baseRepGain = (difficulty / maxStartingSecurityLevel) * 5000;
+ const baseRepGain = (startingSecurityLevel / maxStartingSecurityLevel) * 5000;
return (
baseRepGain * (Player.hasAugmentation(AugmentationName.WKSharmonizer, true) ? 2 : 1) * (1 + faction.favor / 100)
diff --git a/src/Infiltration/ui/Intro.tsx b/src/Infiltration/ui/Intro.tsx
index 8826687b7..a9c08c501 100644
--- a/src/Infiltration/ui/Intro.tsx
+++ b/src/Infiltration/ui/Intro.tsx
@@ -68,7 +68,7 @@ export function Intro(props: IProps): React.ReactElement {
- Maximum Level:
+ Maximum clearance level:
{props.MaxLevel}