Пример #1
0
 public AHelper(Magus mage, uint ageToCompleteBy, double desire, ushort conditionDepth, CalculateDesireFunc desireFunc = null)
 {
     Mage = mage;
     AgeToCompleteBy = ageToCompleteBy;
     Desire = desire;
     ConditionDepth = conditionDepth;
     _desireFunc = desireFunc;
 }
Пример #2
0
 public VisCondition(Magus magus, uint ageToCompleteBy, double desire, List<Ability> abilities, double totalNeeded, ushort conditionDepth)
     : base(magus, ageToCompleteBy, desire, conditionDepth)
 {
     _mage = magus;
     VisTypes = abilities;
     AmountNeeded = totalNeeded;
     HasAuraCondition auraCondition = new HasAuraCondition(_mage, AgeToCompleteBy - 2, Desire, (ushort)(ConditionDepth + 2));
     HasLabCondition labCondition = new HasLabCondition(_mage, AgeToCompleteBy - 1, Desire, (ushort)(ConditionDepth + 1));
     _vimSufficient = VisTypes.Contains(MagicArts.Vim);
 }
Пример #3
0
 public LongevityRitualGoal(Magus magus, uint? ageToCompleteBy, double desire)
     : base(magus, ageToCompleteBy, desire)
 {
 }
Пример #4
0
        public void ModifyActionList(Magus mage, ConsideredActions alreadyConsidered, IList<string> log)
        {
            double dueDateDesire = _desirePerPoint / (Tier + 1);
            if (DueDate != null)
            {
                if (DueDate == 0)
                {
                    log.Add("Has Covenant Condition failed");
                    return;
                }
                dueDateDesire /= (double)DueDate;
            }

            double currentAura = mage.Covenant.Aura.Strength;
            double auraCount = mage.KnownAuras.Count;
            double areaLore = mage.GetAbility(Abilities.AreaLore).Value;
            areaLore += mage.GetCastingTotal(MagicArtPairs.InVi) / 10;
            areaLore += mage.GetAttribute(AttributeType.Perception).Value;
            double probOfBetter = 1 - (currentAura * currentAura * auraCount / (5 * areaLore));
            double maxAura = Math.Sqrt(5.0 * areaLore / auraCount);
            double averageGain = maxAura * probOfBetter / 2.0;

            if (probOfBetter > 0)
            {
                double desire = dueDateDesire * averageGain;
                log.Add("Finding a better aura to build a lab in worth " + desire.ToString("0.00"));
                alreadyConsidered.Add(new FindAura(Abilities.AreaLore, desire));
            }
        }
Пример #5
0
 public HasLabCondition(Magus magus, uint ageToCompleteBy, double desire, ushort conditionDepth = 1)
     : base(magus, ageToCompleteBy, desire, conditionDepth)
 {
     _mage = magus;
 }
 public LabTotalIncreaseHelper(Magus mage, uint ageToCompleteBy, double desirePerPoint, ushort conditionDepth, ArtPair arts, bool allowVimVisUse, CalculateDesireFunc desireFunc)
     : base(mage, ageToCompleteBy, desirePerPoint, conditionDepth, arts, allowVimVisUse, desireFunc)
 {
 }
Пример #7
0
 public CastingTotalIncreaseHelper(Magus mage, uint ageToCompleteBy, double desirePerPoint, ushort conditionDepth, ArtPair arts, bool allowVimVisUse, CalculateDesireFunc desireFunc) :
     base(mage, ageToCompleteBy, desirePerPoint, conditionDepth, arts, allowVimVisUse, desireFunc)
 {
 }
Пример #8
0
        public static void BuildVerditius()
        {
            Verditius = new Magus(80);
            Verditius.Name = "Verditius";
            Verditius.House = Houses.Verditius;

            Verditius.GetAttribute(AttributeType.Stamina).BaseValue = 1;
            Verditius.GetAttribute(AttributeType.Strength).BaseValue = 0;
            Verditius.GetAttribute(AttributeType.Dexterity).BaseValue = 2;
            Verditius.GetAttribute(AttributeType.Quickness).BaseValue = -3;
            Verditius.GetAttribute(AttributeType.Intelligence).BaseValue = 3;
            Verditius.GetAttribute(AttributeType.Communication).BaseValue = -2;
            Verditius.GetAttribute(AttributeType.Presence).BaseValue = 2;
            Verditius.GetAttribute(AttributeType.Perception).BaseValue = 2;

            Verditius.GetAbility(MagicArts.Creo).AddExperience(15);
            Verditius.GetAbility(MagicArts.Intellego).AddExperience(0);
            Verditius.GetAbility(MagicArts.Muto).AddExperience(0);
            Verditius.GetAbility(MagicArts.Perdo).AddExperience(0);
            Verditius.GetAbility(MagicArts.Rego).AddExperience(15);
            Verditius.GetAbility(MagicArts.Animal).AddExperience(0);
            Verditius.GetAbility(MagicArts.Aquam).AddExperience(0);
            Verditius.GetAbility(MagicArts.Auram).AddExperience(0);
            Verditius.GetAbility(MagicArts.Corpus).AddExperience(0);
            Verditius.GetAbility(MagicArts.Herbam).AddExperience(0);
            Verditius.GetAbility(MagicArts.Ignem).AddExperience(0);
            Verditius.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Verditius.GetAbility(MagicArts.Mentem).AddExperience(0);
            Verditius.GetAbility(MagicArts.Terram).AddExperience(15);
            Verditius.GetAbility(MagicArts.Vim).AddExperience(15);
            Verditius.GetAbility(Abilities.AreaLore).AddExperience(15);
            Verditius.GetAbility(Abilities.ArtesLiberales).AddExperience(30);
            Verditius.GetAbility(Abilities.English).AddExperience(75);
            Verditius.GetAbility(Abilities.Etiquette).AddExperience(30);
            Verditius.GetAbility(Abilities.Latin).AddExperience(75);
            Verditius.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Verditius.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Verditius.GetAbility(Abilities.Penetration).AddExperience(5);
            Verditius.GetAbility(Abilities.Craft).AddExperience(30);
            Verditius.GetAbility(Abilities.Philosophae).AddExperience(5);

            AbilityScoreGoal goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Intellego, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Muto, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Perdo, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Rego, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Terram, 20);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, Abilities.Philosophae, 4);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, Abilities.Craft, 5);
            Verditius.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Verditius, null, 1);
            Verditius.AddGoal(app);
        }
