예제 #1
0
        public SimulationWindow(
            BaseSelectionControl baseSelection,
            ItemListControl itemList,
            CraftingControl crafting,
            CraftingResultsControl results,
            EquipmentFactory equipmentFactory,
            CurrencyFactory currencyFactory)
        {
            BaseSelection = baseSelection;
            ItemList      = itemList;
            Crafting      = crafting;
            Results       = results;

            _controls = new List <ISimulationControl>
            {
                BaseSelection,
                ItemList,
                Crafting,
                Results
            };

            Crafting.OnCompletion = () => OnNextClick(this, null);

            SelectedStep = BaseSelection;
            BaseSelection.Initialize(() => OnPropertyChanged(nameof(IsReady)));

            InitializeComponent();
            DataContext = this;

            _equipmentFactory = equipmentFactory;
            _currencyFactory  = currencyFactory;
        }
예제 #2
0
        public void RecordSurvivorDroppedEquipmentEvent()
        {
            var game     = new Game();
            var survivor = new Survivor("John");

            game.AddSurvivorToGame(survivor);;

            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var kar98        = EquipmentFactory.GetEquipment(EquipmentType.Kar98);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);
            var knife        = EquipmentFactory.GetEquipment(EquipmentType.Knife);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(kar98);
            survivor.PickUpItem(bottledWater);
            survivor.PickUpItem(knife);

            var result = survivor.ReceiveWound(1);

            var lastEvent = game.GameHistory.LastOrDefault();

            Assert.IsNotNull(lastEvent);
            Assert.IsTrue(lastEvent.EventDetail.StartsWith($"{survivor.Name} drops a piece of equipment"));
        }
예제 #3
0
        public void Initialize(CraftingTree craftingTree, EquipmentFactory equipmentFactory, CurrencyFactory currencyFactory, List <ItemPrototypeModel> itemPrototypes, double baseItemCost)
        {
            _craftingTree = craftingTree;
            _craftingTree.ClearCurrencySpent();

            _currencyFactory  = currencyFactory;
            _equipmentFactory = equipmentFactory;
            _itemPrototypes   = itemPrototypes.OrderByDescending(x => x.Value).ThenBy(x => x.ItemName).ToList();
            MatchingItems.Clear();
            EquipmentList.Clear();

            foreach (var prototype in _itemPrototypes)
            {
                MatchingItems.Add(prototype, new List <Equipment>());
            }

            if (_task != null && _task.Status == TaskStatus.Running)
            {
                _cancellationTokenSource.Cancel();
            }

            Progress      = -1;
            ScourCount    = 0;
            BaseItemCount = 0;
            BaseItemCost  = baseItemCost;

            OnPropertyChanged(nameof(Message));
            OnPropertyChanged(nameof(Progress));
            OnPropertyChanged(nameof(MessageVisibility));
        }
예제 #4
0
        public void RecordSurvivorDroppedEquipmentEvent()
        {
            var game     = new Game();
            var survivor = new Survivor("Bill");

            game.AddSurvivorToGame(survivor);;

            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var pistol       = EquipmentFactory.GetEquipment(EquipmentType.Pistol);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);
            var fryingPan    = EquipmentFactory.GetEquipment(EquipmentType.FireAxe);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(pistol);
            survivor.PickUpItem(bottledWater);
            survivor.PickUpItem(fryingPan);

            var result = survivor.SustainInjury(1);

            var lastEvent = game.GameHistory.LastOrDefault();

            Assert.IsNotNull(lastEvent);
            Assert.IsTrue(lastEvent.EventDetail.StartsWith($"{survivor.Name} drops a piece of equipment"));
        }
예제 #5
0
 public CraftingTestbedModel(EquipmentFactory factory, CurrencyFactory currencyFactory, EquipmentFetch equipmentFetch)
 {
     _equipmentFetch  = equipmentFetch;
     _factory         = factory;
     CurrencyFactory  = currencyFactory;
     ItemSubtypeNames = equipmentFetch.FetchSubtypes();
     Status           = new ItemStatus();
 }
예제 #6
0
        public void UniqRandom()
        {
            var env  = CreateTestEnv();
            var ef   = new EquipmentFactory(env.GameManager.Container);
            var loot = ef.GetRandom(EquipmentKind.Weapon, 2, EquipmentClass.Unique);

            Assert.NotNull(loot);
        }
