Revenge System (enemy preparedness)

The revenge system is used in Metal Gear Solid V: The Phantom Pain as a game mechanic that adjusts difficulty based on various aspects of the player's methods of infiltrating outposts. When the level of a revenge category is increased it increases difficulty by adding better gear to a certain percentage of spawned AI. Some common examples of this include soldiers wearing helmets if the player has been neutralizing them through headshots and wearing night-vision goggles if the player has been infiltrating at night. Levels of revenge categories can be decreased or slowed by completing a mission without doing anything that would increase the levels; a common method of this being completing a mission while wearing the chicken hat or by doing a No Traces run of a mission during the day. As exceptions to this rule, the enemy's response to player actions taken during stealth and combat alerts will always be high in one category and low in the other, or if the player stops eliminating guards then levels of both categories will reach an equilibrium at level 3.

Revenge categories
One level represents one hundred revenge points (RP) earned for that category. The level of each revenge category is not relayed to the player in detail but is instead shown in a way that it can be approximated. There are icons that represent each category on the iDroid map and these are colored in depending on how prepared an enemy is in each category. Transparency represents no preparedness outside of scripted instances within missions and side ops, white represents little preparedness, dark red represents high preparedness and colors in between white and red are somewhere in the middle.

Levels of enemy preparedness are capped at certain amounts until scripted points in the game are reached.


 * Completed mission 9 - "Where do the Bees Sleep"
 * Max level 1
 * Completed mission 12 - "Hellbound"
 * Max level 2
 * Completed mission 18 - "Blood Runs Deep"
 * Max level 3
 * Completed mission 23 - "The White Mamba"
 * Max level 4
 * Completed mission 30 - "Skull Face"
 * Max level 5
 * At some point after
 * Max level 6

