public static bool HasWeaponDefaults(this MechDef mech, ChassisLocations location) { if (mech == null) { return(false); } if (!have_defaults.TryGetValue(mech.ChassisID, out var result)) { Control.LogDebug(DType.WeaponDefaults, $"Build Weapon Defaults for {mech.ChassisID}"); result = ChassisLocations.None; var defs = mech.GetWeaponDefaults(); if (defs != null) { var list = defs.ToList(); foreach (var wd in list) { Control.LogDebug(DType.WeaponDefaults, $"-- add {wd.Location}"); result = result.Set(wd.Location); } Control.LogDebug(DType.WeaponDefaults, $"- complete - {result}"); } else { Control.LogDebug(DType.WeaponDefaults, $"- no defaults - {result}"); } have_defaults[mech.ChassisID] = result; } Control.LogDebug(DType.WeaponDefaults, $"HasWeaponDefaults {result} - {location} - {result.HasFlag(location)}"); return(result.HasFlag(location)); }