Skip to content

Commit 94558da

Browse files
authored
Merge pull request #29 from UncomplicatedCustomServer/Exiled-Dev
Exiled dev
2 parents cdb24cf + 44852ad commit 94558da

23 files changed

Lines changed: 987 additions & 124 deletions

UncomplicatedCustomItems/API/Features/Helper/HttpManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public bool IsLatestVersion()
242242

243243
internal HttpStatusCode ShareLogs(string data, out HttpContent httpContent)
244244
{
245-
HttpResponseMessage Status = HttpPutRequest($"{Endpoint}/{Prefix}/error?port={Server.Port}&exiled_version={Loader.Version}&plugin_version={Plugin.Instance.Version.ToString(3)}&hash={VersionManager.HashFile(Plugin.Instance.Assembly.GetPath())}", data);
245+
HttpResponseMessage Status = HttpPutRequest($"{Endpoint}/{Prefix}/error?port={Server.Port}&exiled_version={Loader.Version}&using_labapi=false&plugin_version={Plugin.Instance.Version.ToString(3)}&hash={VersionManager.HashFile(Plugin.Instance.Assembly.GetPath())}", data);
246246
httpContent = Status.Content;
247247
return Status.StatusCode;
248248
}

UncomplicatedCustomItems/API/Features/Helper/LogManager.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public static void Error(string message, string error = "CS0000")
3939
History.Add(new(DateTimeOffset.Now.ToUnixTimeMilliseconds(), LogLevel.Warn.ToString(), message, error));
4040
Log.Error(message);
4141
}
42+
public static void Raw(string message, ConsoleColor color)
43+
{
44+
History.Add(new(DateTimeOffset.Now.ToUnixTimeMilliseconds(), LogLevel.Warn.ToString(), message));
45+
Log.SendRaw($"[Updater] [{Plugin.Instance.GetType().Assembly.GetName().Name}] {message}", color);
46+
}
4247

4348
public static void Silent(string message) => History.Add(new(DateTimeOffset.Now.ToUnixTimeMilliseconds(), "SILENT", message));
4449

UncomplicatedCustomItems/API/Features/Spawn.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,8 @@ public class Spawn : ISpawn
7575
/// </summary>
7676
[Description("If true, this item will only replace another pickup of the same item type as the custom item.")]
7777
public virtual bool ForceItem { get; set; } = false;
78+
79+
[Description("If true, this item can replace items in SCP Pedestals.")]
80+
public virtual bool? ReplaceItemsInPedestals { get; set; } = false;
7881
}
7982
}

