@@ -56,6 +56,7 @@ public override ItemType Type
5656 /// <inheritdoc/>
5757 protected override void SubscribeEvents ( )
5858 {
59+ InventorySystem . InventoryExtensions . OnInventoryDropped += RemoveSafely ;
5960 Exiled . Events . Handlers . Player . UsingItem += OnInternalUsingItem ;
6061 Exiled . Events . Handlers . Player . ItemRemoved += OnInternalItemRemoved ;
6162 Exiled . Events . Handlers . Scp1344 . Deactivating += OnInternalDeactivating ;
@@ -67,6 +68,7 @@ protected override void SubscribeEvents()
6768 /// <inheritdoc/>
6869 protected override void UnsubscribeEvents ( )
6970 {
71+ InventorySystem . InventoryExtensions . OnInventoryDropped -= RemoveSafely ;
7072 Exiled . Events . Handlers . Player . UsingItem -= OnInternalUsingItem ;
7173 Exiled . Events . Handlers . Player . ItemRemoved -= OnInternalItemRemoved ;
7274 Exiled . Events . Handlers . Scp1344 . Deactivating -= OnInternalDeactivating ;
@@ -175,11 +177,11 @@ private void InternalEquip(Player player, Scp1344 goggles)
175177
176178 private void InternalRemove ( Player player , Scp1344 goggles )
177179 {
178- if ( ! Remove1344Effect )
179- player . DisableEffect ( EffectType . Scp1344 ) ;
180-
181180 if ( CanBeRemoveSafely )
182181 {
182+ if ( ! Remove1344Effect )
183+ player . DisableEffect ( EffectType . Scp1344 ) ;
184+
183185 player . DisableEffect ( EffectType . Blindness ) ;
184186 player . ReferenceHub ? . DisableWearables ( WearableElements . Scp1344Goggles ) ;
185187 }
@@ -211,5 +213,29 @@ private void OnInternalChangingStatus(ChangingStatusEventArgs ev)
211213
212214 InternalRemove ( ev . Player , ev . Scp1344 ) ;
213215 }
216+
217+ private void RemoveSafely ( ReferenceHub hub )
218+ {
219+ if ( ! Player . TryGet ( hub , out Player owner ) )
220+ return ;
221+
222+ foreach ( Item item in owner . Items )
223+ {
224+ if ( item . Type != ItemType . SCP1344 )
225+ continue ;
226+
227+ if ( item is not Scp1344 { IsWorn : true } scp1344 )
228+ continue ;
229+
230+ if ( ! Check ( item ) )
231+ continue ;
232+
233+ if ( ! CanBeRemoveSafely )
234+ continue ;
235+
236+ scp1344 . Status = Scp1344Status . Idle ;
237+ InternalRemove ( owner , scp1344 ) ;
238+ }
239+ }
214240 }
215241}
0 commit comments