always use curly braces

This commit is contained in:
ineed bots 2023-12-19 19:24:07 -06:00
parent 9e2025e86a
commit 4aba1289f2
5 changed files with 572 additions and 10 deletions

View File

@ -10,82 +10,132 @@ init()
level.bw_version = "z0.1"; level.bw_version = "z0.1";
if ( getdvar( "bots_main" ) == "" ) if ( getdvar( "bots_main" ) == "" )
{
setdvar( "bots_main", true ); setdvar( "bots_main", true );
}
if ( !getdvarint( "bots_main" ) ) if ( !getdvarint( "bots_main" ) )
{
return; return;
}
if ( !wait_for_builtins() ) if ( !wait_for_builtins() )
{
println( "FATAL: NO BUILT-INS FOR BOTS" ); println( "FATAL: NO BUILT-INS FOR BOTS" );
}
thread load_waypoints(); thread load_waypoints();
thread hook_callbacks(); thread hook_callbacks();
if ( getdvar( "bots_main_GUIDs" ) == "" ) if ( getdvar( "bots_main_GUIDs" ) == "" )
{
setdvar( "bots_main_GUIDs", "" ); //guids of players who will be given host powers, comma seperated setdvar( "bots_main_GUIDs", "" ); //guids of players who will be given host powers, comma seperated
}
if ( getdvar( "bots_main_firstIsHost" ) == "" ) if ( getdvar( "bots_main_firstIsHost" ) == "" )
{
setdvar( "bots_main_firstIsHost", false ); //first player to connect is a host setdvar( "bots_main_firstIsHost", false ); //first player to connect is a host
}
if ( getdvar( "bots_main_waitForHostTime" ) == "" ) if ( getdvar( "bots_main_waitForHostTime" ) == "" )
{
setdvar( "bots_main_waitForHostTime", 10.0 ); //how long to wait to wait for the host player setdvar( "bots_main_waitForHostTime", 10.0 ); //how long to wait to wait for the host player
}
if ( getdvar( "bots_main_kickBotsAtEnd" ) == "" ) if ( getdvar( "bots_main_kickBotsAtEnd" ) == "" )
{
setdvar( "bots_main_kickBotsAtEnd", false ); //kicks the bots at game end setdvar( "bots_main_kickBotsAtEnd", false ); //kicks the bots at game end
}
if ( getdvar( "bots_manage_add" ) == "" ) if ( getdvar( "bots_manage_add" ) == "" )
{
setdvar( "bots_manage_add", 0 ); //amount of bots to add to the game setdvar( "bots_manage_add", 0 ); //amount of bots to add to the game
}
if ( getdvar( "bots_manage_fill" ) == "" ) if ( getdvar( "bots_manage_fill" ) == "" )
{
setdvar( "bots_manage_fill", 0 ); //amount of bots to maintain setdvar( "bots_manage_fill", 0 ); //amount of bots to maintain
}
if ( getdvar( "bots_manage_fill_mode" ) == "" ) if ( getdvar( "bots_manage_fill_mode" ) == "" )
{
setdvar( "bots_manage_fill_mode", 0 ); //fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1 setdvar( "bots_manage_fill_mode", 0 ); //fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
}
if ( getdvar( "bots_manage_fill_kick" ) == "" ) if ( getdvar( "bots_manage_fill_kick" ) == "" )
{
setdvar( "bots_manage_fill_kick", false ); //kick bots if too many setdvar( "bots_manage_fill_kick", false ); //kick bots if too many
}
if ( getdvar( "bots_skill" ) == "" ) if ( getdvar( "bots_skill" ) == "" )
{
setdvar( "bots_skill", 0 ); //0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random setdvar( "bots_skill", 0 ); //0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
}
if ( getdvar( "bots_skill_hard" ) == "" ) if ( getdvar( "bots_skill_hard" ) == "" )
{
setdvar( "bots_skill_hard", 0 ); //amount of hard bots on axis team setdvar( "bots_skill_hard", 0 ); //amount of hard bots on axis team
}
if ( getdvar( "bots_skill_med" ) == "" ) if ( getdvar( "bots_skill_med" ) == "" )
{
setdvar( "bots_skill_med", 0 ); setdvar( "bots_skill_med", 0 );
}
if ( getdvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random if ( getdvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
{
setdvar( "bots_loadout_rank", -1 ); setdvar( "bots_loadout_rank", -1 );
}
if ( getdvar( "bots_loadout_prestige" ) == "" ) // what pretige the bots will be, -1 is the players, -2 is random if ( getdvar( "bots_loadout_prestige" ) == "" ) // what pretige the bots will be, -1 is the players, -2 is random
{
setdvar( "bots_loadout_prestige", -1 ); setdvar( "bots_loadout_prestige", -1 );
}
if ( getdvar( "bots_play_move" ) == "" ) //bots move if ( getdvar( "bots_play_move" ) == "" ) //bots move
{
setdvar( "bots_play_move", true ); setdvar( "bots_play_move", true );
}
if ( getdvar( "bots_play_knife" ) == "" ) //bots knife if ( getdvar( "bots_play_knife" ) == "" ) //bots knife
{
setdvar( "bots_play_knife", true ); setdvar( "bots_play_knife", true );
}
if ( getdvar( "bots_play_fire" ) == "" ) //bots fire if ( getdvar( "bots_play_fire" ) == "" ) //bots fire
{
setdvar( "bots_play_fire", true ); setdvar( "bots_play_fire", true );
}
if ( getdvar( "bots_play_nade" ) == "" ) //bots grenade if ( getdvar( "bots_play_nade" ) == "" ) //bots grenade
{
setdvar( "bots_play_nade", true ); setdvar( "bots_play_nade", true );
}
if ( getdvar( "bots_play_ads" ) == "" ) //bot ads if ( getdvar( "bots_play_ads" ) == "" ) //bot ads
{
setdvar( "bots_play_ads", true ); setdvar( "bots_play_ads", true );
}
if ( getdvar( "bots_play_aim" ) == "" ) if ( getdvar( "bots_play_aim" ) == "" )
{
setdvar( "bots_play_aim", true ); setdvar( "bots_play_aim", true );
}
if ( getdvar( "bots_t8_mode" ) == "" ) if ( getdvar( "bots_t8_mode" ) == "" )
{
setdvar( "bots_t8_mode", false ); setdvar( "bots_t8_mode", false );
}
if ( getdvar( "bots_play_opendoors" ) == "" ) if ( getdvar( "bots_play_opendoors" ) == "" )
{
setdvar( "bots_play_opendoors", true ); setdvar( "bots_play_opendoors", true );
}
if ( !isdefined( game[ "botWarfare" ] ) ) if ( !isdefined( game[ "botWarfare" ] ) )
{
game[ "botWarfare" ] = true; game[ "botWarfare" ] = true;
}
level.bots_minsprintdistance = 315; level.bots_minsprintdistance = 315;
level.bots_minsprintdistance *= level.bots_minsprintdistance; level.bots_minsprintdistance *= level.bots_minsprintdistance;
@ -133,12 +183,16 @@ handleBots()
level addBots(); level addBots();
while ( !isdefined( level.intermission ) || !level.intermission ) while ( !isdefined( level.intermission ) || !level.intermission )
{
wait 0.05; wait 0.05;
}
setdvar( "bots_manage_add", getBotArray().size ); setdvar( "bots_manage_add", getBotArray().size );
if ( !getdvarint( "bots_main_kickBotsAtEnd" ) ) if ( !getdvarint( "bots_main_kickBotsAtEnd" ) )
{
return; return;
}
bots = getBotArray(); bots = getBotArray();
@ -258,7 +312,9 @@ connected()
self endon( "disconnect" ); self endon( "disconnect" );
if ( !isdefined( self.pers[ "bot_host" ] ) ) if ( !isdefined( self.pers[ "bot_host" ] ) )
{
self thread doHostCheck(); self thread doHostCheck();
}
level.players[ level.players.size ] = self; level.players[ level.players.size ] = self;
self thread onDisconnectAll(); self thread onDisconnectAll();
@ -266,7 +322,9 @@ connected()
self thread onSpawnedAll(); self thread onSpawnedAll();
if ( !self is_bot() ) if ( !self is_bot() )
{
return; return;
}
if ( !isdefined( self.pers[ "isBot" ] ) ) if ( !isdefined( self.pers[ "isBot" ] ) )
{ {
@ -307,25 +365,39 @@ watchBotDebugEvent()
big_str = "Bot Warfare debug: " + self.playername + ": " + msg; big_str = "Bot Warfare debug: " + self.playername + ": " + msg;
if ( isdefined( str ) && isstring( str ) ) if ( isdefined( str ) && isstring( str ) )
{
big_str += ", " + str; big_str += ", " + str;
}
if ( isdefined( b ) && isstring( b ) ) if ( isdefined( b ) && isstring( b ) )
{
big_str += ", " + b; big_str += ", " + b;
}
if ( isdefined( c ) && isstring( c ) ) if ( isdefined( c ) && isstring( c ) )
{
big_str += ", " + c; big_str += ", " + c;
}
if ( isdefined( d ) && isstring( d ) ) if ( isdefined( d ) && isstring( d ) )
{
big_str += ", " + d; big_str += ", " + d;
}
if ( isdefined( e ) && isstring( e ) ) if ( isdefined( e ) && isstring( e ) )
{
big_str += ", " + e; big_str += ", " + e;
}
if ( isdefined( f ) && isstring( f ) ) if ( isdefined( f ) && isstring( f ) )
{
big_str += ", " + f; big_str += ", " + f;
}
if ( isdefined( g ) && isstring( g ) ) if ( isdefined( g ) && isstring( g ) )
{
big_str += ", " + g; big_str += ", " + g;
}
BotBuiltinPrintConsole( big_str ); BotBuiltinPrintConsole( big_str );
} }
@ -383,10 +455,14 @@ diffBots_loop()
player = level.players[ i ]; player = level.players[ i ];
if ( !isdefined( player.pers[ "team" ] ) ) if ( !isdefined( player.pers[ "team" ] ) )
{
continue; continue;
}
if ( !player is_bot() ) if ( !player is_bot() )
{
continue; continue;
}
if ( hard < var_hard ) if ( hard < var_hard )
{ {
@ -399,9 +475,11 @@ diffBots_loop()
player.pers[ "bots" ][ "skill" ][ "base" ] = 4; player.pers[ "bots" ][ "skill" ][ "base" ] = 4;
} }
else else
{
player.pers[ "bots" ][ "skill" ][ "base" ] = 1; player.pers[ "bots" ][ "skill" ][ "base" ] = 1;
} }
} }
}
else if ( var_skill != 0 && var_skill != 9 ) else if ( var_skill != 0 && var_skill != 9 )
{ {
playercount = level.players.size; playercount = level.players.size;
@ -411,7 +489,9 @@ diffBots_loop()
player = level.players[ i ]; player = level.players[ i ];
if ( !player is_bot() ) if ( !player is_bot() )
{
continue; continue;
}
player.pers[ "bots" ][ "skill" ][ "base" ] = var_skill; player.pers[ "bots" ][ "skill" ][ "base" ] = var_skill;
} }
@ -443,7 +523,9 @@ addBots_loop()
setdvar( "bots_manage_add", 0 ); setdvar( "bots_manage_add", 0 );
if ( botsToAdd > 4 ) if ( botsToAdd > 4 )
{
botsToAdd = 4; botsToAdd = 4;
}
for ( ; botsToAdd > 0; botsToAdd-- ) for ( ; botsToAdd > 0; botsToAdd-- )
{ {
@ -455,7 +537,9 @@ addBots_loop()
fillMode = getdvarint( "bots_manage_fill_mode" ); fillMode = getdvarint( "bots_manage_fill_mode" );
if ( fillMode == 2 || fillMode == 3 ) if ( fillMode == 2 || fillMode == 3 )
{
setdvar( "bots_manage_fill", getGoodMapAmount() ); setdvar( "bots_manage_fill", getGoodMapAmount() );
}
fillAmount = getdvarint( "bots_manage_fill" ); fillAmount = getdvarint( "bots_manage_fill" );
@ -469,26 +553,36 @@ addBots_loop()
player = level.players[ i ]; player = level.players[ i ];
if ( player is_bot() ) if ( player is_bot() )
{
bots++; bots++;
}
else else
{
players++; players++;
} }
}
amount = bots; amount = bots;
if ( fillMode == 0 || fillMode == 2 ) if ( fillMode == 0 || fillMode == 2 )
{
amount += players; amount += players;
}
if ( amount < fillAmount ) if ( amount < fillAmount )
{
setdvar( "bots_manage_add", 1 ); setdvar( "bots_manage_add", 1 );
}
else if ( amount > fillAmount && getdvarint( "bots_manage_fill_kick" ) ) else if ( amount > fillAmount && getdvarint( "bots_manage_fill_kick" ) )
{ {
tempBot = getBotToKick(); tempBot = getBotToKick();
if ( isdefined( tempBot ) ) if ( isdefined( tempBot ) )
{
BotBuiltinCmdExec( "clientkick " + tempBot getentitynumber() ); BotBuiltinCmdExec( "clientkick " + tempBot getentitynumber() );
} }
} }
}
/* /*
A server thread for monitoring all bot's in game. Will add and kick bots according to server settings. A server thread for monitoring all bot's in game. Will add and kick bots according to server settings.

View File

@ -13,10 +13,14 @@
init() init()
{ {
if ( getdvar( "bots_main_debug" ) == "" ) if ( getdvar( "bots_main_debug" ) == "" )
{
setdvar( "bots_main_debug", 0 ); setdvar( "bots_main_debug", 0 );
}
if ( !getdvarint( "bots_main_debug" ) || !getdvarint( "bots_main_debug_wp_vis" ) ) if ( !getdvarint( "bots_main_debug" ) || !getdvarint( "bots_main_debug_wp_vis" ) )
{
return; return;
}
if ( !getdvarint( "developer" ) ) if ( !getdvarint( "developer" ) )
{ {
@ -37,16 +41,24 @@ init()
setdvar( "bots_manage_fill_spec", true ); setdvar( "bots_manage_fill_spec", true );
if ( getdvar( "bots_main_debug_distance" ) == "" ) if ( getdvar( "bots_main_debug_distance" ) == "" )
{
setdvar( "bots_main_debug_distance", 512.0 ); setdvar( "bots_main_debug_distance", 512.0 );
}
if ( getdvar( "bots_main_debug_cone" ) == "" ) if ( getdvar( "bots_main_debug_cone" ) == "" )
{
setdvar( "bots_main_debug_cone", 0.65 ); setdvar( "bots_main_debug_cone", 0.65 );
}
if ( getdvar( "bots_main_debug_minDist" ) == "" ) if ( getdvar( "bots_main_debug_minDist" ) == "" )
{
setdvar( "bots_main_debug_minDist", 32.0 ); setdvar( "bots_main_debug_minDist", 32.0 );
}
if ( getdvar( "bots_main_debug_drawThrough" ) == "" ) if ( getdvar( "bots_main_debug_drawThrough" ) == "" )
{
setdvar( "bots_main_debug_drawThrough", false ); setdvar( "bots_main_debug_drawThrough", false );
}
thread load_waypoints(); thread load_waypoints();
@ -113,8 +125,10 @@ array_contains( arr, it )
for ( i = 0; i < arr.size; i++ ) for ( i = 0; i < arr.size; i++ )
{ {
if ( arr[ i ] == it ) if ( arr[ i ] == it )
{
return true; return true;
} }
}
return false; return false;
} }
@ -202,7 +216,9 @@ debug()
for ( i = 0; i < level.waypointcount; i++ ) for ( i = 0; i < level.waypointcount; i++ )
{ {
if ( closest == -1 || closer( self.origin, level.waypoints[ i ].origin, level.waypoints[ closest ].origin ) ) if ( closest == -1 || closer( self.origin, level.waypoints[ i ].origin, level.waypoints[ closest ].origin ) )
{
closest = i; closest = i;
}
wpOrg = level.waypoints[ i ].origin + ( 0, 0, 25 ); wpOrg = level.waypoints[ i ].origin + ( 0, 0, 25 );
@ -228,8 +244,10 @@ debug()
} }
if ( found ) if ( found )
{
continue; continue;
} }
}
line( wpOrg, linked[ h ].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) ); line( wpOrg, linked[ h ].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) );
} }
@ -245,11 +263,15 @@ debug()
} }
if ( distance( self.origin, level.waypoints[ closest ].origin ) < 64 ) if ( distance( self.origin, level.waypoints[ closest ].origin ) < 64 )
{
self.closest = closest; self.closest = closest;
}
else else
{
self.closest = -1; self.closest = -1;
} }
} }
}
destroyOnDeath( hud ) destroyOnDeath( hud )
{ {

File diff suppressed because it is too large Load Diff

View File

@ -40,25 +40,39 @@ connected()
onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime ) onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime )
{ {
if ( !isdefined( self ) || !isdefined( self.team ) ) if ( !isdefined( self ) || !isdefined( self.team ) )
{
return; return;
}
if ( !isalive( self ) ) if ( !isalive( self ) )
{
return; return;
}
if ( sMeansOfDeath == "MOD_FALLING" || sMeansOfDeath == "MOD_SUICIDE" ) if ( sMeansOfDeath == "MOD_FALLING" || sMeansOfDeath == "MOD_SUICIDE" )
{
return; return;
}
if ( iDamage <= 0 ) if ( iDamage <= 0 )
{
return; return;
}
if ( !isdefined( eAttacker ) || !isdefined( eAttacker.team ) ) if ( !isdefined( eAttacker ) || !isdefined( eAttacker.team ) )
{
return; return;
}
if ( eAttacker == self ) if ( eAttacker == self )
{
return; return;
}
if ( !isalive( eAttacker ) ) if ( !isalive( eAttacker ) )
{
return; return;
}
self SetAttacker( eAttacker ); self SetAttacker( eAttacker );
} }
@ -409,12 +423,16 @@ changeToWeapon( weap )
level endon( "game_ended" ); level endon( "game_ended" );
if ( !self hasweapon( weap ) ) if ( !self hasweapon( weap ) )
{
return false; return false;
}
self switchtoweapon( weap ); self switchtoweapon( weap );
if ( self getcurrentweapon() == weap ) if ( self getcurrentweapon() == weap )
{
return true; return true;
}
self waittill_any_timeout( 5, "weapon_change" ); self waittill_any_timeout( 5, "weapon_change" );
@ -429,29 +447,41 @@ doReloadCancel_loop()
ret = self waittill_any_return( "reload", "weapon_change" ); ret = self waittill_any_return( "reload", "weapon_change" );
if ( self BotIsFrozen() ) if ( self BotIsFrozen() )
{
return; return;
}
if ( self usebuttonpressed() ) if ( self usebuttonpressed() )
{
return; return;
}
if ( self inLastStand() ) if ( self inLastStand() )
{
return; return;
}
curWeap = self getcurrentweapon(); curWeap = self getcurrentweapon();
if ( !self isWeaponPrimary( curWeap ) ) if ( !self isWeaponPrimary( curWeap ) )
{
return; return;
}
if ( ret == "reload" ) if ( ret == "reload" )
{ {
// check single reloads // check single reloads
if ( self getweaponammoclip( curWeap ) < weaponclipsize( curWeap ) ) if ( self getweaponammoclip( curWeap ) < weaponclipsize( curWeap ) )
{
return; return;
} }
}
// check difficulty // check difficulty
if ( self.pers[ "bots" ][ "skill" ][ "base" ] <= 3 ) if ( self.pers[ "bots" ][ "skill" ][ "base" ] <= 3 )
{
return; return;
}
// check if got another weapon // check if got another weapon
weaponslist = self getweaponslistprimaries(); weaponslist = self getweaponslistprimaries();
@ -463,17 +493,23 @@ doReloadCancel_loop()
weaponslist = array_remove( weaponslist, weapon ); weaponslist = array_remove( weaponslist, weapon );
if ( !self isWeaponPrimary( weapon ) ) if ( !self isWeaponPrimary( weapon ) )
{
continue; continue;
}
if ( curWeap == weapon || weapon == "none" || weapon == "" ) if ( curWeap == weapon || weapon == "none" || weapon == "" )
{
continue; continue;
}
weap = weapon; weap = weapon;
break; break;
} }
if ( weap == "" ) if ( weap == "" )
{
return; return;
}
// do the cancel // do the cancel
wait 0.1; wait 0.1;

View File

@ -9,13 +9,19 @@ wait_for_builtins()
for ( i = 0; i < 20; i++ ) for ( i = 0; i < 20; i++ )
{ {
if ( isdefined( level.bot_builtins ) ) if ( isdefined( level.bot_builtins ) )
{
return true; return true;
}
if ( i < 18 ) if ( i < 18 )
{
waittillframeend; waittillframeend;
}
else else
{
wait 0.05; wait 0.05;
} }
}
return false; return false;
} }
@ -262,7 +268,9 @@ doHostCheck()
self.pers[ "bot_host" ] = false; self.pers[ "bot_host" ] = false;
if ( self is_bot() ) if ( self is_bot() )
{
return; return;
}
result = false; result = false;
@ -276,8 +284,10 @@ doHostCheck()
} }
if ( getdvar( "bots_main_firstIsHost" ) == self BotBuiltinGetGuid() + "" ) if ( getdvar( "bots_main_firstIsHost" ) == self BotBuiltinGetGuid() + "" )
{
result = true; result = true;
} }
}
DvarGUID = getdvar( "bots_main_GUIDs" ); DvarGUID = getdvar( "bots_main_GUIDs" );
@ -288,12 +298,16 @@ doHostCheck()
for ( i = 0; i < guids.size; i++ ) for ( i = 0; i < guids.size; i++ )
{ {
if ( self BotBuiltinGetGuid() + "" == guids[ i ] ) if ( self BotBuiltinGetGuid() + "" == guids[ i ] )
{
result = true; result = true;
} }
} }
}
if ( !self BotBuiltinIsHost() && !result ) if ( !self BotBuiltinIsHost() && !result )
{
return; return;
}
self.pers[ "bot_host" ] = true; self.pers[ "bot_host" ] = true;
} }
@ -389,7 +403,9 @@ BotGetRandom()
BotGetTargetRandom() BotGetTargetRandom()
{ {
if ( !isdefined( self.bot.target ) ) if ( !isdefined( self.bot.target ) )
{
return undefined; return undefined;
}
return self.bot.target.rand; return self.bot.target.rand;
} }
@ -442,8 +458,10 @@ BotFreezeControls( what )
self.bot.isfrozen = what; self.bot.isfrozen = what;
if ( what ) if ( what )
{
self notify( "kill_goal" ); self notify( "kill_goal" );
} }
}
/* /*
Returns if the bot is script frozen. Returns if the bot is script frozen.
@ -461,8 +479,10 @@ BotStopMoving( what )
self.bot.stop_move = what; self.bot.stop_move = what;
if ( what ) if ( what )
{
self notify( "kill_goal" ); self notify( "kill_goal" );
} }
}
/* /*
Notify the bot chat message Notify the bot chat message
@ -503,7 +523,9 @@ GetScriptGoal()
SetScriptGoal( goal, dist ) SetScriptGoal( goal, dist )
{ {
if ( !isdefined( dist ) ) if ( !isdefined( dist ) )
{
dist = 16; dist = 16;
}
self.bot.script_goal = goal; self.bot.script_goal = goal;
self.bot.script_goal_dist = dist; self.bot.script_goal_dist = dist;
@ -609,7 +631,9 @@ ClearScriptEnemy()
GetThreat() GetThreat()
{ {
if ( !isdefined( self.bot.target ) ) if ( !isdefined( self.bot.target ) )
{
return undefined; return undefined;
}
return self.bot.target.entity; return self.bot.target.entity;
} }
@ -642,11 +666,15 @@ getValidTube()
weap = weaps[ i ]; weap = weaps[ i ];
if ( !self getammocount( weap ) ) if ( !self getammocount( weap ) )
{
continue; continue;
}
if ( issubstr( weap, "gl_" ) && !issubstr( weap, "_gl_" ) ) if ( issubstr( weap, "gl_" ) && !issubstr( weap, "_gl_" ) )
{
return weap; return weap;
} }
}
return undefined; return undefined;
} }
@ -664,10 +692,14 @@ getValidGrenade()
for ( i = 0; i < grenadeTypes.size; i++ ) for ( i = 0; i < grenadeTypes.size; i++ )
{ {
if ( !self hasweapon( grenadeTypes[ i ] ) ) if ( !self hasweapon( grenadeTypes[ i ] ) )
{
continue; continue;
}
if ( !self getammocount( grenadeTypes[ i ] ) ) if ( !self getammocount( grenadeTypes[ i ] ) )
{
continue; continue;
}
possibles[ possibles.size ] = grenadeTypes[ i ]; possibles[ possibles.size ] = grenadeTypes[ i ];
} }
@ -681,7 +713,9 @@ getValidGrenade()
PickRandom( arr ) PickRandom( arr )
{ {
if ( !arr.size ) if ( !arr.size )
{
return undefined; return undefined;
}
return arr[ randomint( arr.size ) ]; return arr[ randomint( arr.size ) ];
} }
@ -728,7 +762,9 @@ waittill_either_return_( str1, str2 )
waittill_either_return( str1, str2 ) waittill_either_return( str1, str2 )
{ {
if ( !isdefined( self waittill_either_return_( str1, str2 ) ) ) if ( !isdefined( self waittill_either_return_( str1, str2 ) ) )
{
return str1; return str1;
}
return str2; return str2;
} }
@ -743,24 +779,36 @@ waittill_any_timeout( timeOut, string1, string2, string3, string4, string5 )
( !isdefined( string3 ) || string3 != "death" ) && ( !isdefined( string3 ) || string3 != "death" ) &&
( !isdefined( string4 ) || string4 != "death" ) && ( !isdefined( string4 ) || string4 != "death" ) &&
( !isdefined( string5 ) || string5 != "death" ) ) ( !isdefined( string5 ) || string5 != "death" ) )
{
self endon( "death" ); self endon( "death" );
}
ent = spawnstruct(); ent = spawnstruct();
if ( isdefined( string1 ) ) if ( isdefined( string1 ) )
{
self thread waittill_string( string1, ent ); self thread waittill_string( string1, ent );
}
if ( isdefined( string2 ) ) if ( isdefined( string2 ) )
{
self thread waittill_string( string2, ent ); self thread waittill_string( string2, ent );
}
if ( isdefined( string3 ) ) if ( isdefined( string3 ) )
{
self thread waittill_string( string3, ent ); self thread waittill_string( string3, ent );
}
if ( isdefined( string4 ) ) if ( isdefined( string4 ) )
{
self thread waittill_string( string4, ent ); self thread waittill_string( string4, ent );
}
if ( isdefined( string5 ) ) if ( isdefined( string5 ) )
{
self thread waittill_string( string5, ent ); self thread waittill_string( string5, ent );
}
ent thread _timeout( timeOut ); ent thread _timeout( timeOut );
@ -790,7 +838,9 @@ GetHostPlayer()
player = level.players[ i ]; player = level.players[ i ];
if ( !player is_host() ) if ( !player is_host() )
{
continue; continue;
}
return player; return player;
} }
@ -806,36 +856,48 @@ bot_wait_for_host()
host = undefined; host = undefined;
while ( !isdefined( level ) || !isdefined( level.players ) ) while ( !isdefined( level ) || !isdefined( level.players ) )
{
wait 0.05; wait 0.05;
}
for ( i = getdvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 ) for ( i = getdvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
{ {
host = GetHostPlayer(); host = GetHostPlayer();
if ( isdefined( host ) ) if ( isdefined( host ) )
{
break; break;
}
wait 0.05; wait 0.05;
} }
if ( !isdefined( host ) ) if ( !isdefined( host ) )
{
return; return;
}
for ( i = getdvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 ) for ( i = getdvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
{ {
if ( isdefined( host.pers[ "team" ] ) ) if ( isdefined( host.pers[ "team" ] ) )
{
break; break;
}
wait 0.05; wait 0.05;
} }
if ( !isdefined( host.pers[ "team" ] ) ) if ( !isdefined( host.pers[ "team" ] ) )
{
return; return;
}
for ( i = getdvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 ) for ( i = getdvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
{ {
if ( host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis" ) if ( host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis" )
{
break; break;
}
wait 0.05; wait 0.05;
} }
@ -872,20 +934,32 @@ Rectdistancesquared( origin )
dz = 0; dz = 0;
if ( origin[ 0 ] < self.x0 ) if ( origin[ 0 ] < self.x0 )
{
dx = origin[ 0 ] - self.x0; dx = origin[ 0 ] - self.x0;
}
else if ( origin[ 0 ] > self.x1 ) else if ( origin[ 0 ] > self.x1 )
{
dx = origin[ 0 ] - self.x1; dx = origin[ 0 ] - self.x1;
}
if ( origin[ 1 ] < self.y0 ) if ( origin[ 1 ] < self.y0 )
{
dy = origin[ 1 ] - self.y0; dy = origin[ 1 ] - self.y0;
}
else if ( origin[ 1 ] > self.y1 ) else if ( origin[ 1 ] > self.y1 )
{
dy = origin[ 1 ] - self.y1; dy = origin[ 1 ] - self.y1;
}
if ( origin[ 2 ] < self.z0 ) if ( origin[ 2 ] < self.z0 )
{
dz = origin[ 2 ] - self.z0; dz = origin[ 2 ] - self.z0;
}
else if ( origin[ 2 ] > self.z1 ) else if ( origin[ 2 ] > self.z1 )
{
dz = origin[ 2 ] - self.z1; dz = origin[ 2 ] - self.z1;
}
return dx * dx + dy * dy + dz * dz; return dx * dx + dy * dy + dz * dz;
} }
@ -900,13 +974,19 @@ Round( x )
if ( abs( x ) - abs( y ) > 0.5 ) if ( abs( x ) - abs( y ) > 0.5 )
{ {
if ( x < 0 ) if ( x < 0 )
{
return y - 1; return y - 1;
else
return y + 1;
} }
else else
{
return y + 1;
}
}
else
{
return y; return y;
} }
}
/* /*
Rounds up the given value. Rounds up the given value.
@ -916,10 +996,14 @@ RoundUp( floatVal )
i = int( floatVal ); i = int( floatVal );
if ( i != floatVal ) if ( i != floatVal )
{
return i + 1; return i + 1;
}
else else
{
return i; return i;
} }
}
/* /*
Clamps between value Clamps between value
@ -1176,7 +1260,9 @@ getBotToKick()
bots = getBotArray(); bots = getBotArray();
if ( !isdefined( bots ) || !isdefined( bots.size ) || bots.size <= 0 || !isdefined( bots[ 0 ] ) ) if ( !isdefined( bots ) || !isdefined( bots.size ) || bots.size <= 0 || !isdefined( bots[ 0 ] ) )
{
return undefined; return undefined;
}
tokick = undefined; tokick = undefined;
@ -1186,13 +1272,19 @@ getBotToKick()
bot = bots[ i ]; bot = bots[ i ];
if ( !isdefined( bot ) ) if ( !isdefined( bot ) )
{
continue; continue;
}
if ( !isdefined( bot.pers ) || !isdefined( bot.pers[ "bots" ] ) || !isdefined( bot.pers[ "bots" ][ "skill" ] ) || !isdefined( bot.pers[ "bots" ][ "skill" ][ "base" ] ) ) if ( !isdefined( bot.pers ) || !isdefined( bot.pers[ "bots" ] ) || !isdefined( bot.pers[ "bots" ][ "skill" ] ) || !isdefined( bot.pers[ "bots" ][ "skill" ][ "base" ] ) )
{
continue; continue;
}
if ( isdefined( tokick ) && bot.pers[ "bots" ][ "skill" ][ "base" ] > tokick.pers[ "bots" ][ "skill" ][ "base" ] ) if ( isdefined( tokick ) && bot.pers[ "bots" ][ "skill" ][ "base" ] > tokick.pers[ "bots" ][ "skill" ][ "base" ] )
{
continue; continue;
}
tokick = bot; tokick = bot;
} }
@ -1213,7 +1305,9 @@ getBotArray()
player = level.players[ i ]; player = level.players[ i ];
if ( !player is_bot() ) if ( !player is_bot() )
{
continue; continue;
}
result[ result.size ] = player; result[ result.size ] = player;
} }
@ -1278,7 +1372,9 @@ HeapInsert( item )
current = int( current / 2 ); current = int( current / 2 );
if ( ![[ self.compare ]]( item, self.data[ current - 1 ] ) ) if ( ![[ self.compare ]]( item, self.data[ current - 1 ] ) )
{
break; break;
}
self.data[ last - 1 ] = self.data[ current - 1 ]; self.data[ last - 1 ] = self.data[ current - 1 ];
self.data[ current - 1 ] = item; self.data[ current - 1 ] = item;
@ -1294,16 +1390,24 @@ _HeapNextChild( node, hsize )
right = left + 1; right = left + 1;
if ( left > hsize ) if ( left > hsize )
{
return -1; return -1;
}
if ( right > hsize ) if ( right > hsize )
{
return left; return left;
}
if ( [[ self.compare ]]( self.data[ left - 1 ], self.data[ right - 1 ] ) ) if ( [[ self.compare ]]( self.data[ left - 1 ], self.data[ right - 1 ] ) )
{
return left; return left;
}
else else
{
return right; return right;
} }
}
/* /*
Removes an item from the heap. Called on a heap. Removes an item from the heap. Called on a heap.
@ -1313,7 +1417,9 @@ HeapRemove()
remove = self.data.size; remove = self.data.size;
if ( !remove ) if ( !remove )
{
return remove; return remove;
}
move = self.data[ remove - 1 ]; move = self.data[ remove - 1 ];
self.data[ 0 ] = move; self.data[ 0 ] = move;
@ -1321,7 +1427,9 @@ HeapRemove()
remove--; remove--;
if ( !remove ) if ( !remove )
{
return remove; return remove;
}
last = 1; last = 1;
next = self _HeapNextChild( 1, remove ); next = self _HeapNextChild( 1, remove );
@ -1329,7 +1437,9 @@ HeapRemove()
while ( next != -1 ) while ( next != -1 )
{ {
if ( [[ self.compare ]]( move, self.data[ next - 1 ] ) ) if ( [[ self.compare ]]( move, self.data[ next - 1 ] ) )
{
break; break;
}
self.data[ last - 1 ] = self.data[ next - 1 ]; self.data[ last - 1 ] = self.data[ next - 1 ];
self.data[ next - 1 ] = move; self.data[ next - 1 ] = move;
@ -1500,8 +1610,10 @@ isWeaponPrimary( weap )
for ( i = 0; i < weaps.size; i++ ) for ( i = 0; i < weaps.size; i++ )
{ {
if ( weap == weaps[ i ] ) if ( weap == weaps[ i ] )
{
return true; return true;
} }
}
return false; return false;
} }
@ -1662,7 +1774,9 @@ debug_bounding_box_for_ent( color )
self endon( "debug_bounding_box_for_ent" ); self endon( "debug_bounding_box_for_ent" );
if ( !isdefined( color ) ) if ( !isdefined( color ) )
{
color = ( randomfloatrange( 0, 1 ), randomfloatrange( 0, 1 ), randomfloatrange( 0, 1 ) ); color = ( randomfloatrange( 0, 1 ), randomfloatrange( 0, 1 ), randomfloatrange( 0, 1 ) );
}
while ( isdefined( self ) ) while ( isdefined( self ) )
{ {