In Overwatch, health is managed via a health pool system that allows for adding and removing different types of health from a hero. This article will go over a Workshop bug involving the system and how to exploit it to more finely control a hero's max health.
Content
Health Pool Bug
Workshop Control over Health Pools
In the workshop, we can add and remove health pools to heroes via the following actions:
These actions normally do not affect the hero's default health pool, and health pools are removed properly when used.
Replicating the Bug
To cause this bug, the player must satisfy the following conditions:
- The player has less health than their max health.
- The health that is intended to be removed must be the only health remaining (e.g. you cannot remove normal health if the hero has armor, since armor is on top of normal health).
With these conditions, we can remove the health of a hero in the following code snippet:
rule("Remove Normal Health")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Damage(Event Player, Null, 50);
Add Health Pool To Player(Event Player, Health, 50, True, True);
Remove All Health Pools From Player(Event Player);
Heal(Event Player, Null, Max Health(Event Player));
}
}
A rule that removes the normal health of a hero when the player presses the
Interact
button. The player is damaged, then 50 normal health is added and removed, then the player is healed. This results in the player having 50 less max health.
Use Case: Custom Health
Since we can remove health from a hero, we can apply custom health to heroes by adding health pools after removal:
rule("Custom Health")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Set Player Health(Event Player, 1);
Add Health Pool To Player(Event Player, Health, Max Health(Event Player), True, True);
Add Health Pool To Player(Event Player, Armor, Max Health(Event Player), True, True);
Add Health Pool To Player(Event Player, Shields, Max Health(Event Player), True, True);
Remove All Health Pools From Player(Event Player);
Heal(Event Player, Null, Max Health(Event Player));
Add Health Pool To Player(Event Player, Health, 199, True, True);
}
}
A rule that removes all of a hero's base health and replaces it with custom health via health pools when the player presses
Interact
. The player's health is set to 1 and temporary health pools are then added and removed, which remove all of the base health of the hero down to 1. The player is then healed and a health pool of 199 normal health is added. This results in the player having 200 normal health.
Why not Set Max Health?
In the Workshop, the max health of a player can be modified using the Set Max Health
action. Using this action to change a hero's health may not be desirable as it does not allow for adjusting of different types of health. It can also affect abilities that grant additional health (e.g. Junker Queen's Commanding Shout, Orisa's Fortify, etc.)
A Junker Queen set to 200 health using the
Set Max Health
action (From 100% ⇒ 38%). Shout gives her 58 overhealth since it scales with her max health.
A Junker Queen set to 200 health using the health pool bug. Shout gives her 150 overhealth since her max health is still at 100%.
Trivia
- This bug may be related to the bug that resulted in Wrecking Ball having less health from using Adaptive Shields while in Kitsune Rush. This was fixed in November 17, 2022 (version 2.1.2.0.107360).
- This bug has not been fixed as of September 3, 2024 (version 2.12.0.1 - 129218).