예제 #7
0
 public CraftingProcessView(CurrencyFactory factory, IItemConfigRepository configRepository, EquipmentFactory equipmentFactory)
 {
     _configRepository = configRepository;
     _equipmentFactory = equipmentFactory;
     CraftingTree      = new CraftingTree(factory);
     Tree = new CraftingTreeViewModel(CraftingTree, _selected);
     InitializeComponent();
     DataContext = this;
 }
예제 #8
0
    public void Init()
    {
        sm.InfoLoad();
        for (int i = 0; i < 3; i++)
        {
            if (sm.Saves[i] != null && m_LoadText[i] != null)
            {
                m_LoadText[i].text = sm.Saves[i].Time.ToString();
            }
            else if (m_LoadText[i] != null)
            {
                m_LoadText[i].text = "";
            }
        }

        m_TaskNum       = 0;                       //当前任务ID
        player_position = new Vector3(0, 0, 0);    //记录场景移动时下一次移动的坐标,z坐标一般为0

        //三个人物
        //p1 = new Person(0, "小黑", 1000, 9999, 20, 30, 11, 18, 8, 1, 0, 3, 2, 2, 3, 4, 1, 1, "myimport/zhujue1/女主行走图", 2, 0, 0);
        //p2 = new Person(1, "小绿", 1000, 9999, 20, 30, 12, 18, 8, 1, 0, 3, 2, 2, 3, 4, 1, 1, "myimport/Npc/038-Mage06", 2, 0, 0);
        //p3 = new Person(2, "小蓝", 1000, 9999, 20, 30, 51, 18, 8, 1, 0, 3, 2, 2, 3, 4, 1, 1, "myimport/Npc/001-Fighter01", 2, 0, 0);

        p1 = new Person(0, "克萝莉亚", 590, 570, 50, 48, 73, 10, 10, 1, 0, 53, 14, 15, 7, 3, 2, 49, "myimport/zhujue1/女主行走图", 2, 0, 0);
        p2 = new Person(1, "西露达", 422, 606, 35, 71, 46, 8, 12, 1, 0, 47, 20, 11, 5, 2, 3, 56, "myimport/Npc/038-Mage06", 2, 0, 0);
        p3 = new Person(2, "帕吉尔", 710, 535, 67, 40, 58, 12, 8, 1, 0, 69, 9, 18, 6, 3, 2, 49, "myimport/Npc/001-Fighter01", 2, 0, 0);


        //背包,包括装备,物品,金钱
        bag = new BackPack();

        tk = new TalkText();

        tl = new TaskList();

        tk = new TalkText();
        p1.AddSkill(p1.skillFactory.CreateSkill("无限剑制"));
        p1.AddSkill(p1.skillFactory.CreateSkill("六脉神剑"));
        p1.AddSkill(p1.skillFactory.CreateSkill("八荒六合"));
        p2.AddSkill(p2.skillFactory.CreateSkill("大火球"));
        p2.AddSkill(p2.skillFactory.CreateSkill("岩浆爆破"));
        p2.AddSkill(p2.skillFactory.CreateSkill("烈焰风暴"));
        p3.AddSkill(p3.skillFactory.CreateSkill("瞬劈"));
        p3.AddSkill(p3.skillFactory.CreateSkill("生死不觉"));
        p3.AddSkill(p3.skillFactory.CreateSkill("临危不惧"));
        bag.Money = 500;


        ProductFactory pf = new ProductFactory();

        bag.SetGoods(pf.CreateProduct("血气丸", 3));
        bag.SetGoods(pf.CreateProduct("凝神露", 3));
        EquipmentFactory ef = new EquipmentFactory();

        bag.SetGoods(ef.CreateEquipment("铁盔"));
        bag.SetGoods(ef.CreateEquipment("大法师之帽"));
    }
예제 #9
0
        public void FirstItemPickedUpIsInHand_GivenNoItemsInInventory()
        {
            var survivor    = new Survivor("Bill");
            var baseballBat = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);

            var isPickedUp = survivor.PickUpItem(baseballBat);

            Assert.IsTrue(survivor.Inventory.Contains(baseballBat));
            Assert.IsTrue(baseballBat.InHand);
        }
예제 #10
0
        public void EquipmentIsAddedToInventory_GivenSufficientCapacity()
        {
            var survivor    = new Survivor("Bill");
            var baseballBat = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);

            var isPickedUp = survivor.PickUpItem(baseballBat);

            Assert.IsTrue(survivor.Inventory.Contains(baseballBat));
            Assert.IsTrue(isPickedUp);
        }
