add bot lunge

This commit is contained in:
ineed bots 2023-12-13 19:36:08 -06:00
parent 99c11b2aa3
commit d91b4805a0
2 changed files with 83 additions and 3 deletions

View File

@ -705,6 +705,7 @@ onBotSpawned()
self waittill( "spawned_player" );
self thread watch_for_override_stuff();
self thread watch_for_melee_override();
self BotNotifyBotEvent( "debug", "we spawned!" );
waittillframeend;
@ -716,6 +717,63 @@ onBotSpawned()
}
}
/*
custom movement stuff
*/
watch_for_melee_override()
{
self endon( "disconnect" );
self endon( "death" );
self BotBuiltinClearMeleeParams();
for ( ;; )
{
while ( ( !self maps\mp\bots\_bot_combat::threat_is_player() && !self maps\mp\bots\_bot_combat::threat_is_dog() ) || self IsRemoteControlling() || !self HasWeapon( "knife_mp" ) || !getDvarInt( "aim_automelee_enabled" ) )
wait 0.05;
threat = self.bot.threat.entity;
while ( isDefined( threat ) && isDefined( self.bot.threat.entity ) && self.bot.threat.entity == threat )
{
dist = distance( self.origin, threat.origin );
if ( self isOnGround() && self GetStance() != "prone" && dist < getDvarFloat( "aim_automelee_range" ) && ( getConeDot( threat.origin, self.origin, self getPlayerAngles() ) > 0.9 || dist < 10 ) )
{
self BotBuiltinBotMeleeParams( threat getEntityNumber(), dist );
self BotBuiltinButtonOverride( "melee", "enable" );
self BotBuiltinAimOverride();
time_left = 1;
once = false;
while ( time_left > 0 && isDefined( threat ) && isAlive( threat ) )
{
self setPlayerAngles( VectorToAngles( threat getTagOrigin( "j_spine4" ) - self getEye() ) );
time_left -= 0.05;
wait 0.05;
if ( !once )
{
once = true;
self BotBuiltinClearButtonOverride( "melee" );
}
}
if ( !once )
self BotBuiltinClearButtonOverride( "melee" );
self BotBuiltinClearMeleeParams();
self BotBuiltinClearAimOverride();
wait 1;
break;
}
wait 0.05;
}
}
}
/*
custom movement stuff
*/
@ -747,14 +805,20 @@ watch_for_override_stuff()
for ( ;; )
{
while ( !self maps\mp\bots\_bot_combat::threat_is_player() )
while ( !self maps\mp\bots\_bot_combat::threat_is_player() || self IsRemoteControlling() )
wait 0.05;
threat = self.bot.threat.entity;
dist = Distance( threat.origin, self.origin );
time = GetTime();
weap = self GetCurrentWeapon();
if ( ( dist > NEAR_DIST ) && ( dist < LONG_DIST ) && ( randomInt( 100 ) < chance ) && ( ( time - last_jump_time ) > SPAM_JUMP_TIME ) )
weapon_is_good = true;
if ( weap == "none" || !self GetWeaponAmmoClip( weap ) )
weapon_is_good = false;
if ( weapon_is_good && ( dist > NEAR_DIST ) && ( dist < LONG_DIST ) && ( randomInt( 100 ) < chance ) && ( ( time - last_jump_time ) > SPAM_JUMP_TIME ) )
{
if ( randomInt( 2 ) )
{
@ -783,7 +847,7 @@ watch_for_override_stuff()
}
}
while ( self maps\mp\bots\_bot_combat::threat_is_player() && ( threat == self.bot.threat.entity ) )
while ( isDefined( threat ) && isDefined( self.bot.threat.entity ) && ( threat == self.bot.threat.entity ) )
wait 0.05;
}
}
@ -1256,6 +1320,16 @@ BotBuiltinBotMeleeParams( entNum, dist )
}
}
/*
*/
BotBuiltinClearMeleeParams()
{
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["clearbotmeleeparams"] ) )
{
self [[ level.bot_builtins["clearbotmeleeparams" ]]]();
}
}
/*
*/
BotBuiltinReplaceFunc( a, b )

View File

@ -12,6 +12,7 @@ main()
level.bot_builtins["botaimoverride"] = ::do_botaimoverride;
level.bot_builtins["botclearaimoverride"] = ::do_botclearaimoverride;
level.bot_builtins["botmeleeparams"] = ::do_botmeleeparams;
level.bot_builtins["clearbotmeleeparams"] = ::do_clearbotmeleeparams;
level.bot_builtins["getfunction"] = ::do_getfunction;
level.bot_builtins["replacefunc"] = ::do_replacefunc;
level.bot_builtins["disabledetouronce"] = ::do_disabledetouronce;
@ -91,3 +92,8 @@ do_botmeleeparams( entNum, dist )
{
// self BotMeleeParams( entNum, dist );
}
do_clearbotmeleeparams()
{
// self botClearMeleeParams();
}