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) ); } } }
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); }
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); } }
public void Execute(Utility.ComponentContainer components) { var domains = components.GetAll <Domain>(); if (domains.Empty()) { return; } var domainSpells = new DomainCasting(configuration); components.Add(domainSpells); }