예제 #11
0
        public void AddOneEquipmentToInventory()
        {
            var survivor = new Survivor("John");
            var knife    = EquipmentFactory.GetEquipment(EquipmentType.Knife);

            var isPickedUp = survivor.PickUpItem(knife);

            Assert.IsTrue(survivor.Inventory.Contains(knife));
            Assert.IsTrue(isPickedUp);
        }
예제 #12
0
        public void OneItemPickedUpGoesInHand()
        {
            var survivor = new Survivor("John");
            var knife    = EquipmentFactory.GetEquipment(EquipmentType.Knife);

            var isPickedUp = survivor.PickUpItem(knife);

            Assert.IsTrue(survivor.Inventory.Contains(knife));
            Assert.IsTrue(knife.InHand);
        }
예제 #13
0
 public BaseSelectionControl(EquipmentFetch fetch, EquipmentFactory factory)
 {
     _itemLevel       = 84;
     _fetch           = fetch;
     _factory         = factory;
     Subtypes         = fetch.FetchSubtypes().OrderBy(x => x).ToList();
     SelectedLeague   = Leagues[0];
     SelectedCategory = Categories[0];
     OnPropertyChanged(nameof(SelectedLeague));
     OnPropertyChanged(nameof(SelectedCategory));
     InitializeComponent();
     DataContext = this;
 }
예제 #14
0
        public void SecondItemPickedUpIsInHand_GivenNoItemsInInventory()
        {
            var survivor    = new Survivor("Bill");
            var baseballBat = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana      = EquipmentFactory.GetEquipment(EquipmentType.Katana);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);

            Assert.IsTrue(survivor.Inventory.Contains(baseballBat));
            Assert.IsTrue(survivor.Inventory.Contains(katana));
            Assert.IsTrue(baseballBat.InHand);
            Assert.IsTrue(katana.InHand);
        }
예제 #15
0
        public void RecordEquipmentPickedUpBySurvivor()
        {
            var game     = new Game();
            var survivor = new Survivor("John");

            game.AddSurvivorToGame(survivor);
            var equipment = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);

            survivor.PickUpItem(equipment);
            var lastEvent = game.GameHistory.LastOrDefault();

            Assert.IsNotNull(lastEvent);
            Assert.IsTrue(lastEvent.EventDetail.StartsWith($"{survivor.Name} picks up a piece of equipment ({equipment.Name})"));
        }
예제 #16
0
        public BattleForm(IPokemonParty <IPokemon> pokemonParty, IPokemonParty <IPokemon> enemyPokemonParty)
        {
            InitializeComponent();

            attackButtons[0] = btnAttack1;
            attackButtons[1] = btnAttack2;
            attackButtons[2] = btnAttack3;
            attackButtons[3] = btnAttack4;

            _battleLogController = new BattleLogController(this);
            _playerParty         = pokemonParty;
            _enemyParty          = enemyPokemonParty;
            _equipment           = EquipmentFactory.CreateEquipment();
        }
예제 #17
0
        public void TwoItemsPickedUpGoesInHand()
        {
            var survivor = new Survivor("John");
            var Knife    = EquipmentFactory.GetEquipment(EquipmentType.Knife);
            var katana   = EquipmentFactory.GetEquipment(EquipmentType.Katana);

            survivor.PickUpItem(Knife);
            survivor.PickUpItem(katana);

            Assert.IsTrue(survivor.Inventory.Contains(Knife));
            Assert.IsTrue(survivor.Inventory.Contains(katana));
            Assert.IsTrue(Knife.InHand);
            Assert.IsTrue(katana.InHand);
        }
예제 #18
0
        public CharacterBase()
        {
            this.equipmentset.mainHand = EquipmentFactory.getWeapon("TamashiNoHakai");
            this.equipmentset.boots    = EquipmentFactory.getArmor("LeatherBoots");
            this.equipmentset.legs     = EquipmentFactory.getArmor("LeatherTrousers");
            this.equipmentset.helmet   = EquipmentFactory.getArmor("LeatherHelmet");
            this.equipmentset.chest    = EquipmentFactory.getArmor("LeatherJacket");
            this.equipmentset.hands    = EquipmentFactory.getArmor("LeatherGloves");

            this.moveset.addToMovelist(AbilityFactory.getAbility("Ember"));
            this.moveset.addToMovelist(AbilityFactory.getAbility("InfernalBlaze"));
            this.moveset.addToMovelist(AbilityFactory.getAbility("Devotion"));
            this.moveset.addToMovelist(AbilityFactory.getAbility("Flashflood"));
            this.moveset.addToMovelist(AbilityFactory.getAbility("Enrage"));
        }
