diff --git a/EXILED/Exiled.Events/EventArgs/Player/ChangingRoleEventArgs.cs b/EXILED/Exiled.Events/EventArgs/Player/ChangingRoleEventArgs.cs index 052fff48c..5263ee7f5 100644 --- a/EXILED/Exiled.Events/EventArgs/Player/ChangingRoleEventArgs.cs +++ b/EXILED/Exiled.Events/EventArgs/Player/ChangingRoleEventArgs.cs @@ -15,6 +15,8 @@ namespace Exiled.Events.EventArgs.Player using Exiled.API.Features.Pools; using Interfaces; using InventorySystem; + using LabApi.Events.Arguments.PlayerEvents; + using LabApi.Events.Handlers; using PlayerRoles; /// @@ -72,10 +74,17 @@ public RoleTypeId NewRole Items.Clear(); Ammo.Clear(); - foreach (ItemType itemType in inventory.Items) + PlayerReceivingLoadoutEventArgs playerReceivingLoadoutEventArgs = new(Player.ReferenceHub, inventory.Items, inventory.Ammo, !ShouldPreserveInventory); + PlayerEvents.OnReceivingLoadout(playerReceivingLoadoutEventArgs); + if (!playerReceivingLoadoutEventArgs.IsAllowed) + { + return; + } + + foreach (ItemType itemType in playerReceivingLoadoutEventArgs.Items) Items.Add(itemType); - foreach (KeyValuePair ammoPair in inventory.Ammo) + foreach (KeyValuePair ammoPair in playerReceivingLoadoutEventArgs.Ammo) Ammo.Add(ammoPair.Key, ammoPair.Value); field = value; diff --git a/EXILED/Exiled.Events/Patches/Events/Player/ChangingRoleAndSpawned.cs b/EXILED/Exiled.Events/Patches/Events/Player/ChangingRoleAndSpawned.cs index ae3bf2a26..5a0768d7f 100644 --- a/EXILED/Exiled.Events/Patches/Events/Player/ChangingRoleAndSpawned.cs +++ b/EXILED/Exiled.Events/Patches/Events/Player/ChangingRoleAndSpawned.cs @@ -23,6 +23,8 @@ namespace Exiled.Events.Patches.Events.Player using InventorySystem.Items.Armor; using InventorySystem.Items.Pickups; using InventorySystem.Items.Usables.Scp1344; + using LabApi.Events.Arguments.PlayerEvents; + using LabApi.Events.Handlers; using Mirror; using PlayerRoles; @@ -230,6 +232,7 @@ private static void ChangeInventory(ChangingRoleEventArgs ev) InventoryItemProvider.OnItemProvided?.Invoke(ev.Player.ReferenceHub, itemBase); } + PlayerEvents.OnReceivedLoadout(new PlayerReceivedLoadoutEventArgs(ev.Player.ReferenceHub, ev.Items, ev.Ammo, !ev.ShouldPreserveInventory)); InventoryItemProvider.InventoriesToReplenish.Enqueue(ev.Player.ReferenceHub); } catch (Exception exception)