Пример #1
0
        public override bool PreAI()
        {
            if (timer++ > interval)
            {
                timer = 0;
            }
            if (npc.velocity.Y == 0f && !npc.wet && Collision.SolidCollision(npc.position, npc.width, npc.height + 8))
            {
                npc.velocity = Vector2.Zero;
            }
            target = ArchaeaNPC.FindClosest(npc, true);
            if (target == null)
            {
                DefaultActions();
                return(false);
            }
            inRange = ArchaeaNPC.WithinRange(target.position, ArchaeaNPC.defaultBounds(npc));
            switch (pattern)
            {
            case Pattern.JustSpawned:
                if (JustSpawned())
                {
                    goto case Pattern.Idle;
                }
                return(false);

            case Pattern.Idle:
                pattern = Pattern.Idle;
                if (inRange)
                {
                    goto case Pattern.Active;
                }
                DefaultActions(150, flip);
                return(true);

            case Pattern.Active:
                if (inRange)
                {
                    if (Hurt())
                    {
                        goto case Pattern.Attack;
                    }
                }
                else if (timer % interval / 4 == 0)
                {
                    counter++;
                }
                if (counter > maxAggro)
                {
                    counter = 0;
                    goto case Pattern.Idle;
                }
                Active();
                return(true);

            case Pattern.Attack:
                Attack();
                return(true);

            default:
                return(false);
            }
        }