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); }
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); }