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.
///