Пример #9
0
        //private double _currentDesire;

        public FindNewAuraHelper(Magus mage, uint ageToCompleteBy, double desirePerPoint, ushort conditionDepth, bool allowVimVisUse, CalculateDesireFunc desireFunc) :
            base(mage, ageToCompleteBy, desirePerPoint, conditionDepth, desireFunc)
        {
            _allowVimVisUse = allowVimVisUse;
        }
Пример #10
0
 public TeachApprenticeGoal(Magus magus, uint ageToCompleteBy, double desire)
     : base(magus, ageToCompleteBy, desire)
 {
     _mage = magus;
 }
Пример #11
0
 public FindNewAuraHelper(Magus mage, uint ageToCompleteBy, double desirePerPoint, ushort conditionDepth, bool allowVimVisUse, CalculateDesireFunc desireFunc)
     : base(mage, ageToCompleteBy, desirePerPoint, conditionDepth, desireFunc)
 {
     _allowVimVisUse = allowVimVisUse;
 }
Пример #12
0
        public static void BuildVerditius()
        {
            Verditius       = new Magus(80);
            Verditius.Name  = "Verditius";
            Verditius.House = Houses.Verditius;

            Verditius.GetAttribute(AttributeType.Stamina).BaseValue       = 1;
            Verditius.GetAttribute(AttributeType.Strength).BaseValue      = 0;
            Verditius.GetAttribute(AttributeType.Dexterity).BaseValue     = 2;
            Verditius.GetAttribute(AttributeType.Quickness).BaseValue     = -3;
            Verditius.GetAttribute(AttributeType.Intelligence).BaseValue  = 3;
            Verditius.GetAttribute(AttributeType.Communication).BaseValue = -2;
            Verditius.GetAttribute(AttributeType.Presence).BaseValue      = 2;
            Verditius.GetAttribute(AttributeType.Perception).BaseValue    = 2;

            Verditius.GetAbility(MagicArts.Creo).AddExperience(15);
            Verditius.GetAbility(MagicArts.Intellego).AddExperience(0);
            Verditius.GetAbility(MagicArts.Muto).AddExperience(0);
            Verditius.GetAbility(MagicArts.Perdo).AddExperience(0);
            Verditius.GetAbility(MagicArts.Rego).AddExperience(15);
            Verditius.GetAbility(MagicArts.Animal).AddExperience(0);
            Verditius.GetAbility(MagicArts.Aquam).AddExperience(0);
            Verditius.GetAbility(MagicArts.Auram).AddExperience(0);
            Verditius.GetAbility(MagicArts.Corpus).AddExperience(0);
            Verditius.GetAbility(MagicArts.Herbam).AddExperience(0);
            Verditius.GetAbility(MagicArts.Ignem).AddExperience(0);
            Verditius.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Verditius.GetAbility(MagicArts.Mentem).AddExperience(0);
            Verditius.GetAbility(MagicArts.Terram).AddExperience(15);
            Verditius.GetAbility(MagicArts.Vim).AddExperience(15);
            Verditius.GetAbility(Abilities.AreaLore).AddExperience(15);
            Verditius.GetAbility(Abilities.ArtesLiberales).AddExperience(30);
            Verditius.GetAbility(Abilities.English).AddExperience(75);
            Verditius.GetAbility(Abilities.Etiquette).AddExperience(30);
            Verditius.GetAbility(Abilities.Latin).AddExperience(75);
            Verditius.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Verditius.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Verditius.GetAbility(Abilities.Penetration).AddExperience(5);
            Verditius.GetAbility(Abilities.Craft).AddExperience(30);
            Verditius.GetAbility(Abilities.Philosophae).AddExperience(5);

            AbilityScoreGoal goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Intellego, 5);

            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Muto, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Perdo, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Rego, 5);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, MagicArts.Terram, 20);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, Abilities.Philosophae, 4);
            Verditius.AddGoal(goal);

            goal = new AbilityScoreGoal(Verditius, null, 1, Abilities.Craft, 5);
            Verditius.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Verditius, null, 1);

            Verditius.AddGoal(app);
        }
