Example #1
0
        public override bool TakeTurn(Level level)
        {
            turnCounter++;
            CheckElementDamage();

            if (IsAggro && !isFrozen)
            {
                if (!hasSpawned)
                {
                    hasSpawned = true;

                    GuardianEnemy g1 = new GuardianEnemy();
                    GuardianEnemy g2 = new GuardianEnemy();

                    g1.BuildEnemy(level.DungeonLevel);
                    g2.BuildEnemy(level.DungeonLevel);

                    IntVec position = level.CharacterEntities.FindPosition(this);

                    if (level.CharacterEntities.FindPosition(this).X == level.CharacterEntities.FindPosition(targets[0]).X)
                    {
                        level.CharacterEntities.Add(g1, new IntVec(position.X - 1, position.Y));
                        level.CharacterEntities.Add(g2, new IntVec(position.X + 1, position.Y));
                    }
                    else
                    {
                        level.CharacterEntities.Add(g1, new IntVec(position.X, position.Y - 1));
                        level.CharacterEntities.Add(g2, new IntVec(position.X, position.Y + 1));
                    }

                    g1.ForceAggro(targets[0]);
                    g2.ForceAggro(targets[0]);
                }

                Direction[] path = AStar.getPathBetween(level, level.CharacterEntities.FindPosition(this), level.CharacterEntities.FindPosition(targets[0]));
                if (path.Length > 1)
                {
                    Move(path[0], level);
                }
                else if (path.Length > 2)
                {
                    Move(path[0], level);
                    Move(path[1], level);
                }

                if (path.Length < 4)
                {
                    Audio.playSound("Slash");
                    Engine.Engine.AddVisualAttack(targets[0], "Hero/HammerSmash", .25f, 2.0f, .15f);
                    targets[0].TakeDamage(attacks[0], this);
                    eSprite.Direction = GetCorrectDirection(path[0]);
                }
            }

            return(true);
        }
Example #2
0
        public static Enemy[] GetRandomEnemy(int amount, int powerLevel)
        {
            Enemy        enemy   = null;
            List <Enemy> enemies = new List <Enemy>();
            int          rand    = gen.Next(0, 4);

            switch (rand)
            {
            case (0):
                for (int i = 0; i < amount; i++)
                {
                    enemy = new MeleeEnemy();
                    enemy.BuildEnemy(powerLevel);
                    enemies.Add(enemy);
                }
                break;

            case (1):
                for (int i = 0; i < amount; i++)
                {
                    enemy = new RangedEnemy();
                    enemy.BuildEnemy(powerLevel);
                    enemies.Add(enemy);
                }
                break;

            case (2):
                for (int i = 0; i < amount; i++)
                {
                    enemy = new MageEnemy();
                    enemy.BuildEnemy(powerLevel);
                    enemies.Add(enemy);
                }
                break;

            case (3):
                for (int i = 0; i < amount; i++)
                {
                    enemy = new GuardianEnemy();
                    enemy.BuildEnemy(powerLevel);
                    enemies.Add(enemy);
                }
                break;
            }

            return(enemies.ToArray());
        }
Example #3
0
        public static Enemy[] GetRandomEnemy(int amount, int powerLevel)
        {
            Enemy enemy = null;
            List<Enemy> enemies = new List<Enemy>();
            int rand = gen.Next(0, 4);
            switch(rand)
            {
                case(0):
                    for (int i = 0; i < amount; i++)
                    {
                        enemy = new MeleeEnemy();
                        enemy.BuildEnemy(powerLevel);
                        enemies.Add(enemy);
                    }
                    break;
                case (1):
                    for (int i = 0; i < amount; i++)
                    {
                        enemy = new RangedEnemy();
                        enemy.BuildEnemy(powerLevel);
                        enemies.Add(enemy);
                    }
                    break;
                case (2):
                    for (int i = 0; i < amount; i++)
                    {
                        enemy = new MageEnemy();
                        enemy.BuildEnemy(powerLevel);
                        enemies.Add(enemy);
                    }
                    break;
                case (3):
                    for (int i = 0; i < amount; i++)
                    {
                        enemy = new GuardianEnemy();
                        enemy.BuildEnemy(powerLevel);
                        enemies.Add(enemy);
                    }
                    break;
            }

            return enemies.ToArray();
        }