public void GetAbilitiesTests() { Unit unit = new Unit(); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("hello", "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("hello", "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); List <Ability> list = unit.GetAbilitiesFromReferenceId("hello", StringComparison.OrdinalIgnoreCase).ToList(); Assert.AreEqual(2, list.Count); Assert.AreEqual(0, unit.GetAbilitiesFromReferenceId("empty", StringComparison.OrdinalIgnoreCase).ToList().Count); Assert.ThrowsException <ArgumentException>(() => { unit.GetAbilitiesFromReferenceId(null !, StringComparison.OrdinalIgnoreCase); }); }
public void RemovePassiveAbilityTest() { Unit unit = new Unit(); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); Assert.IsTrue(unit.RemoveAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, })); }
private void AddAbilities() { _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil1", "abil1"), Tier = AbilityTiers.Basic, ParentLink = null, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil2", "abil1"), Tier = AbilityTiers.Basic, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil3", "abil1"), Tier = AbilityTiers.Basic, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil4", "abil1"), Tier = AbilityTiers.Heroic, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil5", "abil1"), Tier = AbilityTiers.Heroic, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil6", "abil1"), Tier = AbilityTiers.Trait, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Abil7", "abil1"), Tier = AbilityTiers.Activable, ParentLink = null, }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("SubAbil1", "subAbil1"), Tier = AbilityTiers.Basic, ParentLink = new AbilityTalentId("Abil7", "abil7"), }); _unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId("SubAbil2", "subAbil2"), Tier = AbilityTiers.Basic, ParentLink = new AbilityTalentId("Abil7", "abil7"), }); }
public void ContainsPassiveAbilityTest() { Unit unit = new Unit(); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); Assert.IsTrue(unit.ContainsAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, })); Assert.IsFalse(unit.ContainsAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass3") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, })); Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId(string.Empty, "asdf"))); Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId(string.Empty, "pass2"))); Assert.IsTrue(unit.ContainsAbility(new AbilityTalentId(string.Empty, "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, })); }
public void AddPassiveAbilityTest() { Unit unit = new Unit(); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); }
public void GetAbilityTests() { Unit unit = new Unit(); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); Ability ability = unit.GetAbility(new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }); Assert.AreEqual("pass1", ability.AbilityTalentId.ButtonId); Assert.ThrowsException <KeyNotFoundException>(() => { unit.GetAbility(new AbilityTalentId("test", "test")); }); Assert.ThrowsException <ArgumentNullException>(() => { unit.GetAbility(null !); }); }
public void TryGetAbilityTests() { Unit unit = new Unit(); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); unit.AddAbility(new Ability() { AbilityTalentId = new AbilityTalentId(string.Empty, "pass2") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, }); Assert.IsTrue(unit.TryGetAbility( new AbilityTalentId(string.Empty, "pass1") { AbilityType = AbilityTypes.Passive, IsPassive = true, }, out Ability? ability)); Assert.AreEqual("pass1", ability?.AbilityTalentId.ButtonId); Assert.IsFalse(unit.TryGetAbility(new AbilityTalentId(string.Empty, string.Empty), out Ability? _)); Assert.ThrowsException <ArgumentNullException>(() => { unit.TryGetAbility(null !, out Ability? _); }); }
public void GetAbilitiesCountTest() { Ability ability1 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Active, }, IconFileName = "test.png", }; Ability ability2 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", }; Ability ability3 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability2", "abil2") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", }; Unit unit = new Unit(); unit.AddAbility(ability1); unit.AddAbility(ability2); unit.AddAbility(ability3); Assert.AreEqual(3, unit.AbilitiesCount); }
/// <summary> /// Adds the <see cref="Unit"/>'s ability data. /// </summary> /// <param name="unit">The data to be set from <paramref name="tierElement"/>.</param> /// <param name="tierElement">The <see cref="JsonElement"/> to read from.</param> /// <param name="abilityTier">The tier of the ability.</param> /// <param name="parentLink">Indicates if the ability is a sub-ability.</param> /// <exception cref="ArgumentNullException"><paramref name="unit"/> is <see langword="null"/>.</exception> protected virtual void AddTierAbilities(Unit unit, JsonElement tierElement, AbilityTiers abilityTier, string?parentLink) { if (unit is null) { throw new ArgumentNullException(nameof(unit)); } foreach (JsonElement element in tierElement.EnumerateArray()) { Ability ability = new Ability { Tier = abilityTier, }; if (parentLink != null) { string[] ids = parentLink.Split('|', StringSplitOptions.RemoveEmptyEntries); if (ids.Length >= 2) { ability.ParentLink = new AbilityTalentId(ids[0], ids[1]); if (ids.Length >= 3 && Enum.TryParse(ids[2], true, out AbilityTypes abilityTypes)) { ability.ParentLink.AbilityType = abilityTypes; } if (ids.Length == 4 && bool.TryParse(ids[3], out bool isPassive)) { ability.ParentLink.IsPassive = isPassive; } } } SetAbilityTalentBase(ability, element); unit.AddAbility(ability); } }
public override void ApplyUpgrades(Unit unit) { for (int i = 0; i < chosenUpgrade.Count; i++) { if (i == 0) { if (chosenUpgrade [i] == 1) { UpgradeMovementSpeed(1, unit.baseUnit); } else if (chosenUpgrade [i] == 2) { UpgradeAttackDamage(1, unit.baseUnit); } } else if (i == 1) { if (chosenUpgrade [i] == 1) { unit.AddAbility(abilityHorse2L); } else if (chosenUpgrade [i] == 2) { unit.AddAbility(abilityHorse2R); } } else if (i == 2) { if (chosenUpgrade [i] == 1) { UpgradeHealth(2, unit.baseUnit); } else if (chosenUpgrade [i] == 2) { UpgradeAttackDamage(2, unit.baseUnit); } } else if (i == 3) { if (chosenUpgrade [i] == 1) { unit.AddAbility(abilityHorse4L); } else if (chosenUpgrade [i] == 2) { unit.AddAbility(abilityHorse4R); } } else if (i == 4) { if (chosenUpgrade [i] == 1) { UpgradeHealth(4, unit.baseUnit); } else if (chosenUpgrade [i] == 2) { UpgradeMovementSpeed(1, unit.baseUnit); } } else if (i == 5) { if (chosenUpgrade [i] == 1) { unit.AddAbility(abilityHorse6L); } else if (chosenUpgrade [i] == 2) { unit.AddAbility(abilityHorse6R); } } } }
public override void AfterDamageDealt_ToUnit(Unit target, int damage) { target.AddAbility(new Bleeding(count, target)); }
void ParseTeam(List <Unit> Team, bool hero) { JSONElement T = JSON.ParseJSONFile((".\\" + (hero ? "Heroes" : "Foes"))); int i = 0; if (T.key == null) { throw new System.Exception("HELL NAH BRO"); } GameObject unitsContainer = new GameObject(); unitsContainer.name = hero ? "Heroes" : "Foes"; foreach (string name in T.key) { GameObject c = Instantiate(Player); c.GetComponentInChildren <Renderer>().material.color = hero ? Color.blue : Color.red; c.name = name; c.transform.parent = unitsContainer.transform; Unit chara = c.GetComponent <Unit>(); chara.c = JSON.SearchJSON(T.data[i], "class").string_value; chara.lvl = JSON.SearchJSON(T.data[i], "lvl").int_value; chara.hpMax = JSON.SearchJSON(T.data[i], "life").int_value; chara.currentHP = chara.hpMax; chara.attack = JSON.SearchJSON(T.data[i], "atk").int_value; chara.defense = JSON.SearchJSON(T.data[i], "def").int_value; chara.attackMental = JSON.SearchJSON(T.data[i], "matk").int_value; chara.defenseMental = JSON.SearchJSON(T.data[i], "mdef").int_value; chara.speed = JSON.SearchJSON(T.data[i], "spd").int_value; chara.stun = 0; chara.range = 2; JSONElement Inv = JSON.SearchJSON(T.data[i], "Inventory"); if (Inv != null) { int j = 0; foreach (string iname in Inv.key) { string[] items = { "STICK", "COMPUTER", "CALC", "MONEY", "BROOM" }; if (items.Contains(iname)) { chara.attack += 10 * JSON.SearchJSON(Inv.data[j], "lvl").int_value; chara.attackMental += 10 * JSON.SearchJSON(Inv.data[j], "lvl").int_value; j++; } if (iname == "STAPLER") { chara.attack += 10 * JSON.SearchJSON(Inv.data[j], "lvl").int_value; chara.range += JSON.SearchJSON(Inv.data[j], "lvl").int_value; } } } chara.AddAbility(new Ability(Ability.AbilityType.PHYS, "Regular strike", 1, chara.range, chara.attack)); //chara.abilities.Add(new Ability((Ability.AbilityType.PHYS, "Poweful strike", 3, chara.attack / 3))); chara.AddAbility(new Ability(Ability.AbilityType.MEN, "Regular insult", 1, 3, chara.attackMental)); //chara.abilities.Add(new Ability((Ability.AbilityType.PHYS, "Poweful strike", 3, chara.attack / 3))); switch (chara.c) { case "STAG": chara.range = 2; break; case "SEC": chara.range = 3; break; case "TECH": chara.range = 5; break; case "GUARD": chara.range = 2; break; case "ING": chara.range = 4; break; case "COUNT": chara.SpecialAbility = new Ability(new COUNT_Effect()); chara.range = 2; break; case "MAN": chara.range = 3; chara.SpecialAbility = new Ability(new MAN_Effect()); break; default: chara.range = 2; chara.SpecialAbility = new Ability(new PDG_Effect()); break; } Team.Add(chara); i++; } }
public void RemoveAbilityTest() { Ability ability1 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Active, }, IconFileName = "test.png", }; Ability ability2 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", }; Ability ability3 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability2", "abil2") { AbilityType = AbilityTypes.Heroic, }, }; Unit unit = new Unit(); unit.AddAbility(ability1); unit.AddAbility(ability2); unit.AddAbility(ability3); Assert.AreEqual(3, unit.AbilitiesCount); Assert.IsTrue(unit.RemoveAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Active, }, IconFileName = "test.png", })); // try to remove again Assert.IsFalse(unit.RemoveAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Active, }, IconFileName = "test.png", })); Assert.IsFalse(unit.RemoveAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability3", "abil3") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", })); Assert.AreEqual(2, unit.AbilitiesCount); // remove 1 Assert.IsTrue(unit.RemoveAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", })); Assert.AreEqual(1, unit.AbilitiesCount); }
public void ContainsAbilityTest() { Ability ability1 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Active, }, IconFileName = "test.png", }; Ability ability2 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", }; Ability ability3 = new Ability() { AbilityTalentId = new AbilityTalentId("Ability2", "abil2") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", }; Unit unit = new Unit(); unit.AddAbility(ability1); unit.AddAbility(ability2); unit.AddAbility(ability3); Assert.IsTrue(unit.ContainsAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Heroic, }, IconFileName = "test.png", })); Assert.IsFalse(unit.ContainsAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Hidden, }, IconFileName = "test.png", })); Assert.IsFalse(unit.ContainsAbility(new Ability() { AbilityTalentId = new AbilityTalentId("Ability4", "abil4") { AbilityType = AbilityTypes.Hidden, }, IconFileName = "test.png", })); Assert.IsTrue(unit.ContainsAbility("Ability1", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(unit.ContainsAbility(new AbilityTalentId("Ability1", "abil1") { AbilityType = AbilityTypes.Heroic, })); Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId("Ability1", "abil1"))); Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId("Ability5", string.Empty))); }
public override void ApplyUpgrades(Unit unit) { for (int i = 0; i < chosenUpgrade.Count; i++) { if (i == 0) { if (chosenUpgrade [i] == 1) { UpgradeHealth(1, unit.baseUnit); } else if (chosenUpgrade [i] == 2) { UpgradeAttackDamage(1, unit.baseUnit); } } else if (i == 1) { if (chosenUpgrade [i] == 1) { unit.AddAbility(abilityPorcupine2L); } else if (chosenUpgrade [i] == 2) { unit.AddAbility(abilityPorcupine2R); } } else if (i == 2) { if (chosenUpgrade [i] == 1) { UpgradeHealth(3, unit.baseUnit); } else if (chosenUpgrade [i] == 2) { UpgradeAttackDamage(2, unit.baseUnit); } } else if (i == 3) { if (chosenUpgrade [i] == 1) { unit.AddAbility(abilityPorcupine4L); } else if (chosenUpgrade [i] == 2) { unit.AddAbility(abilityPorcupine4R); } } else if (i == 4) { if (chosenUpgrade [i] == 1) { UpgradeHealth(6, unit.baseUnit); } else if (chosenUpgrade [i] == 2) { UpgradeAttackRange(1, unit.baseUnit); } } else if (i == 5) { if (chosenUpgrade [i] == 1) { unit.AddAbility(abilityPorcupine6L); } else if (chosenUpgrade [i] == 2) { unit.AddAbility(abilityPorcupine6R); } } } }
public override void BeforeDamageDealt_ToUnit(Unit target, ref int damage) { target.AddAbility(new Poisoned(count, target)); }