Пример #13
0
        public static void BuildMerinita()
        {
            Merinita       = new Magus(80);
            Merinita.Name  = "Merinita";
            Merinita.House = Houses.Merinita;

            Merinita.GetAttribute(AttributeType.Stamina).BaseValue       = 0;
            Merinita.GetAttribute(AttributeType.Strength).BaseValue      = -1;
            Merinita.GetAttribute(AttributeType.Dexterity).BaseValue     = 0;
            Merinita.GetAttribute(AttributeType.Quickness).BaseValue     = 0;
            Merinita.GetAttribute(AttributeType.Intelligence).BaseValue  = 1;
            Merinita.GetAttribute(AttributeType.Communication).BaseValue = 1;
            Merinita.GetAttribute(AttributeType.Presence).BaseValue      = 3;
            Merinita.GetAttribute(AttributeType.Perception).BaseValue    = 0;

            Merinita.GetAbility(MagicArts.Creo).AddExperience(10);
            Merinita.GetAbility(MagicArts.Intellego).AddExperience(15);
            Merinita.GetAbility(MagicArts.Muto).AddExperience(15);
            Merinita.GetAbility(MagicArts.Perdo).AddExperience(10);
            Merinita.GetAbility(MagicArts.Rego).AddExperience(10);
            Merinita.GetAbility(MagicArts.Animal).AddExperience(0);
            Merinita.GetAbility(MagicArts.Aquam).AddExperience(0);
            Merinita.GetAbility(MagicArts.Auram).AddExperience(0);
            Merinita.GetAbility(MagicArts.Corpus).AddExperience(0);
            Merinita.GetAbility(MagicArts.Herbam).AddExperience(55);
            Merinita.GetAbility(MagicArts.Ignem).AddExperience(0);
            Merinita.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Merinita.GetAbility(MagicArts.Mentem).AddExperience(0);
            Merinita.GetAbility(MagicArts.Terram).AddExperience(15);
            Merinita.GetAbility(MagicArts.Vim).AddExperience(0);
            Merinita.GetAbility(Abilities.AreaLore).AddExperience(15);
            Merinita.GetAbility(Abilities.ArtesLiberales).AddExperience(5);
            Merinita.GetAbility(Abilities.English).AddExperience(75);
            Merinita.GetAbility(Abilities.Etiquette).AddExperience(15);
            Merinita.GetAbility(Abilities.Latin).AddExperience(50);
            Merinita.GetAbility(Abilities.MagicTheory).AddExperience(15);
            Merinita.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Merinita.GetAbility(Abilities.Penetration).AddExperience(0);
            Merinita.GetAbility(Abilities.MerinitaLore).AddExperience(50);

            AbilityScoreGoal goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Herbam, 20);

            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Animal, 15);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Creo, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Intellego, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Muto, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Perdo, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Rego, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, Abilities.MerinitaLore, 5);
            Merinita.AddGoal(goal);
        }
Пример #14
0
        public static void BuildDiedne()
        {
            Diedne       = new Magus(80);
            Diedne.Name  = "Diedne";
            Diedne.House = Houses.Diedne;

            Diedne.GetAttribute(AttributeType.Stamina).BaseValue       = 1;
            Diedne.GetAttribute(AttributeType.Strength).BaseValue      = -2;
            Diedne.GetAttribute(AttributeType.Dexterity).BaseValue     = 0;
            Diedne.GetAttribute(AttributeType.Quickness).BaseValue     = 0;
            Diedne.GetAttribute(AttributeType.Intelligence).BaseValue  = 1;
            Diedne.GetAttribute(AttributeType.Communication).BaseValue = 1;
            Diedne.GetAttribute(AttributeType.Presence).BaseValue      = 3;
            Diedne.GetAttribute(AttributeType.Perception).BaseValue    = 1;

            Diedne.GetAbility(MagicArts.Creo).AddExperience(12);
            Diedne.GetAbility(MagicArts.Intellego).AddExperience(12);
            Diedne.GetAbility(MagicArts.Muto).AddExperience(12);
            Diedne.GetAbility(MagicArts.Perdo).AddExperience(12);
            Diedne.GetAbility(MagicArts.Rego).AddExperience(12);
            Diedne.GetAbility(MagicArts.Animal).AddExperience(6);
            Diedne.GetAbility(MagicArts.Aquam).AddExperience(6);
            Diedne.GetAbility(MagicArts.Auram).AddExperience(6);
            Diedne.GetAbility(MagicArts.Corpus).AddExperience(6);
            Diedne.GetAbility(MagicArts.Herbam).AddExperience(6);
            Diedne.GetAbility(MagicArts.Ignem).AddExperience(6);
            Diedne.GetAbility(MagicArts.Imaginem).AddExperience(6);
            Diedne.GetAbility(MagicArts.Mentem).AddExperience(6);
            Diedne.GetAbility(MagicArts.Terram).AddExperience(6);
            Diedne.GetAbility(MagicArts.Vim).AddExperience(6);
            Diedne.GetAbility(Abilities.AreaLore).AddExperience(30);
            Diedne.GetAbility(Abilities.ArtesLiberales).AddExperience(0);
            Diedne.GetAbility(Abilities.English).AddExperience(75);
            Diedne.GetAbility(Abilities.Etiquette).AddExperience(15);
            Diedne.GetAbility(Abilities.Latin).AddExperience(0);
            Diedne.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Diedne.GetAbility(Abilities.ParmaMagica).AddExperience(30);
            Diedne.GetAbility(Abilities.Penetration).AddExperience(30);
            Diedne.GetAbility(Abilities.Concentration).AddExperience(30);

            AbilityScoreGoal goal = new AbilityScoreGoal(Diedne, null, 5, MagicArts.Creo, 5);

            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Intellego, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Muto, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Perdo, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Rego, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Animal, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Aquam, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Corpus, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Herbam, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Ignem, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Imaginem, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Mentem, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Terram, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Vim, 5);
            Diedne.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Diedne, null, 1);

            Diedne.AddGoal(app);
        }
