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 ParseSneakAttackTalents() { var talentYaml = @" - name: Talent sneak-attack: true".ParseYaml().Children.First(); var talent = new RogueTalent(talentYaml); Assert.Equal(talent.Name, "Talent"); Assert.True(talent.IsSneakAttack); }
public void ParseAdvancedTalents() { var talentYaml = @" - name: Talent advanced-talent: true".ParseYaml().Children.First(); var talent = new RogueTalent(talentYaml); Assert.Equal(talent.Name, "Talent"); Assert.True(talent.IsAdvancedTalent); }
public SelectRogueTalentTests() { var basicData = new MemoryStore(); basicData.SetValue("name", "Basic Talent"); basicTalent = new RogueTalent(basicData); var advData = new MemoryStore(); advData.SetValue("name", "Advanced Talent"); advData.SetValue("advanced-talent", "true"); advancedTalent = new RogueTalent(advData); Talents = EntityGateway <RogueTalent> .LoadFromList(new RogueTalent[] { basicTalent, advancedTalent }); }