diff --git a/EXILED/Exiled.API/Enums/AmmoType.cs b/EXILED/Exiled.API/Enums/AmmoType.cs index 506d3067de..cad8ceb9f2 100644 --- a/EXILED/Exiled.API/Enums/AmmoType.cs +++ b/EXILED/Exiled.API/Enums/AmmoType.cs @@ -49,5 +49,10 @@ public enum AmmoType /// Used by /// Ammo44Cal, + + /// + /// Custom has been modified by a plugin + /// + Custom, } } \ No newline at end of file diff --git a/EXILED/Exiled.API/Extensions/ItemExtensions.cs b/EXILED/Exiled.API/Extensions/ItemExtensions.cs index d9ff6df0de..462e1a47b4 100644 --- a/EXILED/Exiled.API/Extensions/ItemExtensions.cs +++ b/EXILED/Exiled.API/Extensions/ItemExtensions.cs @@ -167,7 +167,8 @@ public static int GetMaxAmmo(this FirearmType item) ItemType.Ammo762x39 => AmmoType.Nato762, ItemType.Ammo12gauge => AmmoType.Ammo12Gauge, ItemType.Ammo44cal => AmmoType.Ammo44Cal, - _ => AmmoType.None, + ItemType.None => AmmoType.None, + _ => AmmoType.Custom, }; /// diff --git a/EXILED/Exiled.API/Features/Items/Firearm.cs b/EXILED/Exiled.API/Features/Items/Firearm.cs index b97a8673bd..223874a4bd 100644 --- a/EXILED/Exiled.API/Features/Items/Firearm.cs +++ b/EXILED/Exiled.API/Features/Items/Firearm.cs @@ -813,6 +813,7 @@ internal override void ReadPickupInfoBefore(Pickup pickup) if (pickup is FirearmPickup firearmPickup) { PrimaryMagazine.MaxAmmo = firearmPickup.MaxAmmo; + PrimaryMagazine.AmmoItemType = firearmPickup.AmmoItemType; AmmoDrain = firearmPickup.AmmoDrain; Damage = firearmPickup.Damage; Inaccuracy = firearmPickup.Inaccuracy; diff --git a/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/CylinderMagazine.cs b/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/CylinderMagazine.cs index 2beedd7bb7..fcb6a78dfc 100644 --- a/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/CylinderMagazine.cs +++ b/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/CylinderMagazine.cs @@ -62,6 +62,13 @@ public override AmmoType AmmoType set => CylinderModule.AmmoType = value.GetItemType(); } + /// + public override ItemType AmmoItemType + { + get => Magazine.AmmoType; + set => CylinderModule.AmmoType = value; + } + /// /// Gets a of chambers in cylindric magazine. /// diff --git a/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/NormalMagazine.cs b/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/NormalMagazine.cs index 6c4bb19c28..4543e0c5a8 100644 --- a/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/NormalMagazine.cs +++ b/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/NormalMagazine.cs @@ -60,10 +60,16 @@ public override int Ammo public override AmmoType AmmoType { get => Magazine.AmmoType.GetAmmoType(); - set => MagazineModule._ammoType = value.GetItemType(); } + /// + public override ItemType AmmoItemType + { + get => Magazine.AmmoType; + set => MagazineModule._ammoType = value; + } + /// /// Gets or sets a value indicating whether magazine is inserted. /// diff --git a/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/PrimaryMagazine.cs b/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/PrimaryMagazine.cs index 39ff428556..ab199319b3 100644 --- a/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/PrimaryMagazine.cs +++ b/EXILED/Exiled.API/Features/Items/FirearmModules/Primary/PrimaryMagazine.cs @@ -10,7 +10,6 @@ namespace Exiled.API.Features.Items.FirearmModules.Primary using System; using Exiled.API.Enums; - using Exiled.API.Extensions; using InventorySystem.Items.Firearms.Modules; @@ -59,5 +58,10 @@ public override int Ammo /// Gets or sets an used for this magazine. /// public abstract AmmoType AmmoType { get; set; } + + /// + /// Gets or sets an used for this magazine. + /// + public abstract ItemType AmmoItemType { get; set; } } } diff --git a/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs b/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs index 66ad5633db..96f03e2352 100644 --- a/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs +++ b/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs @@ -9,6 +9,8 @@ namespace Exiled.API.Features.Pickups { using System; + using Exiled.API.Enums; + using Exiled.API.Extensions; using Exiled.API.Interfaces; using InventorySystem.Items; using InventorySystem.Items.Firearms; @@ -54,6 +56,20 @@ internal FirearmPickup(ItemType type) [Obsolete("Feature deprecated")] public bool IsDistributed { get; } + /// + /// Gets or sets the . + /// + public AmmoType AmmoType + { + get => AmmoItemType.GetAmmoType(); + set => AmmoItemType = value.GetItemType(); + } + + /// + /// Gets or sets the . + /// + public ItemType AmmoItemType { get; set; } + /// /// Gets or sets a value indicating how much ammo can contain this . /// @@ -154,6 +170,7 @@ internal override void ReadItemInfo(Items.Item item) if (item is Items.Firearm firearm) { MaxAmmo = firearm.PrimaryMagazine.ConstantMaxAmmo; + AmmoItemType = firearm.PrimaryMagazine.AmmoItemType; AmmoDrain = firearm.AmmoDrain; Damage = firearm.Damage; Inaccuracy = firearm.Inaccuracy;