Exemple #1
0
        public void SelectARandomClassForACharacter()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());

            subject.ChooseAny(character);
            Assert.NotNull(character.Class.Name);
        }
Exemple #2
0
        public void NonCastersDoNothing()
        {
            var character     = new CharacterSheet(CharacterStrategy.Default());
            var prepareSpells = new PrepareSpells();

            prepareSpells.ExecuteStep(character);
        }
Exemple #3
0
        public void BreaksDescriptionIntoIndividualComponentsForMoreFlexibleDescriptions()
        {
            // Set up Descriptors
            var descs = new MemoryStore();

            descs.AddListItem(new MemoryStore("pattern", new string[] { "dragon" }));
            descs.AddListItem(new MemoryStore("color", new string[] { "black" }));

            // Set up Templates
            var temps = new MemoryStore();

            temps.AddListItem(new MemoryStore("template", "{{feature}} of a {{descriptor \"color\"}} {{descriptor \"pattern\"}}."));

            // Set up physical Feature
            var mem = new MemoryStore();

            mem.SetValue("name", "tattoo");
            mem.SetValue("descriptors", descs);
            mem.SetValue("templates", temps);
            var phys = new PhysicalFeature(mem);

            var gateway = EntityGateway <PhysicalFeature> .LoadWithSingleItem(phys);

            var subject = new CreatePhysicalFeatures(gateway);

            var character = new CharacterSheet(CharacterStrategy.Default());

            character.Gender = Gender.Female;

            subject.ExecuteStep(character);

            Assert.Equal(character.Appearance.PhysicalAppearance, "Tattoo of a black dragon.");
        }
Exemple #4
0
        public void CharacterDesignerWillExecuteStepsUntilCharacterIsAtStrategyLevelIfTypeIsLevelUp()
        {
            var data = new MemoryStore();

            data.SetValue("name", "Test One");
            data.SetValue("type", "levelup");
            var steps = new MemoryStore();

            steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepLevelUp"));
            data.SetValue("steps", steps);

            var build = new CharacterStrategy();

            build.TargetLevel = 5;
            var character = new CharacterSheet(build);

            character.SetClass(Class.CreateForTesting());

            var designer = new CharacterDesigner(data);

            designer.ExecuteStep(character);
            Assert.Equal(designer.DesignerType, CharacterDesigner.Type.LevelUp);
            Assert.Equal(character.Level, 5);
            Assert.Equal(character.Age, 4);
        }
Exemple #5
0
        public void CanGetAComponentWithADefaultIfMissing()
        {
            var sheet = new CharacterSheet(CharacterStrategy.Default());
            var comp  = sheet.GetOrDefault <Occupation>(Occupation.Unemployed());

            Assert.Equal(Occupation.Unemployed(), comp);
        }
Exemple #6
0
    protected virtual void Following()
    {
        Vector3 ToEnemyDistance = (following.transform.position - transform.position);

        //Vector3 direction = ToEnemyDistance.normalized;
        if (ToEnemyDistance.sqrMagnitude >= CircleRadius)
        {
            followingCharacter = null;
            Status             = AIStatus.BackToStart;
        }
        else
        {
            if (ToEnemyDistance.x > DistanceToAttack)
            {
                RunRight();
            }
            else if (ToEnemyDistance.x < -DistanceToAttack)
            {
                RunLeft();
            }
            else
            {
                Status    = AIStatus.Attacking;
                CanAttack = true;
            }
        }
    }
Exemple #7
0
 private void ProcessSteps(CharacterSheet character, CharacterStrategy strategy)
 {
     foreach (var step in designSteps)
     {
         ShortLog.DebugFormat("Executing Step: {0}", step);
         step.ExecuteStep(character);
     }
 }
Exemple #8
0
        public void IfNothingIsAffordableStop()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());

            character.Inventory.CoinPurse.SetValue(1);
            subject.ExecuteStep(character);
            Assert.Empty(character.Inventory.All);
        }
Exemple #9
0
        public void IfChoiceListIsEmptyChooseAnyRace()
        {
            var strategy = new CharacterStrategy();
            var sheet    = new CharacterSheet(strategy);

            raceSelectorSubject.ExecuteStep(sheet);
            Assert.NotNull(sheet.Race);
        }
Exemple #10
0
        public void SelectACombatStyle()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var step      = new SelectCombatStyle();

            step.ExecuteStep(character);
            Assert.NotNull(character.Get <CombatStyle>());
        }
Exemple #11
0
        public void AddingASpecialAbilityAddsToComponentList()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var ability   = new CompAbility();

            character.Add(ability);
            Assert.Equal(character.Components.Get <CompAbility>(), ability);
        }
Exemple #12
0
        public void DoNotSpendMoneyYouDoNotHave()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());

            character.Inventory.CoinPurse.SetValue(200);
            subject.ExecuteStep(character);
            Assert.True(character.Inventory.All.Count() >= 1);
        }
Exemple #13
0
        public void AddingAnAbilityThatImplementsIComponentWillCallInitialize()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var ability   = new CompAbility();

            character.Add(ability);
            Assert.True(ability.Called);
        }
Exemple #14
0
        public void AssignsARandomPersonalityType()
        {
            var builder = new PersonalityBuilder();
            var cs      = new CharacterSheet(CharacterStrategy.Default());

            builder.Random(cs);
            Assert.NotNull(cs.PersonalityType);
            Assert.IsType <PersonalityType>(cs.PersonalityType);
        }
Exemple #15
0
        public void EmptyOptionTableChoosesFromAnyOfTheClasses()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var choices   = new WeightedOptionTable <string>();

            Assert.Null(character.Class);
            subject.ChooseClass(character, choices);
            Assert.NotNull(character.Class.Name);
        }
