diff --git a/Source/Game/Collision/Models/GameObjectModel.cs b/Source/Game/Collision/Models/GameObjectModel.cs index 1aafb0be4..dfe13f906 100644 --- a/Source/Game/Collision/Models/GameObjectModel.cs +++ b/Source/Game/Collision/Models/GameObjectModel.cs @@ -225,14 +225,14 @@ namespace Game.Collision public bool IsMapObject() { return isWmo; } public byte GetNameSetId() { return owner.GetNameSetId(); } - public static void LoadGameObjectModelList() + public static bool LoadGameObjectModelList() { uint oldMSTime = Time.GetMSTime(); var filename = Global.WorldMgr.GetDataPath() + "/vmaps/GameObjectModels.dtree"; if (!File.Exists(filename)) { Log.outWarn(LogFilter.Server, "Unable to open '{0}' file.", filename); - return; + return false; } try { @@ -241,7 +241,7 @@ namespace Game.Collision if (magic != MapConst.VMapMagic) { Log.outError(LogFilter.Misc, $"File '{filename}' has wrong header, expected {MapConst.VMapMagic}."); - return; + return false; } long length = reader.BaseStream.Length; @@ -266,6 +266,7 @@ namespace Game.Collision } Log.outInfo(LogFilter.ServerLoading, "Loaded {0} GameObject models in {1} ms", StaticModelList.models.Count, Time.GetMSTimeDiffToNow(oldMSTime)); + return true; } bool _collisionEnabled; diff --git a/Source/Game/World/WorldManager.cs b/Source/Game/World/WorldManager.cs index 173bdebb1..bdfd5e466 100644 --- a/Source/Game/World/WorldManager.cs +++ b/Source/Game/World/WorldManager.cs @@ -410,7 +410,7 @@ namespace Game || !TerrainManager.ExistMapAndVMap(1, 10311.3f, 832.463f) || !TerrainManager.ExistMapAndVMap(1, -2917.58f, -257.98f) || (WorldConfig.GetIntValue(WorldCfg.Expansion) != 0 && (!TerrainManager.ExistMapAndVMap(530, 10349.6f, -6357.29f) || !TerrainManager.ExistMapAndVMap(530, -3961.64f, -13931.2f)))) { - Log.outError(LogFilter.ServerLoading, "Unable to load critical files - server shutting down !!!"); + Log.outError(LogFilter.ServerLoading, "Unable to load map and vmap data for starting zones - server shutting down!"); Environment.Exit(1); } @@ -508,6 +508,11 @@ namespace Game Log.outInfo(LogFilter.ServerLoading, "Loading GameObject models..."); GameObjectModel.LoadGameObjectModelList(); + if (!GameObjectModel.LoadGameObjectModelList()) + { + Log.outFatal(LogFilter.ServerLoading, "Unable to load gameobject models, objects using WMO models will crash the client - server shutting down!"); + ShutdownServ(0, ShutdownMask.Force, ShutdownExitCode.Shutdown); + } Log.outInfo(LogFilter.ServerLoading, "Loading Instance Template..."); Global.ObjectMgr.LoadInstanceTemplate();