Пример #15
0
        public static void BuildMerinita()
        {
            Merinita = new Magus(80);
            Merinita.Name = "Merinita";
            Merinita.House = Houses.Merinita;

            Merinita.GetAttribute(AttributeType.Stamina).BaseValue = 0;
            Merinita.GetAttribute(AttributeType.Strength).BaseValue = -1;
            Merinita.GetAttribute(AttributeType.Dexterity).BaseValue = 0;
            Merinita.GetAttribute(AttributeType.Quickness).BaseValue = 0;
            Merinita.GetAttribute(AttributeType.Intelligence).BaseValue = 1;
            Merinita.GetAttribute(AttributeType.Communication).BaseValue = 1;
            Merinita.GetAttribute(AttributeType.Presence).BaseValue = 3;
            Merinita.GetAttribute(AttributeType.Perception).BaseValue = 0;

            Merinita.GetAbility(MagicArts.Creo).AddExperience(10);
            Merinita.GetAbility(MagicArts.Intellego).AddExperience(15);
            Merinita.GetAbility(MagicArts.Muto).AddExperience(15);
            Merinita.GetAbility(MagicArts.Perdo).AddExperience(10);
            Merinita.GetAbility(MagicArts.Rego).AddExperience(10);
            Merinita.GetAbility(MagicArts.Animal).AddExperience(0);
            Merinita.GetAbility(MagicArts.Aquam).AddExperience(0);
            Merinita.GetAbility(MagicArts.Auram).AddExperience(0);
            Merinita.GetAbility(MagicArts.Corpus).AddExperience(0);
            Merinita.GetAbility(MagicArts.Herbam).AddExperience(55);
            Merinita.GetAbility(MagicArts.Ignem).AddExperience(0);
            Merinita.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Merinita.GetAbility(MagicArts.Mentem).AddExperience(0);
            Merinita.GetAbility(MagicArts.Terram).AddExperience(15);
            Merinita.GetAbility(MagicArts.Vim).AddExperience(0);
            Merinita.GetAbility(Abilities.AreaLore).AddExperience(15);
            Merinita.GetAbility(Abilities.ArtesLiberales).AddExperience(5);
            Merinita.GetAbility(Abilities.English).AddExperience(75);
            Merinita.GetAbility(Abilities.Etiquette).AddExperience(15);
            Merinita.GetAbility(Abilities.Latin).AddExperience(50);
            Merinita.GetAbility(Abilities.MagicTheory).AddExperience(15);
            Merinita.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Merinita.GetAbility(Abilities.Penetration).AddExperience(0);
            Merinita.GetAbility(Abilities.MerinitaLore).AddExperience(50);

            AbilityScoreGoal goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Herbam, 20);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Animal, 15);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Creo, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Intellego, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Muto, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Perdo, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, MagicArts.Rego, 5);
            Merinita.AddGoal(goal);

            goal = new AbilityScoreGoal(Merinita, null, 1, Abilities.MerinitaLore, 5);
            Merinita.AddGoal(goal);
        }
Пример #16
0
        public static void BuildTytalus()
        {
            Tytalus = new Magus(80);
            Tytalus.Name = "Tytalus";
            Tytalus.House = Houses.Tytalus;

            Tytalus.GetAttribute(AttributeType.Stamina).BaseValue = 3;
            Tytalus.GetAttribute(AttributeType.Strength).BaseValue = 0;
            Tytalus.GetAttribute(AttributeType.Dexterity).BaseValue = 0;
            Tytalus.GetAttribute(AttributeType.Quickness).BaseValue = -1;
            Tytalus.GetAttribute(AttributeType.Intelligence).BaseValue = 2;
            Tytalus.GetAttribute(AttributeType.Communication).BaseValue = -2;
            Tytalus.GetAttribute(AttributeType.Presence).BaseValue = -1;
            Tytalus.GetAttribute(AttributeType.Perception).BaseValue = 2;

            Tytalus.GetAbility(MagicArts.Creo).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Intellego).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Muto).AddExperience(10);
            Tytalus.GetAbility(MagicArts.Perdo).AddExperience(15);
            Tytalus.GetAbility(MagicArts.Rego).AddExperience(55);
            Tytalus.GetAbility(MagicArts.Animal).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Aquam).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Auram).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Corpus).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Herbam).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Ignem).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Mentem).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Terram).AddExperience(0);
            Tytalus.GetAbility(MagicArts.Vim).AddExperience(0);
            Tytalus.GetAbility(Abilities.AreaLore).AddExperience(30);
            Tytalus.GetAbility(Abilities.ArtesLiberales).AddExperience(5);
            Tytalus.GetAbility(Abilities.English).AddExperience(75);
            Tytalus.GetAbility(Abilities.Etiquette).AddExperience(15);
            Tytalus.GetAbility(Abilities.Latin).AddExperience(50);
            Tytalus.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Tytalus.GetAbility(Abilities.ParmaMagica).AddExperience(30);
            Tytalus.GetAbility(Abilities.Penetration).AddExperience(30);
            Tytalus.GetAbility(Abilities.Concentration).AddExperience(15);

            AbilityScoreGoal goal = new AbilityScoreGoal(Tremere, null, 1, MagicArts.Rego, 20);
            Tytalus.AddGoal(goal);

            goal = new AbilityScoreGoal(Tremere, null, 1, MagicArts.Mentem, 10);
            Tytalus.AddGoal(goal);

            goal = new AbilityScoreGoal(Tremere, null, 1, Abilities.Penetration, 5);
            Tytalus.AddGoal(goal);

            goal = new AbilityScoreGoal(Tremere, null, 1, Abilities.Finesse, 5);
            Tytalus.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Tremere, null, 1);
            Tytalus.AddGoal(app);
        }
