public static EffectException GetException(Ingredient ingredient, Effect effect) { return(exceptions.Find(e => e.ingredient == ingredient.name && e.effect == effect.name)); }
float GetPoisonerPerk(Effect effect) { return(!effect.beneficial && poisonerPerk && HighestValueEffect.poisonous ? 25.0f : 0); }
float GetRelativeValue(Effect effect) { #region magnitude float mag = effect.baseMag; if (effect.powerAffectsMagnitude) { mag = effect.baseMag; mag *= fAlchemyIngredientInitMult; mag *= (1.0f + (fAlchemySkillFactor - 1.0f) * (alchemySkill / 100.0f)); //* (1.0f + (alchemySkill / 200.0f)) mag *= (1.0f + fortifyAlchemy / 100.0f); mag *= (1.0f + alchemistPerk / 100.0f); mag *= (1.0f + GetPhysicianPerk(effect) / 100.0f); mag *= (1.0f + (seekerOfShadows ? 10.0f : 0) / 100.0f); } //apply exception IEnumerable <EffectException> exceptions = this.exceptions.Where(e => e.effect == effect.name); if (exceptions != null && exceptions.Count() > 0) { float multiplier = exceptions.Max(e => e.magnitude); if (multiplier == 1) { multiplier = exceptions.Min(e => e.magnitude); } mag *= multiplier; } #endregion #region duration float durCalcFactor = 1.0f; if (effect.baseDur == 0 || effect.baseDur < 0) { durCalcFactor = 1.0f; } if (effect.powerAffectsDuration) { durCalcFactor = fAlchemyIngredientInitMult * (1.0f + (fAlchemySkillFactor - 1.0f) * (float)alchemySkill / 100.0f) * (1.0f + (float)fortifyAlchemy / 100.0f) * (1.0f + (float)alchemistPerk / 100.0f) * (1.0f + GetPhysicianPerk(effect) / 100.0f); } float dur = effect.baseDur * durCalcFactor; #endregion float magnitudeFactor = 1.0f, durationFactor = 1.0f; if (mag > 0) { magnitudeFactor = mag; } if (dur > 0) { durationFactor = dur / 10.0f; } float value = effect.baseCost * (float)Math.Pow(magnitudeFactor * durationFactor, 1.1); //apply exception if (exceptions != null && exceptions.Count() > 0) { float multiplier = exceptions.Max(e => e.value); if (multiplier == 1) { multiplier = exceptions.Min(e => e.value); } value *= multiplier; } return(value); }
float GetBenefactorPerk(Effect effect) { return(effect.beneficial && benefactorPerk && HighestValueEffect.beneficial ? 25.0f : 0); }