コード例 #1
0
ファイル: ChargeBoss.cs プロジェクト: templeblock/Portfolio
        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);
        }