From 3c6dd7bde9fbaadec7a0b14a492829461da0bff1 Mon Sep 17 00:00:00 2001 From: Yamato <66829532+louis1706@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:17:00 +0100 Subject: [PATCH 1/4] fix: CustomGoggles --- .../API/Features/CustomGoggles.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs index ca4fbdd32..8f73bca3f 100644 --- a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs +++ b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs @@ -87,6 +87,14 @@ protected override void OnOwnerChangingRole(OwnerChangingRoleEventArgs ev) InternalRemove(ev.Player, scp1344); } + /// + protected override void OnAcquired(Player player, Item item, bool displayMessage) + { + if (CanBeRemoveSafely) + InventorySystem.InventoryExtensions.OnInventoryDropped -= ((Scp1344)item).Base.OnPlayerInventoryDropped; + base.OnAcquired(player, item, displayMessage); + } + /// /// Called when the player equips the goggles. /// @@ -175,12 +183,9 @@ private void InternalEquip(Player player, Scp1344 goggles) private void InternalRemove(Player player, Scp1344 goggles) { - if (!Remove1344Effect) - player.DisableEffect(EffectType.Scp1344); - if (CanBeRemoveSafely) { - player.DisableEffect(EffectType.Blindness); + player.DisableEffect(EffectType.Scp1344); player.ReferenceHub?.DisableWearables(WearableElements.Scp1344Goggles); } From 1867f9c8ff372ccc42dd1562651e55a0a427e677 Mon Sep 17 00:00:00 2001 From: Yamato <66829532+louis1706@users.noreply.github.com> Date: Sat, 7 Mar 2026 14:43:58 +0100 Subject: [PATCH 2/4] fix: retry for customGoggles This reverts commit 3c6dd7bde9fbaadec7a0b14a492829461da0bff1. --- .../API/Features/CustomGoggles.cs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs index 8f73bca3f..302b4daea 100644 --- a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs +++ b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs @@ -56,6 +56,7 @@ public override ItemType Type /// protected override void SubscribeEvents() { + InventorySystem.InventoryExtensions.OnInventoryDropped += RemoveSafely; Exiled.Events.Handlers.Player.UsingItem += OnInternalUsingItem; Exiled.Events.Handlers.Player.ItemRemoved += OnInternalItemRemoved; Exiled.Events.Handlers.Scp1344.Deactivating += OnInternalDeactivating; @@ -67,6 +68,7 @@ protected override void SubscribeEvents() /// protected override void UnsubscribeEvents() { + InventorySystem.InventoryExtensions.OnInventoryDropped -= RemoveSafely; Exiled.Events.Handlers.Player.UsingItem -= OnInternalUsingItem; Exiled.Events.Handlers.Player.ItemRemoved -= OnInternalItemRemoved; Exiled.Events.Handlers.Scp1344.Deactivating -= OnInternalDeactivating; @@ -90,8 +92,6 @@ protected override void OnOwnerChangingRole(OwnerChangingRoleEventArgs ev) /// protected override void OnAcquired(Player player, Item item, bool displayMessage) { - if (CanBeRemoveSafely) - InventorySystem.InventoryExtensions.OnInventoryDropped -= ((Scp1344)item).Base.OnPlayerInventoryDropped; base.OnAcquired(player, item, displayMessage); } @@ -183,9 +183,12 @@ private void InternalEquip(Player player, Scp1344 goggles) private void InternalRemove(Player player, Scp1344 goggles) { + if (!Remove1344Effect) + player.DisableEffect(EffectType.Scp1344); + if (CanBeRemoveSafely) { - player.DisableEffect(EffectType.Scp1344); + player.DisableEffect(EffectType.Blindness); player.ReferenceHub?.DisableWearables(WearableElements.Scp1344Goggles); } @@ -216,5 +219,23 @@ private void OnInternalChangingStatus(ChangingStatusEventArgs ev) InternalRemove(ev.Player, ev.Scp1344); } + + private void RemoveSafely(ReferenceHub hub) + { + if (Player.TryGet(hub, out Player owner)) + return; + + foreach (Item item in owner.Items) + { + if (item.Type != ItemType.SCP1344) + continue; + if (item is not Scp1344 { IsWorn: true } scp1344) + continue; + if (!Check(item)) + continue; + if (CanBeRemoveSafely) + scp1344.Status = Scp1344Status.Idle; + } + } } } From bb89a0a10f32610ce17e1fc52c840e83b66b5a8d Mon Sep 17 00:00:00 2001 From: Yamato <66829532+louis1706@users.noreply.github.com> Date: Sat, 7 Mar 2026 15:09:27 +0100 Subject: [PATCH 3/4] fix: Finally fix and tested --- .../API/Features/CustomGoggles.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs index 302b4daea..ef6fb59ad 100644 --- a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs +++ b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs @@ -183,11 +183,11 @@ private void InternalEquip(Player player, Scp1344 goggles) private void InternalRemove(Player player, Scp1344 goggles) { - if (!Remove1344Effect) - player.DisableEffect(EffectType.Scp1344); - if (CanBeRemoveSafely) { + if (!Remove1344Effect) + player.DisableEffect(EffectType.Scp1344); + player.DisableEffect(EffectType.Blindness); player.ReferenceHub?.DisableWearables(WearableElements.Scp1344Goggles); } @@ -222,19 +222,25 @@ private void OnInternalChangingStatus(ChangingStatusEventArgs ev) private void RemoveSafely(ReferenceHub hub) { - if (Player.TryGet(hub, out Player owner)) + if (!Player.TryGet(hub, out Player owner)) return; foreach (Item item in owner.Items) { if (item.Type != ItemType.SCP1344) continue; + if (item is not Scp1344 { IsWorn: true } scp1344) continue; + if (!Check(item)) continue; - if (CanBeRemoveSafely) - scp1344.Status = Scp1344Status.Idle; + + if (!CanBeRemoveSafely) + continue; + + scp1344.Status = Scp1344Status.Idle; + InternalRemove(owner, scp1344); } } } From 09eee00d1bef2e0af54a2d45c8b7c343c45818ad Mon Sep 17 00:00:00 2001 From: Yamato <66829532+louis1706@users.noreply.github.com> Date: Sat, 7 Mar 2026 15:15:45 +0100 Subject: [PATCH 4/4] remove useless code --- EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs index ef6fb59ad..60d104622 100644 --- a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs +++ b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs @@ -89,12 +89,6 @@ protected override void OnOwnerChangingRole(OwnerChangingRoleEventArgs ev) InternalRemove(ev.Player, scp1344); } - /// - protected override void OnAcquired(Player player, Item item, bool displayMessage) - { - base.OnAcquired(player, item, displayMessage); - } - /// /// Called when the player equips the goggles. ///