Пример #1
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));
            }
        }
Пример #2
0
        private void AddVisUseToActionList(Ability ability, ConsideredActions alreadyConsidered, IList <string> log)
        {
            Magus mage = (Magus)Character;
            CharacterAbilityBase magicArt = mage.GetAbility(ability);
            double effectiveDesire        = GetDesirabilityOfIncrease(magicArt.GetValueGain(mage.VisStudyRate));

            if (!double.IsNaN(effectiveDesire) && effectiveDesire > 0)
            {
                // see if the mage has enough vis of this type
                double stockpile = mage.GetVisCount(ability);
                double visNeed   = 0.5 + (magicArt.Value / 10.0);

                // if so, assume vis will return an average of 6XP + aura
                if (stockpile > visNeed)
                {
                    log.Add("Studying vis for " + magicArt.Ability.AbilityName + " worth " + effectiveDesire.ToString("0.000"));
                    VisStudying visStudy = new VisStudying(magicArt.Ability, effectiveDesire);
                    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 (ConditionDepth <= 10)
                {
                    List <Ability> visType = new List <Ability>();
                    visType.Add(magicArt.Ability);
                    // Magus magus, uint ageToCompleteBy, double desire, Ability ability, double totalNeeded, ushort conditionDepth
                    VisCondition visCondition =
                        new VisCondition(mage, AgeToCompleteBy - 1, effectiveDesire, ability, visNeed, (ushort)(ConditionDepth + 1));
                    visCondition.AddActionPreferencesToList(alreadyConsidered, log);
                }
            }
        }
Пример #3
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));
                }
            }
        }
Пример #4
0
        private static void DistributeExperience(Magus mage, int extraXP, bool isAcademic, bool isMartial)
        {
            var abilities = Abilities.GetEnumerator()
                            .Where(a => a.AbilityType == AbilityType.General ||
                                   (isAcademic && a.AbilityType == AbilityType.Academic) ||
                                   (isMartial && a.AbilityType == AbilityType.Martial));
            int abilityCount = abilities.Count();

            while (extraXP > 0)
            {
                int     valueAdd = extraXP >= 5 ? 5 : extraXP;
                int     roll     = (int)(Die.Instance.RollDouble() * abilityCount);
                Ability ability  = abilities.ElementAt(roll);
                if (ability.AbilityType == AbilityType.Academic)
                {
                    if (mage.GetAbility(Abilities.ArtesLiberales).Value < 1)
                    {
                        mage.GetAbility(Abilities.ArtesLiberales).AddExperience(valueAdd);
                    }
                    else if (mage.GetAbility(Abilities.Latin).Value < 3)
                    {
                        mage.GetAbility(Abilities.Latin).AddExperience(valueAdd);
                    }
                    else
                    {
                        mage.GetAbility(ability).AddExperience(valueAdd);
                    }
                }
                else
                {
                    mage.GetAbility(ability).AddExperience(valueAdd);
                }
                extraXP -= valueAdd;
            }
        }
Пример #5
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;
            _auraCount   = mage.KnownAuras.Count;
            if (_auraCount == 0)
            {
                _currentAura = 0;
                _currentVis  = 0;
            }
            else
            {
                // TODO: we should go to the aura with the most vis "cap space", not the largest
                Aura bestAura = mage.KnownAuras.Aggregate((a, b) => a.Strength > b.Strength ? a : b);
                _currentAura = bestAura.Strength;
                _currentVis  = bestAura.VisSources.Sum(vs => vs.Amount);
            }

            _currentScore = mage.GetAbility(Abilities.MagicLore).Value + mage.GetAttribute(AttributeType.Perception).Value + (mage.GetCastingTotal(MagicArtPairs.InVi) / 10);
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
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);
        }
Пример #9
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);
        }
Пример #10
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);
        }
Пример #11
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);
        }
Пример #12
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);
        }
Пример #13
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);
        }
Пример #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 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));
            }
        }
Пример #16
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);
        }
Пример #17
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);
        }
Пример #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 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);
        }
Пример #20
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);
        }
Пример #21
0
        public static Magus GenerateNewApprentice()
        {
            Magus magus = new Magus(Abilities.MagicTheory, Abilities.Latin, Abilities.ArtesLiberales, Abilities.AreaLore);

            NormalizeAttributes(magus);
            magus.GetAbility(Abilities.English).AddExperience(75);
            // randomly assign 45 points to childhood skills in 5 point blocks
            // Area Lore, Athletics, Awareness, Brawl, Charm, Folk Ken, Guile, Stealth, Survival, Swim
            double experienceBlock           = 5.0;
            CharacterAbilityBase charAbility = null;

            for (byte i = 0; i < 9; i++)
            {
                switch (Die.Instance.RollSimpleDie())
                {
                case 1:
                    charAbility = magus.GetAbility(Abilities.AreaLore);
                    break;

                case 2:
                    charAbility = magus.GetAbility(Abilities.Athletics);
                    break;

                case 3:
                    charAbility = magus.GetAbility(Abilities.Awareness);
                    break;

                case 4:
                    charAbility = magus.GetAbility(Abilities.Brawl);
                    break;

                case 5:
                    charAbility = magus.GetAbility(Abilities.Charm);
                    break;

                case 6:
                    charAbility = magus.GetAbility(Abilities.FolkKen);
                    break;

                case 7:
                    charAbility = magus.GetAbility(Abilities.Guile);
                    break;

                case 8:
                    charAbility = magus.GetAbility(Abilities.Stealth);
                    break;

                case 9:
                    charAbility = magus.GetAbility(Abilities.Survival);
                    break;

                case 10:
                    charAbility = magus.GetAbility(Abilities.Swim);
                    break;
                }
                charAbility.AddExperience(experienceBlock);
            }
            // figure out how much older than 5 the child is
            ushort age = (ushort)(20 + Die.Instance.RollDouble() * 80);

            // add experience for the additional time.
            int extraXP = (age - 20) * 4;
            // for now, lets say 10% chance of academics, 20% of martial
            bool isAcademic = Die.Instance.RollSimpleDie() == 1;
            bool isMartial  = Die.Instance.RollSimpleDie() <= 2;

            DistributeExperience(magus, extraXP, isAcademic, isMartial);

            // TODO: how do we initialize the goals of this new apprentice?
            InitializeApprenticeGoals(magus);

            return(magus);
        }
Пример #22
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);
        }
Пример #23
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));
                }
            }
        }
Пример #24
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);
        }