예제 #19
0
        public void NoItemDroppedWhenWounded_GivenSufficentCarryingCapacity()
        {
            var survivor = new Survivor("Bill");

            var baseballBat = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana      = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var pistol      = EquipmentFactory.GetEquipment(EquipmentType.Pistol);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(pistol);

            var result = survivor.SustainInjury(1);

            Assert.IsFalse(result.isEquipmentDropped);
        }
예제 #20
0
        public void NotDropItemWhenWoundedAndSufficientEquipmentCapacity()
        {
            var survivor = new Survivor("John");

            var baseballBat = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana      = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var knife       = EquipmentFactory.GetEquipment(EquipmentType.Knife);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(knife);

            var result = survivor.ReceiveWound(1);

            Assert.IsFalse(result.isEquipmentDropped);
        }
예제 #21
0
        static List <ICharacter> CreateGoblins(int Amount = 1)
        {
            List <ICharacter> returnChars = new List <ICharacter>();
            Random            rMoney      = new Random();

            for (int i = 0; i < Amount; i++)
            {
                ICharacter goblin = CharacterFactory.CreateCharacter(new PlayerCharacter
                {
                    Name           = "Goblin_" + (i + 1),
                    Level          = rMoney.Next(1, 3),
                    ClassType      = ClassType.Fighter,
                    RaceType       = RaceType.Human,
                    RandomizeStats = true,
                    CoinPurse      = { Gold = rMoney.Next(0, 2), Copper = rMoney.Next(0, 100), Silver = rMoney.Next(0, 100), }
                });
                //goblin.CreateCharacter();

                IWeapon sword = EquipmentFactory.CreateWeapon(new Weapon
                {
                    Name       = "Rusty Sword",
                    AttackType = WeaponAttackType.S,
                    Category   = WeaponCategory.ShortSword,
                    Price      = { Silver = 12 },
                    Damage     = { SidedDie = 6 },
                    SlotType   = EquipmentSlot.PRIMARY,
                    Size       = WeaponSize.S
                });

                IGear LeatherChest = EquipmentFactory.CreateGear(new Gear
                {
                    Name          = "Leather Chest Piece",
                    AC            = 9,
                    EquipmentType = EquipmentType.Clothing,
                    Price         = { Silver = 50 },
                    SlotType      = EquipmentSlot.CHEST
                });

                goblin.AddItem(LeatherChest, 1);
                goblin.AddItem(sword, 1);
                goblin.EquipItem(sword);
                goblin.EquipItem(LeatherChest);
                returnChars.Add(goblin);
            }
            return(returnChars);
        }
예제 #22
0
        public void ThirdItemGoesToReserve()
        {
            var survivor     = new Survivor("John");
            var Knife        = EquipmentFactory.GetEquipment(EquipmentType.Knife);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);

            survivor.PickUpItem(Knife);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(bottledWater);

            Assert.IsTrue(survivor.Inventory.Contains(Knife));
            Assert.IsTrue(survivor.Inventory.Contains(katana));
            Assert.IsTrue(survivor.Inventory.Contains(bottledWater));
            Assert.IsTrue(Knife.InHand);
            Assert.IsTrue(katana.InHand);
            Assert.IsFalse(bottledWater.InHand);
        }
예제 #23
0
        public void ThirdItemPickedUpIsInReserve_GivenNoItemsInInventory()
        {
            var survivor     = new Survivor("Bill");
            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(bottledWater);

            Assert.IsTrue(survivor.Inventory.Contains(baseballBat));
            Assert.IsTrue(survivor.Inventory.Contains(katana));
            Assert.IsTrue(survivor.Inventory.Contains(bottledWater));
            Assert.IsTrue(baseballBat.InHand);
            Assert.IsTrue(katana.InHand);
            Assert.IsFalse(bottledWater.InHand);
        }
예제 #24
0
파일: Robot.cs 프로젝트: AtwoodDeng/miniRTS
    virtual public void InitEquitments(RobotCreatInfo info)
    {
        // Debug.Log("init Equipment");

        //TODO: make the position selection not in an unchangeable function
        //the positions are now defined in the function
        EquipmentFactory.EquipmentCreatePosition[] posList =
        {
            EquipmentFactory.EquipmentCreatePosition.Up,
            EquipmentFactory.EquipmentCreatePosition.LeftRight,
            EquipmentFactory.EquipmentCreatePosition.Down,
        };

        for (int i = 0; i < info.equipments.Length && i < posList.Length; ++i)
        {
            string equipmentName = info.equipments[i].ToString();
            EquipmentFactory.EquipmentCreatePosition pos = posList[i];
            equipmentList.Add(EquipmentFactory.CreateEquipment(equipmentName, this, pos));
        }
    }
