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;