added ads aimspeed delay

This commit is contained in:
INeedBots 2021-03-02 00:29:30 -06:00
parent 8e1c57c2a3
commit b1357c8855
2 changed files with 86 additions and 6 deletions

View File

@ -32,6 +32,8 @@ added()
self.pers["bots"]["skill"]["aim_offset_amount"] = 1; // how far a bot's incorrect aim is self.pers["bots"]["skill"]["aim_offset_amount"] = 1; // how far a bot's incorrect aim is
self.pers["bots"]["skill"]["bone_update_interval"] = 0.05; // how often a bot changes their bone target self.pers["bots"]["skill"]["bone_update_interval"] = 0.05; // how often a bot changes their bone target
self.pers["bots"]["skill"]["bones"] = "j_head"; // a list of comma seperated bones the bot will aim at self.pers["bots"]["skill"]["bones"] = "j_head"; // a list of comma seperated bones the bot will aim at
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5; // a factor of how much ads to reduce when adsing
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5; // a factor of how much more aimspeed delay to add
self.pers["bots"]["behavior"] = []; self.pers["bots"]["behavior"] = [];
self.pers["bots"]["behavior"]["strafe"] = 50; // percentage of how often the bot strafes a target self.pers["bots"]["behavior"]["strafe"] = 50; // percentage of how often the bot strafes a target
@ -664,9 +666,14 @@ target()
rememberTime = self.pers["bots"]["skill"]["remember_time"]; rememberTime = self.pers["bots"]["skill"]["remember_time"];
initReactTime = self.pers["bots"]["skill"]["init_react_time"]; initReactTime = self.pers["bots"]["skill"]["init_react_time"];
hasTarget = isDefined(self.bot.target); hasTarget = isDefined(self.bot.target);
adsAmount = self PlayerADS();
adsFovFact = self.pers["bots"]["skill"]["ads_fov_multi"];
// reduce fov if ads'ing // reduce fov if ads'ing
myFov *= 1 - 0.5 * self PlayerADS(); if (adsAmount > 0)
{
myFov *= 1 - adsFovFact * adsAmount;
}
if(hasTarget && !isDefined(self.bot.target.entity)) if(hasTarget && !isDefined(self.bot.target.entity))
{ {
@ -983,6 +990,14 @@ aim()
eyePos = self getEyePos(); eyePos = self getEyePos();
curweap = self getCurrentWeapon(); curweap = self getCurrentWeapon();
angles = self GetPlayerAngles(); angles = self GetPlayerAngles();
adsAmount = self PlayerADS();
adsAimSpeedFact = self.pers["bots"]["skill"]["ads_aimspeed_multi"];
// reduce aimspeed if ads'ing
if (adsAmount > 0)
{
aimspeed *= 1 + adsAimSpeedFact * adsAmount;
}
if(isDefined(self.bot.target) && isDefined(self.bot.target.entity)) if(isDefined(self.bot.target) && isDefined(self.bot.target.entity))
{ {
@ -1099,13 +1114,13 @@ aim()
//c4 logic here, but doesnt work anyway //c4 logic here, but doesnt work anyway
canADS = self canAds(dist, curweap); canADS = (self canAds(dist, curweap) && conedot > 0.65);
if (canADS) if (canADS)
self thread pressADS(); self thread pressADS();
if (trace_time > reaction_time) if (trace_time > reaction_time)
{ {
if((!canADS || self playerads() == 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && getDvarInt("bots_play_fire")) if((!canADS || adsAmount >= 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && getDvarInt("bots_play_fire"))
self botFire(); self botFire();
if (isplay) if (isplay)
@ -1136,11 +1151,11 @@ aim()
if(!self canFire(curweap) || !self isInRange(dist, curweap)) if(!self canFire(curweap) || !self isInRange(dist, curweap))
continue; continue;
canADS = self canAds(dist, curweap); canADS = (self canAds(dist, curweap) && conedot > 0.65);
if (canADS) if (canADS)
self thread pressADS(); self thread pressADS();
if((!canADS || self playerads() == 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && getDvarInt("bots_play_fire")) if((!canADS || adsAmount >= 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && getDvarInt("bots_play_fire"))
self botFire(); self botFire();
continue; continue;

View File

@ -260,7 +260,7 @@ difficulty()
for(;;) for(;;)
{ {
wait 1; wait 5;
rankVar = GetDvarInt("bots_skill"); rankVar = GetDvarInt("bots_skill");
@ -287,6 +287,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 4; self.pers["bots"]["skill"]["aim_offset_amount"] = 4;
self.pers["bots"]["skill"]["bone_update_interval"] = 2; self.pers["bots"]["skill"]["bone_update_interval"] = 2;
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_ankle_le,j_ankle_ri"; self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_ankle_le,j_ankle_ri";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 0; self.pers["bots"]["behavior"]["strafe"] = 0;
self.pers["bots"]["behavior"]["nade"] = 10; self.pers["bots"]["behavior"]["nade"] = 10;
@ -316,6 +318,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 3; self.pers["bots"]["skill"]["aim_offset_amount"] = 3;
self.pers["bots"]["skill"]["bone_update_interval"] = 1.5; self.pers["bots"]["skill"]["bone_update_interval"] = 1.5;
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_ankle_le,j_ankle_ri,j_head"; self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_ankle_le,j_ankle_ri,j_head";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 10; self.pers["bots"]["behavior"]["strafe"] = 10;
self.pers["bots"]["behavior"]["nade"] = 15; self.pers["bots"]["behavior"]["nade"] = 15;
@ -345,6 +349,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 2.5; self.pers["bots"]["skill"]["aim_offset_amount"] = 2.5;
self.pers["bots"]["skill"]["bone_update_interval"] = 1; self.pers["bots"]["skill"]["bone_update_interval"] = 1;
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head"; self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 20; self.pers["bots"]["behavior"]["strafe"] = 20;
self.pers["bots"]["behavior"]["nade"] = 20; self.pers["bots"]["behavior"]["nade"] = 20;
@ -374,6 +380,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 2; self.pers["bots"]["skill"]["aim_offset_amount"] = 2;
self.pers["bots"]["skill"]["bone_update_interval"] = 0.75; self.pers["bots"]["skill"]["bone_update_interval"] = 0.75;
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head,j_head"; self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head,j_head";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 30; self.pers["bots"]["behavior"]["strafe"] = 30;
self.pers["bots"]["behavior"]["nade"] = 25; self.pers["bots"]["behavior"]["nade"] = 25;
@ -403,6 +411,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 1.5; self.pers["bots"]["skill"]["aim_offset_amount"] = 1.5;
self.pers["bots"]["skill"]["bone_update_interval"] = 0.5; self.pers["bots"]["skill"]["bone_update_interval"] = 0.5;
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_head"; self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_head";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 40; self.pers["bots"]["behavior"]["strafe"] = 40;
self.pers["bots"]["behavior"]["nade"] = 35; self.pers["bots"]["behavior"]["nade"] = 35;
@ -432,6 +442,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 1; self.pers["bots"]["skill"]["aim_offset_amount"] = 1;
self.pers["bots"]["skill"]["bone_update_interval"] = 0.25; self.pers["bots"]["skill"]["bone_update_interval"] = 0.25;
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_head,j_head"; self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_head,j_head";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 50; self.pers["bots"]["behavior"]["strafe"] = 50;
self.pers["bots"]["behavior"]["nade"] = 45; self.pers["bots"]["behavior"]["nade"] = 45;
@ -461,6 +473,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_offset_amount"] = 0; self.pers["bots"]["skill"]["aim_offset_amount"] = 0;
self.pers["bots"]["skill"]["bone_update_interval"] = 0.05; self.pers["bots"]["skill"]["bone_update_interval"] = 0.05;
self.pers["bots"]["skill"]["bones"] = "j_head"; self.pers["bots"]["skill"]["bones"] = "j_head";
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
self.pers["bots"]["behavior"]["strafe"] = 65; self.pers["bots"]["behavior"]["strafe"] = 65;
self.pers["bots"]["behavior"]["nade"] = 65; self.pers["bots"]["behavior"]["nade"] = 65;
@ -944,6 +958,7 @@ start_bot_threads()
self thread bot_use_tube_think(); self thread bot_use_tube_think();
self thread bot_use_grenade_think(); self thread bot_use_grenade_think();
self thread bot_use_equipment_think(); self thread bot_use_equipment_think();
self thread bot_watch_think_mw2();
} }
// obj // obj
@ -2185,6 +2200,52 @@ bot_weapon_think()
} }
} }
/*
Bots play mw2
*/
bot_watch_think_mw2()
{
self endon("disconnect");
self endon("death");
level endon("game_ended");
for (;;)
{
wait randomIntRange(1, 4);
if(self BotIsFrozen())
continue;
if(self isDefusing() || self isPlanting())
continue;
if (self InLastStand())
continue;
if (self HasThreat())
continue;
tube = self getValidTube();
if (!isDefined(tube))
{
if (self GetAmmoCount("rpg_mp"))
tube = "rpg_mp";
else
continue;
}
if (self GetCurrentWeapon() == tube)
continue;
chance = self.pers["bots"]["behavior"]["nade"];
if (randomInt(100) > chance)
continue;
self ChangeToWeapon(tube);
}
}
/* /*
Bot logic for killstreaks. Bot logic for killstreaks.
*/ */
@ -2290,8 +2351,12 @@ bot_killstreak_think()
if (isAirstrikePos && !isDefined( level.airstrikeInProgress )) if (isAirstrikePos && !isDefined( level.airstrikeInProgress ))
{ {
self BotFreezeControls(true);
self notify( "confirm_location", targetPos ); self notify( "confirm_location", targetPos );
wait 1; wait 1;
self BotFreezeControls(false);
} }
self thread changeToWeapon(curWeap); self thread changeToWeapon(curWeap);