public bool HasAbility(AbilityDef abilityDef) { foreach (Abilities.Ability learnedAbility in this.learnedAbilities) { if (learnedAbility.def == abilityDef) { return(true); } } return(false); }
public void GiveAbility(AbilityDef abilityDef) { if (this.learnedAbilities.Any(ab => ab.def == abilityDef)) { return; } Abilities.Ability ability = (Abilities.Ability)Activator.CreateInstance(abilityDef.abilityClass); ability.def = abilityDef; ability.pawn = this.Pawn; ability.holder = this.Pawn; ability.Init(); this.learnedAbilities.Add(ability); this.learnedAbilities = this.LearnedAbilities.OrderBy(ab => ab.def.requiredHediff?.minimumLevel ?? 0).GroupBy(ab => ab.Hediff).SelectMany(grp => grp).ToList(); }
public virtual bool SatisfiesConditionForAbility(AbilityDef abilityDef) => this.level >= abilityDef.requiredHediff.minimumLevel;