diff --git a/Libraries/Core/Generators/BotWeaponGenerator.cs b/Libraries/Core/Generators/BotWeaponGenerator.cs
index 57df2fc1..61d5ca04 100644
--- a/Libraries/Core/Generators/BotWeaponGenerator.cs
+++ b/Libraries/Core/Generators/BotWeaponGenerator.cs
@@ -687,19 +687,27 @@ public class BotWeaponGenerator(
///
/// Weapon db template to get magazine cartridges for
/// Hashset of cartridge tpls
+ /// Thrown when weaponTemplate is null.
protected HashSet GetCompatibleCartridgesFromMagazineTemplate(TemplateItem weaponTemplate) {
- // Get the first magazine's template from the weapon
- var magazineSlot = weaponTemplate.Properties.Slots.FirstOrDefault((slot) => slot.Name == "mod_magazine");
- var magazineTemplate = _itemHelper.GetItem(magazineSlot.Props.Filters[0].Filter.FirstOrDefault());
+ ArgumentNullException.ThrowIfNull(weaponTemplate);
- // Get the first slots array of cartridges
- var cartridges = magazineTemplate.Value.Properties.Slots[0]?.Props?.Filters[0]?.Filter;
- if (cartridges is null) {
- // Normal magazines
- // None found, try the cartridges array
- cartridges = magazineTemplate.Value.Properties.Cartridges[0]?.Props?.Filters[0]?.Filter;
+ // Get the first magazine's template from the weapon
+ var magazineSlot = weaponTemplate.Properties.Slots?.FirstOrDefault(slot => slot.Name == "mod_magazine");
+ if (magazineSlot is null)
+ {
+ return [];
}
+ var magazineTemplate = _itemHelper.GetItem(magazineSlot.Props?.Filters.FirstOrDefault()?.Filter?.FirstOrDefault());
+ if (!magazineTemplate.Key)
+ {
+ return [];
+ }
+
+ // Try to get cartridges from slots array first, if none found, try Cartridges array
+ var cartridges = magazineTemplate.Value.Properties.Slots[0]?.Props?.Filters.FirstOrDefault()?.Filter
+ ?? magazineTemplate.Value.Properties.Cartridges[0]?.Props?.Filters.FirstOrDefault()?.Filter;
+
return cartridges;
}