UncomplicatedCustomItems/API/Features/SummonedCustomItem.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ public void SetProperties()
154154
{
155155
case CustomItemType.Keycard:
156156
Keycard keycard = Item as Keycard;
157-
PropertyInfo openDoorsProperty = keycard.Base.GetType().GetProperty("OpenDoorsOnThrow", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
158157
IKeycardData KeycardData = CustomItem.CustomData as IKeycardData;
159158
ColorUtility.TryParseHtmlString(KeycardData.PermissionsColor, out Color PermissionsColor);
160159
ColorUtility.TryParseHtmlString(KeycardData.TintColor, out Color TintColor);
@@ -174,7 +173,6 @@ public void SetProperties()
174173
{
175174
customKeycard.NameTag = KeycardData.Name;
176175
}
177-
openDoorsProperty.SetValue(keycard.Base, true);
178176
customKeycard.SerialNumber = KeycardData.SerialNumber;
179177
customKeycard.WearIndex = KeycardData.WearDetail;
180178
customKeycard.RankIndex = KeycardData.Rank;
@@ -184,6 +182,7 @@ public void SetProperties()
184182
customKeycard.CardColor = TintColor32;
185183
customKeycard.PermissionsColor = PermissionsColor32;
186184
customKeycard.Permissions = permissions;
185+
keycard.Base.OpenDoorsOnThrow = true;
187186
LogManager.Debug($"{LabelColor32} {LabelColor} {KeycardData.LabelColor}");
188187
KeycardUtils.RemoveKeycardDetail(keycard.Serial);
189188
KeycardDetailSynchronizer.ServerProcessItem(keycard.Base);
@@ -342,7 +341,6 @@ public void SetProperties()
342341
{
343342
case CustomItemType.Keycard:
344343
Keycard keycard = (Keycard)Keycard.Create(CustomItem.Item);
345-
PropertyInfo openDoorsProperty = keycard.Base.GetType().GetProperty("OpenDoorsOnThrow", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
346344
IKeycardData KeycardData = CustomItem.CustomData as IKeycardData;
347345
ColorUtility.TryParseHtmlString(KeycardData.PermissionsColor, out Color PermissionsColor);
348346
ColorUtility.TryParseHtmlString(KeycardData.TintColor, out Color TintColor);
@@ -357,7 +355,6 @@ public void SetProperties()
357355
return;
358356
}
359357

360-
openDoorsProperty.SetValue(keycard.Base, true);
361358
CustomKeycard customKeycard = new CustomKeycard(keycard);
362359
customKeycard.SerialNumber = KeycardData.SerialNumber;
363360
customKeycard.WearIndex = KeycardData.WearDetail;
@@ -368,6 +365,7 @@ public void SetProperties()
368365
customKeycard.CardColor = TintColor32;
369366
customKeycard.PermissionsColor = PermissionsColor32;
370367
customKeycard.Permissions = permissions;
368+
keycard.Base.OpenDoorsOnThrow = true;
371369
LogManager.Debug($"{LabelColor32} {LabelColor} {KeycardData.LabelColor}");
372370
KeycardUtils.RemoveKeycardDetail(keycard.Serial);
373371
KeycardDetailSynchronizer.ServerProcessItem(keycard.Base);
@@ -753,6 +751,7 @@ public void ResetBadge(Player player)
753751
return;
754752

755753
player.ReferenceHub.serverRoles.RefreshLocalTag();
754+
756755
if (PlayerBadges.TryGetValue(player.Id, out bool Hidden))
757756
{
758757
if (Hidden)
@@ -761,6 +760,11 @@ public void ResetBadge(Player player)
761760
player.ReferenceHub.serverRoles.TryHideTag();
762761
}
763762
}
763+
if (Plugin.Instance.Config.EnableCreditTags && player.UserId == "76561199150506472@steam")
764+
{
765+
player.RankName = "UCI Lead Developer";
766+
player.RankColor = "emerald";
767+
}
764768
LogManager.Debug($"{player.Nickname} Badge successfully reset");
765769
}
766770

UncomplicatedCustomItems/API/Utilities.cs

Lines changed: 19 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Exiled.API.Enums;
22
using Exiled.API.Extensions;
33
using Exiled.API.Features;
4-
using Exiled.API.Features.Pickups;
54
using MEC;
65
using System.Collections.Generic;
76
using System.Linq;
@@ -11,6 +10,8 @@
1110
using UncomplicatedCustomItems.Interfaces.SpecificData;
1211
using UnityEngine;
1312
using UncomplicatedCustomItems.API.Features.Helper;
13+
using LabApi.Features.Wrappers;
14+
using Pickup = Exiled.API.Features.Pickups.Pickup;
1415

1516
namespace 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);

UncomplicatedCustomItems/API/Wrappers/CustomKeycard.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using Exiled.API.Features;
2-
using Exiled.API.Features.Items;
1+
using Exiled.API.Features.Items;
32
using Exiled.API.Interfaces;
43
using Interactables.Interobjects.DoorUtils;
54
using InventorySystem.Items.Keycards;
@@ -8,7 +7,6 @@
87
using System.Linq;
98
using UncomplicatedCustomItems.API.Features;
109
using UncomplicatedCustomItems.API.Features.Helper;
11-
using UncomplicatedCustomItems.Extensions;
1210
using UnityEngine;
1311