예제 #25
0
        public void EquipmentNotAddedWhenFullEquipmentCapacity()
        {
            var survivor     = new Survivor("John");
            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var sunglasses   = EquipmentFactory.GetEquipment(EquipmentType.Sunglasses);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);
            var kar98        = EquipmentFactory.GetEquipment(EquipmentType.Kar98);
            var knife        = EquipmentFactory.GetEquipment(EquipmentType.Knife);

            survivor.PickUpItem(katana);
            survivor.PickUpItem(sunglasses);
            survivor.PickUpItem(bottledWater);
            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(kar98);

            var isPickedUp = survivor.PickUpItem(knife);

            Assert.IsFalse(survivor.Inventory.Contains(knife));
            Assert.IsFalse(isPickedUp);
        }
예제 #26
0
        public void EquipmentIsNotAddedToInventory_GivenNoCapacity()
        {
            var survivor     = new Survivor("Bill");
            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var pistol       = EquipmentFactory.GetEquipment(EquipmentType.Pistol);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);
            var fryingPan    = EquipmentFactory.GetEquipment(EquipmentType.FireAxe);
            var molotov      = EquipmentFactory.GetEquipment(EquipmentType.CrowBar);

            survivor.PickUpItem(katana);
            survivor.PickUpItem(pistol);
            survivor.PickUpItem(bottledWater);
            survivor.PickUpItem(fryingPan);
            survivor.PickUpItem(molotov);

            var isPickedUp = survivor.PickUpItem(baseballBat);

            Assert.IsFalse(survivor.Inventory.Contains(baseballBat));
            Assert.IsFalse(isPickedUp);
        }
예제 #27
0
        public void DropItemWhenWoundedAndFullEquipmentCapacity()
        {
            var survivor = new Survivor("John");

            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var sunglasses   = EquipmentFactory.GetEquipment(EquipmentType.Sunglasses);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);
            var knife        = EquipmentFactory.GetEquipment(EquipmentType.Knife);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(sunglasses);
            survivor.PickUpItem(bottledWater);
            survivor.PickUpItem(knife);

            var result = survivor.ReceiveWound(1);

            Assert.IsTrue(result.isEquipmentDropped);
            Assert.IsNotNull(result.droppedEquipment);
            Assert.AreEqual(4, survivor.CarryingCapacity);
            Assert.IsFalse(result.droppedEquipment.InHand);
        }
예제 #28
0
        public void DropAnItemWhenWounded_GivenFiveItemsCarried()
        {
            var survivor = new Survivor("Bill");

            var baseballBat  = EquipmentFactory.GetEquipment(EquipmentType.BaseballBat);
            var katana       = EquipmentFactory.GetEquipment(EquipmentType.Katana);
            var pistol       = EquipmentFactory.GetEquipment(EquipmentType.Pistol);
            var bottledWater = EquipmentFactory.GetEquipment(EquipmentType.BottledWater);
            var fryingPan    = EquipmentFactory.GetEquipment(EquipmentType.FireAxe);

            survivor.PickUpItem(baseballBat);
            survivor.PickUpItem(katana);
            survivor.PickUpItem(pistol);
            survivor.PickUpItem(bottledWater);
            survivor.PickUpItem(fryingPan);

            var result = survivor.SustainInjury(1);

            Assert.IsTrue(result.isEquipmentDropped);
            Assert.IsNotNull(result.droppedEquipment);
            Assert.AreEqual(4, survivor.CarryingCapacity);
            Assert.IsFalse(result.droppedEquipment.InHand);
        }
예제 #29
0
 public LootCrafter(Container container)
 {
     this.container   = container;
     equipmentFactory = container.GetInstance <EquipmentFactory>();
 }