Exemple #16
0
        public void CharacterCreatorExecutesEachBuildStepInSequence()
        {
            var strategy       = CharacterStrategy.Default();
            var characterSheet = new CharacterSheet(strategy);

            subject.ExecuteStep(characterSheet);
            Assert.Equal("Dummy One", characterSheet.Name);
            Assert.Equal(16, characterSheet.AbilityScores.GetScore(AbilityScoreTypes.Strength));
        }
Exemple #17
0
        public void AssignsSomeRandomIdeals()
        {
            var builder = new PersonalityBuilder();
            var cs      = new CharacterSheet(CharacterStrategy.Default());

            builder.Random(cs);
            Assert.NotNull(cs.Ideal);
            Assert.IsType <Ideal>(cs.Ideal);
        }
Exemple #18
0
        public void CharactersHaveVitalStats()
        {
            var sheet = new CharacterSheet(CharacterStrategy.Default());

            sheet.FirstName = "Foobar";
            sheet.Alignment = CharacterAlignment.LawfulGood;
            Assert.Equal("Foobar", sheet.Name);
            Assert.Equal(CharacterAlignment.LawfulGood, sheet.Alignment);
        }
Exemple #19
0
        public void SettlementsHaveManyCharactersInThem()
        {
            var settlement = new Settlement(new SettlementStrategy());

            settlement.AddInhabitant(new CharacterSheet(CharacterStrategy.Default()));
            settlement.AddInhabitant(new CharacterSheet(CharacterStrategy.Default()));

            Assert.Equal(2, settlement.Population);
        }
Exemple #20
0
        public void AddNamedWeightedTable()
        {
            var strat = new CharacterStrategy();

            strat.AddCustomValue("colors", "red", 10);
            Assert.Equal("red", strat.ChooseOption <string>("colors"));
            var copy = strat.Copy();

            Assert.Equal("red", copy.ChooseOption <string>("colors"));
        }
Exemple #21
0
        public void CanSerializeAndDeserializeTheCharacterStrategy()
        {
            var archer = strategies.Find("archer");
            var saved  = new YamlObjectStore();

            saved.Serialize(archer);
            var loaded = new CharacterStrategy(saved);

            Assert.Equal(archer.Name, loaded.Name);
        }
Exemple #22
0
        public void IfFeatIsAlreadySelectedItCannotBeSelectedAgain()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var cr1       = Feat.Named("Combat Reflexes");
            var cr2       = Feat.Named("Combat Reflexes");

            Assert.True(cr2.IsQualified(character));
            character.Add(cr1);
            Assert.False(cr2.IsQualified(character));
        }
Exemple #23
0
        public void HasAGroupOfRequiredStandardComponentsAdded()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());

            Assert.NotNull(character.Get <Inventory>());
            Assert.NotNull(character.Get <OffenseStats>());
            Assert.NotNull(character.Get <DefenseStats>());
            Assert.NotNull(character.Get <SizeStats>());
            Assert.NotNull(character.Get <SilverNeedle.Characters.Attacks.MeleeAttackBonus>());
        }
Exemple #24
0
        public void CharacterIsNotQualifiedIfWrongClassButRightLevel()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var wizard    = Class.CreateForTesting();

            wizard.Name = "Wizard";
            character.SetClass(wizard);
            character.SetLevel(4);
            Assert.False(prereq.IsQualified(character.Components));
        }
Exemple #25
0
        public void CharacterIsNotQualifiedIfRightClassButToLowLevel()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var fighter   = Class.CreateForTesting();

            fighter.Name = "Fighter";
            character.SetClass(fighter);
            character.SetLevel(3);
            Assert.False(prereq.IsQualified(character.Components));
        }
Exemple #26
0
        public void CharacterIsQualifiedIfHasTheSameClassAtAppropriateLevel()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());
            var fighter   = Class.CreateForTesting();

            fighter.Name = "Fighter";
            character.SetClass(fighter);
            character.SetLevel(4);
            Assert.True(prereq.IsQualified(character.Components));
        }
Exemple #27
0
        public void IfNoPreferredFeatsArePossibleJustSelectRandomlyFromAnyPossible()
        {
            var buildStrategy = new CharacterStrategy();
            var character     = new CharacterSheet(buildStrategy);

            character.Add(new FeatToken());
            selector.ExecuteStep(character);
            Assert.True(character.Feats.First().Equals(powerattack) ||
                        character.Feats.First().Equals(empowerspell));
        }
Exemple #28
0
        public void AddSpecialAbilitiesFromFirstLevelForClass()
        {
            var cls  = Class.CreateForTesting();
            var lvl1 = new Level(1);

            cls.Levels.Add(lvl1);
            var character = new CharacterSheet(CharacterStrategy.Default());

            subject.AssignClass(character, cls);
        }
Exemple #29
0
        public void HasAbilityToAddWeightingForOccupationalSkillsToStrategy()
        {
            var occ = new Occupation("peasant", "commonet", new string[] { });

            occ.Skills = new string[] { "Perception" };
            var strategy = new CharacterStrategy();

            occ.AddSkillEntry(strategy, 10);
            Assert.True(strategy.FavoredSkills.HasOption("Perception"));
        }
Exemple #30
0
        public void PicksUpSomeRandomGearWorthLessThan20000()
        {
            var character = new CharacterSheet(CharacterStrategy.Default());

            character.Inventory.CoinPurse.SetValue(50000);

            subject.ExecuteStep(character);
            Assert.True(character.Inventory.CoinPurse.Value >= 30000);
            Assert.True(character.Inventory.All.Count() >= 1);
        }