Beispiel #1
0
        public void Execute(Utility.ComponentContainer components)
        {
            var casting   = components.Get <ISpellCasting>();
            var spellList = casting.SpellList;
            var book      = components.Get <Inventory>().Spellbooks.First();

            for (int level = 0; level < spellsToAdd.Length; level++)
            {
                if (spellsToAdd[level].EqualsIgnoreCase("ALL"))
                {
                    book.AddSpells(level, spellList.GetSpells(level, components.GetAll <ISpellCastingRule>()));
                }
                else
                {
                    int spellsToChoose = spellsToAdd[level].ToInteger();
                    if (addModifier)
                    {
                        spellsToChoose += casting.CastingAbility.TotalModifier;
                    }

                    book.AddSpells(
                        level,
                        spellList.GetSpells(level, components.GetAll <ISpellCastingRule>()).Where(x => !book.ContainsSpell(level, x))
                        .Choose(spellsToChoose)
                        );
                }
            }
        }
Beispiel #2
0
        public void Execute(Utility.ComponentContainer components)
        {
            var combatStyle = components.Get <CombatStyle>();
            var rangerLevel = components.Get <ClassLevel>();
            var token       = new FeatToken(combatStyle.GetFeats(rangerLevel.Level), true);

            components.Add(token);
        }
Beispiel #3
0
        public void Execute(Utility.ComponentContainer components)
        {
            var bloodline  = components.Get <Bloodline>();
            var casting    = components.Get <SpontaneousCasting>();
            var classLevel = components.Get <ClassLevel>();
            var bonusSpell = bloodline.GetBonusSpell(classLevel.Level);

            casting.LearnSpell(spellLevel, bonusSpell);
        }
Beispiel #4
0
        public void Execute(Utility.ComponentContainer components)
        {
            var bloodline      = components.Get <Bloodline>();
            var bloodlineLevel = components.Get <ClassLevel>();
            var powerType      = bloodline.GetPower(bloodlineLevel.Level);
            var power          = Reflector.Instantiate <IBloodlinePower>(powerType);

            components.Add(power);
        }
Beispiel #5
0
        public void Execute(Utility.ComponentContainer components)
        {
            var versatilePerformance = components.Get <VersatilePerformance>();
            var skillRanks           = components.Get <SkillRanks>();
            var performSkills        = skillRanks.GetSkills()
                                       .Where(x => x.Name.Contains("Perform") && !versatilePerformance.Skills.Contains(x))
                                       .GroupBy(x => x.Score());
            var highestGroup = performSkills.Max(x => x.Key);

            versatilePerformance.AddSkill(performSkills.First(x => x.Key == highestGroup).ChooseOne());
        }
Beispiel #6
0
        public void Execute(Utility.ComponentContainer components)
        {
            var mercies = components.Get <Mercies>();

            if (mercies == null)
            {
                mercies = new Mercies();
                components.Add(mercies);
            }

            var paladinLevel = components.Get <ClassLevel>();

            var selected = mercyGateway.Where(x => x.Level <= paladinLevel.Level && !mercies.MercyList.Contains(x)).ChooseOne();

            mercies.Add(selected);
        }
Beispiel #7
0
        public void Execute(Utility.ComponentContainer components)
        {
            var fav     = components.Get <FavoredTerrain>();
            var upgrade = fav.TerrainTypes.ChooseOne();

            fav.EnhanceBonus(upgrade);
        }
Beispiel #8
0
        public void Execute(Utility.ComponentContainer components)
        {
            //TODO: Can be rewritten as stats that get a bonus....
            var favEnemy = components.Get <FavoredEnemy>();
            var upgrade  = favEnemy.CreatureTypes.ChooseOne();

            favEnemy.EnhanceBonus(upgrade);
        }
Beispiel #9
0
        public void Execute(Utility.ComponentContainer components)
        {
            var wizardCasting = components.Get <WizardCasting>();
            var school        = arcaneGateway.ChooseOne();

            wizardCasting.SetFocusSchool(school);
            components.Add(school);
        }
Beispiel #10
0
        public void Execute(Utility.ComponentContainer components)
        {
            // Randomly pick 10 and gopherit
            var skillRanks = components.Get <SkillRanks>();
            var skills     = skillRanks.GetSkills().Choose(10);

            foreach (var s in skills)
            {
                skillRanks.SetClassSkill(s.Name);
            }
        }
Beispiel #11
0
        public void Execute(Utility.ComponentContainer components)
        {
            var fav = components.Get <FavoredTerrain>();

            if (fav == null)
            {
                fav = new FavoredTerrain();
                components.Add(fav);
            }
            fav.Add(this.terrainTypeGateway.Where(x => !fav.TerrainTypes.Contains(x)).ChooseOne());
        }
Beispiel #12
0
        public void Execute(Utility.ComponentContainer components)
        {
            var favoredEnemy = components.Get <FavoredEnemy>();

            if (favoredEnemy == null)
            {
                favoredEnemy = new FavoredEnemy();
                components.Add(favoredEnemy);
            }
            var type = this.creatureTypeGateway.Where(x => !favoredEnemy.CreatureTypes.Contains(x)).ChooseOne();

            favoredEnemy.Add(type);
        }
Beispiel #13
0
        public void Execute(Utility.ComponentContainer components)
        {
            var wizardCasting = components.Get <WizardCasting>();
            var focusSchool   = wizardCasting.FocusSchool;

            if (focusSchool.NoOppositionSchools)
            {
                return;
            }

            var opps = arcaneSchools.Where(
                x => x.Equals(focusSchool) == false && !x.NoOppositionSchools
                ).Choose(2);

            wizardCasting.SetOppositionSchools(opps);
        }
Beispiel #14
0
 public void Execute(Utility.ComponentContainer components)
 {
     components.Get <CharacterStrategy>().AddLanguageChoices(this.languages);
 }
Beispiel #15
0
        public void Execute(Utility.ComponentContainer components)
        {
            var bloodline = components.Get <Bloodline>();

            components.Add(new FeatToken(bloodline.GetBonusFeats()));
        }