Got it running

This commit is contained in:
INeedGames 2020-11-09 00:48:01 -06:00
parent 07bad9e79d
commit 7dde4d75e9
4 changed files with 88 additions and 94 deletions

View File

@ -225,9 +225,6 @@ doSwitch(newWeapon)
self endon("death"); self endon("death");
self endon("weapon_change"); self endon("weapon_change");
if (self.bot.climbing)
return;
waittillframeend; waittillframeend;
if (self.lastDroppableWeapon != newWeapon) if (self.lastDroppableWeapon != newWeapon)
return; return;
@ -288,9 +285,11 @@ onLastStand()
while (!self inLastStand()) while (!self inLastStand())
wait 0.05; wait 0.05;
self notify("kill_goal");
if (!self inFinalStand() && !self IsUsingRemote()) if (!self inFinalStand() && !self IsUsingRemote())
{ {
while (self.bot.knifing || self.bot.tryingtofrag || self.disabledWeapon) while (self.disabledWeapon)
wait 0.05; wait 0.05;
waittillframeend; waittillframeend;
@ -426,8 +425,9 @@ spawned()
wait self.pers["bots"]["skill"]["spawn_time"]; wait self.pers["bots"]["skill"]["spawn_time"];
self thread grenade_danager(); self thread doBotMovement();
self thread grenade_danager();
self thread target(); self thread target();
self thread updateBones(); self thread updateBones();
self thread aim(); self thread aim();
@ -440,6 +440,44 @@ spawned()
self notify("bot_spawned"); self notify("bot_spawned");
} }
doBotMovement()
{
self endon("disconnect");
self endon("death");
for (;;)
{
wait 0.05;
waittillframeend;
move_To = self.bot.moveTo;
angles = self GetPlayerAngles();
if (DistanceSquared(self.origin, move_To) < 49)
continue;
cosa = cos(0-angles[1]);
sina = sin(0-angles[1]);
// get the direction
dir = move_To - self.origin;
// rotate our direction according to our angles
dir = (dir[0] * cosa - dir[1] * sina,
dir[0] * sina + dir[1] * cosa,
0);
// make the length 127
dir = VectorNormalize(dir) * 127;
// invert the second component as the engine requires this
dir = (dir[0], 0-dir[1], 0);
// move!
self botMovement(int(dir[0]), int(dir[1]));
}
}
/* /*
The hold breath thread. The hold breath thread.
*/ */
@ -461,8 +499,6 @@ watchHoldBreath()
/* /*
Throws back frag grenades Throws back frag grenades
Does this by a hack
Basically it'll throw its own frag grenade and delete the original frag
*/ */
grenade_danager() grenade_danager()
{ {
@ -479,17 +515,12 @@ grenade_danager()
if (self.bot.isfrozen || level.gameEnded || !gameFlag( "prematch_done" )) if (self.bot.isfrozen || level.gameEnded || !gameFlag( "prematch_done" ))
continue; continue;
if(self.bot.isfraggingafter || self.bot.climbing || self.bot.knifingafter || self IsUsingRemote()) if(self.bot.isfraggingafter || self.bot.issmokingafter || self IsUsingRemote())
continue; continue;
if(self isDefusing() || self isPlanting()) if(self isDefusing() || self isPlanting())
continue; continue;
curWeap = self GetCurrentWeapon();
if (!isWeaponPrimary(curWeap) || self.disabledWeapon)
continue;
myEye = self getEye(); myEye = self getEye();
for (i = level.bots_fragList.count-1; i >= 0; i--) for (i = level.bots_fragList.count-1; i >= 0; i--)
{ {
@ -510,51 +541,12 @@ grenade_danager()
if (!bulletTracePassed( myEye, frag.origin, false, frag.grenade )) if (!bulletTracePassed( myEye, frag.origin, false, frag.grenade ))
continue; continue;
frag.throwback = true; self thread frag();
weap = "frag_grenade_mp";
offhand = self GetCurrentOffhand();
offhandcount = self GetAmmoCount(offhand);
self TakeWeapon(offhand);// for some odd reason, mw2 will not give you a frag if you have any other primary offhand
self GiveWeapon(weap);
self thread watchThrowback(frag);
self botThrowGrenade(weap);
frag.throwback = undefined;
self TakeWeapon(weap);
self GiveWeapon(offhand);
self setWeaponAmmoClip(offhand, offhandcount);
break; break;
} }
} }
} }
/*
Watches if the throw was successful, and deletes the original
*/
watchThrowback(frag)
{
self endon("bot_kill_throwback");
self thread notifyAfterDelay(5, "bot_kill_throwback");
self waittill( "grenade_fire", grenade, wName );
// blew up already
if (!isDefined(frag.grenade) || wName != "frag_grenade_mp")
{
grenade delete();
return;
}
grenade.threwBack = true;
self thread incPlayerStat( "throwbacks", 1 );
grenade thread maps\mp\gametypes\_shellshock::grenade_earthQuake();
grenade.originalOwner = frag.owner;
frag.grenade delete();
}
/* /*
Bots will update its needed stance according to the nodes on the level. Will also allow the bot to sprint when it can. Bots will update its needed stance according to the nodes on the level. Will also allow the bot to sprint when it can.
*/ */
@ -567,10 +559,13 @@ stance()
{ {
self waittill_either("finished_static_waypoints", "new_static_waypoint"); self waittill_either("finished_static_waypoints", "new_static_waypoint");
if(self.bot.isfrozen)
continue;
toStance = "stand"; toStance = "stand";
if(self.bot.next_wp != -1) if(self.bot.next_wp != -1)
toStance = level.waypoints[self.bot.next_wp].type; toStance = level.waypoints[self.bot.next_wp].type;
self.bot.climbing = (toStance == "climb");
if(toStance == "climb") if(toStance == "climb")
toStance = "stand"; toStance = "stand";
@ -589,7 +584,7 @@ stance()
curweap = self getCurrentWeapon(); curweap = self getCurrentWeapon();
if(toStance != "stand" || self.bot.issprinting) if(toStance != "stand" || self.bot.isreloading || self.bot.issprinting || self.bot.isfraggingafter || self.bot.issmokingafter)
continue; continue;
if(randomInt(100) > self.pers["bots"]["behavior"]["sprint"]) if(randomInt(100) > self.pers["bots"]["behavior"]["sprint"])
@ -598,6 +593,9 @@ stance()
if(isDefined(self.bot.target) && self canFire(curweap) && self isInRange(self.bot.target.dist, curweap)) if(isDefined(self.bot.target) && self canFire(curweap) && self isInRange(self.bot.target.dist, curweap))
continue; continue;
if(self.bot.sprintendtime != -1 && getTime() - self.bot.sprintendtime < 2000)
continue;
if(!isDefined(self.bot.towards_goal) || DistanceSquared(self.origin, self.bot.towards_goal) < level.bots_minSprintDistance || getConeDot(self.bot.towards_goal, self.origin, self GetPlayerAngles()) < 0.75) if(!isDefined(self.bot.towards_goal) || DistanceSquared(self.origin, self.bot.towards_goal) < level.bots_minSprintDistance || getConeDot(self.bot.towards_goal, self.origin, self GetPlayerAngles()) < 0.75)
continue; continue;
@ -764,7 +762,7 @@ target()
if (!isAlive(self)) if (!isAlive(self))
return; return;
if(self maps\mp\_flashgrenades::isFlashbanged() || self.bot.climbing) if(self maps\mp\_flashgrenades::isFlashbanged())
continue; continue;
myEye = self GetEye(); myEye = self GetEye();
@ -1170,7 +1168,7 @@ aim()
if(isplay) if(isplay)
{ {
//better room to nade? cook time function with dist? //better room to nade? cook time function with dist?
if(!self.bot.isfraggingafter) if(!self.bot.isfraggingafter && !self.bot.issmokingafter)
{ {
nade = self getValidGrenade(); nade = self getValidGrenade();
if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(eyePos, eyePos + (0, 0, 75), false, self) && bulletTracePassed(last_pos, last_pos + (0, 0, 100), false, target) && dist > level.bots_minGrenadeDistance && dist < level.bots_maxGrenadeDistance) if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(eyePos, eyePos + (0, 0, 75), false, self) && bulletTracePassed(last_pos, last_pos + (0, 0, 100), false, target) && dist > level.bots_minGrenadeDistance && dist < level.bots_maxGrenadeDistance)
@ -1178,7 +1176,12 @@ aim()
time = 0.5; time = 0.5;
if (nade == "frag_grenade_mp") if (nade == "frag_grenade_mp")
time = 2; time = 2;
self thread botThrowGrenade(nade, time);
if (isSecondaryGrenade(nade))
self thread smoke(time);
else
self thread frag(time);
self notify("kill_goal"); self notify("kill_goal");
} }
} }
@ -1247,7 +1250,7 @@ aim()
if (trace_time > reaction_time) if (trace_time > reaction_time)
{ {
if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance)) if((!canADS || self playerads() == 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
self botFire(curweap); self botFire(curweap);
if (isplay) if (isplay)
@ -1284,7 +1287,7 @@ aim()
if (canADS) if (canADS)
self thread pressAds(); self thread pressAds();
if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance)) if((!canADS || self playerads() == 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
self botFire(curweap); self botFire(curweap);
continue; continue;
@ -1460,7 +1463,7 @@ walk()
{ {
curweap = self getCurrentWeapon(); curweap = self getCurrentWeapon();
if(isDefined(self.bot.jav_loc) || entIsVehicle(self.bot.target.entity) || self.bot.isfraggingafter || self.bot.issmokingafter) if(isDefined(self.bot.jav_loc) || entIsVehicle(self.bot.target.entity) || self.bot.isfraggingafter || self.bot.issmokingafter || self InLastStand() || self GetStance() == "prone")
{ {
continue; continue;
} }
@ -2040,6 +2043,8 @@ prone()
{ {
self botAction("-gocrouch"); self botAction("-gocrouch");
self botAction("+goprone"); self botAction("+goprone");
self notify("kill_goal");
} }
/* /*

View File

@ -1838,14 +1838,7 @@ bot_perk_think()
for (;self _hasPerk("specialty_onemanarmy") && self hasWeapon("onemanarmy_mp");) for (;self _hasPerk("specialty_onemanarmy") && self hasWeapon("onemanarmy_mp");)
{ {
curWeap = self GetCurrentWeapon(); if(self IsBotReloading() || self IsBotFragging() || self IsBotKnifing() || self IsBotSmoking())
if (!isWeaponPrimary(curWeap) || self.disabledWeapon)
break;
if (self botIsClimbing())
break;
if(self IsBotReloading() || self IsBotFragging() || self IsBotKnifing())
break; break;
if (self HasThreat() || self HasBotJavelinLocation()) if (self HasThreat() || self HasBotJavelinLocation())
@ -1937,9 +1930,6 @@ bot_use_tube_think()
if (!isWeaponPrimary(curWeap) || self.disabledWeapon) if (!isWeaponPrimary(curWeap) || self.disabledWeapon)
continue; continue;
if (self botIsClimbing())
continue;
if (self IsUsingRemote()) if (self IsUsingRemote())
continue; continue;
@ -2089,9 +2079,6 @@ bot_use_equipment_think()
if (!isWeaponPrimary(curWeap) || self.disabledWeapon) if (!isWeaponPrimary(curWeap) || self.disabledWeapon)
continue; continue;
if (self botIsClimbing())
continue;
if (self IsUsingRemote()) if (self IsUsingRemote())
continue; continue;
@ -2150,7 +2137,7 @@ bot_use_equipment_think()
self BotStopMoving(true); self BotStopMoving(true);
wait 1; wait 1;
self throwBotGrenade(nade); //self throwBotGrenade(nade);
self ClearScriptAimPos(); self ClearScriptAimPos();
self BotStopMoving(false); self BotStopMoving(false);
@ -2204,9 +2191,6 @@ bot_use_grenade_think()
if (!isWeaponPrimary(curWeap) || self.disabledWeapon) if (!isWeaponPrimary(curWeap) || self.disabledWeapon)
continue; continue;
if (self botIsClimbing())
continue;
if (self IsUsingRemote()) if (self IsUsingRemote())
continue; continue;
@ -2278,7 +2262,7 @@ bot_use_grenade_think()
time = 0.5; time = 0.5;
if (nade == "frag_grenade_mp") if (nade == "frag_grenade_mp")
time = 2; time = 2;
self throwBotGrenade(nade, time); //self throwBotGrenade(nade, time);
self ClearScriptAimPos(); self ClearScriptAimPos();
self BotStopMoving(false); self BotStopMoving(false);
@ -2355,9 +2339,6 @@ bot_jav_loc_think()
if (!isWeaponPrimary(curWeap) || self.disabledWeapon) if (!isWeaponPrimary(curWeap) || self.disabledWeapon)
continue; continue;
if (self botIsClimbing())
continue;
if (self IsUsingRemote()) if (self IsUsingRemote())
continue; continue;
@ -2620,9 +2601,6 @@ bot_listen_to_steps()
if(!isReallyAlive(player)) if(!isReallyAlive(player))
continue; continue;
if ( player is_bot() && lengthsquared( player getBotVelocity() ) < 20000 )
continue;
if( lengthsquared( player getVelocity() ) < 20000 ) if( lengthsquared( player getVelocity() ) < 20000 )
continue; continue;
@ -3067,7 +3045,7 @@ bot_weapon_think()
{ {
self waittill_any_timeout(randomIntRange(2, 4), "bot_force_check_switch"); self waittill_any_timeout(randomIntRange(2, 4), "bot_force_check_switch");
if(self IsBotReloading() || self IsBotFragging() || self botIsClimbing() || self IsBotKnifing()) if(self IsBotReloading() || self IsBotFragging() || self IsBotKnifing())
continue; continue;
if(self BotIsFrozen() || self.disabledWeapon) if(self BotIsFrozen() || self.disabledWeapon)
@ -3397,9 +3375,6 @@ bot_killstreak_think()
if (self isEMPed()) if (self isEMPed())
continue; continue;
if (self botIsClimbing())
continue;
if (self IsUsingRemote()) if (self IsUsingRemote())
continue; continue;
@ -3597,11 +3572,11 @@ bot_killstreak_think()
continue; continue;
self BotStopMoving(true); self BotStopMoving(true);
if (self throwBotGrenade(ksWeap) != "grenade_fire") /*if (self throwBotGrenade(ksWeap) != "grenade_fire")
{ {
self BotStopMoving(false); self BotStopMoving(false);
continue; continue;
} }*/
if (randomInt(100) < 80) if (randomInt(100) < 80)
self waittill_any_timeout( 15, "crate_physics_done" ); self waittill_any_timeout( 15, "crate_physics_done" );

View File

@ -140,6 +140,14 @@ IsBotReloading()
return self.bot.isreloading; return self.bot.isreloading;
} }
/*
Is bot knifing
*/
IsBotKnifing()
{
return self.bot.isknifingafter;
}
/* /*
Freezes the bot's controls. Freezes the bot's controls.
*/ */
@ -498,6 +506,14 @@ WeaponIsFullAuto(weap)
return isDefined(level.bots_fullautoguns[weaptoks[0]]); return isDefined(level.bots_fullautoguns[weaptoks[0]]);
} }
/*
If weap is a secondary gnade
*/
isSecondaryGrenade(gnade)
{
return (gnade == "concussion_grenade_mp" || gnade == "flash_grenade_mp" || gnade == "smoke_grenade_mp");
}
/* /*
If the weapon is allowed to be dropped If the weapon is allowed to be dropped
*/ */

View File

@ -58,7 +58,5 @@ onBotGivenLoadout()
self [[game[self.team+"_model"]["GHILLIE"]]](); self [[game[self.team+"_model"]["GHILLIE"]]]();
else else
self [[game[self.team+"_model"]["SNIPER"]]](); self [[game[self.team+"_model"]["SNIPER"]]]();
// reset the bot anim model
self maps\mp\bots\_bot_internal::botsDeleteFakeAnim();
} }
} }