diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/MapSystem/Scene.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/MapSystem/Scene.cs index 2e7b8fc..a2db318 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/MapSystem/Scene.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/MapSystem/Scene.cs @@ -19,7 +19,9 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Scene; using System; using System.Collections.Generic; using System.Drawing; +using System.IO; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using Actor = DiIiS_NA.GameServer.GSSystem.ActorSystem.Actor; @@ -228,7 +230,7 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem /// /// Loads all markers for the scene. /// - public void LoadMarkers() + public void LoadMarkers([CallerMemberName] string memberName = "", [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0) { GizmoSpawningLocations = new List[26]; // LocationA to LocationZ @@ -239,6 +241,12 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem switch (marker.Type) { case MarkerType.Actor: + if ((ActorSno)marker.SNOHandle.Id == ActorSno.__NONE) + { + var path = Path.GetFileName(filePath); + Logger.Trace($"$[underline red on white]$Actor asset not found$[/]$, Method: $[olive]${memberName}()$[/]$ - $[underline white]${memberName}() in {path}:{lineNumber}$[/]$"); + continue; + } var actor = ActorFactory.Create(World, (ActorSno)marker.SNOHandle.Id, marker.TagMap); // try to create it. //Logger.Debug("not-lazy spawned {0}", actor.GetType().Name); if (actor == null) continue; @@ -263,6 +271,13 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem { Logger.Trace("Encounter option {0} - {1} - {2} - {3}", option.SNOSpawn, option.Probability, option.I1, option.I2); }*/ //only for debugging purposes + if ((ActorSno)actorsno.SNOSpawn == ActorSno.__NONE) + { + var path = Path.GetFileName(filePath); + Logger.Trace($"$[underline red on white]$Actor asset not found$[/]$, Method: $[olive]${memberName}()$[/]$ - $[underline white]${memberName}() in {path}:{lineNumber}$[/]$"); + continue; + } + var actor2 = ActorFactory.Create(World, (ActorSno)actorsno.SNOSpawn, marker.TagMap); // try to create it. if (actor2 == null) continue; @@ -515,75 +530,12 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem /// public MapRevealSceneMessage MapRevealMessage(Player plr) { - if ( - #region Город первого акта - SceneSNO.Id == 1904 || - SceneSNO.Id == 33342 || - SceneSNO.Id == 33343 || - - SceneSNO.Id == 33347 || - SceneSNO.Id == 33348 || - SceneSNO.Id == 33349 || - SceneSNO.Id == 414798 - #endregion - || - #region Город второго акта - SceneSNO.Id == 161516 || - SceneSNO.Id == 161510 || - SceneSNO.Id == 185542 || - - SceneSNO.Id == 161507 || - SceneSNO.Id == 161513 || - SceneSNO.Id == 185545 - #endregion - || - #region Город третьего акта - SceneSNO.Id == 172892 || - SceneSNO.Id == 172880 || - SceneSNO.Id == 172868 || - - SceneSNO.Id == 172888 || - SceneSNO.Id == 172876 || - SceneSNO.Id == 172863 || - - SceneSNO.Id == 172884 || - SceneSNO.Id == 172872 || - SceneSNO.Id == 172908 - #endregion - || - #region Город четвертого акта - SceneSNO.Id == 183555 || - SceneSNO.Id == 183556 || - SceneSNO.Id == 183557 || - - SceneSNO.Id == 183502 || - SceneSNO.Id == 183505 || - SceneSNO.Id == 183557 || - - SceneSNO.Id == 183519 || - SceneSNO.Id == 183545 || - SceneSNO.Id == 183553 - #endregion - || - #region Город пятого акта - SceneSNO.Id == 315706 || - SceneSNO.Id == 311307 || - SceneSNO.Id == 311295 || - - SceneSNO.Id == 313849 || - SceneSNO.Id == 311316 || - SceneSNO.Id == 313845 || - - SceneSNO.Id == 315710 || - SceneSNO.Id == 311310 || - SceneSNO.Id == 311298 || - - SceneSNO.Id == 313853 || - SceneSNO.Id == 311313 || - SceneSNO.Id == 311301 || - SceneSNO.Id == 313857 - #endregion - ) + if (SceneSNO.Id is 1904 or 33342 or 33343 or 33347 or 33348 or 33349 or 414798 or 161516 or 161510 or 185542 + or 161507 or 161513 or 185545 or 172892 or 172880 or 172868 or 172888 or 172876 or 172863 or 172884 + or 172872 or 172908 or 183555 or 183556 or 183557 or 183502 or 183505 or 183557 or 183519 or 183545 + or 183553 or 315706 or 311307 or 311295 or 313849 or 311316 or 313845 or 315710 or 311310 or 311298 + or 313853 or 311313 or 311301 or 313857 + ) { return new MapRevealSceneMessage { diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/General/TownTeleport.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/General/TownTeleport.cs index ba31312..8d5bd37 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/General/TownTeleport.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/General/TownTeleport.cs @@ -24,22 +24,22 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations var scenes = World.QuadTree.Query(proximity); var scene = scenes[0]; // Parent scene /fasbat int levelArea = scene.Specification.SNOLevelAreas[0]; - (World.Game.GetHearthPortal() as HearthPortal).ReturnWorld = World.SNO; - (World.Game.GetHearthPortal() as HearthPortal).ReturnPosition = User.Position; + ((HearthPortal)World.Game.GetHearthPortal()).ReturnWorld = World.SNO; + ((HearthPortal)World.Game.GetHearthPortal()).ReturnPosition = User.Position; Vector3D exCheckpoint = User.CheckPointPosition; - (User as Player).InGameClient.SendMessage(new MessageSystem.Message.Definitions.Base.SimpleMessage(MessageSystem.Opcodes.LoadingWarping)); + ((Player)User).InGameClient.SendMessage(new MessageSystem.Message.Definitions.Base.SimpleMessage(MessageSystem.Opcodes.LoadingWarping)); if (world != User.World) User.ChangeWorld(world, World.Game.GetHearthPortal().Position); else User.Teleport(World.Game.GetHearthPortal().Position); User.CheckPointPosition = exCheckpoint; - (World.Game.GetHearthPortal() as HearthPortal).Owner = (User as Player); + ((HearthPortal)World.Game.GetHearthPortal()).Owner = (User as Player); World.Game.GetHearthPortal().SetVisible(true); - (User as Player).InGameClient.SendMessage(new HearthPortalInfoMessage + ((Player)User).InGameClient.SendMessage(new HearthPortalInfoMessage { snoLevelArea = levelArea, snoUnknown = -1,