diff --git a/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs b/EXILED/Exiled.CustomItems/API/Features/CustomGoggles.cs
index ca4fbdd32..60d104622 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;
@@ -175,11 +177,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);
}
@@ -211,5 +213,29 @@ 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)
+ continue;
+
+ scp1344.Status = Scp1344Status.Idle;
+ InternalRemove(owner, scp1344);
+ }
+ }
}
}