diff --git a/zone/zone_save_state.cpp b/zone/zone_save_state.cpp index 67676af5b..fa4bd4e12 100644 --- a/zone/zone_save_state.cpp +++ b/zone/zone_save_state.cpp @@ -336,6 +336,16 @@ inline void LoadNPCState(Zone *zone, NPC *n, ZoneStateSpawnsRepository::ZoneStat n->SetEndurance(s.endurance); } + // if these are zero for some reason, we need to reset the max hp + if (!s.is_corpse) { + if (s.hp == 0 || n->GetHP() == 0) { + n->SetMaxHP(); + } + if (s.mana == 0 || n->GetMana() == 0) { + n->RestoreMana(); + } + } + if (s.grid) { n->AssignWaypoints(s.grid, s.current_waypoint); }