Exemplo n.º 1
0
        public override bool Execute(PlayerBot bot, InstructionData data)
        {
            Metadata meta = (Metadata)data.Metadata;

            Player closest = MobAI.ClosestPlayer(bot, 30);

            if (closest == null)
            {
                bot.movement = false;
                bot.NextInstruction();
            }

            bool overlapsPlayer = MoveTowards(bot, closest, meta);

            if (overlapsPlayer && closest != null)
            {
                bot.NextInstruction(); return(false);
            }


            return(true);
        }
Exemplo n.º 2
0
        public override bool Execute(PlayerBot bot, InstructionData data)
        {
            Metadata meta = (Metadata)data.Metadata;

            if (bot.Model == "skeleton" || bot.Model == "creeper")
            {
                bot.movementSpeed = (int)Math.Round(3m * (short)97 / 100m);
            }
            if (bot.Model == "zombie")
            {
                bot.movementSpeed = (int)Math.Round(3m * (short)94 / 100m);
            }

            if (bot.movementSpeed == 0)
            {
                bot.movementSpeed = 1;
            }

            int search = 12;

            Player closest = MobAI.ClosestPlayer(bot, search);

            if (closest == null)
            {
                if (bot.Model == "creeper")
                {
                    meta.explodeTime = 0;
                }

                if (meta.walkTime > 0)
                {
                    meta.walkTime--;
                    bot.movement = true;
                    return(true);
                }
                if (meta.waitTime > 0)
                {
                    meta.waitTime--;
                    return(true);
                }

                DoStuff(bot, meta);

                bot.movement = false;
                bot.NextInstruction();
            }

            else
            {
                if (bot.Model == "creeper")
                {
                    if (meta.explodeTime > 0)
                    {
                        meta.explodeTime--;

                        if (meta.explodeTime == 1)
                        {
                            if (closest.level.physics > 1 && closest.level.physics != 5)
                            {
                                closest.level.MakeExplosion((ushort)(bot.Pos.X / 32), (ushort)(bot.Pos.Y / 32), (ushort)(bot.Pos.Z / 32), 0);
                            }
                            Command.Find("Effect").Use(closest, "explosion " + (bot.Pos.X / 32) + " " + (bot.Pos.Y / 32) + " " + (bot.Pos.Z / 32) + " 0 0 0 true");

                            Orientation rot = bot.Rot;

                            HitPlayer(bot, closest, rot);
                            meta.explodeTime = 0;
                            PlayerBot.Remove(bot);
                            return(true);
                        }

                        bot.movement = true;
                        return(true);
                    }
                }
            }

            bool overlapsPlayer = MoveTowards(bot, closest, meta);

            if (overlapsPlayer && closest != null)
            {
                bot.NextInstruction(); return(false);
            }


            return(true);
        }