Example #1
0
        internal void CastBolt(ICombatant enemy)
        {
            Dice roll = new Dice(20);

            if (enemy.DoesAttackHit(roll, 9))
            {
                enemy.CurrentHP -= FireboltDamageRoll();
                if (roll.Result == 20)
                {
                    enemy.CurrentHP -= FireboltDamageRoll();
                }
                enemy.CurrentHP -= 5;
            }
        }
 public void TakeTurn(ICombatant enemy, Range range)
 {
     if (range.CurrentDistance > AttackRange)
     {
         MoveRelativeEnemy(AttackRange, range);
     }
     if (range.CurrentDistance > AttackRange && range.CurrentDistance <= 320 && mistystep > 0)
     {
         MoveRelativeEnemy(AttackRange, range);
         mistystep--;
     }
     if (range.CurrentDistance > AttackRange)
     {
         MoveRelativeEnemy(AttackRange, range);
     }
     else
     {
         if (discordentWhispers > 0)
         {
             int damage = DiscordDamage();
             if (enemy.MakeSave(17))
             {
                 enemy.CurrentHP -= damage / 2;
             }
             else
             {
                 enemy.CurrentHP       -= damage;
                 range.CurrentDistance += enemy.Movement;
             }
         }
         else
         {
             Dice D = new Dice(20);
             if (enemy.DoesAttackHit(D, 9))
             {
                 enemy.CurrentHP -= AttackDamage() + 4;
                 if (D.Result == 20)
                 {
                     enemy.CurrentHP -= AttackDamage();
                 }
                 enemyHasDisadvantage = true;
             }
         }
     }
 }
Example #3
0
 public void TakeTurn(ICombatant enemy, Range range)
 {
     if (range.CurrentDistance > AttackRange)
     {
         MoveRelativeEnemy(AttackRange, range);
     }
     if (range.CurrentDistance > AttackRange)
     {
         MoveRelativeEnemy(AttackRange, range);
     }
     else
     {
         Dice roll = new Dice(20);
         if (enemy.DoesAttackHit(roll, 12))
         {
             enemy.CurrentHP -= DamageRoll() + 8;
             if (roll.Result == 20)
             {
                 enemy.CurrentHP -= DamageRoll();
             }
         }
     }
 }
Example #4
0
 public void TakeTurn(ICombatant enemy, Range range)
 {
     if (Ammo > 1)
     {
         if (range.CurrentDistance > 320)//If outside normal range use movement to close
         {
             MoveRelativeEnemy(320, range);
         }
         if (range.CurrentDistance > 320)//If outside max range use action to dash
         {
             MoveRelativeEnemy(320, range);
         }
         else//Else Attack
         {
             Ammo -= 2;
             Dice diceroll;
             if (range.CurrentDistance > 120)//Disadvantage for range
             {
                 diceroll = new List <Dice> {
                     new Dice(20), new Dice(20)
                 }.OrderBy(x => x.Result).First();
                 if (enemy.DoesAttackHit(diceroll, 6))
                 {
                     enemy.CurrentHP -= AttackDamage();
                     if (diceroll.Result == 20)
                     {
                         enemy.CurrentHP -= AttackDamage();
                     }
                 }
                 diceroll = new List <Dice> {
                     new Dice(20), new Dice(20)
                 }.OrderBy(x => x.Result).First();
                 if (enemy.DoesAttackHit(diceroll, 6))
                 {
                     enemy.CurrentHP -= AttackDamage();
                     if (diceroll.Result == 20)
                     {
                         enemy.CurrentHP -= AttackDamage();
                     }
                 }
             }
             else
             {
                 diceroll = new Dice(20);
                 if (enemy.DoesAttackHit(diceroll, 6))
                 {
                     enemy.CurrentHP -= AttackDamage();
                     if (diceroll.Result == 20)
                     {
                         enemy.CurrentHP -= AttackDamage();
                     }
                 }
                 diceroll = new Dice(20);
                 if (enemy.DoesAttackHit(diceroll, 6))
                 {
                     enemy.CurrentHP -= AttackDamage();
                     if (diceroll.Result == 20)
                     {
                         enemy.CurrentHP -= AttackDamage();
                     }
                 }
             }
         }
     }
     else
     {
         range.CurrentDistance += 60; //If we are out of ammo leg it!
     }
 }