using System.Collections.Generic; public class RoundsInInventory : RequirementBase { private static Dictionary cached = new Dictionary(); public static bool TryGetValue(string ammoName, out ItemValue ammoValue) { if (!cached.TryGetValue(ammoName, out ammoValue)) { ammoValue = ItemClass.GetItem(ammoName, false); if (ammoValue == null) return false; cached.Add(ammoName, ammoValue); } return true; } public override bool IsValid(MinEventParams _params) { if (!this.ParamsValid(_params)) return invert; ItemValue itemValue = _params.ItemValue; if (itemValue.IsEmpty() || !(_params.ItemActionData is ItemActionRanged.ItemActionDataRanged _rangedData)) return invert; string ammoName = ((ItemActionRanged)itemValue.ItemClass.Actions[_rangedData.indexInEntityOfAction]).MagazineItemNames[itemValue.SelectedAmmoTypeIndex]; if (TryGetValue(ammoName, out var ammoValue)) return compareValues(_params.Self.GetItemCount(ammoValue), this.operation, this.value) ^ invert; return invert; } }