private double CalculateDesire(Character character) { double quality = character.GetAttribute(AttributeType.Communication).Value + 6; // assuming someone half as skilled as the book provides double expValue = Level * (Level + 1) / 4.0; double bookSeasons = expValue / quality; double value = character.RateSeasonalExperienceGain(Topic, quality) * bookSeasons; double seasons = Level / (character.GetAttribute(AttributeType.Communication).Value + character.GetAbility(Abilities.Latin).Value); if (!_isArt) { seasons *= 5; } return value / seasons; }