Fulton response
Category level interval: 0,1,2,3 HARD_MISSION={IGNORE_BLOCKED=true}, _ENABLE_CAMERA_LV=1, _ENABLE_DECOY_LV=2, _ENABLE_MINE_LV=3, STEALTH_0={ STEALTH_LOW=true, HOLDUP_LOW=true}, STEALTH_1={ CAMERA="100%", HOLDUP_LOW=true}, STEALTH_2={ DECOY="100%", CAMERA="100%"}, STEALTH_3={ DECOY="100%", MINE="100%", CAMERA="100%", STEALTH_HIGH=true}, STEALTH_4={ DECOY="100%", MINE="100%", CAMERA="100%", STEALTH_HIGH=true, HOLDUP_HIGH=true, ACTIVE_DECOY=true, GUN_CAMERA=true}, STEALTH_5={ DECOY="100%", MINE="100%", CAMERA="100%", STEALTH_SPECIAL=true, HOLDUP_HIGH=true, ACTIVE_DECOY=true, GUN_CAMERA=true}, NIGHT_S_1={ NVG="25%"}, NIGHT_S_2={ NVG="50%"}, NIGHT_S_3={ NVG="75%"}, _ENABLE_SOFT_ARMOR_LV=1, _ENABLE_SHOTGUN_LV=1, _ENABLE_MG_LV=1, _ENABLE_SHIELD_LV=2, _ENABLE_ARMOR_LV=3, COMBAT_0={ COMBAT_LOW=true}, COMBAT_1={ {SOFT_ARMOR="25%",SHOTGUN=2}, {SOFT_ARMOR="25%",MG=2}}, COMBAT_2={ {SOFT_ARMOR="50%",SHOTGUN=2,SHIELD=1}, {SOFT_ARMOR="50%",MG=2,SHIELD=1}}, COMBAT_3={ {SOFT_ARMOR="75%",SHOTGUN=2,SHIELD=1,ARMOR=1,STRONG_WEAPON=true,COMBAT_HIGH=true,SUPER_REINFORCE=true}, {SOFT_ARMOR="75%",MG=2,SHIELD=1,ARMOR=1,STRONG_WEAPON=true,COMBAT_HIGH=true,SUPER_REINFORCE=true}}, COMBAT_4={ {SOFT_ARMOR="100%",SHOTGUN=4,SHIELD=2,ARMOR=2,STRONG_WEAPON=true,COMBAT_HIGH=true,SUPER_REINFORCE=true,REINFORCE_COUNT=2}, {SOFT_ARMOR="100%",MG=4,SHIELD=2,ARMOR=2,STRONG_WEAPON=true,COMBAT_HIGH=true,SUPER_REINFORCE=true,REINFORCE_COUNT=2}}, COMBAT_5={ {SOFT_ARMOR="100%",SHOTGUN=4,SHIELD=4,ARMOR=4,STRONG_WEAPON=true,COMBAT_SPECIAL=true,SUPER_REINFORCE=true,BLACK_SUPER_REINFORCE=true,REINFORCE_COUNT=3}, {SOFT_ARMOR="100%",MG=4,SHIELD=4,ARMOR=4,STRONG_WEAPON=true,COMBAT_SPECIAL=true,SUPER_REINFORCE=true,BLACK_SUPER_REINFORCE=true,REINFORCE_COUNT=3}}, NIGHT_C_1={ GUN_LIGHT="75%"}, LONG_RANGE_1={ SNIPER=2}, LONG_RANGE_2={ SNIPER=2, STRONG_SNIPER=true}, VEHICLE_1={ MISSILE=2}, VEHICLE_2={ MISSILE=2, STRONG_MISSILE=true}, VEHICLE_3={ MISSILE=4, STRONG_MISSILE=true}, HEAD_SHOT_1={ HELMET="10%"}, HEAD_SHOT_2={ HELMET="20%"}, HEAD_SHOT_3={ HELMET="30%"}, HEAD_SHOT_4={ HELMET="40%"}, HEAD_SHOT_5={ HELMET="50%"}, HEAD_SHOT_6={ HELMET="60%"}, HEAD_SHOT_7={ HELMET="70%"}, HEAD_SHOT_8={ HELMET="80%"}, HEAD_SHOT_9={ HELMET="90%"}, HEAD_SHOT_10={ HELMET="100%"}, TRANQ_1={ STRONG_NOTICE_TRANQ=true}, FULTON_0={ FULTON_LOW=true}, FULTON_1={ },	FULTON_2={ FULTON_HIGH=true}, FULTON_3={ FULTON_SPECIAL=true}, SMOKE_1={ GAS_MASK="25%"}, SMOKE_2={ GAS_MASK="50%"}, SMOKE_3={ GAS_MASK="75%"},
 * 0
 * Low fulton response (may shoot down balloons)
 * 1
 * Moderate fulton response
 * 2
 * High fulton response
 * 3
 * Special fulton response  File: TppRevenge.lua (data1.dat) e.revengeDefine={

Trigger:
 * Enemy spotted a comrade being fultoned (+15 RP)

Headshot response
Category level interval: 0,1,2,3,5,7


 * 0
 * Will not be wearing helmets
 * 1
 * 10% will wear helmets
 * 2
 * 20% will wear helmets
 * 3
 * 30% will wear helmets
 * 5
 * 50% will wear helmets
 * 7
 * 70% will wear helmets

Trigger:
 * Player knocks a soldier unconscious via headshot (+5 RP)
 * Might include thrown items

Covert actions response
Category level interval: 0,1,2,3,4,5


 * 0
 * No security devices
 * Low stealth preparedness
 * Time to recover from neutralization
 * Level of suspicion from actions
 * Speed when moving to investigate
 * Low holdup resistance
 * 1
 * Surveillance cameras installed at major bases (certain missions only)
 * Moderate stealth preparedness
 * 2
 * Decoys deployed
 * Moderate holdup resistance
 * 3
 * Mines deployed
 * High stealth preparedness
 * 4
 * Decoys actively move
 * Gun cameras replace surveillance cameras (certain missions only)
 * High holdup resistance
 * 5
 * Very high stealth preparedness

Triggers:
 * Player eliminated a guard during a stealth phase (+5 RP)
 * Stealth phase meaning any non-combat alert phase
 * Player captured a guard post or outpost during a stealth phase (+15 RP)

Combat response
Category level interval: 0,1,2,3,4,5


 * 0
 * Low combat preparedness
 * Behavior during combat
 * Aspects of HP and grenades
 * Default equipment
 * 1
 * Moderate combat preparedness
 * 25% wear vest body armor
 * Short-range guard type
 * Shotgun ≤ grade 2
 * Mid-range guard type
 * Machine gun ≤ grade 2
 * 2
 * 50% wear vest body armor
 * Shield ≤ grade 1
 * 3
 * High combat preparedness
 * 75% wear vest body armor
 * Close-range guard type change
 * Strong shotgun ≤ grade 2
 * Mid-range guard type change
 * Strong machine gun ≤ grade 2
 * Armor ≤ grade 1
 * Vehicle reinforcements (missions 03 & 35 only)
 * Can be called in once
 * Standard armored vehicles and helicopters
 * 4
 * 100% wear vest body armor
 * Short-range guard type change
 * Strong shotgun ≤ grade 4
 * Mid-range guard type change
 * Strong machine gun ≤ grade 4
 * Shield ≤ grade 2
 * Armor ≤ grade 2
 * Vehicle reinforcements can be called in twice (missions 03 & 35 only)
 * 5
 * Very high combat preparedness
 * Armor ≤ grade 4
 * Shield ≤ grade 4
 * Vehicle reinforcements can be called in three times (missions 03 & 35 only)
 * Chance of black (high stat) vehicles

Triggers:
 * Player eliminated an enemy during a combat alert (+5 RP)
 * Player captured a guard post or outpost during a combat alert (+15 RP)

Nighttime response
This is just the UI display for two subcategories that are what determine AI nighttime equipment.

Category level interval: 0,1
 * Flashlights


 * 0
 * Will not have flashlights
 * 1
 * Will use flashlights when investigating (raises guard vision)

Trigger:
 * Player eliminated a guard at night (+10 RP)

Category level interval 0,1,2,3
 * Night-vision goggles


 * 0
 * None
 * 1
 * 25% will wear NVGs
 * 2
 * 50% will wear NVGs
 * 3
 * 75% will wear NVGs

Trigger:
 * Player was discovered at night (+15 RP)

Sniper response
Category level interval: 0,1,2


 * 0
 * Guard type will not appear
 * 1
 * Sniper guard type
 * Sniper rifle ≤ grade 2
 * 2
 * Sniper guard type change
 * Strong sniper rifle ≤ grade 2

Trigger:
 * Player was sniped (+30)
 * May be tied to sniper calling a combat alert

Hidden revenge categories
Categories that are not displayed or mentioned to the player.

Vehicle response
Category level interval: 0,1,2,3


 * 0
 * Will not carry missiles
 * 1
 * Missiles ≤ grade 2
 * 2
 * Strong missiles ≤ grade 2
 * 3
 * Strong missiles ≤ grade 4

Triggers:
 * Enemy was killed by the player's helicopter (+10 RP)
 * Likely includes player manning the minigun
 * Player killed a soldier with a vehicle (+10 RP)
 * By impacting or shooting with ground vehicles, walker gears or D-Walker

Tranquilizer response
Category level interval: 0,1


 * 0
 * Will assume a comrade was sleeping
 * 1
 * Will likely realize a sleeping comrade was drugged with a tranq dart and call alert

Trigger:
 * Enemy woke a comrade whom the player had tranquilized (+5 RP)

Smoke/gas response
Category level interval: 0,1,2,3


 * 0
 * Will not wear gas masks
 * 1
 * 25% will wear gas masks
 * 2
 * 50% will wear gas masks
 * 3
 * 75% will wear gas masks

Triggers:
 * Enemy witnessed smoke occurring (+15 RP)
 * Player affected an enemy with smoke/gas (+15 RP)
 * Includes smoke, gas and flares of player origin.

Missions
The following sorties ignore what levels of enemy preparedness the player has earned:


 * Prologue - "Awakening"
 * Mission 02 - "Diamond Dogs"
 * Mission 11 - "Cloaked in Silence"
 * Mission 23 - "The White Mamba"
 * Mission 29 - "Metallic Archaea"
 * Mission 31 - "Sahalanthropus"
 * Mission 40 - "[Extreme] Cloaked in Silence"
 * Mission 42 - "[Extreme] Metallic Archaea"
 * Mission 43 - "Shining Lights, Even in Death"
 * Mission 46 - "Truth - The Man Who Sold the World"
 * Free Roam - Mother Base
 * Helicopter - Afghanistan
 * Helicopter - Middle Africa
 * Helicopter - Mother Base
 * FOB

Dispatch missions do not affect the difficult versions of missions. Those being the ones prefixed by:


 * [Subsistence]
 * [Extreme]
 * [Total Stealth]

Dispatch missions against the effects of Covert Action and Combat Preparedness do not apply to these sorties:


 * Free Roam - Afghanistan
 * Free Roam - Middle Africa
 * Free Roam - Mother Base
 * Free Roam - Mother Base Animal Platform

The vehicle reinforcement function of Combat Preparedness only applies to two sorties:


 * Mission 03 - "A Hero's Way"
 * Mission 35 - "Cursed Legacy"

Decay
In general the enemy's level of preparedness drops by 50 points (half a level) each time a mission is completed and 10 points when at a category's lowest level. The max that a level appears to be able to move is 50 points, regardless of the amount of trigger actions that a player performs. The exception to that is that the Chicken Hat drops points by 100 on mission completion. Covert Action and Combat Response are handled differently from the rest of the revenge system. They will drop by 50 points at level 5, 25 point at level 4 and 20 points at levels 0-3 after completing a mission. However, they also gain or lose points depending on how a mission or free roam is finished. If a mission is completed without eliminating enemies then both categories will have their point values slowly changed over the course of many missions to a point where they both stay at level 2 or below.

On mission completion:


 * Mostly stealth points in mission (vice versa for combat)
 * Covert Actions Response: lvl 0-3 (+5 RP), lvl 4 (+25 RP), lvl 5 (0 RP)
 * Combat Response: lvl 0-1 (-20 RP), lvl 2 (-25 RP), lvl 3 (-30 RP), lvl 4 (-75 RP), lvl 5 (-100 RP)


 * Tie of points in mission
 * Both: lvl 0-2 (+0 RP), lvl 3 (-20 RP), lvl 4 (-50 RP), lvl 5 (-60 RP)

There is also some additional math involved in the game file TppRevenge.lua that indicates there is a little more to the decay system than this. File:TppRevenge.lua (data1.dat) function e._ReduceRevengePointStealthCombatfor n,E in pairs(e.REDUCE_TENDENCY_POINT_TABLE)do local t=e.GetRevengePoint(n)local r=e.GetRevengeLv(n)local E=E[r+1]e.SetRevengePoint(n,(t+E))end end function e._ReduceRevengePointOtherlocal r={[e.REVENGE_TYPE.STEALTH]=true,[e.REVENGE_TYPE.COMBAT]=true,[e.REVENGE_TYPE.M_STEALTH]=true,[e.REVENGE_TYPE.M_COMBAT]=true}for E=0,e.REVENGE_TYPE.MAX-1 do local a=e.GetRevengePoint(E)local t=e.GetRevengeLv(E)local n=0 if r[E]then n=0 elseif bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_CHICKEN_CAP)==PlayerPlayFlag.USE_CHICKEN_CAP then n=100 elseif e.REDUCE_POINT_TABLE[E]then n=e.REDUCE_POINT_TABLE[E][t+1]if n==nil then n=50 else n=-n end else n=e.REDUCE_REVENGE_POINT*(t+1)if n>50 then n=50 end end e.SetRevengePoint(E,a-n)end end function e.ReduceRevengePointOnMissionClear(n)if n==nil then n=TppMission.GetMissionIDend if e.IsNoRevengeMission(n)then return end if bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_CHICKEN_CAP)==PlayerPlayFlag.USE_CHICKEN_CAP then return end e._ReduceRevengePointOtherend function e._ReduceRevengePointByChickenCap(n)if n==nil then n=TppMission.GetMissionIDend if e.IsNoRevengeMission(n)then return end if bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_CHICKEN_CAP)==PlayerPlayFlag.USE_CHICKEN_CAP then e._ReduceRevengePointStealthCombate._ReduceRevengePointOtherend end function e.ReduceRevengePointOnAbort(e)end function e._GetMissionTendency(n)local n=e.GetRevengePoint(e.REVENGE_TYPE.M_STEALTH)local e=e.GetRevengePoint(e.REVENGE_TYPE.M_COMBAT)if n==0 and e==0 then return"STEALTH"end if e==0 then return"STEALTH"end if n==0 then return"COMBAT"end local t=n-e local r=.3 local E=10 local e=(n+e)*r if e=e then n="STEALTH"elseif t<=-e then n="COMBAT"end return n end function e.ApplyMissionTendency(n)if n==nil then n=TppMission.GetMissionIDend if(not e.IsNoRevengeMission(n)and not e.IsNoStealthCombatRevengeMission(n))and bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_CHICKEN_CAP)~=PlayerPlayFlag.USE_CHICKEN_CAP then local n=e._GetMissionTendency(n)local n=e.MISSION_TENDENCY_POINT_TABLE[n]if n then local E=e.GetRevengeLv(e.REVENGE_TYPE.STEALTH)+1 local t=e.GetRevengeLv(e.REVENGE_TYPE.COMBAT)+1 if E>#n.STEALTH then E=#n.STEALTH end if t>#n.COMBAT then t=#n.COMBAT end e.AddRevengePoint(e.REVENGE_TYPE.STEALTH,n.STEALTH[E])e.AddRevengePoint(e.REVENGE_TYPE.COMBAT,n.COMBAT[t])end end e.SetRevengePoint(e.REVENGE_TYPE.M_STEALTH,0)e.SetRevengePoint(e.REVENGE_TYPE.M_COMBAT,0)end