From 419e541dd8d722de950740518efe8ecbee24513c Mon Sep 17 00:00:00 2001
From: Yamato <66829532+louis1706@users.noreply.github.com>
Date: Sat, 30 May 2026 13:52:11 +0200
Subject: [PATCH 1/2] AmmoItemType addition
---
EXILED/Exiled.API/Enums/AmmoType.cs | 5 +++++
EXILED/Exiled.API/Extensions/ItemExtensions.cs | 3 ++-
EXILED/Exiled.API/Features/Items/Firearm.cs | 1 +
.../Items/FirearmModules/Primary/CylinderMagazine.cs | 7 +++++++
.../Items/FirearmModules/Primary/NormalMagazine.cs | 8 +++++++-
.../Items/FirearmModules/Primary/PrimaryMagazine.cs | 6 +++++-
EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs | 12 ++++++++++++
7 files changed, 39 insertions(+), 3 deletions(-)
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..b1a1adf505 100644
--- a/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs
+++ b/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs
@@ -9,6 +9,7 @@ namespace Exiled.API.Features.Pickups
{
using System;
+ using Exiled.API.Enums;
using Exiled.API.Interfaces;
using InventorySystem.Items;
using InventorySystem.Items.Firearms;
@@ -54,6 +55,16 @@ internal FirearmPickup(ItemType type)
[Obsolete("Feature deprecated")]
public bool IsDistributed { get; }
+ ///
+ /// Gets or sets the .
+ ///
+ public AmmoType AmmoType { get; set; }
+
+ ///
+ /// Gets or sets the .
+ ///
+ public ItemType AmmoItemType { get; set; }
+
///
/// Gets or sets a value indicating how much ammo can contain this .
///
@@ -154,6 +165,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;
From af8d428a4855a050aad05a48347c6a3f9caf4e27 Mon Sep 17 00:00:00 2001
From: Yamato <66829532+louis1706@users.noreply.github.com>
Date: Sat, 30 May 2026 13:55:23 +0200
Subject: [PATCH 2/2] miss this part
---
EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs b/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs
index b1a1adf505..96f03e2352 100644
--- a/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs
+++ b/EXILED/Exiled.API/Features/Pickups/FirearmPickup.cs
@@ -10,6 +10,7 @@ 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;
@@ -58,7 +59,11 @@ internal FirearmPickup(ItemType type)
///
/// Gets or sets the .
///
- public AmmoType AmmoType { get; set; }
+ public AmmoType AmmoType
+ {
+ get => AmmoItemType.GetAmmoType();
+ set => AmmoItemType = value.GetItemType();
+ }
///
/// Gets or sets the .