From 5e38d268b0c596bfe709f362014e41a11a9db22d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Tue, 27 May 2025 02:18:18 -0300 Subject: [PATCH 1/4] Fix: cube portal --- Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs index 845c22f00..837273a2a 100644 --- a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs +++ b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs @@ -461,14 +461,14 @@ public bool UsePortal(GameSession session, int portalId, string password) { Portal srcPortal = fieldPortal; switch (srcPortal.Type) { case PortalType.InHome: - PlotCube? cubePortal = Plots.First().Value.Cubes.Values.FirstOrDefault(x => x.Interact?.PortalSettings is not null && x.Interact.PortalSettings.PortalObjectId == fieldPortal.ObjectId); + PlotCube? cubePortal = session.Housing.GetFieldPlot()?.Cubes.Values.FirstOrDefault(x => x.Interact?.PortalSettings is not null && x.Interact.PortalSettings.PortalObjectId == fieldPortal.ObjectId); if (cubePortal is null) { return false; } switch (cubePortal.Interact!.PortalSettings!.Destination) { case CubePortalDestination.PortalInHome: - PlotCube? destinationCube = Plots.First().Value.Cubes.Values.FirstOrDefault(x => x.Interact?.PortalSettings is not null && x.Interact.PortalSettings.PortalName == cubePortal.Interact.PortalSettings.DestinationTarget); + PlotCube? destinationCube = session.Housing.GetFieldPlot()?.Cubes.Values.FirstOrDefault(x => x.Interact?.PortalSettings is not null && x.Interact.PortalSettings.PortalName == cubePortal.Interact.PortalSettings.DestinationTarget); if (destinationCube is null) { return false; } From d21d021b9ac3135f1e0f7e5f3bfc0c3c350ac5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Tue, 27 May 2025 02:23:07 -0300 Subject: [PATCH 2/4] fix: planner --- Maple2.Server.Game/PacketHandlers/LoadUgcMapHandler.cs | 5 ++++- Maple2.Server.Game/Session/GameSession.cs | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Maple2.Server.Game/PacketHandlers/LoadUgcMapHandler.cs b/Maple2.Server.Game/PacketHandlers/LoadUgcMapHandler.cs index 1ffce167c..c71a6b4bf 100644 --- a/Maple2.Server.Game/PacketHandlers/LoadUgcMapHandler.cs +++ b/Maple2.Server.Game/PacketHandlers/LoadUgcMapHandler.cs @@ -50,7 +50,10 @@ public override void Handle(GameSession session, IByteReader packet) { } // Check if current plot is planner - Plot indoor = session.Field.Plots.First().Value; + Plot? indoor = session.Housing.GetFieldPlot(); + if (indoor is null) { + return; + } if (indoor.IsPlanner) { home.EnterPlanner(indoor.PlotMode); } diff --git a/Maple2.Server.Game/Session/GameSession.cs b/Maple2.Server.Game/Session/GameSession.cs index be3f592ae..4a48e7a9d 100644 --- a/Maple2.Server.Game/Session/GameSession.cs +++ b/Maple2.Server.Game/Session/GameSession.cs @@ -202,7 +202,7 @@ public bool EnterServer(long accountId, Guid machineId, MigrateInResponse migrat case MigrationType.DecorPlanner: case MigrationType.BlueprintDesigner: player.Home.EnterPlanner((PlotMode) migrationType); - fieldManager.Plots.First().Value.SetPlannerMode((PlotMode) migrationType); + Housing.GetFieldPlot()?.SetPlannerMode((PlotMode) migrationType); break; case MigrationType.Dungeon: if (fieldManager is not DungeonFieldManager dungeonField) { @@ -486,7 +486,7 @@ public bool EnterField() { public void ReturnField() { Player player = Player.Value; - if (player.Home.IsHomeSetup && !Player.Field.Plots.IsEmpty && Player.Field.Plots.First().Value.IsPlanner) { + if (player.Home.IsHomeSetup && !Player.Field.Plots.IsEmpty && (Player.Session.Housing.GetFieldPlot()?.IsPlanner ?? false)) { MigrateToPlanner(PlotMode.Normal); return; } From ff93327bba9867217136e0bc2ab9de57f570fb97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Tue, 27 May 2025 18:05:25 -0300 Subject: [PATCH 3/4] fix plot load --- Maple2.Database/Storage/Game/GameStorage.Map.cs | 2 +- .../Manager/Field/FieldManager/FieldManager.cs | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Maple2.Database/Storage/Game/GameStorage.Map.cs b/Maple2.Database/Storage/Game/GameStorage.Map.cs index c208943c8..6340ae0a1 100644 --- a/Maple2.Database/Storage/Game/GameStorage.Map.cs +++ b/Maple2.Database/Storage/Game/GameStorage.Map.cs @@ -21,7 +21,7 @@ public IList LoadPlotsForMap(int mapId, long ownerId = -1) { .Where(map => map.MapId == mapId && map.OwnerId == ownerId); } else { query = Context.UgcMap.Include(map => map.Cubes) - .Where(map => map.MapId == mapId); + .Where(map => map.MapId == mapId && map.MapId != Constant.DefaultHomeMapId ); } return query.AsEnumerable() diff --git a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs index 837273a2a..1cb38c06e 100644 --- a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs +++ b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs @@ -137,12 +137,14 @@ public virtual void Init() { } // Create default to place liftable cubes - Plots[0] = new Plot(new UgcMapGroup(0, - 0, - 0, - new UgcMapGroup.Cost(0, 0, 0), - new UgcMapGroup.Cost(0, 0, 0), - new UgcMapGroup.Limits(0, 0, 0, 0, 0, 0))); + if (MapId is not Constant.DefaultHomeMapId) { + Plots[0] = new Plot(new UgcMapGroup(0, + 0, + 0, + new UgcMapGroup.Cost(0, 0, 0), + new UgcMapGroup.Cost(0, 0, 0), + new UgcMapGroup.Limits(0, 0, 0, 0, 0, 0))); + } foreach (TriggerModel trigger in Entities.TriggerModels.Values) { AddTrigger(trigger); From 85694762809a32f156523cf75b3e5373418b248d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Tue, 27 May 2025 19:18:50 -0300 Subject: [PATCH 4/4] format --- Maple2.Database/Storage/Game/GameStorage.Map.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maple2.Database/Storage/Game/GameStorage.Map.cs b/Maple2.Database/Storage/Game/GameStorage.Map.cs index 6340ae0a1..4d26b7574 100644 --- a/Maple2.Database/Storage/Game/GameStorage.Map.cs +++ b/Maple2.Database/Storage/Game/GameStorage.Map.cs @@ -21,7 +21,7 @@ public IList LoadPlotsForMap(int mapId, long ownerId = -1) { .Where(map => map.MapId == mapId && map.OwnerId == ownerId); } else { query = Context.UgcMap.Include(map => map.Cubes) - .Where(map => map.MapId == mapId && map.MapId != Constant.DefaultHomeMapId ); + .Where(map => map.MapId == mapId && map.MapId != Constant.DefaultHomeMapId); } return query.AsEnumerable()