Exemplo n.º 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)
                        );
                }
            }
        }
Exemplo n.º 2
0
        public void Execute(Utility.ComponentContainer components)
        {
            RogueTalent selected = null;

            var characterTalents = components.GetAll <RogueTalent>();
            var availableTalents = this.rogueTalentGateway.Where(talent =>
                                                                 (!talent.IsAdvancedTalent ||
                                                                  talent.IsAdvancedTalent == selectAdvanced) &&
                                                                 characterTalents.None(x => x.Matches(talent.Name)));

            //Prefer Advanced Talents

            var advanced = availableTalents.Where(x => x.IsAdvancedTalent);

            if (advanced.Count() > 0)
            {
                selected = advanced.ChooseOne();
            }
            else
            {
                selected = availableTalents.ChooseOne();
            }

            components.Add(selected);
        }
Exemplo n.º 3
0
 public void Execute(Utility.ComponentContainer components)
 {
     for (int i = 0; i < domainCount; i++)
     {
         var currentDoms = components.GetAll <Domain>();
         var domains     = domainsGateway.Where(d => !currentDoms.Contains(d));
         var domain      = domains.ChooseOne();
         components.Add(domain);
     }
 }
Exemplo n.º 4
0
        public void Execute(Utility.ComponentContainer components)
        {
            var domains = components.GetAll <Domain>();

            if (domains.Empty())
            {
                return;
            }

            var domainSpells = new DomainCasting(configuration);

            components.Add(domainSpells);
        }