11using Exiled . API . Enums ;
22using Exiled . API . Extensions ;
33using Exiled . API . Features ;
4- using Exiled . API . Features . Pickups ;
54using MEC ;
65using System . Collections . Generic ;
76using System . Linq ;
1110using UncomplicatedCustomItems . Interfaces . SpecificData ;
1211using UnityEngine ;
1312using UncomplicatedCustomItems . API . Features . Helper ;
13+ using LabApi . Features . Wrappers ;
14+ using Pickup = Exiled . API . Features . Pickups . Pickup ;
1415
1516namespace UncomplicatedCustomItems . API
1617{
@@ -183,54 +184,9 @@ public static bool CustomItemValidator(ICustomItem item, out string error)
183184 break ;
184185
185186 case CustomItemType . SCPItem :
186-
187- if ( item . Item is not ItemType . SCP500 )
188- {
189- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP500!";
190- }
191- else if ( item . Item is not ItemType . SCP207 )
192- {
193- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP207!";
194- }
195- else if ( item . Item is not ItemType . AntiSCP207 )
196- {
197- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not AntiSCP207!";
198- }
199- else if ( item . Item is not ItemType . SCP018 )
200- {
201- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP018!";
202- }
203- else if ( item . Item is not ItemType . SCP330 )
204- {
205- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP330!";
206- }
207- else if ( item . Item is not ItemType . SCP2176 )
208- {
209- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP2176!";
210- }
211- else if ( item . Item is not ItemType . SCP244a )
212- {
213- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP244A!";
214- }
215- else if ( item . Item is not ItemType . SCP244b )
216- {
217- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP244B!";
218- }
219- else if ( item . Item is not ItemType . SCP1853 )
220- {
221- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP1853!";
222- }
223- else if ( item . Item is not ItemType . SCP1576 )
224- {
225- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not SCP1576!";
226- }
227- else if ( item . Item is not ItemType . GunSCP127 )
187+ if ( ! item . Item . IsScp ( ) && item . Item != ItemType . GunSCP127 )
228188 {
229- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not GunSCP127!";
230- }
231- else
232- {
233- error = $ "The item has been flagged as 'SCPItem' but the item { item . Item } is not a modifiable SCP Item!";
189+ error = $ "The Item has been flagged as 'SCPItem' but the item { item . Item } is not an SCPItem!";
234190 return false ;
235191 }
236192
@@ -261,7 +217,7 @@ public static bool CustomItemValidator(ICustomItem item)
261217 /// </summary>
262218 /// <param name="player"></param>
263219 /// <param name="response"></param>
264- public static void ParseResponse ( Player player , IItemData response )
220+ public static void ParseResponse ( Exiled . API . Features . Player player , IItemData response )
265221 {
266222 if ( response . ConsoleMessage is not null && response . ConsoleMessage . Length > 1 ) // FUCK 1 char messages!
267223 {
@@ -436,7 +392,18 @@ internal static void SummonCustomItem(ICustomItem CustomItem)
436392 ZoneType Zone = Spawn . Zones . RandomItem ( ) ;
437393 if ( Spawn . ReplaceExistingPickup )
438394 {
439- List < Pickup > FilteredPickups = Pickup . List . Where ( pickup => pickup . Room . Zone == Zone && ! IsSummonedCustomItem ( pickup . Serial ) ) . ToList ( ) ;
395+ List < Exiled . API . Features . Pickups . Pickup > FilteredPickups = [ ] ;
396+ List < uint > pedestalitems = [ ] ;
397+ foreach ( PedestalLocker pedestalLocker in PedestalLocker . List )
398+ {
399+ LabApi . Features . Wrappers . Pickup pickup = pedestalLocker . GetAllItems ( ) . FirstOrDefault ( ) ;
400+ pedestalitems . Add ( pickup . Serial ) ;
401+ }
402+
403+ if ( Spawn . ReplaceItemsInPedestals ?? false )
404+ FilteredPickups = Exiled . API . Features . Pickups . Pickup . List . Where ( pickup => pickup . Room != null && pickup . Room . Zone == Zone && ! IsSummonedCustomItem ( pickup . Serial ) ) . ToList ( ) ;
405+ else
406+ FilteredPickups = Exiled . API . Features . Pickups . Pickup . List . Where ( pickup => pickup . Room != null && pickup . Room . Zone == Zone && ! pedestalitems . Contains ( pickup . Serial ) && ! IsSummonedCustomItem ( pickup . Serial ) ) . ToList ( ) ;
440407
441408 if ( Spawn . ForceItem )
442409 FilteredPickups = FilteredPickups . Where ( pickup => pickup . Type == CustomItem . Item ) . ToList ( ) ;
@@ -449,7 +416,7 @@ internal static void SummonCustomItem(ICustomItem CustomItem)
449416 }
450417 else
451418 {
452- new SummonedCustomItem ( CustomItem , Room . List . Where ( room => room . Zone == Zone ) . ToList ( ) . RandomItem ( ) . Position ) ;
419+ new SummonedCustomItem ( CustomItem , Exiled . API . Features . Room . List . Where ( room => room . Zone == Zone ) . ToList ( ) . RandomItem ( ) . Position ) ;
453420 }
454421 }
455422 }
@@ -460,7 +427,7 @@ internal static void SummonCustomItem(ICustomItem CustomItem)
460427 /// <param name="player"></param>
461428 /// <param name="Data"></param>
462429 /// <returns></returns>
463- internal static IEnumerator < float > PainkillersCoroutine ( Player player , IPainkillersData Data )
430+ internal static IEnumerator < float > PainkillersCoroutine ( Exiled . API . Features . Player player , IPainkillersData Data )
464431 {
465432 float TotalHealed = 0 ;
466433 yield return Timing . WaitForSeconds ( Data . TimeBeforeStartHealing ) ;
0 commit comments