From a9dda898b1f0ba07f13a0add608b0273a4a8a247 Mon Sep 17 00:00:00 2001 From: Bradyn Glines Date: Mon, 12 Jan 2026 01:14:13 -0700 Subject: [PATCH 1/5] Enable "Enter Alone" button for tracked quest # Changes ## `Maple2\Maple2.Server.Game\PacketHandlers\QuestHandler.cs` * Added `HandleGoToDungeon` within `Handle` logic. --- Maple2.Server.Game/PacketHandlers/QuestHandler.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs index 32da47721..bfe156762 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 void HandleGoToDungeon(GameSession session, IByteReader packet) { + int questId = packet.ReadInt(); + + if (!session.Quest.TryGetQuest(questId, out Quest? quest)) { + return; + } + + session.Dungeon.CreateDungeonRoom(quest.Metadata.GoToDungeon.MapId, false); + } + private void HandleMapleGuide(GameSession session, IByteReader packet) { int id = packet.ReadInt(); From b1dd1e7be0c7baefd5dcdfd74e0fc145f07b2959 Mon Sep 17 00:00:00 2001 From: Bradyn Glines Date: Mon, 12 Jan 2026 08:25:49 -0700 Subject: [PATCH 2/5] Update function to be static --- Maple2.Server.Game/PacketHandlers/QuestHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs index bfe156762..ea5aeb28a 100644 --- a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs +++ b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs @@ -195,7 +195,7 @@ private static void HandleGoToNpc(GameSession session, IByteReader packet) { : FieldEnterPacket.Error(MigrationError.s_move_err_default)); } - private void HandleGoToDungeon(GameSession session, IByteReader packet) { + private static void HandleGoToDungeon(GameSession session, IByteReader packet) { int questId = packet.ReadInt(); if (!session.Quest.TryGetQuest(questId, out Quest? quest)) { From f8dd1baa2aa3bb620e8ee85b9d6d866c0f40e466 Mon Sep 17 00:00:00 2001 From: Bradyn Glines Date: Mon, 12 Jan 2026 09:48:37 -0700 Subject: [PATCH 3/5] Return if quest isn't started --- Maple2.Server.Game/PacketHandlers/QuestHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs index ea5aeb28a..4a94bcd3f 100644 --- a/Maple2.Server.Game/PacketHandlers/QuestHandler.cs +++ b/Maple2.Server.Game/PacketHandlers/QuestHandler.cs @@ -198,7 +198,7 @@ private static void HandleGoToNpc(GameSession session, IByteReader packet) { private static void HandleGoToDungeon(GameSession session, IByteReader packet) { int questId = packet.ReadInt(); - if (!session.Quest.TryGetQuest(questId, out Quest? quest)) { + if (!session.Quest.TryGetQuest(questId, out Quest? quest) || quest.State != QuestState.Started) { return; } From 22dcb84f9c073f551547471d8950a82d37e96de3 Mon Sep 17 00:00:00 2001 From: Bradyn Glines Date: Tue, 13 Jan 2026 23:58:05 -0700 Subject: [PATCH 4/5] Player attribute point command Creates a command for adding attribute points to the player. --- Maple2.Model/Enum/AttributePointSource.cs | 1 + Maple2.Server.Game/Commands/PlayerCommand.cs | 24 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/Maple2.Model/Enum/AttributePointSource.cs b/Maple2.Model/Enum/AttributePointSource.cs index 3caf44d46..e5ec00557 100644 --- a/Maple2.Model/Enum/AttributePointSource.cs +++ b/Maple2.Model/Enum/AttributePointSource.cs @@ -5,4 +5,5 @@ public enum AttributePointSource { Quest = 2, Exploration = 3, Prestige = 4, + Unknown = 5, } diff --git a/Maple2.Server.Game/Commands/PlayerCommand.cs b/Maple2.Server.Game/Commands/PlayerCommand.cs index 6fe44f7eb..f485718ac 100644 --- a/Maple2.Server.Game/Commands/PlayerCommand.cs +++ b/Maple2.Server.Game/Commands/PlayerCommand.cs @@ -18,6 +18,7 @@ public PlayerCommand(GameSession session, AchievementMetadataStorage achievement AddCommand(new ExpCommand(session)); AddCommand(new JobCommand(session)); AddCommand(new InfoCommand(session)); + AddCommand(new AttributePointCommand(session)); AddCommand(new SkillPointCommand(session)); AddCommand(new CurrencyCommand(session)); AddCommand(new InventoryCommand(session)); @@ -362,6 +363,29 @@ private void Handle(InvocationContext ctx) { } } + private class AttributePointCommand : Command { + private readonly GameSession session; + + public AttributePointCommand(GameSession session) : base("statpoint", "Add attribute points to the player.") { + this.session = session; + + var points = new Argument("points", "Attribute points to add."); + + AddArgument(points); + this.SetHandler(Handle, points); + } + + private void Handle(InvocationContext ctx, int points) { + try { + session.Config.AddStatPoint(AttributePointSource.Unknown, points); + ctx.ExitCode = 0; + } catch (SystemException ex) { + ctx.Console.Error.WriteLine(ex.Message); + ctx.ExitCode = 1; + } + } + } + private class SkillPointCommand : Command { private readonly GameSession session; From 67d8710207e3bc8fee72e4e4335db92f73f7927a Mon Sep 17 00:00:00 2001 From: Bradyn Glines Date: Wed, 14 Jan 2026 08:38:54 -0700 Subject: [PATCH 5/5] Rename enum key to Command --- Maple2.Model/Enum/AttributePointSource.cs | 2 +- Maple2.Server.Game/Commands/PlayerCommand.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Maple2.Model/Enum/AttributePointSource.cs b/Maple2.Model/Enum/AttributePointSource.cs index e5ec00557..55efedddc 100644 --- a/Maple2.Model/Enum/AttributePointSource.cs +++ b/Maple2.Model/Enum/AttributePointSource.cs @@ -5,5 +5,5 @@ public enum AttributePointSource { Quest = 2, Exploration = 3, Prestige = 4, - Unknown = 5, + Command = 5, } diff --git a/Maple2.Server.Game/Commands/PlayerCommand.cs b/Maple2.Server.Game/Commands/PlayerCommand.cs index f485718ac..c1207348a 100644 --- a/Maple2.Server.Game/Commands/PlayerCommand.cs +++ b/Maple2.Server.Game/Commands/PlayerCommand.cs @@ -377,7 +377,7 @@ public AttributePointCommand(GameSession session) : base("statpoint", "Add attri private void Handle(InvocationContext ctx, int points) { try { - session.Config.AddStatPoint(AttributePointSource.Unknown, points); + session.Config.AddStatPoint(AttributePointSource.Command, points); ctx.ExitCode = 0; } catch (SystemException ex) { ctx.Console.Error.WriteLine(ex.Message);