Пример #17
0
 public FindVisSourceHelper(Magus mage, List<Ability> visTypes, uint ageToCompleteBy, double desirePerPoint, ushort conditionDepth, bool allowVimVis, CalculateDesireFunc desireFunc)
     : base(mage, ageToCompleteBy, desirePerPoint, conditionDepth, desireFunc)
 {
     _visTypes = visTypes;
     _allowVimVis = allowVimVis;
 }
Пример #18
0
        public static void BuildBjornaer()
        {
            Bjornaer = new Magus(80);
            Bjornaer.Name = "Bjornaer";
            Bjornaer.House = Houses.Bjornaer;

            Bjornaer.GetAttribute(AttributeType.Stamina).BaseValue = 3;
            Bjornaer.GetAttribute(AttributeType.Strength).BaseValue = 1;
            Bjornaer.GetAttribute(AttributeType.Dexterity).BaseValue = -2;
            Bjornaer.GetAttribute(AttributeType.Quickness).BaseValue = -2;
            Bjornaer.GetAttribute(AttributeType.Intelligence).BaseValue = 2;
            Bjornaer.GetAttribute(AttributeType.Communication).BaseValue = 1;
            Bjornaer.GetAttribute(AttributeType.Presence).BaseValue = 2;
            Bjornaer.GetAttribute(AttributeType.Perception).BaseValue = -1;

            Bjornaer.GetAbility(MagicArts.Creo).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Intellego).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Muto).AddExperience(15);
            Bjornaer.GetAbility(MagicArts.Perdo).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Rego).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Animal).AddExperience(15);
            Bjornaer.GetAbility(MagicArts.Aquam).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Auram).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Corpus).AddExperience(15);
            Bjornaer.GetAbility(MagicArts.Herbam).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Ignem).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Mentem).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Terram).AddExperience(0);
            Bjornaer.GetAbility(MagicArts.Vim).AddExperience(0);
            Bjornaer.GetAbility(Abilities.AreaLore).AddExperience(45);
            Bjornaer.GetAbility(Abilities.ArtesLiberales).AddExperience(5);
            Bjornaer.GetAbility(Abilities.English).AddExperience(75);
            Bjornaer.GetAbility(Abilities.Etiquette).AddExperience(0);
            Bjornaer.GetAbility(Abilities.Latin).AddExperience(50);
            Bjornaer.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Bjornaer.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Bjornaer.GetAbility(Abilities.Penetration).AddExperience(0);
            Bjornaer.GetAbility(Abilities.Concentration).AddExperience(0);
            Bjornaer.GetAbility(Abilities.Heartbeast).AddExperience(30);
            Bjornaer.GetAbility(Abilities.BjornaerLore).AddExperience(75);

            AbilityScoreGoal goal = new AbilityScoreGoal(Bjornaer, null, 1, MagicArts.Animal, 20);
            Bjornaer.AddGoal(goal);

            ApprenticeGoal apprentice = new ApprenticeGoal(Bjornaer, null, 1);
            Bjornaer.AddGoal(apprentice);

            goal = new AbilityScoreGoal(Bjornaer, null, 1.01, Abilities.BjornaerLore, 5);
            Bjornaer.AddGoal(goal);

            goal = new AbilityScoreGoal(Bjornaer, null, 1.02, Abilities.Heartbeast, 5);
            Bjornaer.AddGoal(goal);
        }
Пример #19
0
 public WritingHelper(Magus mage, uint ageToCompleteBy, double desire, ushort conditionDepth, CalculateDesireFunc desireFunc = null) :
     base(mage, ageToCompleteBy, desire, conditionDepth, desireFunc)
 {
 }
Пример #20
0
 public override void ModifyVisDesires(Magus magus, VisDesire[] visDesires)
 {
     base.ModifyVisDesires(magus, visDesires);
 }
Пример #21
0
 public GauntletApprenticeGoal(Magus magus, uint ageToCompleteBy, double desire) :
     base(magus, ageToCompleteBy, desire)
 {
     _mage = magus;
 }
