mirror of
https://github.com/ineedbots/iw5_bot_warfare.git
synced 2025-04-25 23:29:12 +00:00
Bots do random action at obj
This commit is contained in:
parent
2f2b5eca2f
commit
521e31211e
@ -4145,6 +4145,8 @@ bot_crate_think_loop( data )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
|
|
||||||
self BotFreezeControls( true );
|
self BotFreezeControls( true );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -4713,6 +4715,7 @@ bot_killstreak_think_loop( data )
|
|||||||
placeNot = "place_sentry";
|
placeNot = "place_sentry";
|
||||||
cancelNot = "cancel_sentry";
|
cancelNot = "cancel_sentry";
|
||||||
distCheck = 1000 * 1000;
|
distCheck = 1000 * 1000;
|
||||||
|
doRandomStance = false;
|
||||||
|
|
||||||
switch ( streakName )
|
switch ( streakName )
|
||||||
{
|
{
|
||||||
@ -4737,6 +4740,7 @@ bot_killstreak_think_loop( data )
|
|||||||
placeNot = "place_carryRemoteUAV";
|
placeNot = "place_carryRemoteUAV";
|
||||||
cancelNot = "cancel_carryRemoteUAV";
|
cancelNot = "cancel_carryRemoteUAV";
|
||||||
distCheck = 100 * 100;
|
distCheck = 100 * 100;
|
||||||
|
doRandomStance = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "remote_tank":
|
case "remote_tank":
|
||||||
@ -4744,12 +4748,16 @@ bot_killstreak_think_loop( data )
|
|||||||
placeNot = "place_tank";
|
placeNot = "place_tank";
|
||||||
cancelNot = "cancel_tank";
|
cancelNot = "cancel_tank";
|
||||||
distCheck = 100 * 100;
|
distCheck = 100 * 100;
|
||||||
|
doRandomStance = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( DistanceSquared( self.origin, forwardTrace["position"] ) < distCheck && self.pers["bots"]["skill"]["base"] > 3 )
|
if ( DistanceSquared( self.origin, forwardTrace["position"] ) < distCheck && self.pers["bots"]["skill"]["base"] > 3 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ( doRandomStance )
|
||||||
|
self BotRandomStance();
|
||||||
|
|
||||||
self BotStopMoving( true );
|
self BotStopMoving( true );
|
||||||
self SetScriptAimPos( forwardTrace["position"] );
|
self SetScriptAimPos( forwardTrace["position"] );
|
||||||
|
|
||||||
@ -4776,6 +4784,7 @@ bot_killstreak_think_loop( data )
|
|||||||
if ( !isDefined( location ) )
|
if ( !isDefined( location ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self setUsingRemote( "remotemissile" );
|
self setUsingRemote( "remotemissile" );
|
||||||
self thread clear_remote_on_death();
|
self thread clear_remote_on_death();
|
||||||
self BotStopMoving( true );
|
self BotStopMoving( true );
|
||||||
@ -4852,6 +4861,7 @@ bot_killstreak_think_loop( data )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self BotStopMoving( true );
|
self BotStopMoving( true );
|
||||||
|
|
||||||
if ( self changeToWeapon( ksWeap ) )
|
if ( self changeToWeapon( ksWeap ) )
|
||||||
@ -5055,6 +5065,138 @@ bot_killstreak_think()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bots do random stance
|
||||||
|
*/
|
||||||
|
BotRandomStance()
|
||||||
|
{
|
||||||
|
if ( randomInt( 100 ) < 80 )
|
||||||
|
self BotSetStance( "prone" );
|
||||||
|
else if ( randomInt( 100 ) < 60 )
|
||||||
|
self BotSetStance( "crouch" );
|
||||||
|
else
|
||||||
|
self BotSetStance( "stand" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bots will use a random equipment
|
||||||
|
*/
|
||||||
|
BotUseRandomEquipment()
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
nade = undefined;
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "claymore_mp" ) )
|
||||||
|
nade = "claymore_mp";
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "flare_mp" ) )
|
||||||
|
nade = "flare_mp";
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "c4_mp" ) )
|
||||||
|
nade = "c4_mp";
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "bouncingbetty_mp" ) )
|
||||||
|
nade = "bouncingbetty_mp";
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "portable_radar_mp" ) )
|
||||||
|
nade = "portable_radar_mp";
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "scrambler_mp" ) )
|
||||||
|
nade = "scrambler_mp";
|
||||||
|
|
||||||
|
if ( self GetAmmoCount( "trophy_mp" ) )
|
||||||
|
nade = "trophy_mp";
|
||||||
|
|
||||||
|
if ( !isDefined( nade ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
self botThrowGrenade( nade, 0.05 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bots will look at a random thing
|
||||||
|
*/
|
||||||
|
BotLookAtRandomThing( obj_target )
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
if ( self HasScriptAimPos() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
rand = RandomInt( 100 );
|
||||||
|
|
||||||
|
nearestEnemy = undefined;
|
||||||
|
|
||||||
|
for ( i = 0; i < level.players.size; i++ )
|
||||||
|
{
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
if ( !isDefined( player ) || !isDefined( player.team ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ( !isAlive( player ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ( level.teamBased && self.team == player.team )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ( !isDefined( nearestEnemy ) || DistanceSquared( self.origin, player.origin ) < DistanceSquared( self.origin, nearestEnemy.origin ) )
|
||||||
|
{
|
||||||
|
nearestEnemy = player;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
origin = ( 0, 0, self GetEyeHeight() );
|
||||||
|
|
||||||
|
if ( isDefined( nearestEnemy ) && DistanceSquared( self.origin, nearestEnemy.origin ) < 1024 * 1024 && rand < 40 )
|
||||||
|
origin += ( nearestEnemy.origin[0], nearestEnemy.origin[1], self.origin[2] );
|
||||||
|
else if ( isDefined( obj_target ) && rand < 50 )
|
||||||
|
origin += ( obj_target.origin[0], obj_target.origin[1], self.origin[2] );
|
||||||
|
else if ( rand < 85 )
|
||||||
|
origin += self.origin + AnglesToForward( ( 0, self.angles[1] - 180, 0 ) ) * 1024;
|
||||||
|
else
|
||||||
|
origin += self.origin + AnglesToForward( ( 0, RandomInt( 360 ), 0 ) ) * 1024;
|
||||||
|
|
||||||
|
self SetScriptAimPos( origin );
|
||||||
|
wait 2;
|
||||||
|
self ClearScriptAimPos();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bots will do stuff while waiting for objective
|
||||||
|
*/
|
||||||
|
bot_do_random_action_for_objective( obj_target )
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
self notify( "bot_do_random_action_for_objective" );
|
||||||
|
self endon( "bot_do_random_action_for_objective" );
|
||||||
|
|
||||||
|
if ( !isDefined( self.bot_random_obj_action ) )
|
||||||
|
{
|
||||||
|
self.bot_random_obj_action = true;
|
||||||
|
|
||||||
|
if ( randomInt( 100 ) < 80 )
|
||||||
|
self thread BotUseRandomEquipment();
|
||||||
|
|
||||||
|
if ( randomInt( 100 ) < 75 )
|
||||||
|
self thread BotLookAtRandomThing( obj_target );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( self GetStance() != "prone" && randomInt( 100 ) < 15 )
|
||||||
|
self BotSetStance( "prone" );
|
||||||
|
else if ( randomInt( 100 ) < 5 )
|
||||||
|
self thread BotLookAtRandomThing( obj_target );
|
||||||
|
}
|
||||||
|
|
||||||
|
wait 2;
|
||||||
|
self.bot_random_obj_action = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Bots hang around the enemy's flag to spawn kill em
|
Bots hang around the enemy's flag to spawn kill em
|
||||||
*/
|
*/
|
||||||
@ -5311,6 +5453,8 @@ bot_dom_cap_think_loop()
|
|||||||
|
|
||||||
if ( flag.useObj.curProgress == cur )
|
if ( flag.useObj.curProgress == cur )
|
||||||
break;//some enemy is near us, kill him
|
break;//some enemy is near us, kill him
|
||||||
|
|
||||||
|
self thread bot_do_random_action_for_objective( flag );
|
||||||
}
|
}
|
||||||
|
|
||||||
self ClearScriptGoal();
|
self ClearScriptGoal();
|
||||||
@ -5439,6 +5583,8 @@ bot_hq_loop()
|
|||||||
|
|
||||||
if ( cur == gameobj.curProgress )
|
if ( cur == gameobj.curProgress )
|
||||||
break;//no prog made, enemy must be capping
|
break;//no prog made, enemy must be capping
|
||||||
|
|
||||||
|
self thread bot_do_random_action_for_objective( gameobj.trigger );
|
||||||
}
|
}
|
||||||
|
|
||||||
self ClearScriptGoal();
|
self ClearScriptGoal();
|
||||||
@ -5656,6 +5802,7 @@ bot_sab_loop()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self SetScriptGoal( self.origin, 64 );
|
self SetScriptGoal( self.origin, 64 );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -5775,6 +5922,7 @@ bot_sab_loop()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self SetScriptGoal( self.origin, 64 );
|
self SetScriptGoal( self.origin, 64 );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -5977,6 +6125,7 @@ bot_sd_defenders_loop( data )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self SetScriptGoal( self.origin, 64 );
|
self SetScriptGoal( self.origin, 64 );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -6191,6 +6340,7 @@ bot_sd_attackers_loop( data )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self SetScriptGoal( self.origin, 64 );
|
self SetScriptGoal( self.origin, 64 );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -6681,6 +6831,7 @@ bot_dem_attackers_loop()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self SetScriptGoal( self.origin, 64 );
|
self SetScriptGoal( self.origin, 64 );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -6914,6 +7065,7 @@ bot_dem_defenders_loop()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self BotRandomStance();
|
||||||
self SetScriptGoal( self.origin, 64 );
|
self SetScriptGoal( self.origin, 64 );
|
||||||
self bot_wait_stop_move();
|
self bot_wait_stop_move();
|
||||||
|
|
||||||
@ -7172,6 +7324,8 @@ bot_gtnw_loop()
|
|||||||
|
|
||||||
if ( cur == level.nukeSite.curProgress )
|
if ( cur == level.nukeSite.curProgress )
|
||||||
break;//no prog made, enemy must be capping
|
break;//no prog made, enemy must be capping
|
||||||
|
|
||||||
|
self thread bot_do_random_action_for_objective( trigger );
|
||||||
}
|
}
|
||||||
|
|
||||||
self ClearScriptGoal();
|
self ClearScriptGoal();
|
||||||
@ -7428,6 +7582,8 @@ bot_arena_loop()
|
|||||||
|
|
||||||
if ( cur == flag.curProgress )
|
if ( cur == flag.curProgress )
|
||||||
break;//no prog made, enemy must be capping
|
break;//no prog made, enemy must be capping
|
||||||
|
|
||||||
|
self thread bot_do_random_action_for_objective( flag.trigger );
|
||||||
}
|
}
|
||||||
|
|
||||||
self ClearScriptGoal();
|
self ClearScriptGoal();
|
||||||
@ -7734,6 +7890,8 @@ bot_grnd_loop()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
|
self thread bot_do_random_action_for_objective( level.grnd_zone );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self HasScriptGoal() && self GetScriptGoal() == goal )
|
if ( self HasScriptGoal() && self GetScriptGoal() == goal )
|
||||||
|
@ -72,6 +72,27 @@ is_bot()
|
|||||||
return ( ( isDefined( self.pers["isBot"] ) && self.pers["isBot"] ) || ( isDefined( self.pers["isBotWarfare"] ) && self.pers["isBotWarfare"] ) || isSubStr( self getguid() + "", "bot" ) );
|
return ( ( isDefined( self.pers["isBot"] ) && self.pers["isBot"] ) || ( isDefined( self.pers["isBotWarfare"] ) && self.pers["isBotWarfare"] ) || isSubStr( self getguid() + "", "bot" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Set the bot's stance
|
||||||
|
*/
|
||||||
|
BotSetStance( stance )
|
||||||
|
{
|
||||||
|
switch ( stance )
|
||||||
|
{
|
||||||
|
case "stand":
|
||||||
|
self maps\mp\bots\_bot_internal::stand();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "crouch":
|
||||||
|
self maps\mp\bots\_bot_internal::crouch();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "prone":
|
||||||
|
self maps\mp\bots\_bot_internal::prone();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Bot changes to the weap
|
Bot changes to the weap
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user