diff --git a/main_shared/maps/mp/bots/_bot_internal.gsc b/main_shared/maps/mp/bots/_bot_internal.gsc index 2f29919..4e3a163 100644 --- a/main_shared/maps/mp/bots/_bot_internal.gsc +++ b/main_shared/maps/mp/bots/_bot_internal.gsc @@ -149,6 +149,7 @@ resetBotVars() self.bot.jump_time = undefined; self.bot.is_cur_full_auto = false; + self.bot.cur_weap_dist_multi = 1; self.bot.rand = randomInt(100); @@ -244,6 +245,27 @@ doBotMovement() } } +/* + Sets the factor of distance for a weapon +*/ +SetWeaponDistMulti(weap) +{ + if (weap == "none") + return 1; + + switch(weaponClass(weap)) + { + case "rifle": + return 0.9; + case "smg": + return 0.7; + case "pistol": + return 0.5; + default: + return 1; + } +} + /* The hold breath thread. */ @@ -259,7 +281,7 @@ watchHoldBreath() if(self.bot.isfrozen) continue; - self holdbreath((self playerADS() && weaponClass(self getCurrentWEapon()) == "rifle")); + self holdbreath(self playerADS() >= 1); } } @@ -306,6 +328,7 @@ onWeaponChange() weap = self GetCurrentWeapon(); self.bot.is_cur_full_auto = WeaponIsFullAuto(weap); + self.bot.cur_weap_dist_multi = SetWeaponDistMulti(weap); if (weap != "none") self changeToWeap(weap); @@ -314,6 +337,7 @@ onWeaponChange() self waittill( "weapon_change", newWeapon ); self.bot.is_cur_full_auto = WeaponIsFullAuto(newWeapon); + self.bot.cur_weap_dist_multi = SetWeaponDistMulti(weap); if (newWeapon == "none") { @@ -609,9 +633,11 @@ updateAimOffset(obj) targetObjUpdateTraced(obj, daDist, ent, theTime, isScriptObj) { distClose = self.pers["bots"]["skill"]["dist_start"]; + distClose *= self.bot.cur_weap_dist_multi; distClose *= distClose; distMax = self.pers["bots"]["skill"]["dist_max"]; + distMax *= self.bot.cur_weap_dist_multi; distMax *= distMax; timeMulti = 1;