Exemple #1
0
        protected void RandomWalkAction()
        {
            if (Npc.Target != null || MoveController.IsActive)
            {
                return;
            }

            if (Npc.Attack != null && !Npc.Attack.IsFinished)
            {
                return;
            }

            if (Npc.NpcTemplate.Shape.WalkSpeed <= 0)
            {
                return;
            }

            if (Npc.Instance.IsEditingMode)
            {
                if (Npc.Position.FastDistanceTo(Npc.BindPoint) > 0)
                {
                    MoveController.MoveTo(Creature.BindPoint);
                }

                return;
            }

            long now = RandomUtilities.GetCurrentMilliseconds();

            if (now - 10000 < LastWalkUts)
            {
                return;
            }

            LastWalkUts = RandomUtilities.GetCurrentMilliseconds() + Random.Next(5000, 10000);

            if (Random.Next(0, 100) < 50)
            {
                return;
            }

            double distanceToBind = Npc.BindPoint.DistanceTo(Creature.Position);

            if (distanceToBind > 500)
            {
                MoveController.MoveTo(Creature.BindPoint);
                return;
            }

            MoveController.MoveTo(Npc.Position.X
                                  + Random.Next(150, 300)
                                  * (Random.Next(0, 100) < 50 ? 1 : -1)
                                  ,
                                  Npc.Position.Y
                                  + Random.Next(150, 300)
                                  * (Random.Next(0, 100) < 50 ? 1 : -1));
        }
Exemple #2
0
        protected void RandomWalkAction()
        {
            if (Npc.Target != null || MoveController.IsActive)
            {
                return;
            }

            if (Npc.Attack != null && !Npc.Attack.IsFinished)
            {
                return;
            }

            long now = Funcs.GetCurrentMilliseconds();

            if (now - 10000 < LastWalkUts)
            {
                return;
            }

            LastWalkUts = Funcs.GetCurrentMilliseconds() + Random.Next(5000, 10000);

            if (Random.Next(0, 100) < 50)
            {
                return;
            }

            double distanceToBind = Npc.BindPoint.DistanceTo(Creature.Position);

            if (distanceToBind > 100)
            {
                MoveController.MoveTo(Creature.BindPoint);
                return;
            }

            MoveController.MoveTo(Npc.Position.X
                                  + Random.Next(50, 100)
                                  * (Random.Next(0, 100) < 50 ? 1 : -1)
                                  ,
                                  Npc.Position.Y
                                  + Random.Next(50, 100)
                                  * (Random.Next(0, 100) < 50 ? 1 : -1));
        }
Exemple #3
0
        public override void Init(Creature creature)
        {
            base.Init(creature);

            Projectile = (Projectile)creature;

            if (Projectile.TargetPosition != null)
            {
                MoveController = new NpcMoveController(creature);
                MoveController.MoveTo(Projectile.TargetPosition);
            }

            DieUts = Funcs.GetCurrentMilliseconds() + Projectile.Lifetime;
        }