From 82b48fe6e84bcafc460c8e0399e55e30acd6d34a Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Sat, 29 Mar 2025 18:24:17 -0500 Subject: [PATCH] [Reload] Add Reload for Maps / Navs (#4816) --- common/server_reload_types.h | 2 ++ zone/worldserver.cpp | 4 ++++ zone/zone.cpp | 7 +++++++ zone/zone.h | 1 + 4 files changed, 14 insertions(+) diff --git a/common/server_reload_types.h b/common/server_reload_types.h index ceb0230d8..af42bec36 100644 --- a/common/server_reload_types.h +++ b/common/server_reload_types.h @@ -22,6 +22,7 @@ namespace ServerReload { LevelEXPMods, Logs, Loot, + Maps, Merchants, NPCEmotes, NPCSpells, @@ -61,6 +62,7 @@ namespace ServerReload { "Level EXP Mods", "Logs", "Loot", + "Maps", "Merchants", "NPC Emotes", "NPC Spells", diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index 8ea559857..985f02509 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -4599,6 +4599,10 @@ void WorldServer::ProcessReload(const ServerReload::Request& request) zone->ReloadLootTables(); break; + case ServerReload::Type::Maps: + zone->ReloadMaps(); + break; + case ServerReload::Type::Merchants: entity_list.ReloadMerchants(); break; diff --git a/zone/zone.cpp b/zone/zone.cpp index 0dfcc0301..45d7003c2 100644 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -3288,5 +3288,12 @@ bool Zone::VariableExists(const std::string& variable_name) return m_zone_variables.find(variable_name) != m_zone_variables.end(); } +void Zone::ReloadMaps() +{ + zonemap = Map::LoadMapFile(map_name); + watermap = WaterMap::LoadWaterMapfile(map_name); + pathing = IPathfinder::Load(map_name); +} + #include "zone_save_state.cpp" #include "zone_loot.cpp" diff --git a/zone/zone.h b/zone/zone.h index 36e78ec8e..fc8d2d0d6 100755 --- a/zone/zone.h +++ b/zone/zone.h @@ -479,6 +479,7 @@ public: ); void SaveZoneState(); static void ClearZoneState(uint32 zone_id, uint32 instance_id); + void ReloadMaps(); private: bool allow_mercs;