public static void ExecuteAction(Models.Action action, Hero player) { if (action.Name != "LEVEL UP CRITICAL STRIKE") { HeroCooldownReductor.ReduceCooldowns(player); IPassiveActivator hero = (IPassiveActivator)player; hero.ActivatePassive(action.Name, player); ActionResult.ShowActionResult($"{player.Name} ACTIVATED {action.Name}!"); } else { SwordmasterWarrior swordmaster = (SwordmasterWarrior)player; if (swordmaster.CriticalStrike) { var key = new ConsoleKeyInfo(); while (key.Key != ConsoleKey.Enter) { Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(Constants.GameTitle); Console.WriteLine($"CRITICAL STRIKE HAS ALREADY BEEN LEVELED UP! SELECT DIFFERENT ACTION!"); Console.WriteLine("-- PRESS ENTER TO CONTINUE TO ACTION MENU --"); key = Console.ReadKey(); } Combat.PlayerTurn(player); } else { HeroCooldownReductor.ReduceCooldowns(player); IPassiveActivator hero = (IPassiveActivator)player; hero.ActivatePassive(action.Name, player); ActionResult.ShowActionResult($"{player.Name} ACTIVATED {action.Name}!"); } } }
public static void CreateWarrior(string playerName, string typeOfWarrior) { List <Models.Action> actions = new List <Models.Action>(); actions.Add(new Hit("HIT", Constants.BaseCooldown, Constants.BaseCost, Constants.WarriorDamage)); if (typeOfWarrior == "SWORDMASTER") { actions.Add(new LevelUpCrit("LEVEL UP CRITICAL STRIKE", Constants.BaseCooldown, Constants.BaseCost)); actions.Add(new MirrorImage("MIRROR IMAGE", Constants.BaseCooldown, 20, Constants.WarriorDamage)); actions.Add(new WindFury("WINDFURY", Constants.BaseCooldown, 50, Constants.WarriorDamage * 4)); Hero swordmaster = new SwordmasterWarrior(playerName, Constants.WarriorHealth, Constants.WarriorHealthRegen , actions, Constants.HeroBaseArmor, Constants.WarriorStartingRage, Constants.WarriorDamage); players.Add(swordmaster); } else if (typeOfWarrior == "BERSERKER") { actions.Add(new GoBerserk("GO BERSERK", Constants.BaseCooldown, Constants.BaseCost, 100)); actions.Add(new WildAxes("WILD AXES", Constants.BaseCooldown, 40, Constants.WarriorDamage * 3)); actions.Add(new Execute("EXECUTE", Constants.BaseCooldown, 0, 700)); Hero berserker = new BerserkerWarrior(playerName, Constants.WarriorHealth, Constants.WarriorHealthRegen , actions, Constants.HeroBaseArmor, Constants.WarriorStartingRage, Constants.WarriorDamage); players.Add(berserker); } else { actions.Add(new ArmorUp("ARMOR UP", Constants.BaseCooldown, Constants.BaseCost, Constants.ProtectionWarriorArmor)); actions.Add(new Hibernate("HIBERNATE", Constants.BaseCooldown, 40, Constants.WarriorHealthRegen * 4)); actions.Add(new ShieldSlam("SHIELD SLAM", Constants.BaseCooldown, 30, Constants.WarriorDamage * 4)); Hero protector = new ProtectionWarrior(playerName, Constants.WarriorHealth, Constants.WarriorHealthRegen , actions, Constants.ProtectionWarriorArmor, Constants.WarriorStartingRage, Constants.WarriorDamage); players.Add(protector); } }
public void ActivatePassiveWithLevelUpCriticalStrike() { //Arrange SwordmasterWarrior sut = new SwordmasterWarrior("Avanger", health, healthRegeneration, new List <Action>() { new LevelUpCrit("LEVEL UP CRITICAL STRIKE", 3, 3) }, armor, rage, attackPower); //Act sut.ActivatePassive("LEVEL UP CRITICAL STRIKE", sut); //Assert Assert.IsTrue(sut.CriticalStrike); Assert.AreEqual(0, sut.PassiveDuration); }
public void ExecuteAgressiveAction(Hero player, Hero enemy) { SwordmasterWarrior playerOnTurn = (SwordmasterWarrior)player; player.Actions.Where(a => a.Name == this.Name).First().SetCooldown(AbilityCooldownConstants.MirrorImageCooldown); if (playerOnTurn.CriticalStrike) { bool isCrit = CriticalChecker.CheckForCrit(player); if (isCrit) { CriticalPrinter.PrintCritical(player); enemy.TakeDamage(this.Damage); } } enemy.TakeDamage(this.Damage); }
public void ExecuteAgressiveAction(Hero player, Hero enemy) { enemy.StunnedDuration++; SwordmasterWarrior playerOnTurn = (SwordmasterWarrior)player; player.Actions.Where(a => a.Name == this.Name).First().SetCooldown(AbilityCooldownConstants.MirrorImageCooldown); if (playerOnTurn.CriticalStrike) { var random = new Random().Next(1, 101); if (random <= 35) { CriticalPrinter.PrintCritical(player); enemy.TakeDamage(this.Damage); } } else { enemy.TakeDamage(this.Damage); } }
public static bool CheckForCrit(Hero player) { var typeOfWarr = player.GetType().Name; if (typeOfWarr == "SwordmasterWarrior") { SwordmasterWarrior warr = (SwordmasterWarrior)player; if (warr.CriticalStrike) { var chance = new Random().Next(1, 101); return(chance <= 35); } } else if (typeOfWarr == "BerserkerWarrior") { var chance = new Random().Next(1, 101); return(chance <= 15); } return(false); }