diff --git a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs index 32da4772..4a94bcd3 100644 --- a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs +++ b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs @@ -63,6 +63,9 @@ public override void Handle(GameSession session, IByteReader packet) { case Command.GoToNpc: HandleGoToNpc(session, packet); break; + case Command.GoToDungeon: + HandleGoToDungeon(session, packet); + break; case Command.SkyFortress: HandleSkyFortressTeleport(session); break; @@ -192,6 +195,16 @@ private static void HandleGoToNpc(GameSession session, IByteReader packet) { : FieldEnterPacket.Error(MigrationError.s_move_err_default)); } + private static void HandleGoToDungeon(GameSession session, IByteReader packet) { + int questId = packet.ReadInt(); + + if (!session.Quest.TryGetQuest(questId, out Quest? quest) || quest.State != QuestState.Started) { + return; + } + + session.Dungeon.CreateDungeonRoom(quest.Metadata.GoToDungeon.MapId, false); + } + private void HandleMapleGuide(GameSession session, IByteReader packet) { int id = packet.ReadInt();