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; } } } }
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(); } } } }
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! } }