From 2a93f48e3f7dbb6009a48263191cde97324dc6f9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 30 Jul 2020 20:49:13 -0600 Subject: [PATCH] no_trace_look_time and no_trace_ads_time --- main_shared/maps/mp/bots/_bot_internal.gsc | 183 +++++++++++---------- main_shared/maps/mp/bots/_bot_script.gsc | 16 ++ 2 files changed, 111 insertions(+), 88 deletions(-) diff --git a/main_shared/maps/mp/bots/_bot_internal.gsc b/main_shared/maps/mp/bots/_bot_internal.gsc index a7d37a5..fe3a4b8 100644 --- a/main_shared/maps/mp/bots/_bot_internal.gsc +++ b/main_shared/maps/mp/bots/_bot_internal.gsc @@ -18,7 +18,9 @@ added() self.pers["bots"]["skill"]["aim_time"] = 0.05; self.pers["bots"]["skill"]["init_react_time"] = 0; self.pers["bots"]["skill"]["reaction_time"] = 0; - self.pers["bots"]["skill"]["remember_time"] = 10000; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500; + self.pers["bots"]["skill"]["no_trace_look_time"] = 10000; + self.pers["bots"]["skill"]["remember_time"] = 25000; self.pers["bots"]["skill"]["fov"] = -1; self.pers["bots"]["skill"]["dist"] = 100000; self.pers["bots"]["skill"]["spawn_time"] = 0; @@ -420,7 +422,7 @@ check_reload() for(;;) { - self waittill( "weapon_fired" ); + self waittill_notify_or_timeout( "weapon_fired", 5 ); self thread reload_thread(); } } @@ -820,111 +822,116 @@ aim() if(isDefined(self.bot.target) && isDefined(self.bot.target.entity)) { - trace_time = self.bot.target.trace_time; no_trace_time = self.bot.target.no_trace_time; - last_pos = self.bot.target.last_seen_pos; - target = self.bot.target.entity; - conedot = 0; - isplay = self.bot.target.isplay; - offset = self.bot.target.offset; - dist = self.bot.target.dist; - curweap = self getCurrentWeapon(); - eyePos = self getEyePos(); - angles = self GetPlayerAngles(); - rand = self.bot.target.rand; - remember_time = self.pers["bots"]["skill"]["remember_time"]; - reaction_time = self.pers["bots"]["skill"]["reaction_time"]; - nadeAimOffset = 0; - myeye = self getEyePos(); - - if(self.bot.isfraggingafter || self.bot.issmokingafter) - nadeAimOffset = dist/3000; - else if(weaponClass(curweap) == "grenade") - nadeAimOffset = dist/16000; - - if(no_trace_time) + no_trace_look_time = self.pers["bots"]["skill"]["no_trace_look_time"]; + + if (no_trace_time <= no_trace_look_time) { - if(no_trace_time > remember_time/2) + trace_time = self.bot.target.trace_time; + last_pos = self.bot.target.last_seen_pos; + target = self.bot.target.entity; + conedot = 0; + isplay = self.bot.target.isplay; + offset = self.bot.target.offset; + dist = self.bot.target.dist; + curweap = self getCurrentWeapon(); + eyePos = self getEyePos(); + angles = self GetPlayerAngles(); + rand = self.bot.target.rand; + no_trace_ads_time = self.pers["bots"]["skill"]["no_trace_ads_time"]; + reaction_time = self.pers["bots"]["skill"]["reaction_time"]; + nadeAimOffset = 0; + myeye = self getEyePos(); + + if(self.bot.isfraggingafter || self.bot.issmokingafter) + nadeAimOffset = dist/3000; + else if(weaponClass(curweap) == "grenade") + nadeAimOffset = dist/16000; + + if(no_trace_time) { - self ads(false); - - if(isplay) + if(no_trace_time > no_trace_ads_time) { - //better room to nade? cook time function with dist? - if(!self.bot.isfraggingafter && !self.bot.issmokingafter) + self ads(false); + + if(isplay) { - nade = self getValidGrenade(); - if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(myEye, myEye + (0, 0, 75), false, self) && bulletTracePassed(last_pos, last_pos + (0, 0, 100), false, target)) + //better room to nade? cook time function with dist? + if(!self.bot.isfraggingafter && !self.bot.issmokingafter) { - if(nade == "frag_grenade_mp") - self thread frag(2.5); - else - self thread smoke(0.5); - - self notify("kill_goal"); + nade = self getValidGrenade(); + if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(myEye, myEye + (0, 0, 75), false, self) && bulletTracePassed(last_pos, last_pos + (0, 0, 100), false, target)) + { + if(nade == "frag_grenade_mp") + self thread frag(2.5); + else + self thread smoke(0.5); + + self notify("kill_goal"); + } } } + else + { + self stopNading(); + } + } + + self botLookAt(last_pos + (0, 0, self getEyeHeight() + nadeAimOffset), aimspeed); + continue; + } + + self stopNading(); + + if(isplay) + { + aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset); + conedot = getConeDot(aimpos, eyePos, angles); + + if(!nadeAimOffset && conedot > 0.999) + { + self botLookAtPlayer(target, "j_spineupper"); } else { - self stopNading(); + self botLookAt(aimpos, aimspeed); } } - - self botLookAt(last_pos + (0, 0, self getEyeHeight() + nadeAimOffset), aimspeed); - continue; - } - - self stopNading(); - - if(isplay) - { - aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset); - conedot = getConeDot(aimpos, eyePos, angles); - - if(!nadeAimOffset && conedot > 0.999) - { - self botLookAtPlayer(target, "j_spineupper"); - } else { + aimpos = target.origin; + if (isDefined(offset)) + aimpos += offset; + aimpos += (0, 0, nadeAimOffset); + conedot = getConeDot(aimpos, eyePos, angles); self botLookAt(aimpos, aimspeed); } - } - else - { - aimpos = target.origin; - if (isDefined(offset)) - aimpos += offset; - aimpos += (0, 0, nadeAimOffset); - conedot = getConeDot(aimpos, eyePos, angles); - self botLookAt(aimpos, aimspeed); - } - - if(isplay && conedot > 0.9 && dist < level.bots_maxKnifeDistance && trace_time > reaction_time) - { - self ads(false); - self knife(); + + if(isplay && conedot > 0.9 && dist < level.bots_maxKnifeDistance && trace_time > reaction_time) + { + self ads(false); + self knife(); + continue; + } + + if(!self canFire(curweap) || !self isInRange(dist, curweap)) + { + self ads(false); + continue; + } + + //c4 logic here, but doesnt work anyway + + canADS = self canAds(dist, curweap); + self ads(canADS); + + if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && trace_time > reaction_time) + { + self botFire(); + } + continue; } - - if(!self canFire(curweap) || !self isInRange(dist, curweap)) - { - self ads(false); - continue; - } - - //c4 logic here, but doesnt work anyway - - canADS = self canAds(dist, curweap); - self ads(canADS); - - if((!canADS || self playerads() == 1.0) && (conedot > 0.999 || dist < level.bots_maxKnifeDistance) && trace_time > reaction_time) - { - self botFire(); - } - - continue; } self ads(false); diff --git a/main_shared/maps/mp/bots/_bot_script.gsc b/main_shared/maps/mp/bots/_bot_script.gsc index 70517e5..d52916d 100644 --- a/main_shared/maps/mp/bots/_bot_script.gsc +++ b/main_shared/maps/mp/bots/_bot_script.gsc @@ -266,6 +266,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.6; self.pers["bots"]["skill"]["init_react_time"] = 1500; self.pers["bots"]["skill"]["reaction_time"] = 1000; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 500; + self.pers["bots"]["skill"]["no_trace_look_time"] = 600; self.pers["bots"]["skill"]["remember_time"] = 750; self.pers["bots"]["skill"]["fov"] = 0.7; self.pers["bots"]["skill"]["dist"] = 1000; @@ -286,6 +288,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.55; self.pers["bots"]["skill"]["init_react_time"] = 1000; self.pers["bots"]["skill"]["reaction_time"] = 800; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000; + self.pers["bots"]["skill"]["no_trace_look_time"] = 1250; self.pers["bots"]["skill"]["remember_time"] = 1500; self.pers["bots"]["skill"]["fov"] = 0.65; self.pers["bots"]["skill"]["dist"] = 1500; @@ -306,6 +310,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.4; self.pers["bots"]["skill"]["init_react_time"] = 750; self.pers["bots"]["skill"]["reaction_time"] = 500; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000; + self.pers["bots"]["skill"]["no_trace_look_time"] = 1500; self.pers["bots"]["skill"]["remember_time"] = 2000; self.pers["bots"]["skill"]["fov"] = 0.6; self.pers["bots"]["skill"]["dist"] = 2250; @@ -326,6 +332,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.3; self.pers["bots"]["skill"]["init_react_time"] = 600; self.pers["bots"]["skill"]["reaction_time"] = 400; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000; + self.pers["bots"]["skill"]["no_trace_look_time"] = 1500; self.pers["bots"]["skill"]["remember_time"] = 3000; self.pers["bots"]["skill"]["fov"] = 0.55; self.pers["bots"]["skill"]["dist"] = 3350; @@ -346,6 +354,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.25; self.pers["bots"]["skill"]["init_react_time"] = 500; self.pers["bots"]["skill"]["reaction_time"] = 300; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 1500; + self.pers["bots"]["skill"]["no_trace_look_time"] = 2000; self.pers["bots"]["skill"]["remember_time"] = 4000; self.pers["bots"]["skill"]["fov"] = 0.5; self.pers["bots"]["skill"]["dist"] = 5000; @@ -366,6 +376,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.2; self.pers["bots"]["skill"]["init_react_time"] = 250; self.pers["bots"]["skill"]["reaction_time"] = 150; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 2000; + self.pers["bots"]["skill"]["no_trace_look_time"] = 3000; self.pers["bots"]["skill"]["remember_time"] = 5000; self.pers["bots"]["skill"]["fov"] = 0.45; self.pers["bots"]["skill"]["dist"] = 7500; @@ -386,6 +398,8 @@ difficulty() self.pers["bots"]["skill"]["aim_time"] = 0.1; self.pers["bots"]["skill"]["init_react_time"] = 100; self.pers["bots"]["skill"]["reaction_time"] = 50; + self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500; + self.pers["bots"]["skill"]["no_trace_look_time"] = 4000; self.pers["bots"]["skill"]["remember_time"] = 7500; self.pers["bots"]["skill"]["fov"] = 0.4; self.pers["bots"]["skill"]["dist"] = 10000; @@ -425,6 +439,8 @@ set_diff() self.pers["bots"]["skill"]["aim_time"] = 0.05 * randomIntRange(1, 20); self.pers["bots"]["skill"]["init_react_time"] = 50 * randomInt(100); self.pers["bots"]["skill"]["reaction_time"] = 50 * randomInt(100); + self.pers["bots"]["skill"]["no_trace_ads_time"] = 50 * randomInt(100); + self.pers["bots"]["skill"]["no_trace_look_time"] = 50 * randomInt(100); self.pers["bots"]["skill"]["remember_time"] = 50 * randomInt(100); self.pers["bots"]["skill"]["fov"] = randomFloatRange(-1, 1); self.pers["bots"]["skill"]["dist"] = randomIntRange(500, 25000);