From 3a51f0429164978541d8396928d84d76ef8d5cca Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Fri, 24 May 2024 20:53:40 -0500 Subject: [PATCH] [Crash] Fix crash issue when dividing by zero in CalcHPRegen (#4320) * [Crash] Fix crash issue when dividing by zero in CalcHPRegen * Update zone.cpp --- zone/client_mods.cpp | 2 +- zone/zone.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/zone/client_mods.cpp b/zone/client_mods.cpp index 13a144f04..0387b795b 100644 --- a/zone/client_mods.cpp +++ b/zone/client_mods.cpp @@ -289,7 +289,7 @@ int64 Client::CalcHPRegen(bool bCombat) if (!bCombat && CanFastRegen() && (IsSitting() || CanMedOnHorse())) { auto max_hp = GetMaxHP(); - int64 fast_regen = 6 * (max_hp / (zone ? zone->newzone_data.fast_regen_hp : 180)); + int64 fast_regen = 6 * (max_hp / (zone && zone->newzone_data.fast_regen_hp > 0 ? zone->newzone_data.fast_regen_hp : 180)); if (base < fast_regen) // weird, but what the client is doing base = fast_regen; } diff --git a/zone/zone.cpp b/zone/zone.cpp index 7d49d5950..716341769 100644 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -1366,9 +1366,9 @@ bool Zone::LoadZoneCFG(const char* filename, uint16 instance_version) newzone_data.maxclip = z->maxclip; newzone_data.time_type = z->time_type; newzone_data.gravity = z->gravity; - newzone_data.fast_regen_hp = z->fast_regen_hp; - newzone_data.fast_regen_mana = z->fast_regen_mana; - newzone_data.fast_regen_endurance = z->fast_regen_endurance; + newzone_data.fast_regen_hp = z->fast_regen_hp > 0 ? z->fast_regen_hp : 180; + newzone_data.fast_regen_mana = z->fast_regen_mana > 0 ? z->fast_regen_mana : 180; + newzone_data.fast_regen_endurance = z->fast_regen_endurance > 0 ? z->fast_regen_endurance : 180; newzone_data.npc_aggro_max_dist = z->npc_max_aggro_dist; newzone_data.underworld_teleport_index = z->underworld_teleport_index; newzone_data.lava_damage = z->lava_damage;