예제 #30
0
        static ICharacter CreateMainCharacter(string characterName)
        {
            ICharacter Character = CharacterFactory.CreateCharacter(new PlayerCharacter
            {
                Name           = characterName,
                Level          = 1,
                RaceType       = RaceType.Human,
                ClassType      = ClassType.Fighter,
                MainCharacter  = true,
                RandomizeStats = true,
                OwnerName      = "Jonathan Favorite"
            });

            IWeapon Sword = EquipmentFactory.CreateWeapon(new Weapon
            {
                Name       = "Testing Sword (One hand)",
                AttackType = WeaponAttackType.S,
                Category   = WeaponCategory.BastardSwordOneHanded,
                TwoHanded  = false,
                Price      = { Gold = 1, Silver = 50 },
                Damage     = { Amount = 1, SidedDie = 8, Bonus = 1 },
                Weareable  = true,
                SlotType   = EquipmentSlot.PRIMARY
            });

            IGear Shield = EquipmentFactory.CreateGear(new Gear
            {
                Name      = "Testing Shield",
                ArmorType = ArmorTypeList.Shield,
                SlotType  = EquipmentSlot.SECONDARY,
                AC        = 0,
                StatMods  = { new StatModifier {
                                  Modifier = ItemBonusList.AC, Value = 2
                              } }
            });

            IGear Head = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Head",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Silver = 50 },
                SlotType      = EquipmentSlot.HEAD,
                ArmorType     = ArmorTypeList.ChainMail,
            });

            IGear NewHead = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Head #1",
                AC            = 1,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Silver = 50 },
                SlotType      = EquipmentSlot.HEAD,
                ArmorType     = ArmorTypeList.PlateMail,
            });

            IGear Shoulder = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Shoulder",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Gold = 123 },
                SlotType      = EquipmentSlot.SHOULDER,
                ArmorType     = ArmorTypeList.Leather
            });
            IGear Chest = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Chest",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Gold = 123 },
                SlotType      = EquipmentSlot.CHEST,
                ArmorType     = ArmorTypeList.Leather
            });
            IGear Wrists = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Wrist",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Gold = 123 },
                SlotType      = EquipmentSlot.WRIST,
                ArmorType     = ArmorTypeList.Leather
            });
            IGear Hands = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Hands",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Gold = 123 },
                SlotType      = EquipmentSlot.HANDS,
                ArmorType     = ArmorTypeList.Leather
            });
            IGear Legs = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Legs",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Gold = 123 },
                SlotType      = EquipmentSlot.LEGS,
                ArmorType     = ArmorTypeList.Leather
            });
            IGear Feet = EquipmentFactory.CreateGear(new Gear
            {
                Name          = "Testing Feet",
                AC            = 6,
                EquipmentType = EquipmentType.Clothing,
                Price         = { Gold = 123 },
                SlotType      = EquipmentSlot.FEET,
                ArmorType     = ArmorTypeList.Leather
            });

            Character.AddItem(Head, 1);
            Character.AddItem(NewHead, 1);
            Character.AddItem(Shoulder, 1);
            Character.AddItem(Chest, 1);
            Character.AddItem(Wrists, 1);
            Character.AddItem(Hands, 1);
            Character.AddItem(Legs, 1);
            Character.AddItem(Feet, 1);
            Character.AddItem(Sword, 1);
            Character.AddItem(Shield, 1);

            Character.EquipItem(Head);
            Character.EquipItem(NewHead);
            Character.EquipItem(Shoulder);
            Character.EquipItem(Chest);
            Character.EquipItem(Wrists);
            Character.EquipItem(Hands);
            Character.EquipItem(Legs);
            Character.EquipItem(Feet);
            Character.EquipItem(Sword);
            Character.EquipItem(Shield);



            ISpell MagicMissle = SpellFactory.CreateSpell(new Spell
            {
                SpellID = "magic_missles_level_1",
                Name    = "Magic Missle",
                Level   = 1,
                School  =
                {
                    SpellSchool.Evocation
                },
                Range       = { RangeType = SpellRangeType.Yards, yards = 60 },
                Compontents = { SpellCompontents.V, SpellCompontents.S },
                Duration    = new SpellDurationInfo {
                    DurationType = SpellDurationType.Instantaneous
                },
                CastingTime = 1,
                Classes     =
                {
                    ClassType.Wizard
                },
                AOE = new AreaOfEffect
                {
                    Type    = AOETypes.CUBE,
                    AOESize = 10,
                    Ruler   = RulerTypes.Feet
                },
                SavingThrows =
                {
                    SavingThrowType.None
                },
                Description = "Use of magic missles spell creates up to five missles of magical energy that dart forth from the wizard's fingertip and unerringly strike their target. This includes enemy creatures in a melee."
            });

            Character.AddSpell(MagicMissle);

            return(Character);
        }