diff --git a/GameServer/Game/Scene/SceneInstance.cs b/GameServer/Game/Scene/SceneInstance.cs index b21ef3c3..cfa23a3d 100644 --- a/GameServer/Game/Scene/SceneInstance.cs +++ b/GameServer/Game/Scene/SceneInstance.cs @@ -174,7 +174,7 @@ public class SceneInstance public GameModeTypeEnum GameModeType; - public Dictionary SummonUnit { get; set; } = []; + public Dictionary SummonUnit { get; set; } = []; public SceneInstance(PlayerInstance player, MazePlaneExcel excel, int floorId, int entryId) { @@ -370,7 +370,8 @@ public class SceneInstance IGameEntity? removeEntity = null; // get old summon unit - if (SummonUnit.TryGetValue(summonUnitExcel.UniqueGroup, out var oldSummonUnit)) + var summonUnitKey = summonUnitExcel.UniqueGroup == SummonUnitUniqueGroupEnum.None ? summonUnitExcel.ID : 1; + if (SummonUnit.TryGetValue(summonUnitKey, out var oldSummonUnit)) { // clear old summon unit removeEntity = oldSummonUnit; @@ -386,7 +387,7 @@ public class SceneInstance } await Player.SendPacket(new PacketSceneGroupRefreshScNotify(Player, entity, removeEntity)); - SummonUnit[summonUnitExcel.UniqueGroup] = entity; + SummonUnit[summonUnitKey] = entity; return Retcode.RetSucc; }