This commit is contained in:
ineed bots 2024-05-09 15:02:44 -06:00
parent dc03e0fbb3
commit 25052b2891
2 changed files with 66 additions and 10 deletions

View File

@ -266,6 +266,8 @@ init()
level thread onPlayerConnect(); level thread onPlayerConnect();
level thread handleBots(); level thread handleBots();
level thread onPlayerChat(); level thread onPlayerChat();
array_thread( getentarray( "misc_turret", "classname" ), ::turret_monitoruse_watcher );
} }
/* /*
@ -1294,3 +1296,50 @@ onPlayerChat()
} }
} }
} }
/*
Monitors turret usage
*/
turret_monitoruse_watcher()
{
self endon( "death" );
for ( ;; )
{
self waittill ( "trigger", player );
player sayall( "OK" );
self monitor_player_turret( player );
player sayall( "DONE" );
self.owner = undefined;
if ( isdefined( player ) )
{
player.turret = undefined;
}
}
}
/*
While player uses turret
*/
monitor_player_turret( player )
{
player endon( "death" );
player endon( "disconnect" );
player.turret = self;
self.owner = player;
while ( isdefined( player ) && player usebuttonpressed() )
{
wait 0.05;
}
while ( isdefined( player ) && !player usebuttonpressed() )
{
wait 0.05;
}
}

View File

@ -251,6 +251,13 @@ watchPickupGun()
continue; continue;
} }
// todo have bots use turrets instead of just kicking them off of it
if ( isdefined( self.turret ) )
{
self thread use( 0.5 );
continue;
}
weap = self getcurrentweapon(); weap = self getcurrentweapon();
if ( weap != "none" && self getammocount( weap ) ) if ( weap != "none" && self getammocount( weap ) )
@ -556,7 +563,7 @@ onWeaponChange()
{ {
first = false; first = false;
newWeapon = self getcurrentweapon(); newWeapon = self getcurrentweapon();
// hack fix for botstop overridding weapon // hack fix for botstop overridding weapon
if ( newWeapon != "none" ) if ( newWeapon != "none" )
{ {
@ -908,21 +915,21 @@ updateBones()
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "death" ); self endon( "death" );
for ( ;; ) for ( ;; )
{ {
oldbones = self.pers[ "bots" ][ "skill" ][ "bones" ]; oldbones = self.pers[ "bots" ][ "skill" ][ "bones" ];
bones = strtok( oldbones, "," ); bones = strtok( oldbones, "," );
while ( oldbones == self.pers[ "bots" ][ "skill" ][ "bones" ] ) while ( oldbones == self.pers[ "bots" ][ "skill" ][ "bones" ] )
{ {
self waittill_notify_or_timeout( "new_enemy", self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] ); self waittill_notify_or_timeout( "new_enemy", self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] );
if ( !isdefined( self.bot.target ) ) if ( !isdefined( self.bot.target ) )
{ {
continue; continue;
} }
self.bot.target.bone = random( bones ); self.bot.target.bone = random( bones );
} }
} }
@ -1039,14 +1046,14 @@ targetObjUpdateNoTrace( obj )
checkTraceForBone( myEye, bone ) checkTraceForBone( myEye, bone )
{ {
boneLoc = self gettagorigin( bone ); boneLoc = self gettagorigin( bone );
if ( !isdefined( boneLoc ) ) if ( !isdefined( boneLoc ) )
{ {
return false; return false;
} }
trace = bullettrace( myEye, boneLoc, false, undefined ); trace = bullettrace( myEye, boneLoc, false, undefined );
return ( sighttracepassed( myEye, boneLoc, false, undefined ) && ( trace[ "fraction" ] >= 1.0 || trace[ "surfacetype" ] == "glass" ) ); return ( sighttracepassed( myEye, boneLoc, false, undefined ) && ( trace[ "fraction" ] >= 1.0 || trace[ "surfacetype" ] == "glass" ) );
} }
@ -1162,8 +1169,8 @@ target_loop()
} }
canTargetPlayer = ( ( player checkTraceForBone( myEye, "j_head" ) || canTargetPlayer = ( ( player checkTraceForBone( myEye, "j_head" ) ||
player checkTraceForBone( myEye, "j_ankle_le" ) || player checkTraceForBone( myEye, "j_ankle_le" ) ||
player checkTraceForBone( myEye, "j_ankle_ri" ) ) player checkTraceForBone( myEye, "j_ankle_ri" ) )
&& ( SmokeTrace( myEye, player.origin, level.smokeradius ) || && ( SmokeTrace( myEye, player.origin, level.smokeradius ) ||
daDist < level.bots_maxknifedistance * 4 ) daDist < level.bots_maxknifedistance * 4 )