From f1b2ea3bbce22ab17854285f29a4f3d9996d6ef9 Mon Sep 17 00:00:00 2001 From: Bradyn Glines Date: Thu, 15 Jan 2026 11:49:05 -0700 Subject: [PATCH] Prism NPC detection --- Maple2.Model/Game/TriggerObject.cs | 2 ++ Maple2.Server.Game/Trigger/TriggerContext.Npc.cs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Maple2.Model/Game/TriggerObject.cs b/Maple2.Model/Game/TriggerObject.cs index 74a0923a1..d94c0d678 100644 --- a/Maple2.Model/Game/TriggerObject.cs +++ b/Maple2.Model/Game/TriggerObject.cs @@ -120,6 +120,8 @@ public TriggerBox(Ms2TriggerBox metadata) { public bool Contains(in Vector3 point) => box.Contains(point); + public bool Intersects(in IPrism shape) => box.Intersects(shape); + public override string ToString() { return $"Id:{Id}\n- {box}"; } diff --git a/Maple2.Server.Game/Trigger/TriggerContext.Npc.cs b/Maple2.Server.Game/Trigger/TriggerContext.Npc.cs index 62b650fd7..a2bcbcd16 100644 --- a/Maple2.Server.Game/Trigger/TriggerContext.Npc.cs +++ b/Maple2.Server.Game/Trigger/TriggerContext.Npc.cs @@ -274,7 +274,7 @@ private IEnumerable NpcsInBox(params int[] boxIds) { .Select(boxId => Objects.Boxes.GetValueOrDefault(boxId)) .Where(box => box != null)!; - return Field.EnumerateNpcs().Where(mob => boxes.Any(box => box.Contains(mob.Position))); + return Field.EnumerateNpcs().Where(mob => boxes.Any(box => box.Contains(mob.Position) || box.Intersects(mob.Shape))); } private void SpawnNpc(int spawnId, bool useSpawnAnimation = false) {