fix: enhance inventory management by properly destroying proximity ghosts on item addition

This commit is contained in:
Z. Cliffe Schreuders
2026-02-19 00:07:32 +00:00
parent bbbe6169b6
commit f33e682727

View File

@@ -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') {