public void calcINT() { INT = DiceBag.rollDice(3, 6); if (INT > 16) { INT += DiceBag.rollDice(2, 6); } }
public void calcDEX() { DEX = DiceBag.rollDice(3, 6); if (DEX > 16) { DEX += DiceBag.rollDice(2, 6); } }
public void calcSTR() { STR = DiceBag.rollDice(3, 6); if (STR > 16) { STR += DiceBag.rollDice(2, 6); } }
private void levelUp() { lvl++; setStrength(getStrength() + DiceBag.rollDice(1, 4)); setDexterity(getDexterity() + DiceBag.rollDice(1, 4)); setIntelligence(getIntelligence() + DiceBag.rollDice(1, 4)); setHPandStats(); }
public int weaponDamage() { string[] temp = weaponRoll.Split('d'); return(DiceBag.rollDice(int.Parse(temp[0]), int.Parse(temp[1]), (int)attribute)); }
public bool Start() { while (running) { if (player.IsAlive() && enemy.IsAlive()) { if (playerTurn) { var action = GetPlayerAction(); var dmg = -1; CombatRoll roll; switch (action) { case CombatAction.DRINK_HEALTH_POTION: var PotionHP = player.getInventory().useHealthPotion(); player.setCurrentHP(player.getCurrentHP() + PotionHP); Console.WriteLine(String.Format("You drink the potion and heal for {0} HP", PotionHP)); break; case CombatAction.DRINK_MANA_POTION: var PotionMP = player.getInventory().useMagicPotion(); player.setCurrentMP(player.getCurrentMP() + PotionMP); Console.WriteLine(String.Format("You drink the potion and recover {0} MP", PotionMP)); break; case CombatAction.NORMAL_ATTACK: roll = GetCombatRoll(player, enemy, DiceBag.rollDice(1, 20), DiceBag.rollDice(1, 20)); switch (roll) { case CombatRoll.CRIT_FAIL: dmg = player.normalAttack() / 2; player.takeDamage(dmg); Console.WriteLine(String.Format("You miss the {0} and hit yourself for {1} damage", enemy.getName(), dmg)); break; case CombatRoll.FAIL: Console.WriteLine(String.Format("You miss the {0}", enemy.getName())); break; case CombatRoll.PASS: case CombatRoll.CRIT: case CombatRoll.DOUBLT_CRIT: dmg = player.normalAttack() * (int)roll; enemy.takeDamage(dmg); Console.WriteLine(String.Format("You hit the {0} for {1} damage {2}", enemy.getName(), dmg, ((roll == CombatRoll.PASS) ? "" : ((roll == CombatRoll.CRIT) ? "(CRIT)" : "(DOUBLE CRIT)")))); break; } //if(roll == CombatRoll.FAIL) //{ //} else //{ //} break; case CombatAction.SPECIAL_ATTACK: roll = GetCombatRoll(player, enemy, DiceBag.rollDice(1, 20), DiceBag.rollDice(1, 20)); switch (roll) { case CombatRoll.CRIT_FAIL: dmg = player.specialAttack() / 2; player.takeDamage(dmg); Console.WriteLine(String.Format("You miss the {0} and hit yourself for {1} damage", enemy.getName(), dmg)); break; case CombatRoll.FAIL: Console.WriteLine(String.Format("You miss the {0}", enemy.getName())); break; case CombatRoll.PASS: case CombatRoll.CRIT: case CombatRoll.DOUBLT_CRIT: dmg = player.specialAttack() * (int)roll; enemy.takeDamage(dmg); Console.WriteLine(String.Format("You hit the {0} for {1} damage {2}", enemy.getName(), dmg, ((roll == CombatRoll.PASS) ? "" : ((roll == CombatRoll.CRIT) ? "(CRIT)" : "(DOUBLE CRIT)")))); break; } break; case CombatAction.CHANGE_EQUIPMENT: changeEquipment(player); break; //break; case CombatAction.FLEE: break; default: throw new IndexOutOfRangeException(); } } else { var dmg = -1; CombatRoll roll; var StatTotal = enemy.getSTR() + enemy.getINT(); var r = new Random().NextDouble(); double Ratio = (double)enemy.getSTR() / (double)StatTotal; if (r < Ratio) { dmg = enemy.normalAttack(); } else { if (enemy.getCurrentMP() >= 10) { dmg = enemy.specialAttack(); } else { dmg = enemy.normalAttack(); } } roll = GetCombatRoll(enemy, player, DiceBag.rollDice(1, 20), DiceBag.rollDice(1, 20)); switch (roll) { case CombatRoll.CRIT_FAIL: enemy.takeDamage(dmg); Console.WriteLine(String.Format("The {0} misses you and hit itself for {1} damage", enemy.getName(), dmg)); break; case CombatRoll.FAIL: Console.WriteLine(String.Format("The {0} misses you.", enemy.getName())); break; case CombatRoll.PASS: case CombatRoll.CRIT: case CombatRoll.DOUBLT_CRIT: dmg *= (int)roll; player.takeDamage(dmg); Console.WriteLine(String.Format("The {0} hit you for {1} damage {2}", enemy.getName(), dmg, ((roll == CombatRoll.PASS) ? "" : ((roll == CombatRoll.CRIT) ? "(CRIT)" : "(DOUBLE CRIT)")))); break; } } playerTurn = !playerTurn; } else { running = false; } } if (player.IsAlive()) { player.gainExp(enemy.getExp()); } return(player.IsAlive()); }