diff --git a/Intersect.Server/Admin/Actions/ActionProcessing.cs b/Intersect.Server/Admin/Actions/ActionProcessing.cs index 3fe877c9b3..48f0e1cb0e 100644 --- a/Intersect.Server/Admin/Actions/ActionProcessing.cs +++ b/Intersect.Server/Admin/Actions/ActionProcessing.cs @@ -392,7 +392,8 @@ public static void ProcessAction(Player player, WarpMeToAction action) var target = Player.FindOnline(action.Name); if (target != null) { - player.ForceInstanceChangeWarp(target.MapId, (byte)target.X, (byte)target.Y, target.MapInstanceId, target.InstanceType); + var forceInstanceChange = target.InstanceType != player.InstanceType; + player.AdminWarp(target.MapId, (byte)target.X, (byte)target.Y, target.MapInstanceId, target.InstanceType, forceInstanceChange); PacketSender.SendChatMsg(player, Strings.Player.warpedto.ToString(target.Name), ChatMessageType.Admin); PacketSender.SendChatMsg( target, Strings.Player.warpedtoyou.ToString(player.Name), ChatMessageType.Notice @@ -437,7 +438,9 @@ public static void ProcessAction(Player player, WarpToMeAction action) } else { - target.ForceInstanceChangeWarp(player.MapId, (byte)player.X, (byte)player.Y, player.MapInstanceId, player.InstanceType); + var forceInstanceChange = target.InstanceType != player.InstanceType; + + target.AdminWarp(player.MapId, (byte)player.X, (byte)player.Y, player.MapInstanceId, player.InstanceType, forceInstanceChange); PacketSender.SendChatMsg( player, Strings.Player.haswarpedto.ToString(target.Name), ChatMessageType.Admin, player.Name ); diff --git a/Intersect.Server/Entities/Player.cs b/Intersect.Server/Entities/Player.cs index 2f04e7055e..9c988afdcd 100644 --- a/Intersect.Server/Entities/Player.cs +++ b/Intersect.Server/Entities/Player.cs @@ -1612,7 +1612,7 @@ public override void Warp(Guid newMapId, float newX, float newY, bool adminWarp Warp(newMapId, newX, newY, (byte)Directions.Up, adminWarp, 0, false); } - public void ForceInstanceChangeWarp(Guid newMapId, float newX, float newY, Guid newMapInstanceId, MapInstanceType instanceType, bool adminWarp = false) + public void AdminWarp(Guid newMapId, float newX, float newY, Guid newMapInstanceId, MapInstanceType instanceType, bool force) { PreviousMapInstanceId = MapInstanceId; PreviousMapInstanceType = InstanceType; @@ -1628,7 +1628,7 @@ public void ForceInstanceChangeWarp(Guid newMapId, float newX, float newY, Guid { PacketSender.SendChatMsg(this, Strings.Player.InstanceUpdate.ToString(PreviousMapInstanceId.ToString(), MapInstanceId.ToString()), ChatMessageType.Admin, CustomColors.Alerts.Info); } - Warp(newMapId, newX, newY, (byte)Directions.Up, adminWarp, 0, false, false, null, false, true); + Warp(newMapId, newX, newY, (byte)Directions.Up, forceInstanceChange: force); } public override void Warp( @@ -2006,7 +2006,7 @@ private void SendToNewMapInstance(MapController newMap) // Get the entities from the old map - we need to clear them off the player's global entities on their client if (oldMap != null && oldMap.TryGetInstance(PreviousMapInstanceId, out var oldMapInstance)) { - PacketSender.SendMapLayerChangedPacketTo(this, oldMap, PreviousMapInstanceId); + PacketSender.SendMapInstanceChangedPacket(this, oldMap, PreviousMapInstanceId); oldMapInstance.ClearEntityTargetsOf(this); // Remove targets of this entity } // Clear events - we'll get them again from the map instance's event cache diff --git a/Intersect.Server/Networking/PacketSender.cs b/Intersect.Server/Networking/PacketSender.cs index 9eeda1e115..816c8ab3a7 100644 --- a/Intersect.Server/Networking/PacketSender.cs +++ b/Intersect.Server/Networking/PacketSender.cs @@ -401,7 +401,7 @@ public static void SendMapEntitiesTo(Player player, ConcurrentDictionary