//this func can use to change characteristics of battleunitstack, except initiative private void Modify(BattleUnitStack stack, int hpChange, int defChange, int dmgChange, int attChange, int randDevChange) { stack.PHp += hpChange; stack.PDefence += defChange; stack.PDmg += dmgChange; stack.PAttack += attChange; stack.PRandomDeviation += randDevChange; }
private void KillUnits(BattleUnitStack stack, double damage) { Console.WriteLine("--------UNITS KILLED--------- " + Math.Min(Convert.ToInt32(Math.Floor(damage / stack.PHp)), stack.PCount)); stack.PCount = stack.PCount - Convert.ToInt32(Math.Floor(damage / stack.PHp)); if (stack.PCount == 0) { Console.WriteLine("--------STACK KILLED--------- " + stack.PType.GetStringType()); _army[stack.PTeam].PBattleArmy.Remove(stack); _turnOrder.Remove(stack); } }
public string Round(BattleArmy [] army) { string curOption = ""; try { _turnOrder.ShowTurnOrder(); BattleUnitStack attBUStack = _turnOrder.GetAttBattleUnitStack(); //attacking BattleUnitStack Console.WriteLine("!!! ATTACKINGS STACK !!!" + attBUStack.PType.GetStringType() + " " + attBUStack.PCount + '\n'); curOption = GetOption(attBUStack); BattleUnitStack defBUStack = new BattleUnitStack(); if (curOption == "Revive") { defBUStack = GetBattleUnitStack(_army[attBUStack.PTeam]); } else if (curOption != "Defend" && curOption != "Wait") { defBUStack = GetBattleUnitStack(_army[(attBUStack.PTeam + 1) % 2]); } Turn(attBUStack, defBUStack, curOption); if (curOption != "Wait") { _turnOrder.Remove(attBUStack); } Console.WriteLine("'\n'-------------------------------------------------------------------TURN IS OVER----------------------------------------------------------"); if (!_army[0].Alive()) { Console.WriteLine("TEAM 0 - WINNER"); } else if (!_army[1].Alive()) { Console.WriteLine("TEAM 1 - WINNER"); } if (curOption == "Surrender") { Console.WriteLine("Team " + (attBUStack.PTeam + 1) % 2 + " WINNER"); } } catch { Console.WriteLine("SMTH GOES WRONG"); } return(curOption); }
public void Turn(BattleUnitStack attacking, BattleUnitStack defending, string option) { double dmgDuringTurn = 0; foreach (var ability in attacking.PAbilities) { if (option == ability.Key) { try { dmgDuringTurn += ability.Value.UseAbility(attacking, defending); } catch (Exception e) { Console.WriteLine(e); } } } if (option == "Defend") { try { Defend(attacking); } catch (Exception e) { Console.WriteLine(e); } return; } if (option == "Wait") { try { Wait(attacking); } catch (Exception e) { Console.WriteLine(e); } return; } Console.WriteLine("--------DAMAGE DEALED-------- " + dmgDuringTurn); if (defending != new BattleUnitStack()) { try { KillUnits(defending, dmgDuringTurn); } catch (Exception e) { Console.WriteLine(e); } } }
//temporarily increase init public void TmpIncInit(BattleUnitStack attacking, float addInit) { for (int i = 0; i < _turnOrder.Count; i++) { if (_turnOrder[i] == attacking) { double tempInit = _turnOrder[i].PInitiative + addInit; for (int j = i + 1; j < _turnOrder.Count; j++) { if (_turnOrder[j].PInitiative > tempInit) { //find, where init becomes greater and replace BUStack BattleUnitStack tmp = _turnOrder[i]; _turnOrder.RemoveAt(i); _turnOrder.Insert(j - 1, tmp); } } } } }
public string GetOption(BattleUnitStack bustack) { try { foreach (var ability in bustack.PAbilities) { Console.WriteLine(ability.Key); } Console.WriteLine("Defend"); Console.WriteLine("Wait"); Console.WriteLine("Surrender"); Console.WriteLine("Choose option\n"); string selectedOption = Console.ReadLine(); Console.WriteLine(); return(selectedOption); } catch { Console.WriteLine("WRONG OPTION when choosing option"); throw; } }
public override double UseAbility(BattleUnitStack attacking, BattleUnitStack defending) { defending.PCount = Math.Max(Convert.ToInt32(1.3 * defending.PCount), defending.MaxCount); return(0); }
public void Remove(BattleUnitStack st) { _turnOrder.Remove(st); _waiting.Remove(st); }
public void Wait(BattleUnitStack attacking) { _waiting.Add(attacking); }
private void Wait(BattleUnitStack attacking) { _turnOrder.Remove(attacking); _turnOrder.Wait(attacking); }
private void Defend(BattleUnitStack attacking) { attacking.PDefence = Convert.ToInt32(attacking.PDefence * 1.3); }