From 9744ff6ccdedcef89d34c4199346f7e9de93085c Mon Sep 17 00:00:00 2001 From: INeedBots Date: Wed, 10 Mar 2021 15:17:26 -0600 Subject: [PATCH] Better crouch and mantle --- main_shared/maps/mp/bots/_bot_internal.gsc | 42 +++++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/main_shared/maps/mp/bots/_bot_internal.gsc b/main_shared/maps/mp/bots/_bot_internal.gsc index 0082fc0..3c0185b 100644 --- a/main_shared/maps/mp/bots/_bot_internal.gsc +++ b/main_shared/maps/mp/bots/_bot_internal.gsc @@ -205,7 +205,9 @@ doBotMovement() self endon("disconnect"); self endon("death"); - for (;;) + FORWARDAMOUNT = 25; + + for (i=0;;i+=0.05) { wait 0.05; @@ -213,7 +215,6 @@ doBotMovement() move_To = self.bot.moveTo; angles = self GetPlayerAngles(); dir = (0, 0, 0); - eye = self getEyePos(); if (DistanceSquared(self.origin, move_To) >= 49) { @@ -235,12 +236,40 @@ doBotMovement() dir = (dir[0], 0-dir[1], 0); } + // climb through windows if (self isMantling()) self crouch(); - bt = bulletTrace(eye, eye + anglesToForward(angles) * 25, false, self); - if (bt["surfacetype"] == "glass") - self thread knife(); + + startPos = self.origin + (0, 0, 50); + startPosForward = startPos + anglesToForward((0, angles[1], 0)) * FORWARDAMOUNT; + bt = bulletTrace(startPos, startPosForward, false, self); + if (bt["fraction"] >= 1) + { + // check if need to jump + bt = bulletTrace(startPosForward, startPosForward - (0, 0, 40), false, self); + + if (bt["fraction"] < 1 && bt["normal"][2] > 0.75 && i > 1.5 && !self isOnLadder()) + { + i = 0; + self thread jump(); + } + } + // check if need to knife glass + else if (bt["surfacetype"] == "glass") + { + if (i > 1.5) + { + i = 0; + self thread knife(); + } + } + else + { + // check if need to crouch + if (bulletTracePassed(startPos - (0, 0, 25), startPosForward - (0, 0, 25), false, self)) + self crouch(); + } // move! self botMovement(int(dir[0]), int(dir[1])); @@ -1675,6 +1704,9 @@ movetowards(goal) time = 0; if(distanceSquared(self.origin, lastOri) < 128) { + self thread knife(); + wait 0.5; + stucks++; randomDir = self getRandomLargestStafe(stucks);