public async Task CharacterModel_GetDamageTotalString_Default_Speed_Should_Pass() { // Arrange // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand", Damage = 1 }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "Pokeball", Damage = 1 }); var data = new CharacterModel(); data.Level = 1; // Add items data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); data.AddItem(ItemLocationEnum.Pokeball, (await ItemIndexViewModel.Instance.ReadAsync("Pokeball")).Id); // Add Pokedex data.Pokedex.Add(new MonsterModel { Attack = 5 }); data.Pokedex.Add(new MonsterModel { Attack = 15 }); // Act // Add the second item, this will return the first item as the one replaced var result = data.GetDamageTotalString; // Reset // Assert Assert.AreEqual("1 + 1D 2 + 1D 20", result); }
public async Task CharacterModel_AddItem_Default_Replace_Should_Pass() { // ArDefense var data = new CharacterModel(); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Id = "head" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Id = "necklass" }); var itemOld = ItemIndexViewModel.Instance.Dataset.FirstOrDefault(); var itemNew = ItemIndexViewModel.Instance.Dataset.LastOrDefault(); // Add the first item data.AddItem(ItemLocationEnum.Head, itemOld.Id); // Act // Add the second item, this will return the first item as the one replaced var result = data.AddItem(ItemLocationEnum.Head, itemNew.Id); // Reset // Assert Assert.AreEqual(itemOld.Id, result.Id); }
public async Task CharacterModel_GetDamageItemBonus_Default_Damage_Should_Pass() { // Arrange Game.Helpers.DataSetsHelper.WarmUp(); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand", Damage = 1 }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "Pokeball", Damage = 1 }); var data = new CharacterModel(); data.Level = 1; // Add the first item data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); data.AddItem(ItemLocationEnum.Pokeball, (await ItemIndexViewModel.Instance.ReadAsync("Pokeball")).Id); // Act // Add the second item, this will return the first item as the one replaced var result = data.GetDamageItemBonus; // Reset // Assert Assert.AreEqual(2, result); }
public async Task CharacterModel_GetDamageTotalString_Default_Speed_Should_Pass() { // ArDefense // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand", Damage = 1 }); var data = new CharacterModel(); data.Level = 1; // Add the first item data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); Game.Helpers.DiceHelper.EnableForcedRolls(); Game.Helpers.DiceHelper.SetForcedRollValue(1); // Act // Add the second item, this will return the first item as the one replaced var result = data.GetDamageTotalString; // Reset Game.Helpers.DiceHelper.DisableForcedRolls(); // Assert Assert.AreEqual("1 + 1D 1", result); }
public async Task CharacterModel_GetAttackTotal_Default_Attack_Should_Pass() { // Arrange // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); // Create items await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Id = "Head" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Id = "Necklass" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 4000, Id = "OffHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 50000, Id = "RightFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 600000, Id = "LeftFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 7000000, Id = "Feet" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 80000000, Id = "Pokeball" }); // Create CharacterModel var data = new CharacterModel(); data.Level = 1; // Add items data.AddItem(ItemLocationEnum.Head, (await ItemIndexViewModel.Instance.ReadAsync("Head")).Id); data.AddItem(ItemLocationEnum.Necklass, (await ItemIndexViewModel.Instance.ReadAsync("Necklass")).Id); data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); data.AddItem(ItemLocationEnum.OffHand, (await ItemIndexViewModel.Instance.ReadAsync("OffHand")).Id); data.AddItem(ItemLocationEnum.RightFinger, (await ItemIndexViewModel.Instance.ReadAsync("RightFinger")).Id); data.AddItem(ItemLocationEnum.LeftFinger, (await ItemIndexViewModel.Instance.ReadAsync("LeftFinger")).Id); data.AddItem(ItemLocationEnum.Feet, (await ItemIndexViewModel.Instance.ReadAsync("Feet")).Id); data.AddItem(ItemLocationEnum.Pokeball, (await ItemIndexViewModel.Instance.ReadAsync("Pokeball")).Id); // Add Pokedex data.Pokedex.Add(new MonsterModel { Attack = 5 }); data.Pokedex.Add(new MonsterModel { Attack = 15 }); // Act var result = data.GetAttackTotal; // Reset // Assert Assert.AreEqual(87654342, result); }
public async Task CharacterModel_GetDamageRollValue_With_Item_Only_Should_Pass() { // Arrange // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); // Create items await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Id = "Head" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Id = "Necklass" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand", Damage = 1 }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 4000, Id = "OffHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 50000, Id = "RightFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 600000, Id = "LeftFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 7000000, Id = "Feet" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 80000000, Id = "Pokeball", Damage = 1 }); // Create CharacterModel var data = new CharacterModel(); data.Level = 1; // Add items data.AddItem(ItemLocationEnum.Head, (await ItemIndexViewModel.Instance.ReadAsync("Head")).Id); data.AddItem(ItemLocationEnum.Necklass, (await ItemIndexViewModel.Instance.ReadAsync("Necklass")).Id); data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); data.AddItem(ItemLocationEnum.OffHand, (await ItemIndexViewModel.Instance.ReadAsync("OffHand")).Id); data.AddItem(ItemLocationEnum.RightFinger, (await ItemIndexViewModel.Instance.ReadAsync("RightFinger")).Id); data.AddItem(ItemLocationEnum.LeftFinger, (await ItemIndexViewModel.Instance.ReadAsync("LeftFinger")).Id); data.AddItem(ItemLocationEnum.Feet, (await ItemIndexViewModel.Instance.ReadAsync("Feet")).Id); data.AddItem(ItemLocationEnum.Pokeball, (await ItemIndexViewModel.Instance.ReadAsync("Pokeball")).Id); // Set forced rolls Game.Helpers.DiceHelper.EnableForcedRolls(); Game.Helpers.DiceHelper.SetForcedRollValue(1); // Act // Add the second item, this will return the first item as the one replaced var result = data.GetDamageRollValue(); // Reset Game.Helpers.DiceHelper.DisableForcedRolls(); // Assert Assert.AreEqual(2, result); }
public async Task RoundEngine_GetItemFromPoolIfBetter_Valid_Left_Finger_Empty_Should_Pass() { Engine.EngineSettings.MonsterList.Clear(); // Both need to be character to fall through to the Name Test // Arrange var Character = new CharacterModel { Speed = 20, Level = 1, CurrentHealth = 1, ExperienceTotal = 1, Name = "Z", ListOrder = 1, Guid = "me" }; // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); var item1 = new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Location = ItemLocationEnum.Finger }; var item2 = new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Location = ItemLocationEnum.Finger }; await ItemIndexViewModel.Instance.CreateAsync(item1); await ItemIndexViewModel.Instance.CreateAsync(item2); Engine.EngineSettings.ItemPool.Add(item1); Engine.EngineSettings.ItemPool.Add(item2); // Put the Item on the Character Character.AddItem(ItemLocationEnum.LeftFinger, item1.Id); var CharacterPlayer = new PlayerInfoModel(Character); Engine.EngineSettings.CharacterList.Clear(); Engine.EngineSettings.CharacterList.Add(new PlayerInfoModel(Character)); // Make the List Engine.EngineSettings.PlayerList = Engine.Round.MakePlayerList(); // Act var result = Engine.Round.GetItemFromPoolIfBetter(CharacterPlayer, ItemLocationEnum.LeftFinger); // Reset // Assert Assert.AreEqual(true, result); Assert.AreEqual(item2.Id, CharacterPlayer.LeftFinger); // The 2nd item is better, so did they swap? }
public async Task AutoBattleEngine_RunAutoBattle_Character_Dies_Item_Drop_Should_Pass() { /* * 1 Characters: * lowest speed * 1 HP * holding an item * * 1 Monster * * Character should die, * Bogus item should be in item drop. */ //Arrange // Add Characters Engine.MaxNumberCharacters = 3; var CharacterPlayer = new CharacterModel { Speed = -1, // Will go last.... Level = 10, CurrentHealth = 1, TotalExperience = 1, }; // Add Item var Item = ItemIndexViewModel.Instance.GetRandomItem(); CharacterPlayer.AddItem(Item.Location, Item); Engine.CharacterList.Add(CharacterPlayer); // Add Monsters Engine.MaxNumberMonsters = 1; //Act await Engine.RunAutoBattle(); bool result = Engine.Score.ItemsDroppedList.Contains(Item.Name); //Reset Engine.MonsterList.Clear(); Engine.CharacterList.Clear(); Engine.EntityList.Clear(); Engine.ItemPool.Clear(); //Assert Assert.AreEqual(true, result); }
public void CharacterModel_AddItem_Unknown_Should_Fail() { // ArDefense var data = new CharacterModel(); // Act var result = data.AddItem(ItemLocationEnum.Unknown, "bogus"); // Reset // Assert Assert.AreEqual(null, result); }
public async Task RoundEngine_GetItemFromPoolIfBetter_Head_Better_Should_Pass() { // Arrange var Character = new CharacterModel { Speed = 20, Level = 1, CurrentHealth = 1, TotalExperience = 1, Name = "Z", Id = "me" }; // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); var item1 = new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Location = ItemLocationEnum.Head }; var item2 = new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Location = ItemLocationEnum.Head }; await ItemIndexViewModel.Instance.CreateAsync(item1); await ItemIndexViewModel.Instance.CreateAsync(item2); Engine.ItemPool.Add(item1); Engine.ItemPool.Add(item2); // Put the Item on the Character Character.AddItem(ItemLocationEnum.Head, item1); Engine.CharacterList.Clear(); Engine.CharacterList.Add(Character); // Make the List Engine.EntityList = Engine.MakeEntityList(); // Act var result = Engine.GetItemFromPoolIfBetter(Character, ItemLocationEnum.Head); // Reset // Assert Assert.AreEqual(true, result); Assert.AreEqual(item2.Id, Character.HeadItem); // The 2nd item is better, so did they swap? }
public async Task CharacterModel_GetDamageRollAttack_Default_Speed_Should_Pass() { // ArDefense // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Id = "head" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Id = "necklass" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 4000, Id = "OffHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 50000, Id = "RightFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 600000, Id = "LeftFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 7000000, Id = "feet" }); var data = new CharacterModel(); data.Level = 1; // Add the first item data.AddItem(ItemLocationEnum.Head, (await ItemIndexViewModel.Instance.ReadAsync("head")).Id); data.AddItem(ItemLocationEnum.Necklass, (await ItemIndexViewModel.Instance.ReadAsync("necklass")).Id); data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); data.AddItem(ItemLocationEnum.OffHand, (await ItemIndexViewModel.Instance.ReadAsync("OffHand")).Id); data.AddItem(ItemLocationEnum.RightFinger, (await ItemIndexViewModel.Instance.ReadAsync("RightFinger")).Id); data.AddItem(ItemLocationEnum.LeftFinger, (await ItemIndexViewModel.Instance.ReadAsync("LeftFinger")).Id); data.AddItem(ItemLocationEnum.Feet, (await ItemIndexViewModel.Instance.ReadAsync("feet")).Id); Game.Helpers.DiceHelper.EnableRandomValues(); Game.Helpers.DiceHelper.SetForcedRandomValue(1); // Act // Add the second item, this will return the first item as the one replaced var result = data.GetDamageRollValue(false); // Reset Game.Helpers.DiceHelper.DisableRandomValues(); // Assert Assert.AreEqual(1, result); }
/// <summary> /// Swap the Item the character has for one from the pool /// /// Drop the current item back into the Pool /// /// </summary> /// <param name="character"></param> /// <param name="setLocation"></param> /// <param name="PoolItem"></param> /// <returns></returns> private ItemModel SwapCharacterItem(CharacterModel character, ItemLocationEnum setLocation, ItemModel PoolItem) { // Put on the new ItemModel, which drops the one back to the pool var droppedItem = character.AddItem(setLocation, PoolItem); // Update BattleMessage BattleMessages.AddItemEquipped(character.Name, PoolItem.Name); // Remove the ItemModel just put on from the pool ItemPool.Remove(PoolItem); if (droppedItem != null) { // Add the dropped ItemModel to the pool ItemPool.Add(droppedItem); } return(droppedItem); }
public async Task CharacterModel_GetItemBonus_Default_Attack_Should_Pass() { // ArDefense // Add each model here to warm up and load it. Game.Helpers.DataSetsHelper.WarmUp(); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 1, Id = "head" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 20, Id = "Necklace" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 300, Id = "PrimaryHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 4000, Id = "OffHand" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 50000, Id = "RightFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 600000, Id = "LeftFinger" }); await ItemIndexViewModel.Instance.CreateAsync(new ItemModel { Attribute = AttributeEnum.Attack, Value = 7000000, Id = "feet" }); var data = new CharacterModel(); // Add the first item data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("head")).Id); data.AddItem(ItemLocationEnum.Necklace, (await ItemIndexViewModel.Instance.ReadAsync("Necklace")).Id); data.AddItem(ItemLocationEnum.PrimaryHand, (await ItemIndexViewModel.Instance.ReadAsync("PrimaryHand")).Id); data.AddItem(ItemLocationEnum.OffHand, (await ItemIndexViewModel.Instance.ReadAsync("OffHand")).Id); data.AddItem(ItemLocationEnum.RightFinger, (await ItemIndexViewModel.Instance.ReadAsync("RightFinger")).Id); data.AddItem(ItemLocationEnum.LeftFinger, (await ItemIndexViewModel.Instance.ReadAsync("LeftFinger")).Id); data.AddItem(ItemLocationEnum.Feet, (await ItemIndexViewModel.Instance.ReadAsync("feet")).Id); // Act // Add the second item, this will return the first item as the one replaced var result = data.GetItemBonus(AttributeEnum.Attack); // Reset // Assert Assert.AreEqual(7654320, result); }
public void BattleEngine_Character_Dies_Item_Drop_Should_Pass() { /* * Test to have character drop its items * * 1 Character * * 1 Monster * * Monster continually attacks Character until it dies * Character should drop its equipped item * */ //Arrange // Add Character Engine.MaxNumberCharacters = 1; var Character = new CharacterModel { Level = 10, CurrentHealth = 200, MaxHealth = 200 }; // Add Item var Item = ItemIndexViewModel.Instance.GetRandomItem(); Item.Name = "Bogus"; Character.AddItem(Item.Location, Item); Engine.CharacterList.Add(Character); Engine.MaxNumberMonsters = 1; // ensure item pool is clear Engine.ItemPool.Clear(); Engine.StartBattle(false); var Monster = Engine.EntityList.Where(a => a.EntityType == EntityTypeEnum.Monster).FirstOrDefault(); var Player = Engine.EntityList.Where(a => a.Id == Character.Id).FirstOrDefault(); //Act while (Player.Alive) { Engine.TurnAsAttack(Monster, Player); } var count = Engine.ItemPool.Count; var name = Engine.ItemPool.First().Name; //Reset Engine.MonsterList.Clear(); Engine.CharacterList.Clear(); Engine.EntityList.Clear(); Engine.ItemPool.Clear(); Engine.MaxNumberMonsters = 6; //Assert Assert.AreEqual(true, count > 0); Assert.AreEqual("Bogus", name); }