Exemplo n.º 1
0
 public void calcINT()
 {
     INT = DiceBag.rollDice(3, 6);
     if (INT > 16)
     {
         INT += DiceBag.rollDice(2, 6);
     }
 }
Exemplo n.º 2
0
 public void calcDEX()
 {
     DEX = DiceBag.rollDice(3, 6);
     if (DEX > 16)
     {
         DEX += DiceBag.rollDice(2, 6);
     }
 }
Exemplo n.º 3
0
 public void calcSTR()
 {
     STR = DiceBag.rollDice(3, 6);
     if (STR > 16)
     {
         STR += DiceBag.rollDice(2, 6);
     }
 }
Exemplo n.º 4
0
 private void levelUp()
 {
     lvl++;
     setStrength(getStrength() + DiceBag.rollDice(1, 4));
     setDexterity(getDexterity() + DiceBag.rollDice(1, 4));
     setIntelligence(getIntelligence() + DiceBag.rollDice(1, 4));
     setHPandStats();
 }
Exemplo n.º 5
0
 public int weaponDamage()
 {
     string[] temp = weaponRoll.Split('d');
     return(DiceBag.rollDice(int.Parse(temp[0]), int.Parse(temp[1]), (int)attribute));
 }
Exemplo n.º 6
0
        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());
        }