From f33e682727b22ee0ae92e850557f4c8920d2fe49 Mon Sep 17 00:00:00 2001 From: "Z. Cliffe Schreuders" Date: Thu, 19 Feb 2026 00:07:32 +0000 Subject: [PATCH] fix: enhance inventory management by properly destroying proximity ghosts on item addition --- public/break_escape/js/systems/inventory.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/public/break_escape/js/systems/inventory.js b/public/break_escape/js/systems/inventory.js index c16f0c6..d45a793 100644 --- a/public/break_escape/js/systems/inventory.js +++ b/public/break_escape/js/systems/inventory.js @@ -340,6 +340,11 @@ export async function addToInventory(sprite) { roomObj.setVisible(false); } roomObj.active = false; + // Destroy proximity ghost immediately (interaction system stores it on roomObj) + if (roomObj.proximityGhost) { + roomObj.proximityGhost.destroy(); + delete roomObj.proximityGhost; + } console.log(`Removed duplicate object ${sprite.objectId} from room`); } } @@ -348,6 +353,11 @@ export async function addToInventory(sprite) { if (sprite.setVisible && typeof sprite.setVisible === 'function') { sprite.setVisible(false); } + // Destroy proximity ghost on the sprite itself in case it differs from roomObj + if (sprite.proximityGhost) { + sprite.proximityGhost.destroy(); + delete sprite.proximityGhost; + } // Show notification to player if (window.gameAlert) { @@ -409,6 +419,11 @@ export async function addToInventory(sprite) { roomObj.setVisible(false); } roomObj.active = false; + // Destroy proximity ghost immediately (interaction system stores it on roomObj) + if (roomObj.proximityGhost) { + roomObj.proximityGhost.destroy(); + delete roomObj.proximityGhost; + } console.log(`Removed object ${sprite.objectId} from room`); // Sync object removal with server's canonical room JSON @@ -425,6 +440,11 @@ export async function addToInventory(sprite) { if (sprite.setVisible && typeof sprite.setVisible === 'function') { sprite.setVisible(false); } + // Destroy proximity ghost on the sprite itself in case it differs from roomObj + if (sprite.proximityGhost) { + sprite.proximityGhost.destroy(); + delete sprite.proximityGhost; + } // Special handling for keys - group them together if (sprite.scenarioData.type === 'key') {