Пример #22
0
        public static void BuildBonisagus()
        {
            Bonisgaus = new Magus(80);
            Bonisgaus.Name = "Bonisagus";
            Bonisgaus.House = Houses.Bonisagus;

            Bonisgaus.GetAttribute(AttributeType.Stamina).BaseValue = 1;
            Bonisgaus.GetAttribute(AttributeType.Strength).BaseValue = -2;
            Bonisgaus.GetAttribute(AttributeType.Dexterity).BaseValue = -2;
            Bonisgaus.GetAttribute(AttributeType.Quickness).BaseValue = -2;
            Bonisgaus.GetAttribute(AttributeType.Intelligence).BaseValue = 5;
            Bonisgaus.GetAttribute(AttributeType.Communication).BaseValue = 2;
            Bonisgaus.GetAttribute(AttributeType.Presence).BaseValue = -2;
            Bonisgaus.GetAttribute(AttributeType.Perception).BaseValue = 0;

            Bonisgaus.GetAbility(MagicArts.Creo).AddExperience(1);
            Bonisgaus.GetAbility(MagicArts.Intellego).AddExperience(1);
            Bonisgaus.GetAbility(MagicArts.Muto).AddExperience(1);
            Bonisgaus.GetAbility(MagicArts.Perdo).AddExperience(1);
            Bonisgaus.GetAbility(MagicArts.Rego).AddExperience(1);
            Bonisgaus.GetAbility(MagicArts.Animal).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Aquam).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Auram).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Corpus).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Herbam).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Ignem).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Mentem).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Terram).AddExperience(0);
            Bonisgaus.GetAbility(MagicArts.Vim).AddExperience(55);
            Bonisgaus.GetAbility(Abilities.AreaLore).AddExperience(0);
            Bonisgaus.GetAbility(Abilities.ArtesLiberales).AddExperience(15);
            Bonisgaus.GetAbility(Abilities.English).AddExperience(75);
            Bonisgaus.GetAbility(Abilities.Etiquette).AddExperience(45);
            Bonisgaus.GetAbility(Abilities.Latin).AddExperience(75);
            Bonisgaus.GetAbility(Abilities.MagicTheory).AddExperience(75);
            Bonisgaus.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Bonisgaus.GetAbility(Abilities.Penetration).AddExperience(5);
            Bonisgaus.GetAbility(Abilities.Concentration).AddExperience(5);

            AbilityScoreGoal goal = new AbilityScoreGoal(Bonisgaus, null, 1, Abilities.MagicTheory, 10);
            Bonisgaus.AddGoal(goal);

            ApprenticeGoal apprentice = new ApprenticeGoal(Bonisgaus, null, 1);
            Bonisgaus.AddGoal(apprentice);
        }
Пример #23
0
        public static void BuildCriamon()
        {
            Criamon = new Magus(80);
            Criamon.Name = "Criamon";
            Criamon.House = Houses.Criamon;

            Criamon.GetAttribute(AttributeType.Stamina).BaseValue = 1;
            Criamon.GetAttribute(AttributeType.Strength).BaseValue = -2;
            Criamon.GetAttribute(AttributeType.Dexterity).BaseValue = -2;
            Criamon.GetAttribute(AttributeType.Quickness).BaseValue = 1;
            Criamon.GetAttribute(AttributeType.Intelligence).BaseValue = 2;
            Criamon.GetAttribute(AttributeType.Communication).BaseValue = -1;
            Criamon.GetAttribute(AttributeType.Presence).BaseValue = 3;
            Criamon.GetAttribute(AttributeType.Perception).BaseValue = 2;

            Criamon.GetAbility(MagicArts.Creo).AddExperience(0);
            Criamon.GetAbility(MagicArts.Intellego).AddExperience(15);
            Criamon.GetAbility(MagicArts.Muto).AddExperience(0);
            Criamon.GetAbility(MagicArts.Perdo).AddExperience(0);
            Criamon.GetAbility(MagicArts.Rego).AddExperience(0);
            Criamon.GetAbility(MagicArts.Animal).AddExperience(0);
            Criamon.GetAbility(MagicArts.Aquam).AddExperience(0);
            Criamon.GetAbility(MagicArts.Auram).AddExperience(0);
            Criamon.GetAbility(MagicArts.Corpus).AddExperience(0);
            Criamon.GetAbility(MagicArts.Herbam).AddExperience(0);
            Criamon.GetAbility(MagicArts.Ignem).AddExperience(0);
            Criamon.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Criamon.GetAbility(MagicArts.Mentem).AddExperience(0);
            Criamon.GetAbility(MagicArts.Terram).AddExperience(0);
            Criamon.GetAbility(MagicArts.Vim).AddExperience(15);
            Criamon.GetAbility(Abilities.AreaLore).AddExperience(30);
            Criamon.GetAbility(Abilities.ArtesLiberales).AddExperience(30);
            Criamon.GetAbility(Abilities.English).AddExperience(75);
            Criamon.GetAbility(Abilities.Etiquette).AddExperience(15);
            Criamon.GetAbility(Abilities.Latin).AddExperience(50);
            Criamon.GetAbility(Abilities.MagicTheory).AddExperience(50);
            Criamon.GetAbility(Abilities.ParmaMagica).AddExperience(5);
            Criamon.GetAbility(Abilities.Penetration).AddExperience(0);
            Criamon.GetAbility(Abilities.Concentration).AddExperience(30);
            Criamon.GetAbility(Abilities.EnigmaticWisdom).AddExperience(15);
            Criamon.GetAbility(Abilities.CriamonLore).AddExperience(30);

            AbilityScoreGoal goal = new AbilityScoreGoal(Criamon, null, 1, Abilities.MagicTheory, 5);
            Criamon.AddGoal(goal);

            goal = new AbilityScoreGoal(Criamon, null, 1, Abilities.EnigmaticWisdom, 5);
            Criamon.AddGoal(goal);

            goal = new AbilityScoreGoal(Criamon, null, 1, Abilities.CriamonLore, 5);
            Criamon.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Criamon, null, 1);
            Criamon.AddGoal(app);
        }
