public static void RemoveWeaponTrait(this CompBladelinkWeapon compBladelink, WeaponTraitDef traitDef) { List <WeaponTraitDef> curTraits = compBladelink.TraitsListForReading; curTraits.Remove(traitDef); typeof(CompBladelinkWeapon).GetField("traits", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(compBladelink, curTraits); }
public static void AddWeaponTrait(this CompBladelinkWeapon compBladelink, WeaponTraitDef traitDef) { List <WeaponTraitDef> curTraits = compBladelink.TraitsListForReading; if (!curTraits.Contains(traitDef)) { curTraits.Add(traitDef); } typeof(CompBladelinkWeapon).GetField("traits", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(compBladelink, curTraits); }
public static bool CanAddWeaponTrait(this CompBladelinkWeapon compBladelink, WeaponTraitDef traitDef) { List <WeaponTraitDef> curTraits = compBladelink.TraitsListForReading; if (curTraits.NullOrEmpty <WeaponTraitDef>()) { return(true); } for (int i = 0; i < curTraits.Count; i++) { if (traitDef.Overlaps(curTraits[i])) { return(false); } } return(true); }