private void Trip(Fighter attacker, Fighter target, string customAttack) { if (target.findStatus(target, "Prone") != null) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write("'s Already prone."); return; } if (target.findStatus(target, "Dodge") != null) { Writer.writeFighter(target, "name"); Console.Write(" dodged the attack!"); target.fighterStatus.Remove(target.findStatus(target, "Guard")); return; } if (target.findStatus(target, "Rage").statusDuration > 0) { Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write(" made "); Writer.writeFighter(target, "name"); Console.Write(" stumble... for a minute..."); Console.ReadLine(); Console.WriteLine("... "); Writer.writeFighter(target, "name"); Console.Write(" does not look happy about it..."); target.findStatus(target, "Rage soak").statusDuration += 10; return; } Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write($" used {customAttack}"); if (target.die > 3) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" evaded the attack"); return; } if (attacker.findStatus(attacker, "Guard") != null) { attacker.fighterStatus.Remove(attacker.findStatus(target, "Guard")); } if (attacker.findStatus(attacker, "Dodge") != null) { attacker.fighterStatus.Remove(attacker.findStatus(target, "Dodge")); } Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" fell to ground with a hard smash."); target.fighterStatus.Add(new FighterStatus("Prone", 1)); }
private void Heal(Fighter target, Fighter attacker, string customAttack) { if (attacker.findStatus(attacker, "Dodge") != null) { target.fighterStatus.Remove(target.findStatus(target, "Dodge")); } if (attacker.findStatus(attacker, "Guard") != null) { attacker.fighterStatus.Remove(attacker.findStatus(target, "Guard")); } if (attacker.findStatus(attacker, "Dodge") != null) { attacker.fighterStatus.Remove(target.findStatus(target, "Dodge")); } Writer.writeFighter(target, "name"); Console.Write($" used {customAttack}."); if (attacker.findStatus(attacker, "Prone") == null) { if (attacker.die > target.die) { Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write(" prevented the healing."); target.findStatus(target, "Heal").statusDuration--; Console.ReadLine(); return; } } var healthLost = target.maxHealth - target.health; if (healthLost >= 30) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" recovered 30HP."); target.health += 30; target.findStatus(target, "Heal").statusDuration--; Console.ReadLine(); return; } Writer.writeFighter(target, "name"); Console.Write($" recovered {healthLost}HP."); target.findStatus(target, "Heal").statusDuration--; target.health += healthLost; }
public void Dodge(Fighter target, Fighter attacker, string customAttack) { if (target.findStatus(attacker, "Dodge") != null) { target.fighterStatus.Remove(target.findStatus(target, "Dodge")); } Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" is trying to predict {attacker.name}'s movement."); if (target.die < 4) { target.fighterStatus.Add(new FighterStatus("Dodge", 1)); } if (attacker.findStatus(attacker, "Guard") != null) { attacker.fighterStatus.Remove(attacker.findStatus(target, "Guard")); } }
public bool StunCheck(Fighter attacker, Fighter target) { if (target.findStatus(target, "Guard") != null) { target.fighterStatus.Remove(target.findStatus(target, "Guard")); } int duration = attacker.findStatus(attacker, "Stunned").statusDuration; if (duration == 0) { Console.WriteLine("Uh-oh..."); Writer.writeFighter(attacker, "name"); Console.Write(" is no longer dazed!"); attacker.fighterStatus.Remove(attacker.findStatus(attacker, "Stunned")); attacker.fighterStatus.Remove(attacker.findStatus(attacker, "Is Stunned")); return(false); } if (attacker.die > 2) { attacker.findStatus(attacker, "Is Stunned").statusDuration = 0; attacker.findStatus(attacker, "Stunned").statusDuration--; return(false); } Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write(" is still weary from "); Writer.writeFighter(target, "name"); Console.Write("'s attack"); attacker.findStatus(attacker, "Stunned").statusDuration--; attacker.findStatus(attacker, "Is Stunned").statusDuration = 1; return(true); }
private void Tackle(Fighter attacker, Fighter target, string customAttack) { Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write($" used {customAttack}!"); if (target.findStatus(target, "Prone") == null) { if (attacker.die < target.die) { Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write("'s attack missed."); return; } } if (target.findStatus(target, "Dodge") != null) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" dodged the attack!"); target.fighterStatus.Remove(target.findStatus(target, "Dodge")); return; } if (target.findStatus(target, "Guard") != null) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" was prepared for the attack and took only 5HP Damage."); target.health += -5; target.fighterStatus.Remove(target.findStatus(target, "Guard")); Console.ReadLine(); return; } if (target.findStatus(target, "Rage soak").statusDuration > 0) { target.findStatus(target, "Rage soak").statusDuration += 10; } Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" took 10HP Damage."); target.health += -10; }
public void Stun(Fighter attacker, Fighter target, string customAttack) { if (target.findStatus(target, "Stunned") != null) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write("'s already stunned."); Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write("'s attack had no added effect"); return; } Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write($" used {customAttack}."); if (target.findStatus(target, "Dodge") != null) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" dodged the attack!"); target.fighterStatus.Remove(target.findStatus(target, "Guard")); return; } if (target.findStatus(target, "Prone") == null) { if (attacker.die < target.die) { Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write("'s attack missed."); return; } } if (target.findStatus(target, "Guard") != null) { target.fighterStatus.Remove(target.findStatus(target, "Guard")); } Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write(" is dazed."); target.fighterStatus.Add(new FighterStatus("Stunned", 4)); target.fighterStatus.Add(new FighterStatus("Is Stunned", 0)); StunCheck(target, attacker); }
public void Rage(Fighter attacker, Fighter target, string customAttack) { var duration = attacker.findStatus(attacker, "Rage").statusDuration; var rageSoak = attacker.findStatus(attacker, "Rage soak").statusDuration; if (duration == 2) { Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write(" unleached his frenzy in a might blow!"); attacker.findStatus(attacker, "Rage soak").statusDuration += 10; rageSoak = attacker.findStatus(attacker, "Rage soak").statusDuration; if (target.findStatus(target, "Dodge") != null) { Writer.writeFighter(target, "name"); Console.Write(" dodged the attack!"); target.fighterStatus.Remove(target.findStatus(target, "Dodge")); return; } if (target.findStatus(target, "Guard") != null) { Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write($" was prepared for the attack and took only {rageSoak/2}HP Damage."); target.health -= (rageSoak / 2); target.fighterStatus.Remove(target.findStatus(target, "Guard")); return; } Console.WriteLine(""); Writer.writeFighter(target, "name"); Console.Write($" took {rageSoak} damage!"); target.health -= rageSoak; attacker.findStatus(attacker, "Rage").statusDuration = 0; attacker.findStatus(attacker, "Rage soak").statusDuration = 0; if (target.findStatus(target, "Rage soak").statusDuration > 0) { target.findStatus(target, "Rage soak").statusDuration += rageSoak; } return; } if (duration == 1) { if (target.findStatus(target, "Dodge") != null) { target.fighterStatus.Remove(target.findStatus(target, "Dodge")); } Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write("'s rage is building..."); attacker.findStatus(attacker, "Rage soak").statusDuration += 10; attacker.findStatus(attacker, "Rage").statusDuration = 2; return; } if (target.findStatus(target, "Dodge") != null) { target.fighterStatus.Remove(target.findStatus(target, "Dodge")); } Console.WriteLine(""); Writer.writeFighter(attacker, "name"); Console.Write(" has begun gathering his rage for "); Writer.writeFighter(target, "name"); attacker.findStatus(attacker, "Rage").statusDuration = 1; attacker.findStatus(attacker, "Rage soak").statusDuration = 10; }
public void Rnd(Fighter fighter, Fighter target) { Console.Clear(); if (fighter.name == player.name) { Console.ForegroundColor = ConsoleColor.Cyan; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"{fighter.name}: {fighter.health}HP"); if (target.name == player.name) { Console.ForegroundColor = ConsoleColor.Cyan; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"{target.name}: {target.health}HP"); Console.ResetColor(); Console.WriteLine(); if (fighter.findStatus(fighter, "Rage").statusDuration > 0) { var rageAttackIndex = fighter.attacks.FindIndex(attackEffect => attackEffect.effect == "Rage"); fighter.attacks[rageAttackIndex].invokeAttacks(fighter, target); Console.ReadLine(); return; } if (fighter.findStatus(fighter, "Prone") != null) { if (fighter.findStatus(fighter, "Prone").statusDuration == 1) { Console.WriteLine(""); writeFighter(fighter, "name"); Console.Write("'s starts to get back on their feet..."); fighter.findStatus(fighter, "Prone").statusDuration = 2; Console.ReadLine(); return; } Console.WriteLine(""); writeFighter(fighter, "name"); Console.ResetColor(); Console.Write(" is back up again!"); fighter.fighterStatus.Remove(fighter.findStatus(fighter, "Prone")); Console.ReadLine(); return; } Console.WriteLine(""); Console.WriteLine(""); Console.Write("What will "); writeFighter(fighter, "name"); Console.Write(" do?"); var selectAction = new Menu(); Console.ReadLine(); selectAction.options = new[] { $"{fighter.attacks[0].attack} ({fighter.attacks[0].effect})", $"{fighter.attacks[1].attack} ({fighter.attacks[1].effect})", $"{fighter.attacks[2].attack} ({fighter.attacks[2].effect})", $"{fighter.attacks[3].attack} ({fighter.attacks[3].effect})", "Do nothing", "Give up" }; selectAction.Render(); if (selectAction.getSelected() < 4) { if (fighter.attacks[selectAction.getSelected()].effect == "Heal") { if (fighter.health == fighter.maxHealth) { Console.WriteLine(""); writeFighter(fighter, "name"); Console.Write("'s health is already full!"); Console.ReadLine(); Rnd(fighter, target); return; } if (fighter.findStatus(fighter, "Heal").statusDuration < 1) { Console.WriteLine("You're out of Heals!"); Console.ReadLine(); Rnd(fighter, target); return; } fighter.attacks[selectAction.getSelected()].invokeAttacks(fighter, target); return; } } if (fighter.findStatus(fighter, "Stunned") != null && selectAction.getSelected() < 4) { if (fighter.attacks[selectAction.getSelected()].StunCheck(fighter, target)) { return; } } switch (selectAction.getSelected()) { case 0: fighter.attacks[0].invokeAttacks(fighter, target); break; case 1: fighter.attacks[1].invokeAttacks(fighter, target); break; case 2: fighter.attacks[2].invokeAttacks(fighter, target); break; case 3: fighter.attacks[3].invokeAttacks(fighter, target); break; case 4: Console.WriteLine(""); writeFighter(fighter, "name"); Console.Write(" chose not to attack."); break; case 5: Console.WriteLine(""); writeFighter(fighter, "name"); Console.Write(" surrendered!"); fighter.health = 0; break; } Console.ReadLine(); Console.Clear(); }
public void FoeAttack(Fighter foe, Fighter target) { if (foe.health < 1) { return; } int attackIndex = foe.randomAttack; if (foe.attacks[attackIndex].effect == "Heal") { if (foe.health == foe.maxHealth) { FoeAttack(foe, target); return; } if (foe.findStatus(foe, "Heal").statusDuration < 1) { FoeAttack(foe, target); return; } foe.attacks[attackIndex].invokeAttacks(foe, target); return; } if (foe.findStatus(foe, "Stunned") != null) { if (foe.attacks[attackIndex].StunCheck(foe, target)) { return; } } if (foe.findStatus(foe, "Rage").statusDuration > 0) { var rageAttackIndex = foe.attacks.FindIndex(attackEffect => attackEffect.effect == "Rage"); foe.attacks[rageAttackIndex].invokeAttacks(foe, target); return; } if (foe.findStatus(foe, "Prone") != null) { if (foe.findStatus(foe, "Prone").statusDuration == 1) { writeFighter(foe, "name"); Console.Write("{'s starts to get back on their feet..."); foe.findStatus(foe, "Prone").statusDuration = 2; Console.ReadLine(); return; } writeFighter(foe, "name"); Console.Write(" is back up again!"); foe.fighterStatus.Remove(foe.findStatus(foe, "Prone")); Console.ReadLine(); return; } switch (attackIndex) { case 0: foe.attacks[0].invokeAttacks(foe, target); break; case 1: foe.attacks[1].invokeAttacks(foe, target); break; case 2: foe.attacks[2].invokeAttacks(foe, target); break; case 3: foe.attacks[3].invokeAttacks(foe, target); break; } }