Beispiel #1
0
 //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;
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
                 }
             }
         }
     }
 }
Beispiel #6
0
 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);
 }
Beispiel #10
0
 private void Wait(BattleUnitStack attacking)
 {
     _turnOrder.Remove(attacking);
     _turnOrder.Wait(attacking);
 }
Beispiel #11
0
 private void Defend(BattleUnitStack attacking)
 {
     attacking.PDefence = Convert.ToInt32(attacking.PDefence * 1.3);
 }