Example #1
0
        private void AddAggressiveEnemies(int numberOfEnemies)
        {
            numberOfEnemies += ((Global.MapWidth + Global.MapHeight) / 2) / 5;

            for (int i = 0; i < numberOfEnemies; i++)
            {
                Cell enemyCell = GetRandomEmptyCell();
                var  pathFromAggressiveEnemy = new PathToPlayer(_player, _map, Content.Load <Texture2D>("Images/Debug/white"));

                var enemy = new AggressiveEnemy(_map, pathFromAggressiveEnemy)
                {
                    Name = "Hound",
                    font = Content.Load <SpriteFont>("Fonts/HUDFont"),
                    X    = enemyCell.X,
                    Y    = enemyCell.Y,

                    Strenght     = Dice.Parse("2d8").Roll().Value,
                    Dexterity    = Dice.Parse("2d8").Roll().Value,
                    Constitution = Dice.Parse("2d8").Roll().Value,
                    Intelligence = Dice.Parse("2d8").Roll().Value,
                    Wisdom       = Dice.Parse("2d8").Roll().Value,
                    Charisma     = Dice.Parse("2d8").Roll().Value,

                    Status  = "Unhurt",
                    Actions = 2,

                    AttackBonus = 0,
                    HitDice     = Dice.Parse("1d12")
                };

                if (enemy.Constitution >= 15)
                {
                    enemy.Sprite = Content.Load <Texture2D>("Images/Enemies/Hound/houndBig");
                }
                if (enemy.Constitution <= 8)
                {
                    enemy.Sprite = Content.Load <Texture2D>("Images/Enemies/Hound/houndSmall");
                }
                else
                {
                    enemy.Sprite = Content.Load <Texture2D>("Images/Enemies/Hound/hound");
                }

                if (enemy.Charisma >= 15)  //charisma control is done after since if the hound has cha he is good at hiding carateristics
                {
                    enemy.Sprite = Content.Load <Texture2D>("Images/Enemies/Hound/houndCha");
                }

                #region Mods calculations
                enemy.MODSTR = (enemy.Strenght - 10) / 2;
                enemy.MODDEX = (enemy.Dexterity - 10) / 2;
                enemy.MODCON = (enemy.Constitution - 10) / 2;
                enemy.MODINT = (enemy.Intelligence - 10) / 2;
                enemy.MODWIS = (enemy.Wisdom - 10) / 2;
                enemy.MODCHA = (enemy.Charisma - 10) / 2;

                enemy.ArmorClass = 10 + enemy.MODDEX + enemy.MODCON;

                enemy.Damage = Dice.Parse("1d4+" + enemy.MODSTR);

                enemy.HitPoints = enemy.HitDice.MaxRoll().Value + enemy.MODCON;

                enemy.MODAR = enemy.AttackBonus + enemy.MODSTR + enemy.MODDEX;
                #endregion

                _aggressiveEnemies.Add(enemy);
            }
        }
 public AggressiveEnemy(IMap map, PathToPlayer path)
 {
     _map  = map;
     _path = path;
 }