Пример #24
0
 public ReadingHelper(Ability ability, Magus mage, uint ageToCompleteBy, double desire, ushort conditionDepth, CalculateDesireFunc desireFunc = null)
     : base(mage, ageToCompleteBy, desire, conditionDepth, desireFunc)
 {
     _ability = ability;
 }
Пример #25
0
        public static void BuildDiedne()
        {
            Diedne = new Magus(80);
            Diedne.Name = "Diedne";
            Diedne.House = Houses.Diedne;

            Diedne.GetAttribute(AttributeType.Stamina).BaseValue = 1;
            Diedne.GetAttribute(AttributeType.Strength).BaseValue = -2;
            Diedne.GetAttribute(AttributeType.Dexterity).BaseValue = 0;
            Diedne.GetAttribute(AttributeType.Quickness).BaseValue = 0;
            Diedne.GetAttribute(AttributeType.Intelligence).BaseValue = 1;
            Diedne.GetAttribute(AttributeType.Communication).BaseValue = 1;
            Diedne.GetAttribute(AttributeType.Presence).BaseValue = 3;
            Diedne.GetAttribute(AttributeType.Perception).BaseValue = 1;

            Diedne.GetAbility(MagicArts.Creo).AddExperience(12);
            Diedne.GetAbility(MagicArts.Intellego).AddExperience(12);
            Diedne.GetAbility(MagicArts.Muto).AddExperience(12);
            Diedne.GetAbility(MagicArts.Perdo).AddExperience(12);
            Diedne.GetAbility(MagicArts.Rego).AddExperience(12);
            Diedne.GetAbility(MagicArts.Animal).AddExperience(6);
            Diedne.GetAbility(MagicArts.Aquam).AddExperience(6);
            Diedne.GetAbility(MagicArts.Auram).AddExperience(6);
            Diedne.GetAbility(MagicArts.Corpus).AddExperience(6);
            Diedne.GetAbility(MagicArts.Herbam).AddExperience(6);
            Diedne.GetAbility(MagicArts.Ignem).AddExperience(6);
            Diedne.GetAbility(MagicArts.Imaginem).AddExperience(6);
            Diedne.GetAbility(MagicArts.Mentem).AddExperience(6);
            Diedne.GetAbility(MagicArts.Terram).AddExperience(6);
            Diedne.GetAbility(MagicArts.Vim).AddExperience(6);
            Diedne.GetAbility(Abilities.AreaLore).AddExperience(30);
            Diedne.GetAbility(Abilities.ArtesLiberales).AddExperience(0);
            Diedne.GetAbility(Abilities.English).AddExperience(75);
            Diedne.GetAbility(Abilities.Etiquette).AddExperience(15);
            Diedne.GetAbility(Abilities.Latin).AddExperience(0);
            Diedne.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Diedne.GetAbility(Abilities.ParmaMagica).AddExperience(30);
            Diedne.GetAbility(Abilities.Penetration).AddExperience(30);
            Diedne.GetAbility(Abilities.Concentration).AddExperience(30);

            AbilityScoreGoal goal = new AbilityScoreGoal(Diedne, null, 5, MagicArts.Creo, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Intellego, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Muto, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Perdo, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Rego, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1.05, MagicArts.Animal, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Aquam, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Corpus, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Herbam, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Ignem, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Imaginem, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Mentem, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Terram, 5);
            Diedne.AddGoal(goal);

            goal = new AbilityScoreGoal(Diedne, null, 1, MagicArts.Vim, 5);
            Diedne.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Diedne, null, 1);
            Diedne.AddGoal(app);
        }
Пример #26
0
 protected void HandleVisUse(Magus mage, CharacterAbilityBase magicArt, ConsideredActions alreadyConsidered, IList<string> log)
 {
     // see if the mage has enough vis of this type
     double stockpile = mage.GetVisCount(magicArt.Ability);
     double visNeed = 0.5 + (magicArt.Value / 10.0);
     double increase = magicArt.GetValueGain(mage.VisStudyRate);
     double baseDesire = CalculateDesire(increase) / (BaseTier + 1);
     if (BaseDueDate != null)
     {
         baseDesire /= (double)BaseDueDate;
     }
     // if so, assume vis will return an average of 6XP + aura
     if (stockpile > visNeed)
     {
         log.Add("Studying vis for " + magicArt.Ability.AbilityName + " worth " + baseDesire.ToString("0.00"));
         VisStudying visStudy = new VisStudying(magicArt.Ability, baseDesire);
         alreadyConsidered.Add(visStudy);
         // TODO: how do we decrement the cost of the vis?
     }
     // putting a limit here to how far the circular loop will go
     else if (baseDesire >= 0.01)
     {
         List<Ability> visType = new List<Ability>();
         visType.Add(magicArt.Ability);
         VisCondition visCondition =
             new VisCondition(visType, visNeed - stockpile, baseDesire, (byte)(BaseTier + 1), BaseDueDate == null ? null : BaseDueDate - 1);
         visCondition.ModifyActionList(mage, alreadyConsidered, log);
     }
 }
