Phase 1 > 0, which happens on any warm day) calls player.DecreaseDiseaseCount() in OnDeactivate, but never
increases it.
- After every heat episode that doesn't reach phase 2, the counter is −1.
- A real disease afterwards (cholera, salmonella, flu…) only brings it back to 0. HasDisease() is false, and the
sick icon doesn't show although the player is ill.
Code 4_World/Classes/PlayerModifiers/Modifiers/Diseases/HeatStroke.c):
```c
class HeatStrokePhase1Mdfr : HeatStrokeMdfr
{
override protected bool ActivateCondition(PlayerBase player)
{
return player.GetThermalBiasHandler().Get() > THRESHOLD_ACTIVATE; // STAGE_THRESHOLDS[0] = 0.0
}
override protected void OnActivate(PlayerBase player)
{
// <- no IncreaseDiseaseCount() here
}
override protected void OnDeactivate(PlayerBase player)
{
player.DecreaseDiseaseCount(); // <- but it decreases
}
```
```c
class HeatStrokePhase2Mdfr : HeatStrokeMdfr
{
override protected void OnActivate(PlayerBase player)
{
...
player.IncreaseDiseaseCount(); // phase 2 increases
}
override protected void OnDeactivate(PlayerBase player)
{
... // <- no DecreaseDiseaseCount() here
}
```
The counter and the icon 4_World/Entities/ManBase/PlayerBase.c:1093-1122,
4_World/Classes/PlayerModifiers/Modifiers/ImmuneSystem.c:44-54):
```c
void IncreaseDiseaseCount() { m_DiseaseCount++; }
void DecreaseDiseaseCount() { m_DiseaseCount--; }
bool HasDisease()
{
return m_DiseaseCount >= 1;//0 for no disease, 1+ for disease, gets truncated to 1
}
// ImmuneSystem.c
if (player.HasDisease())
notifiersManager.ActivateByType(eNotifiers.NTF_SICK);
else
notifiersManager.DeactivateByType(eNotifiers.NTF_SICK);
```
How the counter moves:
- Heat episode that stays in phase 1: 0 → −1.
- Then cholera IncreaseDiseaseCount() on activate): −1 → 0, so HasDisease() is false and there's no sick
icon.
- Heat episode that reaches phase 2: +1 when phase 2 starts (correct, the icon shows), nothing when phase 2 ends
(the icon stays), and −1 when phase 1 ends. Back to 0, but only after the whole episode is over. Combined with HS-3
(phase 2 flickering, +1 each time) it ends up above 0, so the icon gets stuck.