From 6383e467e8ac36b306e3ac38a3f9bf944c329e2f Mon Sep 17 00:00:00 2001 From: INeedBots Date: Sat, 31 Oct 2020 15:21:49 -0600 Subject: [PATCH] aimoffset --- userraw/maps/mp/bots/_bot_internal.gsc | 43 ++++++++++++++++++++------ 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/userraw/maps/mp/bots/_bot_internal.gsc b/userraw/maps/mp/bots/_bot_internal.gsc index d67aef7..f89098a 100644 --- a/userraw/maps/mp/bots/_bot_internal.gsc +++ b/userraw/maps/mp/bots/_bot_internal.gsc @@ -1643,6 +1643,7 @@ createTargetObj(ent, theTime) obj.offset = undefined; obj.bone = undefined; obj.aim_offset = undefined; + obj.aim_offset_base = undefined; return obj; } @@ -1650,8 +1651,27 @@ createTargetObj(ent, theTime) /* Updates the target object's difficulty missing aim, inaccurate shots */ -updateAimOffset(obj) +updateAimOffset(obj, theTime) { + if (!isDefined(obj.aim_offset_base)) + { + if (self.pers["bots"]["skill"]["aim_offset_amount"] > 0) + obj.aim_offset_base = (randomFloatRange(0-self.pers["bots"]["skill"]["aim_offset_amount"], self.pers["bots"]["skill"]["aim_offset_amount"]), + randomFloatRange(0-self.pers["bots"]["skill"]["aim_offset_amount"], self.pers["bots"]["skill"]["aim_offset_amount"]), + randomFloatRange(0-self.pers["bots"]["skill"]["aim_offset_amount"], self.pers["bots"]["skill"]["aim_offset_amount"])); + else + obj.aim_offset_base = (0,0,0); + } + + aimDiffTime = self.pers["bots"]["skill"]["aim_offset_time"] * 1000; + objCreatedFor = obj.trace_time; + + if (objCreatedFor >= aimDiffTime) + offsetScalar = 0; + else + offsetScalar = 1 - objCreatedFor / aimDiffTime; + + obj.aim_offset = obj.aim_offset_base * offsetScalar; } /* @@ -1665,7 +1685,7 @@ targetObjUpdateTraced(obj, daDist, ent, theTime) obj.last_seen_pos = ent.origin; obj.trace_time_time = theTime; - updateAimOffset(obj); + self updateAimOffset(obj, theTime); } /* @@ -1745,20 +1765,20 @@ target() { if(!isObjDef) { - obj = createTargetObj(ent, theTime); + obj = self createTargetObj(ent, theTime); obj.offset = self.bot.script_target_offset; self.bot.targets[key] = obj; } - targetObjUpdateTraced(obj, daDist, ent, theTime); + self targetObjUpdateTraced(obj, daDist, ent, theTime); } else { if(!isObjDef) continue; - targetObjUpdateNoTrace(obj); + self targetObjUpdateNoTrace(obj); if(obj.no_trace_time > rememberTime) { @@ -1825,19 +1845,19 @@ target() { if(!isObjDef) { - obj = createTargetObj(player, theTime); + obj = self createTargetObj(player, theTime); self.bot.targets[key] = obj; } - targetObjUpdateTraced(obj, daDist, player, theTime); + self targetObjUpdateTraced(obj, daDist, player, theTime); } else { if(!isObjDef) continue; - targetObjUpdateNoTrace(obj); + self targetObjUpdateNoTrace(obj); if(obj.no_trace_time > rememberTime) { @@ -2137,7 +2157,7 @@ aim() conedot = getConeDot(aimpos, eyePos, angles); - if (!nadeAimOffset && conedot > 0.999 && lengthsquared(aimoffset) < 0.05) + if (conedot > 0.999 && lengthsquared(aimoffset) < 0.05) self thread bot_lookat(aimpos, 0.05); else self thread bot_lookat(aimpos, aimspeed); @@ -2151,7 +2171,10 @@ aim() conedot = getConeDot(aimpos, eyePos, angles); - self thread bot_lookat(aimpos, aimspeed); + if (conedot > 0.999 && lengthsquared(aimoffset) < 0.05) + self thread bot_lookat(aimpos, 0.05); + else + self thread bot_lookat(aimpos, aimspeed); } knifeDist = level.bots_maxKnifeDistance;