private void FillSurvivalBonusesFromPerks([NotNull, ItemNotNull] ref List <SurvivalStatBonus> bonusList) { if (EvolutionData == null) { return; } var archievedPerks = EvolutionData.GetArchievedPerks(); foreach (var archievedPerk in archievedPerks) { var currentLevel = archievedPerk.CurrentLevel; var currentLevelScheme = archievedPerk.Scheme.Levels[currentLevel.Primary]; if (currentLevelScheme.Rules == null) { continue; } for (var i = 0; i <= currentLevel.Sub; i++) { foreach (var rule in currentLevelScheme.Rules) { if (rule.Type == PersonRuleType.Health) { BonusToHealth(rule.Level, PersonRuleDirection.Positive, ref bonusList); } } } } }
private IEnumerable <IPerk> GetPerksSafe() { var perks = EvolutionData?.GetArchievedPerks(); if (perks == null) { perks = new IPerk[0]; } return(perks); }
/// <summary> /// Расчёт бонусов, которые дают перки. /// </summary> /// <param name="bonusDict"> Текущее состояние бонусов. </param> private void CalcPerkBonuses(Dictionary <SkillStatType, float> bonusDict) { var archievedPerks = EvolutionData.GetArchievedPerks(); foreach (var archievedPerk in archievedPerks) { var currentLevel = archievedPerk.CurrentLevel; var currentLevelScheme = archievedPerk.Scheme.Levels[currentLevel.Primary]; if (currentLevelScheme.Rules == null) { continue; } for (var i = 0; i <= currentLevel.Sub; i++) { foreach (var rule in currentLevelScheme.Rules) { CalcRuleBonuses(rule, bonusDict); } } } }