public Character() { Alignment = new Alignment(); Class = new CharacterClass(); Race = new Race(); InterestingTrait = string.Empty; Combat = new Combat(); Ability = new Ability(); Equipment = new Equipment(); Magic = new Magic(); }
public Ability GenerateWith(CharacterClass characterClass, Race race, Dictionary<string, Stat> stats, BaseAttack baseAttack) { var ability = new Ability(); ability.Stats = stats; ability.Languages = languageGenerator.GenerateWith(race, characterClass.Name, ability.Stats[StatConstants.Intelligence].Bonus); ability.Skills = skillsGenerator.GenerateWith(characterClass, race, ability.Stats); ability.Feats = featsGenerator.GenerateWith(characterClass, race, ability.Stats, ability.Skills, baseAttack); var allFeatGrantingSkillBonuses = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, FeatConstants.SkillBonus); var featNames = ability.Feats.Select(f => f.Name); var featNamesGrantingSkillBonuses = allFeatGrantingSkillBonuses.Intersect(featNames); var featGrantingSkillBonuses = ability.Feats.Where(f => featNamesGrantingSkillBonuses.Contains(f.Name)); var allSkills = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.SkillGroups, GroupConstants.Skills); foreach (var feat in featGrantingSkillBonuses) { if (feat.Foci.Any()) { foreach (var focus in feat.Foci) { if (allSkills.Any(s => focus.StartsWith(s)) == false) continue; var skill = allSkills.First(s => focus.StartsWith(s)); if (ability.Skills.ContainsKey(skill) == false) continue; var circumstantial = allSkills.Contains(focus) == false; ability.Skills[skill].CircumstantialBonus |= circumstantial; if (circumstantial == false) ability.Skills[skill].Bonus += feat.Power; } } else { var skillsToReceiveBonus = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.SkillGroups, feat.Name); foreach (var skill in skillsToReceiveBonus) if (ability.Skills.ContainsKey(skill)) ability.Skills[skill].Bonus += feat.Power; } } return ability; }
public Animal() { Race = new Race(); Ability = new Ability(); Combat = new Combat(); }
private void SetUpGenerators() { mockAlignmentGenerator = new Mock<IAlignmentGenerator>(); mockAbilitiesGenerator = new Mock<IAbilitiesGenerator>(); mockCombatGenerator = new Mock<ICombatGenerator>(); mockTreasureGenerator = new Mock<IEquipmentGenerator>(); mockCharacterClassGenerator = new Mock<ICharacterClassGenerator>(); mockRaceGenerator = new Mock<IRaceGenerator>(); mockMagicGenerator = new Mock<IMagicGenerator>(); generator = new ConfigurableIterationGenerator(4); alignment = new Alignment(); characterClass = new CharacterClass(); race = new Race(); ability = new Ability(); equipment = new Equipment(); combat = new Combat(); baseAttack = new BaseAttack(); feats = new List<Feat>(); magic = new Magic(); alignment.Goodness = "goodness"; alignment.Lawfulness = "lawfulness"; characterClass.Level = 1; characterClass.Name = "class name"; race.BaseRace = BaseRace; race.Metarace = RaceConstants.Metaraces.None; ability.Feats = feats; ability.Stats["stat"] = new Stat("stat"); mockCombatGenerator.Setup(g => g.GenerateBaseAttackWith(It.IsAny<CharacterClass>(), It.IsAny<Race>(), It.IsAny<Dictionary<string, Stat>>())).Returns(() => new BaseAttack()); mockTreasureGenerator.Setup(g => g.GenerateWith(It.IsAny<IEnumerable<Feat>>(), It.IsAny<CharacterClass>(), It.IsAny<Race>())).Returns(() => new Equipment()); mockCombatGenerator.Setup(g => g.GenerateWith(It.IsAny<BaseAttack>(), It.IsAny<CharacterClass>(), It.IsAny<Race>(), It.IsAny<IEnumerable<Feat>>(), It.IsAny<Dictionary<string, Stat>>(), It.IsAny<Equipment>())).Returns(() => new Combat()); mockMagicGenerator.Setup(g => g.GenerateWith(It.IsAny<Alignment>(), It.IsAny<CharacterClass>(), It.IsAny<Race>(), It.IsAny<Dictionary<string, Stat>>(), It.IsAny<IEnumerable<Feat>>(), It.IsAny<Equipment>())).Returns(() => new Magic()); mockAlignmentGenerator.Setup(g => g.GenerateWith(mockAlignmentRandomizer.Object)).Returns(alignment); mockCharacterClassGenerator.Setup(g => g.GenerateWith(alignment, mockLevelRandomizer.Object, mockClassNameRandomizer.Object)).Returns(characterClass); mockCharacterClassGenerator.Setup(g => g.GenerateWith(alignment, mockSetLevelRandomizer.Object, mockClassNameRandomizer.Object)).Returns(characterClass); mockRaceGenerator.Setup(g => g.GenerateWith(alignment, characterClass, mockBaseRaceRandomizer.Object, mockMetaraceRandomizer.Object)).Returns(race); mockAbilitiesGenerator.Setup(g => g.GenerateStats(characterClass, race, mockStatsRandomizer.Object)).Returns(ability.Stats); mockAbilitiesGenerator.Setup(g => g.GenerateWith(characterClass, race, ability.Stats, baseAttack)).Returns(ability); mockTreasureGenerator.Setup(g => g.GenerateWith(ability.Feats, characterClass, race)).Returns(equipment); mockCombatGenerator.Setup(g => g.GenerateWith(baseAttack, characterClass, race, ability.Feats, ability.Stats, equipment)).Returns(combat); mockCombatGenerator.Setup(g => g.GenerateBaseAttackWith(characterClass, race, ability.Stats)).Returns(baseAttack); mockMagicGenerator.Setup(g => g.GenerateWith(alignment, characterClass, race, ability.Stats, ability.Feats, equipment)).Returns(magic); }
public void Setup() { ability = new Ability(); }