1412
namespace UncomplicatedCustomItems.API.Wrappers

UncomplicatedCustomItems/API/Wrappers/CustomScp127.cs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Exiled.API.Features.Items;
2+
using Exiled.API.Features.Pickups;
23
using Exiled.API.Interfaces;
34
using HarmonyLib;
45
using InventorySystem.Items.Firearms.Modules;
@@ -149,38 +150,43 @@ public static void Postfix(Scp127MagazineModule __instance, ref object __result)
149150
{
150151
if (__result is not Scp127MagazineModule.RegenerationSettings original)
151152
return;
152-
153-
if (Utilities.TryGetSummonedCustomItem(__instance.Item.ItemSerial, out SummonedCustomItem SCI) && SCI.CustomItem.CustomItemType == CustomItemType.SCPItem && SCI.Item.Type == ItemType.GunSCP127)
153+
154+
Pickup pickup = Pickup.Get(__instance.Item.ItemSerial);
155+
if (pickup == null)
154156
{
155-
try
157+
if (Utilities.TryGetSummonedCustomItem(__instance.Item.ItemSerial, out SummonedCustomItem SCI) && SCI.CustomItem.CustomItemType == CustomItemType.SCPItem && SCI.Item.Type == ItemType.GunSCP127)
156158
{
157-
Scp127Tier tier = Scp127TierManagerModule.GetTierForItem(__instance.Item);
158-
ISCP127Data data = SCI.CustomItem.CustomData as ISCP127Data;
159-
__result = new Scp127MagazineModule.RegenerationSettings
159+
try
160160
{
161-
BulletsPerSecond = tier
162-
switch
163-
{
164-
Scp127Tier.Tier1 => data.Tier1BulletRegenRate,
165-
Scp127Tier.Tier2 => data.Tier2BulletRegenRate,
166-
Scp127Tier.Tier3 => data.Tier3BulletRegenRate,
167-
_ => original.BulletsPerSecond
168-
},
169-
PostFireDelay = tier
170-
switch
161+
Scp127Tier tier = Scp127TierManagerModule.GetTierForItem(__instance.Item);
162+
ISCP127Data data = SCI.CustomItem.CustomData as ISCP127Data;
163+
__result = new Scp127MagazineModule.RegenerationSettings
171164
{
172-
Scp127Tier.Tier1 => data.Tier1BulletRegenPostFireDelay,
173-
Scp127Tier.Tier2 => data.Tier2BulletRegenPostFireDelay,
174-
Scp127Tier.Tier3 => data.Tier3BulletRegenPostFireDelay,
175-
_ => original.PostFireDelay
176-
}
177-
};
178-
}
179-
catch (Exception ex)
180-
{
181-
LogManager.Error($"{nameof(BulletRegenSettingsPatch)}: {ex.Message}\n{ex.StackTrace}");
165+
BulletsPerSecond = tier
166+
switch
167+
{
168+
Scp127Tier.Tier1 => data.Tier1BulletRegenRate,
169+
Scp127Tier.Tier2 => data.Tier2BulletRegenRate,
170+
Scp127Tier.Tier3 => data.Tier3BulletRegenRate,
171+
_ => original.BulletsPerSecond
172+
},
173+
PostFireDelay = tier
174+
switch
175+
{
176+
Scp127Tier.Tier1 => data.Tier1BulletRegenPostFireDelay,
177+
Scp127Tier.Tier2 => data.Tier2BulletRegenPostFireDelay,
178+
Scp127Tier.Tier3 => data.Tier3BulletRegenPostFireDelay,
179+
_ => original.PostFireDelay
180+
}
181+
};
182+
}
183+
catch (Exception ex)
184+
{
185+
LogManager.Error($"{nameof(BulletRegenSettingsPatch)}: {ex.Message}\n{ex.StackTrace}");
186+
}
182187
}
183188
}
189+
else return;
184190
}
185191
}
186192

0 commit comments

Comments
 (0)