Пример #27
0
        public static void BuildFlambeau()
        {
            Flambeau = new Magus(80);
            Flambeau.Name = "Flambeau";
            Flambeau.House = Houses.Flambeau;

            Flambeau.GetAttribute(AttributeType.Stamina).BaseValue = 2;
            Flambeau.GetAttribute(AttributeType.Strength).BaseValue = 2;
            Flambeau.GetAttribute(AttributeType.Dexterity).BaseValue = 2;
            Flambeau.GetAttribute(AttributeType.Quickness).BaseValue = 0;
            Flambeau.GetAttribute(AttributeType.Intelligence).BaseValue = 1;
            Flambeau.GetAttribute(AttributeType.Communication).BaseValue = -2;
            Flambeau.GetAttribute(AttributeType.Presence).BaseValue = 2;
            Flambeau.GetAttribute(AttributeType.Perception).BaseValue = -2;

            Flambeau.GetAbility(MagicArts.Creo).AddExperience(3);
            Flambeau.GetAbility(MagicArts.Intellego).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Muto).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Perdo).AddExperience(3);
            Flambeau.GetAbility(MagicArts.Rego).AddExperience(3);
            Flambeau.GetAbility(MagicArts.Animal).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Aquam).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Auram).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Corpus).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Herbam).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Ignem).AddExperience(21);
            Flambeau.GetAbility(MagicArts.Imaginem).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Mentem).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Terram).AddExperience(0);
            Flambeau.GetAbility(MagicArts.Vim).AddExperience(0);
            Flambeau.GetAbility(Abilities.AreaLore).AddExperience(15);
            Flambeau.GetAbility(Abilities.ArtesLiberales).AddExperience(15);
            Flambeau.GetAbility(Abilities.English).AddExperience(75);
            Flambeau.GetAbility(Abilities.Etiquette).AddExperience(30);
            Flambeau.GetAbility(Abilities.Latin).AddExperience(75);
            Flambeau.GetAbility(Abilities.MagicTheory).AddExperience(30);
            Flambeau.GetAbility(Abilities.ParmaMagica).AddExperience(30);
            Flambeau.GetAbility(Abilities.Penetration).AddExperience(30);
            Flambeau.GetAbility(Abilities.Concentration).AddExperience(30);

            AbilityScoreGoal goal = new AbilityScoreGoal(Flambeau, null, 1, MagicArts.Ignem, 20);
            Flambeau.AddGoal(goal);

            goal = new AbilityScoreGoal(Flambeau, null, 1, Abilities.Penetration, 5);
            Flambeau.AddGoal(goal);

            goal = new AbilityScoreGoal(Flambeau, null, 1, Abilities.ParmaMagica, 5);
            Flambeau.AddGoal(goal);

            ApprenticeGoal app = new ApprenticeGoal(Flambeau, null, 1);
            Flambeau.AddGoal(app);
        }
Пример #28
0
        private void HandleAuras(Magus mage, ConsideredActions alreadyConsidered, IList<string> log)
        {
            double greatestAura = mage.KnownAuras.Select(a => a.Strength).Max();
            double currentAura = mage.Covenant.Aura.Strength;
            if (greatestAura > currentAura)
            {
                Aura bestAura = mage.KnownAuras.Where(a => a.Strength == greatestAura).First();
                if (mage.Laboratory == null)
                {
                    // just move the covenant right now
                    log.Add("Since no lab built, moving to better aura.");
                    mage.FoundCovenant(bestAura);
                }
                else
                {
                    // how do we want to rate the value of moving and having to build a new lab?
                    // it seems like basically the same as any other single-season activity
                    double gain = greatestAura - currentAura;
                    double dueDateDesire = CalculateDesire(gain) / (BaseTier + 1);
                    if (BaseDueDate != null)
                    {
                        if (BaseDueDate == 0)
                        {
                            return;
                        }
                        dueDateDesire /= (double)(BaseDueDate - 1);
                    }
                    log.Add("Moving to new aura (to boost lab total) worth " + dueDateDesire.ToString("0.00"));
                    alreadyConsidered.Add(new BuildLaboratory(bestAura, Abilities.MagicTheory, dueDateDesire));
                }
            }
            else
            {
                double auraCount = mage.KnownAuras.Count;
                double areaLore = mage.GetAbility(Abilities.AreaLore).Value;
                areaLore += mage.GetCastingTotal(MagicArtPairs.InVi) / 10;
                areaLore += mage.GetAttribute(AttributeType.Perception).Value;
                double probOfBetter = 1 - (currentAura * currentAura * auraCount / (5 * areaLore));
                double maxAura = Math.Sqrt(5.0 * areaLore / auraCount);
                double averageGain = maxAura * probOfBetter / 2.0;

                double dueDateDesire = CalculateDesire(averageGain) / (BaseTier + 1);
                if (BaseDueDate != null)
                {
                    if (BaseDueDate == 0)
                    {
                        return;
                    }
                    dueDateDesire /= (double)(BaseDueDate - 1);
                }

                if (probOfBetter > 0)
                {
                    log.Add("Finding a better aura to build a lab in worth " + dueDateDesire.ToString("0.00"));
                    alreadyConsidered.Add(new FindAura(Abilities.AreaLore, dueDateDesire));
                }
            }
        }
Пример #29
0
 public PracticeHelper(Ability ability, Magus mage, uint ageToCompleteBy, double desire, ushort conditionDepth, CalculateDesireFunc desireFunc = null) :
     base(mage, ageToCompleteBy, desire, conditionDepth, desireFunc)
 {
     _ability = ability;
 }