This commit is contained in:
ineed bots 2023-12-23 16:28:48 -06:00
parent 8ea9121e33
commit 4db437222c
5 changed files with 478 additions and 478 deletions

View File

@ -19,7 +19,7 @@ bot_give_loadout()
self clearPerks(); self clearPerks();
self SetPlayerRenderOptions( int( self.pers["bot"]["class_render_opts"] ) ); self SetPlayerRenderOptions( int( self.pers[ "bot" ][ "class_render_opts" ] ) );
if ( !isDefined( self.bot ) ) if ( !isDefined( self.bot ) )
self.bot = []; self.bot = [];
@ -28,18 +28,18 @@ bot_give_loadout()
self.bot[ "specialty2" ] = "specialty_null"; self.bot[ "specialty2" ] = "specialty_null";
self.bot[ "specialty3" ] = "specialty_null"; self.bot[ "specialty3" ] = "specialty_null";
if ( self.pers["bot"]["class_perk1"] != "" && GetDvarInt( #"scr_game_perks" ) ) if ( self.pers[ "bot" ][ "class_perk1" ] != "" && GetDvarInt( #"scr_game_perks" ) )
{ {
self.bot[ "specialty1" ] = self.pers["bot"]["class_perk1"]; self.bot[ "specialty1" ] = self.pers[ "bot" ][ "class_perk1" ];
id = bot_perk_from_reference_full( self.pers["bot"]["class_perk1"] ); id = bot_perk_from_reference_full( self.pers[ "bot" ][ "class_perk1" ] );
tokens = strtok( id["reference"], "|" ); tokens = strtok( id[ "reference" ], "|" );
for ( i = 0; i < tokens.size; i++ ) for ( i = 0; i < tokens.size; i++ )
self setPerk( tokens[i] ); self setPerk( tokens[ i ] );
} }
switch ( self.pers["bot"]["class_perk1"] ) switch ( self.pers[ "bot" ][ "class_perk1" ] )
{ {
case "perk_ghost": case "perk_ghost":
case "perk_ghost_pro": case "perk_ghost_pro":
@ -74,26 +74,26 @@ bot_give_loadout()
self maps\mp\gametypes\_class::initStaticWeaponsTime(); self maps\mp\gametypes\_class::initStaticWeaponsTime();
if ( self.pers["bot"]["class_perk2"] != "" && GetDvarInt( #"scr_game_perks" ) ) if ( self.pers[ "bot" ][ "class_perk2" ] != "" && GetDvarInt( #"scr_game_perks" ) )
{ {
self.bot[ "specialty2" ] = self.pers["bot"]["class_perk2"]; self.bot[ "specialty2" ] = self.pers[ "bot" ][ "class_perk2" ];
id = bot_perk_from_reference_full( self.pers["bot"]["class_perk2"] ); id = bot_perk_from_reference_full( self.pers[ "bot" ][ "class_perk2" ] );
tokens = strtok( id["reference"], "|" ); tokens = strtok( id[ "reference" ], "|" );
for ( i = 0; i < tokens.size; i++ ) for ( i = 0; i < tokens.size; i++ )
self setPerk( tokens[i] ); self setPerk( tokens[ i ] );
} }
if ( self.pers["bot"]["class_perk3"] != "" && GetDvarInt( #"scr_game_perks" ) ) if ( self.pers[ "bot" ][ "class_perk3" ] != "" && GetDvarInt( #"scr_game_perks" ) )
{ {
self.bot[ "specialty3" ] = self.pers["bot"]["class_perk3"]; self.bot[ "specialty3" ] = self.pers[ "bot" ][ "class_perk3" ];
id = bot_perk_from_reference_full( self.pers["bot"]["class_perk3"] ); id = bot_perk_from_reference_full( self.pers[ "bot" ][ "class_perk3" ] );
tokens = strtok( id["reference"], "|" ); tokens = strtok( id[ "reference" ], "|" );
for ( i = 0; i < tokens.size; i++ ) for ( i = 0; i < tokens.size; i++ )
self setPerk( tokens[i] ); self setPerk( tokens[ i ] );
} }
@ -102,68 +102,68 @@ bot_give_loadout()
if ( getDvarInt( "bots_play_knife" ) ) if ( getDvarInt( "bots_play_knife" ) )
self GiveWeapon( "knife_mp" ); self GiveWeapon( "knife_mp" );
weap = self.pers["bot"]["class_primary"]; weap = self.pers[ "bot" ][ "class_primary" ];
if ( weap == "" ) if ( weap == "" )
weap = "ak47_mp"; weap = "ak47_mp";
primaryTokens = strtok( self.pers["bot"]["class_primary"], "_" ); primaryTokens = strtok( self.pers[ "bot" ][ "class_primary" ], "_" );
self.pers["primaryWeapon"] = primaryTokens[0]; self.pers[ "primaryWeapon" ] = primaryTokens[ 0 ];
weap = self.pers["bot"]["class_primary"]; weap = self.pers[ "bot" ][ "class_primary" ];
if ( GetDvarInt( #"scr_disable_attachments" ) ) if ( GetDvarInt( #"scr_disable_attachments" ) )
weap = self.pers["primaryWeapon"] + "_mp"; weap = self.pers[ "primaryWeapon" ] + "_mp";
self GiveWeapon( weap, 0, int( self.pers["bot"]["class_primary_opts"] ) ); self GiveWeapon( weap, 0, int( self.pers[ "bot" ][ "class_primary_opts" ] ) );
if ( self hasPerk( "specialty_extraammo" ) ) if ( self hasPerk( "specialty_extraammo" ) )
self giveMaxAmmo( weap ); self giveMaxAmmo( weap );
if ( self.pers["bot"]["class_secondary"] != "" ) if ( self.pers[ "bot" ][ "class_secondary" ] != "" )
{ {
self GiveWeapon( self.pers["bot"]["class_secondary"], 0, int( self.pers["bot"]["class_secondary_opts"] ) ); self GiveWeapon( self.pers[ "bot" ][ "class_secondary" ], 0, int( self.pers[ "bot" ][ "class_secondary_opts" ] ) );
if ( self hasPerk( "specialty_extraammo" ) ) if ( self hasPerk( "specialty_extraammo" ) )
self giveMaxAmmo( self.pers["bot"]["class_secondary"] ); self giveMaxAmmo( self.pers[ "bot" ][ "class_secondary" ] );
} }
self SetActionSlot( 3, "altMode" ); self SetActionSlot( 3, "altMode" );
self SetActionSlot( 4, "" ); self SetActionSlot( 4, "" );
if ( self.pers["bot"]["class_equipment"] != "" && self.pers["bot"]["class_equipment"] != "weapon_null_mp" && !GetDvarInt( #"scr_disable_equipment" ) ) if ( self.pers[ "bot" ][ "class_equipment" ] != "" && self.pers[ "bot" ][ "class_equipment" ] != "weapon_null_mp" && !GetDvarInt( #"scr_disable_equipment" ) )
{ {
self GiveWeapon( self.pers["bot"]["class_equipment"] ); self GiveWeapon( self.pers[ "bot" ][ "class_equipment" ] );
self maps\mp\gametypes\_class::setWeaponAmmoOverall( self.pers["bot"]["class_equipment"], 1 ); self maps\mp\gametypes\_class::setWeaponAmmoOverall( self.pers[ "bot" ][ "class_equipment" ], 1 );
self SetActionSlot( 1, "weapon", self.pers["bot"]["class_equipment"] ); self SetActionSlot( 1, "weapon", self.pers[ "bot" ][ "class_equipment" ] );
} }
if ( self.pers["bot"]["class_lethal"] != "" ) if ( self.pers[ "bot" ][ "class_lethal" ] != "" )
{ {
self GiveWeapon( self.pers["bot"]["class_lethal"] ); self GiveWeapon( self.pers[ "bot" ][ "class_lethal" ] );
if ( self hasPerk( "specialty_twogrenades" ) ) if ( self hasPerk( "specialty_twogrenades" ) )
self SetWeaponAmmoClip( self.pers["bot"]["class_lethal"], 2 ); self SetWeaponAmmoClip( self.pers[ "bot" ][ "class_lethal" ], 2 );
else else
self SetWeaponAmmoClip( self.pers["bot"]["class_lethal"], 1 ); self SetWeaponAmmoClip( self.pers[ "bot" ][ "class_lethal" ], 1 );
self SwitchToOffhand( self.pers["bot"]["class_lethal"] ); self SwitchToOffhand( self.pers[ "bot" ][ "class_lethal" ] );
} }
if ( self.pers["bot"]["class_tacticle"] != "" ) if ( self.pers[ "bot" ][ "class_tacticle" ] != "" )
{ {
self giveWeapon( self.pers["bot"]["class_tacticle"] ); self giveWeapon( self.pers[ "bot" ][ "class_tacticle" ] );
if ( self.pers["bot"]["class_tacticle"] == "willy_pete_mp" ) if ( self.pers[ "bot" ][ "class_tacticle" ] == "willy_pete_mp" )
self SetWeaponAmmoClip( self.pers["bot"]["class_tacticle"], 1 ); self SetWeaponAmmoClip( self.pers[ "bot" ][ "class_tacticle" ], 1 );
else if ( self hasPerk( "specialty_twogrenades" ) ) else if ( self hasPerk( "specialty_twogrenades" ) )
self SetWeaponAmmoClip( self.pers["bot"]["class_tacticle"], 3 ); self SetWeaponAmmoClip( self.pers[ "bot" ][ "class_tacticle" ], 3 );
else else
self SetWeaponAmmoClip( self.pers["bot"]["class_tacticle"], 2 ); self SetWeaponAmmoClip( self.pers[ "bot" ][ "class_tacticle" ], 2 );
self setOffhandSecondaryClass( self.pers["bot"]["class_tacticle"] ); self setOffhandSecondaryClass( self.pers[ "bot" ][ "class_tacticle" ] );
} }
self setSpawnWeapon( weap ); self setSpawnWeapon( weap );
@ -181,7 +181,7 @@ bot_get_prestige()
{ {
for ( i = 0; i < level.players.size; i++ ) for ( i = 0; i < level.players.size; i++ )
{ {
player = level.players[i]; player = level.players[ i ];
if ( !isDefined( player.team ) ) if ( !isDefined( player.team ) )
continue; continue;
@ -202,7 +202,7 @@ bot_get_prestige()
p = p_dvar; p = p_dvar;
} }
self.pers["bot"]["prestige"] = p; self.pers[ "bot" ][ "prestige" ] = p;
} }
/* /*
@ -214,13 +214,13 @@ bot_rank()
wait 0.05; wait 0.05;
self.pers["rankxp"] = self.pers["bot"]["rankxp"]; self.pers[ "rankxp" ] = self.pers[ "bot" ][ "rankxp" ];
rankId = self maps\mp\gametypes\_rank::getRankForXp( self.pers["bot"]["rankxp"] ); rankId = self maps\mp\gametypes\_rank::getRankForXp( self.pers[ "bot" ][ "rankxp" ] );
prestige = self.pers["bot"]["prestige"]; prestige = self.pers[ "bot" ][ "prestige" ];
self.pers["rank"] = rankId; self.pers[ "rank" ] = rankId;
self.pers["prestige"] = prestige; self.pers[ "prestige" ] = prestige;
self.pers["plevel"] = prestige; self.pers[ "plevel" ] = prestige;
self setRank( rankId, prestige ); self setRank( rankId, prestige );
self maps\mp\gametypes\_rank::syncxpstat(); self maps\mp\gametypes\_rank::syncxpstat();
@ -228,7 +228,7 @@ bot_rank()
if ( !level.gameEnded ) if ( !level.gameEnded )
level waittill( "game_ended" ); level waittill( "game_ended" );
self.pers["bot"]["rankxp"] = self.pers["rankxp"]; self.pers[ "bot" ][ "rankxp" ] = self.pers[ "rankxp" ];
} }
/* /*
@ -236,24 +236,24 @@ bot_rank()
*/ */
bot_set_class() bot_set_class()
{ {
self.pers["bot"]["class_render_opts"] = 0; self.pers[ "bot" ][ "class_render_opts" ] = 0;
self.pers["bot"]["class_primary"] = ""; self.pers[ "bot" ][ "class_primary" ] = "";
self.pers["bot"]["class_primary_opts"] = 0; self.pers[ "bot" ][ "class_primary_opts" ] = 0;
self.pers["bot"]["class_secondary"] = ""; self.pers[ "bot" ][ "class_secondary" ] = "";
self.pers["bot"]["class_secondary_opts"] = 0; self.pers[ "bot" ][ "class_secondary_opts" ] = 0;
self.pers["bot"]["class_lethal"] = ""; self.pers[ "bot" ][ "class_lethal" ] = "";
self.pers["bot"]["class_tacticle"] = ""; self.pers[ "bot" ][ "class_tacticle" ] = "";
self.pers["bot"]["class_equipment"] = ""; self.pers[ "bot" ][ "class_equipment" ] = "";
self.pers["bot"]["class_perk1"] = ""; self.pers[ "bot" ][ "class_perk1" ] = "";
self.pers["bot"]["class_perk2"] = ""; self.pers[ "bot" ][ "class_perk2" ] = "";
self.pers["bot"]["class_perk3"] = ""; self.pers[ "bot" ][ "class_perk3" ] = "";
self.pers["bot"][ "cod_points" ] = self.pers["bot"][ "cod_points_org" ];//refund prev payments for class self.pers[ "bot" ][ "cod_points" ] = self.pers[ "bot" ][ "cod_points_org" ]; // refund prev payments for class
rank = self maps\mp\gametypes\_rank::getRankForXp( self.pers["bot"]["rankxp"] ); rank = self maps\mp\gametypes\_rank::getRankForXp( self.pers[ "bot" ][ "rankxp" ] );
if ( !level.onlineGame ) if ( !level.onlineGame )
{ {
@ -294,14 +294,14 @@ bot_set_class()
} }
} }
self.pers["bot"]["class_primary"] = level.classWeapons["axis"][_class][0]; self.pers[ "bot" ][ "class_primary" ] = level.classWeapons[ "axis" ][ _class ][ 0 ];
self.pers["bot"]["class_secondary"] = level.classSidearm["axis"][_class]; self.pers[ "bot" ][ "class_secondary" ] = level.classSidearm[ "axis" ][ _class ];
self.pers["bot"]["class_perk1"] = level.default_perkIcon[_class][ 0 ]; self.pers[ "bot" ][ "class_perk1" ] = level.default_perkIcon[ _class ][ 0 ];
self.pers["bot"]["class_perk2"] = level.default_perkIcon[_class][ 1 ]; self.pers[ "bot" ][ "class_perk2" ] = level.default_perkIcon[ _class ][ 1 ];
self.pers["bot"]["class_perk3"] = level.default_perkIcon[_class][ 2 ]; self.pers[ "bot" ][ "class_perk3" ] = level.default_perkIcon[ _class ][ 2 ];
self.pers["bot"]["class_equipment"] = level.default_equipment[ _class ][ "type" ]; self.pers[ "bot" ][ "class_equipment" ] = level.default_equipment[ _class ][ "type" ];
self.pers["bot"]["class_lethal"] = level.classGrenades[_class]["primary"]["type"]; self.pers[ "bot" ][ "class_lethal" ] = level.classGrenades[ _class ][ "primary" ][ "type" ];
self.pers["bot"]["class_tacticle"] = level.classGrenades[_class]["secondary"]["type"]; self.pers[ "bot" ][ "class_tacticle" ] = level.classGrenades[ _class ][ "secondary" ][ "type" ];
} }
else else
{ {
@ -330,7 +330,7 @@ bot_set_class()
else else
emblem = 0; emblem = 0;
if ( isSubStr( self.pers["bot"]["class_primary"], "_elbit_" ) || isSubStr( self.pers["bot"]["class_primary"], "_reflex_" ) ) if ( isSubStr( self.pers[ "bot" ][ "class_primary" ], "_elbit_" ) || isSubStr( self.pers[ "bot" ][ "class_primary" ], "_reflex_" ) )
{ {
if ( rank >= 24 ) if ( rank >= 24 )
reticle = self bot_random_reticle(); reticle = self bot_random_reticle();
@ -348,18 +348,18 @@ bot_set_class()
reticle = 0; reticle = 0;
} }
self.pers["bot"]["class_primary_opts"] = self calcWeaponOptions( camo, lens, reticle, tag, emblem ); self.pers[ "bot" ][ "class_primary_opts" ] = self calcWeaponOptions( camo, lens, reticle, tag, emblem );
if ( rank >= 30 ) if ( rank >= 30 )
face = self bot_random_face(); face = self bot_random_face();
else else
face = 0; face = 0;
self.pers["bot"]["class_render_opts"] = self calcPlayerOptions( face, 0 ); self.pers[ "bot" ][ "class_render_opts" ] = self calcPlayerOptions( face, 0 );
} }
if ( !GetDvarInt( "bots_loadout_allow_op" ) && isSubStr( self.pers["bot"]["class_perk3"], "perk_second_chance" ) ) if ( !GetDvarInt( "bots_loadout_allow_op" ) && isSubStr( self.pers[ "bot" ][ "class_perk3" ], "perk_second_chance" ) )
self.pers["bot"]["class_perk3"] = ""; self.pers[ "bot" ][ "class_perk3" ] = "";
} }
/* /*
@ -378,7 +378,7 @@ bot_get_random_weapon( slot, rank )
for ( i = 0; i < keys.size; i++ ) for ( i = 0; i < keys.size; i++ )
{ {
key = keys[i]; key = keys[ i ];
id = level.tbl_weaponIDs[ key ]; id = level.tbl_weaponIDs[ key ];
if ( id[ "reference" ] == "weapon_null" ) if ( id[ "reference" ] == "weapon_null" )
@ -400,7 +400,7 @@ bot_get_random_weapon( slot, rank )
reason = GetDvarInt( "bots_loadout_reasonable" ); reason = GetDvarInt( "bots_loadout_reasonable" );
diff = self GetBotDiffNum(); diff = self GetBotDiffNum();
if ( slot == "equipment" && self.pers["bot"]["cod_points"] < 2000 ) if ( slot == "equipment" && self.pers[ "bot" ][ "cod_points" ] < 2000 )
return; return;
for ( ;; ) for ( ;; )
@ -418,13 +418,13 @@ bot_get_random_weapon( slot, rank )
switch ( id[ "reference" ] ) switch ( id[ "reference" ] )
{ {
case "willy_pete": case "willy_pete":
if ( self.pers["bot"]["cod_points"] >= 1500 ) if ( self.pers[ "bot" ][ "cod_points" ] >= 1500 )
continue; continue;
break; break;
case "camera_spike": case "camera_spike":
if ( self.pers["bot"]["cod_points"] >= 2500 ) if ( self.pers[ "bot" ][ "cod_points" ] >= 2500 )
continue; continue;
break; break;
@ -482,14 +482,14 @@ bot_get_random_weapon( slot, rank )
cost = bot_weapon_cost( id ); cost = bot_weapon_cost( id );
if ( cost > 0 && self.pers["bot"]["cod_points"] < cost ) if ( cost > 0 && self.pers[ "bot" ][ "cod_points" ] < cost )
continue; continue;
self.pers["bot"]["cod_points"] = self.pers["bot"]["cod_points"] - cost; self.pers[ "bot" ][ "cod_points" ] = self.pers[ "bot" ][ "cod_points" ] - cost;
maxAttachs = 1; maxAttachs = 1;
if ( isSubStr( self.pers["bot"]["class_perk2"], "perk_professional" ) && slot == "primary" ) if ( isSubStr( self.pers[ "bot" ][ "class_perk2" ], "perk_professional" ) && slot == "primary" )
maxAttachs = 2; maxAttachs = 2;
if ( RandomFloatRange( 0, 1 ) < ( ( rank / level.maxRank ) + 0.1 ) ) if ( RandomFloatRange( 0, 1 ) < ( ( rank / level.maxRank ) + 0.1 ) )
@ -503,23 +503,23 @@ bot_get_random_weapon( slot, rank )
switch ( slot ) switch ( slot )
{ {
case "equipment": case "equipment":
self.pers["bot"]["class_equipment"] = weap; self.pers[ "bot" ][ "class_equipment" ] = weap;
break; break;
case "primary": case "primary":
self.pers["bot"]["class_primary"] = weap; self.pers[ "bot" ][ "class_primary" ] = weap;
break; break;
case "secondary": case "secondary":
self.pers["bot"]["class_secondary"] = weap; self.pers[ "bot" ][ "class_secondary" ] = weap;
break; break;
case "primarygrenade": case "primarygrenade":
self.pers["bot"]["class_lethal"] = weap; self.pers[ "bot" ][ "class_lethal" ] = weap;
break; break;
case "specialgrenade": case "specialgrenade":
self.pers["bot"]["class_tacticle"] = weap; self.pers[ "bot" ][ "class_tacticle" ] = weap;
break; break;
} }
@ -536,7 +536,7 @@ bot_get_random_perk( slot, rank )
for ( ;; ) for ( ;; )
{ {
id = PickRandom( level.allowedPerks[0] ); id = PickRandom( level.allowedPerks[ 0 ] );
if ( !isDefined( id ) ) if ( !isDefined( id ) )
return; return;
@ -554,7 +554,7 @@ bot_get_random_perk( slot, rank )
cost = Int( id[ "cost" ] ); cost = Int( id[ "cost" ] );
if ( cost > 0 && cost > self.pers["bot"][ "cod_points" ] ) if ( cost > 0 && cost > self.pers[ "bot" ][ "cod_points" ] )
continue; continue;
if ( reason ) if ( reason )
@ -563,18 +563,18 @@ bot_get_random_perk( slot, rank )
continue; continue;
} }
self.pers["bot"][ "cod_points" ] = self.pers["bot"][ "cod_points" ] - cost; self.pers[ "bot" ][ "cod_points" ] = self.pers[ "bot" ][ "cod_points" ] - cost;
self.pers["bot"]["class_perk" + slot] = id[ "reference_full" ]; self.pers[ "bot" ][ "class_perk" + slot ] = id[ "reference_full" ];
break; break;
} }
id = bot_perk_from_reference_full( self.pers["bot"]["class_perk" + slot] + "_pro" ); id = bot_perk_from_reference_full( self.pers[ "bot" ][ "class_perk" + slot ] + "_pro" );
cost = Int( id[ "cost" ] ); cost = Int( id[ "cost" ] );
if ( Int( cost ) <= self.pers["bot"][ "cod_points" ] && RandomFloatRange( 0, 1 ) < ( ( rank / level.maxRank ) + 0.1 ) ) if ( Int( cost ) <= self.pers[ "bot" ][ "cod_points" ] && RandomFloatRange( 0, 1 ) < ( ( rank / level.maxRank ) + 0.1 ) )
{ {
self.pers["bot"][ "cod_points" ] = self.pers["bot"][ "cod_points" ] - cost; self.pers[ "bot" ][ "cod_points" ] = self.pers[ "bot" ][ "cod_points" ] - cost;
self.pers["bot"]["class_perk" + slot] = id[ "reference_full" ]; self.pers[ "bot" ][ "class_perk" + slot ] = id[ "reference_full" ];
} }
} }
@ -592,58 +592,58 @@ bot_random_face()
if ( face >= 17 ) if ( face >= 17 )
{ {
if ( face >= 21 ) //pres faces if ( face >= 21 ) // pres faces
{ {
if ( self.pers["bot"][ "cod_points" ] < 500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 500; self.pers[ "bot" ][ "cod_points" ] -= 500;
return face; return face;
} }
if ( face == 17 ) if ( face == 17 )
{ {
if ( self.pers["bot"][ "cod_points" ] < 1500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 1500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 1500; self.pers[ "bot" ][ "cod_points" ] -= 1500;
return face; return face;
} }
if ( face == 18 ) if ( face == 18 )
{ {
if ( self.pers["bot"][ "cod_points" ] < 3500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 3500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 3500; self.pers[ "bot" ][ "cod_points" ] -= 3500;
return face; return face;
} }
if ( face == 19 ) if ( face == 19 )
{ {
if ( self.pers["bot"][ "cod_points" ] < 5500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 5500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 5500; self.pers[ "bot" ][ "cod_points" ] -= 5500;
return face; return face;
} }
if ( self.pers["bot"][ "cod_points" ] < 7500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 7500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 7500; self.pers[ "bot" ][ "cod_points" ] -= 7500;
return face; return face;
} }
if ( self.pers["bot"][ "cod_points" ] < 500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 500; self.pers[ "bot" ][ "cod_points" ] -= 500;
return face; return face;
} }
@ -661,10 +661,10 @@ bot_random_lens()
if ( lens == 0 ) if ( lens == 0 )
return lens; return lens;
if ( self.pers["bot"][ "cod_points" ] < 500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 500; self.pers[ "bot" ][ "cod_points" ] -= 500;
return lens; return lens;
} }
@ -682,10 +682,10 @@ bot_random_reticle()
if ( ret == 0 ) if ( ret == 0 )
return ret; return ret;
if ( self.pers["bot"][ "cod_points" ] < 500 ) if ( self.pers[ "bot" ][ "cod_points" ] < 500 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 500; self.pers[ "bot" ][ "cod_points" ] -= 500;
return ret; return ret;
} }
@ -703,10 +703,10 @@ bot_random_tag()
if ( tag == 0 ) if ( tag == 0 )
return tag; return tag;
if ( self.pers["bot"][ "cod_points" ] < 1000 ) if ( self.pers[ "bot" ][ "cod_points" ] < 1000 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 1000; self.pers[ "bot" ][ "cod_points" ] -= 1000;
return tag; return tag;
} }
@ -724,10 +724,10 @@ bot_random_emblem()
if ( emblem == 0 ) if ( emblem == 0 )
return emblem; return emblem;
if ( self.pers["bot"][ "cod_points" ] < 1000 ) if ( self.pers[ "bot" ][ "cod_points" ] < 1000 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 1000; self.pers[ "bot" ][ "cod_points" ] -= 1000;
return emblem; return emblem;
} }
@ -745,20 +745,20 @@ bot_random_camo()
if ( camo == 0 ) if ( camo == 0 )
return camo; return camo;
if ( camo == 15 ) //gold if ( camo == 15 ) // gold
{ {
if ( self.pers["bot"][ "cod_points" ] < 50000 ) if ( self.pers[ "bot" ][ "cod_points" ] < 50000 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 50000; self.pers[ "bot" ][ "cod_points" ] -= 50000;
return camo; return camo;
} }
if ( self.pers["bot"][ "cod_points" ] < 250 ) if ( self.pers[ "bot" ][ "cod_points" ] < 250 )
continue; continue;
self.pers["bot"][ "cod_points" ] -= 250; self.pers[ "bot" ][ "cod_points" ] -= 250;
return camo; return camo;
} }
@ -781,13 +781,13 @@ bot_weapon_cost( id )
for ( i = 0; i < level.bot_weapon_ids[ slot ].size; i++ ) for ( i = 0; i < level.bot_weapon_ids[ slot ].size; i++ )
{ {
if ( id["reference"] == level.bot_weapon_ids[ slot ][i]["reference"] ) if ( id[ "reference" ] == level.bot_weapon_ids[ slot ][ i ][ "reference" ] )
continue; continue;
if ( id["group"] != level.bot_weapon_ids[ slot ][i]["group"] ) if ( id[ "group" ] != level.bot_weapon_ids[ slot ][ i ][ "group" ] )
continue; continue;
cost += int( level.bot_weapon_ids[ slot ][i]["cost"] ); cost += int( level.bot_weapon_ids[ slot ][ i ][ "cost" ] );
} }
} }
@ -889,20 +889,20 @@ bot_validate_weapon( weap )
if ( tokens.size < 3 ) if ( tokens.size < 3 )
{ {
if ( tokens[1] == "dw" ) if ( tokens[ 1 ] == "dw" )
weapon = tokens[0] + "dw"; weapon = tokens[ 0 ] + "dw";
return weapon; return weapon;
} }
if ( tokens[2] == "ir" || tokens[2] == "reflex" || tokens[2] == "acog" || tokens[2] == "elbit" || tokens[2] == "vzoom" || tokens[2] == "lps" ) if ( tokens[ 2 ] == "ir" || tokens[ 2 ] == "reflex" || tokens[ 2 ] == "acog" || tokens[ 2 ] == "elbit" || tokens[ 2 ] == "vzoom" || tokens[ 2 ] == "lps" )
return tokens[0] + "_" + tokens[2] + "_" + tokens[1]; return tokens[ 0 ] + "_" + tokens[ 2 ] + "_" + tokens[ 1 ];
if ( tokens[1] == "silencer" ) if ( tokens[ 1 ] == "silencer" )
return tokens[0] + "_" + tokens[2] + "_" + tokens[1]; return tokens[ 0 ] + "_" + tokens[ 2 ] + "_" + tokens[ 1 ];
if ( tokens[2] == "grip" && !( tokens[1] == "ir" || tokens[1] == "reflex" || tokens[1] == "acog" || tokens[1] == "elbit" || tokens[1] == "vzoom" || tokens[1] == "lps" ) ) if ( tokens[ 2 ] == "grip" && !( tokens[ 1 ] == "ir" || tokens[ 1 ] == "reflex" || tokens[ 1 ] == "acog" || tokens[ 1 ] == "elbit" || tokens[ 1 ] == "vzoom" || tokens[ 1 ] == "lps" ) )
return tokens[0] + "_" + tokens[2] + "_" + tokens[1]; return tokens[ 0 ] + "_" + tokens[ 2 ] + "_" + tokens[ 1 ];
return weapon; return weapon;
} }
@ -914,7 +914,7 @@ bot_random_attachments( weap, atts, num )
{ {
weapon = weap; weapon = weap;
attachments = StrTok( atts, " " ); attachments = StrTok( atts, " " );
attachments[attachments.size] = ""; attachments[ attachments.size ] = "";
reason = GetDvarInt( "bots_loadout_reasonable" ); reason = GetDvarInt( "bots_loadout_reasonable" );
@ -958,10 +958,10 @@ bot_random_attachments( weap, atts, num )
cost = bot_attachment_cost( attachment ); cost = bot_attachment_cost( attachment );
if ( cost > 0 && cost > self.pers["bot"]["cod_points"] ) if ( cost > 0 && cost > self.pers[ "bot" ][ "cod_points" ] )
continue; continue;
self.pers["bot"]["cod_points"] -= cost; self.pers[ "bot" ][ "cod_points" ] -= cost;
weapon = weapon + "_" + attachment; weapon = weapon + "_" + attachment;
@ -1020,10 +1020,10 @@ bot_random_attachments( weap, atts, num )
cost = bot_attachment_cost( _attachment ); cost = bot_attachment_cost( _attachment );
if ( cost > 0 && cost > self.pers["bot"]["cod_points"] ) if ( cost > 0 && cost > self.pers[ "bot" ][ "cod_points" ] )
continue; continue;
self.pers["bot"]["cod_points"] -= cost; self.pers[ "bot" ][ "cod_points" ] -= cost;
weapon = weapon + "_" + _attachment; weapon = weapon + "_" + _attachment;
return weapon; return weapon;
} }
@ -1039,7 +1039,7 @@ bot_perk_from_reference_full( reference_full )
// start from the beginning of the array since our perk is most likely near the start // start from the beginning of the array since our perk is most likely near the start
for ( i = keys.size - 1; i >= 0; i-- ) for ( i = keys.size - 1; i >= 0; i-- )
{ {
key = keys[i]; key = keys[ i ];
if ( level.tbl_PerkData[ key ][ "reference_full" ] == reference_full ) if ( level.tbl_PerkData[ key ][ "reference_full" ] == reference_full )
{ {
@ -1057,7 +1057,7 @@ bot_get_cod_points()
{ {
if ( !level.onlineGame ) if ( !level.onlineGame )
{ {
self.pers["bot"][ "cod_points" ] = 999999; self.pers[ "bot" ][ "cod_points" ] = 999999;
return; return;
} }
@ -1070,15 +1070,15 @@ bot_get_cod_points()
for ( i = 0; i < players.size; i++ ) for ( i = 0; i < players.size; i++ )
{ {
if ( players[i] is_bot() ) if ( players[ i ] is_bot() )
{ {
continue; continue;
} }
if ( !isDefined( players[i].pers["currencyspent"] ) || !isDefined( players[i].pers["codpoints"] ) ) if ( !isDefined( players[ i ].pers[ "currencyspent" ] ) || !isDefined( players[ i ].pers[ "codpoints" ] ) )
continue; continue;
total_points[ total_points.size ] = players[i].pers["currencyspent"] + players[i].pers["codpoints"]; total_points[ total_points.size ] = players[ i ].pers[ "currencyspent" ] + players[ i ].pers[ "codpoints" ];
} }
if ( !total_points.size ) if ( !total_points.size )
@ -1087,15 +1087,15 @@ bot_get_cod_points()
} }
point_average = array_average( total_points ); point_average = array_average( total_points );
self.pers["bot"][ "cod_points" ] = Int( point_average * RandomFloatRange( 0.6, 0.8 ) ); self.pers[ "bot" ][ "cod_points" ] = Int( point_average * RandomFloatRange( 0.6, 0.8 ) );
} }
else if ( cp_dvar == 0 ) else if ( cp_dvar == 0 )
{ {
self.pers["bot"][ "cod_points" ] = Round( random_normal_distribution( 50000, 15000, 0, 100000 ) ); self.pers[ "bot" ][ "cod_points" ] = Round( random_normal_distribution( 50000, 15000, 0, 100000 ) );
} }
else else
{ {
self.pers["bot"][ "cod_points" ] = Round( random_normal_distribution( cp_dvar, 1500, 0, 100000 ) ); self.pers[ "bot" ][ "cod_points" ] = Round( random_normal_distribution( cp_dvar, 1500, 0, 100000 ) );
} }
} }
@ -1117,19 +1117,19 @@ bot_get_rank()
for ( i = 0; i < players.size; i++ ) for ( i = 0; i < players.size; i++ )
{ {
if ( players[i] == self ) if ( players[ i ] == self )
continue; continue;
if ( !IsDefined( players[i].pers[ "rank" ] ) ) if ( !IsDefined( players[ i ].pers[ "rank" ] ) )
continue; continue;
if ( players[i] is_bot() ) if ( players[ i ] is_bot() )
{ {
bot_ranks[ bot_ranks.size ] = players[i].pers[ "rank" ]; bot_ranks[ bot_ranks.size ] = players[ i ].pers[ "rank" ];
} }
else if ( !players[i] isdemoclient() ) else if ( !players[ i ] isdemoclient() )
{ {
human_ranks[ human_ranks.size ] = players[i].pers[ "rank" ]; human_ranks[ human_ranks.size ] = players[ i ].pers[ "rank" ];
} }
} }
@ -1163,7 +1163,7 @@ bot_get_rank()
rank = Round( random_normal_distribution( rank_dvar, 5, 0, level.maxRank ) ); rank = Round( random_normal_distribution( rank_dvar, 5, 0, level.maxRank ) );
} }
self.pers["bot"]["rankxp"] = maps\mp\gametypes\_rank::getRankInfoMinXP( rank ); self.pers[ "bot" ][ "rankxp" ] = maps\mp\gametypes\_rank::getRankInfoMinXP( rank );
} }
/* /*
@ -1177,7 +1177,7 @@ bot_setKillstreaks()
allowed_killstreaks[ 1 ] = "killstreak_supply_drop"; allowed_killstreaks[ 1 ] = "killstreak_supply_drop";
allowed_killstreaks[ 2 ] = "killstreak_helicopter_comlink"; allowed_killstreaks[ 2 ] = "killstreak_helicopter_comlink";
if ( self maps\mp\gametypes\_rank::getRankForXp( self.pers["bot"]["rankxp"] ) >= 9 || !level.onlineGame ) if ( self maps\mp\gametypes\_rank::getRankForXp( self.pers[ "bot" ][ "rankxp" ] ) >= 9 || !level.onlineGame )
{ {
allowed_killstreaks[ 3 ] = "killstreak_auto_turret_drop"; allowed_killstreaks[ 3 ] = "killstreak_auto_turret_drop";
allowed_killstreaks[ 4 ] = "killstreak_tow_turret_drop"; allowed_killstreaks[ 4 ] = "killstreak_tow_turret_drop";
@ -1195,7 +1195,7 @@ bot_setKillstreaks()
used_levels = []; used_levels = [];
self.pers["bot"]["killstreaks"] = []; self.pers[ "bot" ][ "killstreaks" ] = [];
reason = GetDvarInt( "bots_loadout_reasonable" ); reason = GetDvarInt( "bots_loadout_reasonable" );
@ -1218,7 +1218,7 @@ bot_setKillstreaks()
cost = bot_get_killstreak_cost( killstreak ); cost = bot_get_killstreak_cost( killstreak );
if ( cost > 0 && self.pers["bot"]["cod_points"] < cost ) if ( cost > 0 && self.pers[ "bot" ][ "cod_points" ] < cost )
{ {
i--; i--;
continue; continue;
@ -1238,9 +1238,9 @@ bot_setKillstreaks()
} }
} }
self.pers["bot"]["cod_points"] = self.pers["bot"]["cod_points"] - cost; self.pers[ "bot" ][ "cod_points" ] = self.pers[ "bot" ][ "cod_points" ] - cost;
used_levels[ used_levels.size ] = ks_level; used_levels[ used_levels.size ] = ks_level;
self.pers["bot"]["killstreaks"][i] = killstreak; self.pers[ "bot" ][ "killstreaks" ][ i ] = killstreak;
} }
} }
@ -1249,7 +1249,7 @@ bot_setKillstreaks()
*/ */
bot_get_killstreak_cost( ks ) bot_get_killstreak_cost( ks )
{ {
//use table?? trey never included cost attribute tho // use table?? trey never included cost attribute tho
switch ( ks ) switch ( ks )
{ {
case "killstreak_auto_turret_drop": case "killstreak_auto_turret_drop":
@ -1299,9 +1299,9 @@ bot_get_killstreak_cost( ks )
bot_giveKillstreaks() bot_giveKillstreaks()
{ {
self.killstreak = []; self.killstreak = [];
self.killstreak[0] = self.pers["bot"]["killstreaks"][0]; self.killstreak[ 0 ] = self.pers[ "bot" ][ "killstreaks" ][ 0 ];
self.killstreak[1] = self.pers["bot"]["killstreaks"][1]; self.killstreak[ 1 ] = self.pers[ "bot" ][ "killstreaks" ][ 1 ];
self.killstreak[2] = self.pers["bot"]["killstreaks"][2]; self.killstreak[ 2 ] = self.pers[ "bot" ][ "killstreaks" ][ 2 ];
} }
/* /*

File diff suppressed because it is too large Load Diff

View File

@ -168,9 +168,9 @@ BotBuiltinClearAimOverride()
*/ */
BotBuiltinBotMeleeParams( yaw, dist ) BotBuiltinBotMeleeParams( yaw, dist )
{ {
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["botmeleeparams"] ) ) if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins[ "botmeleeparams" ] ) )
{ {
self [[ level.bot_builtins["botmeleeparams" ]]]( yaw, dist ); self [[ level.bot_builtins[ "botmeleeparams" ] ]]( yaw, dist );
} }
} }
@ -178,9 +178,9 @@ BotBuiltinBotMeleeParams( yaw, dist )
*/ */
BotBuiltinClearMeleeParams() BotBuiltinClearMeleeParams()
{ {
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["clearbotmeleeparams"] ) ) if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins[ "clearbotmeleeparams" ] ) )
{ {
self [[ level.bot_builtins["clearbotmeleeparams" ]]](); self [[ level.bot_builtins[ "clearbotmeleeparams" ] ]]();
} }
} }
@ -194,12 +194,12 @@ getBotArray()
for ( i = 0; i < playercount; i++ ) for ( i = 0; i < playercount; i++ )
{ {
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;
} }
return result; return result;
@ -243,7 +243,7 @@ PickRandom( arr )
if ( !arr.size ) if ( !arr.size )
return undefined; return undefined;
return arr[randomInt( arr.size )]; return arr[ randomInt( arr.size ) ];
} }
/* /*
@ -395,15 +395,15 @@ bot_lookat( pos, time, vel, doAimPredict )
myAngle = self getPlayerAngles(); myAngle = self getPlayerAngles();
angles = VectorToAngles( ( pos - myEye ) - anglesToForward( myAngle ) ); angles = VectorToAngles( ( pos - myEye ) - anglesToForward( myAngle ) );
X = AngleClamp180( angles[0] - myAngle[0] ); X = AngleClamp180( angles[ 0 ] - myAngle[ 0 ] );
X = X / steps; X = X / steps;
Y = AngleClamp180( angles[1] - myAngle[1] ); Y = AngleClamp180( angles[ 1 ] - myAngle[ 1 ] );
Y = Y / steps; Y = Y / steps;
for ( i = 0; i < steps; i++ ) for ( i = 0; i < steps; i++ )
{ {
myAngle = ( AngleClamp180( myAngle[0] + X ), AngleClamp180( myAngle[1] + Y ), 0 ); myAngle = ( AngleClamp180( myAngle[ 0 ] + X ), AngleClamp180( myAngle[ 1 ] + Y ), 0 );
self setPlayerAngles( myAngle ); self setPlayerAngles( myAngle );
wait 0.05; wait 0.05;
} }
@ -418,20 +418,20 @@ getweaponslistall()
for ( i = 0; i < weaps.size; i++ ) for ( i = 0; i < weaps.size; i++ )
{ {
weap = weaps[i]; weap = weaps[ i ];
toks = strTok( weap, "_" ); toks = strTok( weap, "_" );
if ( isSubStr( weap, "_gl_" ) ) if ( isSubStr( weap, "_gl_" ) )
{ {
weaps[weaps.size] = "gl_" + toks[0] + "_mp"; weaps[ weaps.size ] = "gl_" + toks[ 0 ] + "_mp";
} }
else if ( isSubStr( weap, "_ft_" ) ) else if ( isSubStr( weap, "_ft_" ) )
{ {
weaps[weaps.size] = "ft_" + toks[0] + "_mp"; weaps[ weaps.size ] = "ft_" + toks[ 0 ] + "_mp";
} }
else if ( isSubStr( weap, "_mk_" ) ) else if ( isSubStr( weap, "_mk_" ) )
{ {
weaps[weaps.size] = "mk_" + toks[0] + "_mp"; weaps[ weaps.size ] = "mk_" + toks[ 0 ] + "_mp";
} }
} }
@ -447,7 +447,7 @@ getValidTube()
for ( i = 0; i < weaps.size; i++ ) for ( i = 0; i < weaps.size; i++ )
{ {
weap = weaps[i]; weap = weaps[ i ];
if ( !self getAmmoCount( weap ) ) if ( !self getAmmoCount( weap ) )
continue; continue;
@ -513,7 +513,7 @@ 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;
@ -524,7 +524,7 @@ getBotToKick()
// count teams // count teams
for ( i = 0; i < bots.size; i++ ) for ( i = 0; i < bots.size; i++ )
{ {
bot = bots[i]; bot = bots[ i ];
if ( !isDefined( bot ) || !isDefined( bot.team ) ) if ( !isDefined( bot ) || !isDefined( bot.team ) )
continue; continue;
@ -558,7 +558,7 @@ getBotToKick()
// get the bot on this team with lowest skill // get the bot on this team with lowest skill
for ( i = 0; i < bots.size; i++ ) for ( i = 0; i < bots.size; i++ )
{ {
bot = bots[i]; bot = bots[ i ];
if ( !isDefined( bot ) || !isDefined( bot.team ) ) if ( !isDefined( bot ) || !isDefined( bot.team ) )
continue; continue;
@ -575,7 +575,7 @@ getBotToKick()
// just kick lowest skill // just kick lowest skill
for ( i = 0; i < bots.size; i++ ) for ( i = 0; i < bots.size; i++ )
{ {
bot = bots[i]; bot = bots[ i ];
if ( !isDefined( bot ) || !isDefined( bot.team ) ) if ( !isDefined( bot ) || !isDefined( bot.team ) )
continue; continue;
@ -870,7 +870,7 @@ getConeDot( to, from, dir )
bot_onUsePlantObjectFix( player ) bot_onUsePlantObjectFix( player )
{ {
// planted the bomb // planted the bomb
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers[ "team" ] ) )
{ {
level thread bot_bombPlanted( self, player ); level thread bot_bombPlanted( self, player );
player logString( "bomb planted: " + self.label ); player logString( "bomb planted: " + self.label );
@ -878,23 +878,23 @@ bot_onUsePlantObjectFix( player )
// disable all bomb zones except this one // disable all bomb zones except this one
for ( index = 0; index < level.bombZones.size; index++ ) for ( index = 0; index < level.bombZones.size; index++ )
{ {
if ( level.bombZones[index] == self ) if ( level.bombZones[ index ] == self )
continue; continue;
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject(); level.bombZones[ index ] maps\mp\gametypes\_gameobjects::disableObject();
} }
thread playSoundOnPlayers( "mus_sd_planted" + "_" + level.teamPostfix[player.pers["team"]] ); thread playSoundOnPlayers( "mus_sd_planted" + "_" + level.teamPostfix[ player.pers[ "team" ] ] );
// removed plant audio until finalization of assest TODO : new plant sounds when assests are online // removed plant audio until finalization of assest TODO : new plant sounds when assests are online
// player playSound( "mpl_sd_bomb_plant" ); // player playSound( "mpl_sd_bomb_plant" );
player notify ( "bomb_planted" ); player notify ( "bomb_planted" );
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player ); level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player );
if ( isdefined( player.pers["plants"] ) ) if ( isdefined( player.pers[ "plants" ] ) )
{ {
player.pers["plants"]++; player.pers[ "plants" ]++;
player.plants = player.pers["plants"]; player.plants = player.pers[ "plants" ];
} }
player maps\mp\_medals::saboteur(); player maps\mp\_medals::saboteur();
@ -903,7 +903,7 @@ bot_onUsePlantObjectFix( player )
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" ); maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" );
maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player ); maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player );
//player thread [[level.onXPEvent]]( "plant" ); // player thread [[ level.onXPEvent ]]( "plant" );
} }
} }
@ -915,13 +915,13 @@ bot_bombPlanted( destroyedObj, player )
maps\mp\gametypes\_globallogic_utils::pauseTimer(); maps\mp\gametypes\_globallogic_utils::pauseTimer();
level.bombPlanted = true; level.bombPlanted = true;
destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" ); destroyedObj.visuals[ 0 ] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
//Play suspense music // Play suspense music
level thread maps\mp\gametypes\sd::bombPlantedMusicDelay(); level thread maps\mp\gametypes\sd::bombPlantedMusicDelay();
//thread maps\mp\gametypes\_globallogic_audio::actionMusicSet(); // thread maps\mp\gametypes\_globallogic_audio::actionMusicSet();
level.tickingObject = destroyedObj.visuals[0]; level.tickingObject = destroyedObj.visuals[ 0 ];
level.timeLimitOverride = true; level.timeLimitOverride = true;
setGameEndTime( int( gettime() + ( level.bombTimer * 1000 ) ) ); setGameEndTime( int( gettime() + ( level.bombTimer * 1000 ) ) );
@ -932,25 +932,25 @@ bot_bombPlanted( destroyedObj, player )
level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
level.sdBomb maps\mp\gametypes\_gameobjects::setDropped(); level.sdBomb maps\mp\gametypes\_gameobjects::setDropped();
level.sdBombModel = level.sdBomb.visuals[0]; level.sdBombModel = level.sdBomb.visuals[ 0 ];
} }
else else
{ {
for ( index = 0; index < level.players.size; index++ ) for ( index = 0; index < level.players.size; index++ )
{ {
if ( isDefined( level.players[index].carryIcon ) ) if ( isDefined( level.players[ index ].carryIcon ) )
level.players[index].carryIcon destroyElem(); level.players[ index ].carryIcon destroyElem();
} }
trace = bulletTrace( player.origin + ( 0, 0, 20 ), player.origin - ( 0, 0, 2000 ), false, player ); trace = bulletTrace( player.origin + ( 0, 0, 20 ), player.origin - ( 0, 0, 2000 ), false, player );
tempAngle = randomfloat( 360 ); tempAngle = randomfloat( 360 );
forward = ( cos( tempAngle ), sin( tempAngle ), 0 ); forward = ( cos( tempAngle ), sin( tempAngle ), 0 );
forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) ); forward = vectornormalize( forward - vector_scale( trace[ "normal" ], vectordot( forward, trace[ "normal" ] ) ) );
dropAngles = vectortoangles( forward ); dropAngles = vectortoangles( forward );
level.sdBombModel = spawn( "script_model", trace["position"] ); level.sdBombModel = spawn( "script_model", trace[ "position" ] );
level.sdBombModel.angles = dropAngles; level.sdBombModel.angles = dropAngles;
level.sdBombModel setModel( "prop_suitcase_bomb" ); level.sdBombModel setModel( "prop_suitcase_bomb" );
} }
@ -969,7 +969,7 @@ bot_bombPlanted( destroyedObj, player )
trigger = destroyedObj.bombDefuseTrig; trigger = destroyedObj.bombDefuseTrig;
trigger.origin = level.sdBombModel.origin; trigger.origin = level.sdBombModel.origin;
visuals = []; visuals = [];
defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, ( 0, 0, 32 ) ); defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game[ "defenders" ], trigger, visuals, ( 0, 0, 32 ) );
defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
@ -985,14 +985,14 @@ bot_bombPlanted( destroyedObj, player )
defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject; defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject;
defuseObject.useWeapon = "briefcase_bomb_defuse_mp"; defuseObject.useWeapon = "briefcase_bomb_defuse_mp";
level.defuseObject = defuseObject;//every cod... level.defuseObject = defuseObject; // every cod...
player.isBombCarrier = false; player.isBombCarrier = false;
maps\mp\gametypes\sd::BombTimerWait(); maps\mp\gametypes\sd::BombTimerWait();
setMatchFlag( "bomb_timer", 0 ); setMatchFlag( "bomb_timer", 0 );
destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound(); destroyedObj.visuals[ 0 ] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
if ( level.gameEnded || level.bombDefused ) if ( level.gameEnded || level.bombDefused )
return; return;
@ -1006,26 +1006,26 @@ bot_bombPlanted( destroyedObj, player )
if ( isdefined( player ) ) if ( isdefined( player ) )
{ {
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); destroyedObj.visuals[ 0 ] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player ); level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player );
player maps\mp\_medals::bomber(); player maps\mp\_medals::bomber();
player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 ); player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 );
} }
else else
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); destroyedObj.visuals[ 0 ] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
rot = randomfloat( 360 ); rot = randomfloat( 360 );
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + ( 0, 0, 50 ), ( 0, 0, 1 ), ( cos( rot ), sin( rot ), 0 ) ); explosionEffect = spawnFx( level._effect[ "bombexplosion" ], explosionOrigin + ( 0, 0, 50 ), ( 0, 0, 1 ), ( cos( rot ), sin( rot ), 0 ) );
triggerFx( explosionEffect ); triggerFx( explosionEffect );
thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin ); thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin );
//thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" ); // thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" );
if ( isDefined( destroyedObj.exploderIndex ) ) if ( isDefined( destroyedObj.exploderIndex ) )
exploder( destroyedObj.exploderIndex ); exploder( destroyedObj.exploderIndex );
for ( index = 0; index < level.bombZones.size; index++ ) for ( index = 0; index < level.bombZones.size; index++ )
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject(); level.bombZones[ index ] maps\mp\gametypes\_gameobjects::disableObject();
defuseObject maps\mp\gametypes\_gameobjects::disableObject(); defuseObject maps\mp\gametypes\_gameobjects::disableObject();
@ -1033,5 +1033,5 @@ bot_bombPlanted( destroyedObj, player )
wait 3; wait 3;
maps\mp\gametypes\sd::sd_endGame( game["attackers"], game["strings"]["target_destroyed"] ); maps\mp\gametypes\sd::sd_endGame( game[ "attackers" ], game[ "strings" ][ "target_destroyed" ] );
} }

View File

@ -29,45 +29,45 @@ init()
PrintLn( "FATAL: NO BUILT-INS FOR BOTS" ); PrintLn( "FATAL: NO BUILT-INS FOR BOTS" );
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_spec" ) == "" ) if ( getDvar( "bots_manage_fill_spec" ) == "" )
setDvar( "bots_manage_fill_spec", true ); //to count for fill if player is on spec team setDvar( "bots_manage_fill_spec", true ); // to count for fill if player is on spec team
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" ) == "" ) // alias for bot_difficulty if ( getDvar( "bots_skill" ) == "" ) // alias for bot_difficulty
setDvar( "bots_skill", "" ); setDvar( "bots_skill", "" );
if ( getDvar( "bots_team" ) == "" ) if ( getDvar( "bots_team" ) == "" )
setDvar( "bots_team", "autoassign" ); //which team for bots to join setDvar( "bots_team", "autoassign" ); // which team for bots to join
if ( getDvar( "bots_team_amount" ) == "" ) if ( getDvar( "bots_team_amount" ) == "" )
setDvar( "bots_team_amount", 0 ); //amount of bots on axis team setDvar( "bots_team_amount", 0 ); // amount of bots on axis team
if ( getDvar( "bots_team_force" ) == "" ) if ( getDvar( "bots_team_force" ) == "" )
setDvar( "bots_team_force", false ); //force bots on team setDvar( "bots_team_force", false ); // force bots on team
if ( getDvar( "bots_team_mode" ) == "" ) if ( getDvar( "bots_team_mode" ) == "" )
setDvar( "bots_team_mode", 0 ); //counts just bots when 1 setDvar( "bots_team_mode", 0 ); // counts just bots when 1
if ( getDvar( "bots_loadout_reasonable" ) == "" ) //filter out the bad 'guns' and perks if ( getDvar( "bots_loadout_reasonable" ) == "" ) // filter out the bad 'guns' and perks
setDvar( "bots_loadout_reasonable", false ); setDvar( "bots_loadout_reasonable", false );
if ( getDvar( "bots_loadout_allow_op" ) == "" ) //allows jug, marty and laststand if ( getDvar( "bots_loadout_allow_op" ) == "" ) // allows jug, marty and laststand
setDvar( "bots_loadout_allow_op", true ); setDvar( "bots_loadout_allow_op", true );
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
@ -79,45 +79,45 @@ init()
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_target_other" ) == "" ) //bot target non play ents (vehicles) if ( getDvar( "bots_play_target_other" ) == "" ) // bot target non play ents (vehicles)
setDvar( "bots_play_target_other", true ); setDvar( "bots_play_target_other", true );
if ( getDvar( "bots_play_killstreak" ) == "" ) //bot use killstreaks if ( getDvar( "bots_play_killstreak" ) == "" ) // bot use killstreaks
setDvar( "bots_play_killstreak", true ); setDvar( "bots_play_killstreak", 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_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_move" ) == "" ) //bots move if ( getDvar( "bots_play_move" ) == "" ) // bots move
setDvar( "bots_play_move", true ); setDvar( "bots_play_move", true );
if ( getDvar( "bots_play_take_carepackages" ) == "" ) //bots take carepackages if ( getDvar( "bots_play_take_carepackages" ) == "" ) // bots take carepackages
setDvar( "bots_play_take_carepackages", true ); setDvar( "bots_play_take_carepackages", true );
if ( getDvar( "bots_play_obj" ) == "" ) //bots play the obj if ( getDvar( "bots_play_obj" ) == "" ) // bots play the obj
setDvar( "bots_play_obj", true ); setDvar( "bots_play_obj", true );
if ( getDvar( "bots_play_camp" ) == "" ) //bots camp and follow if ( getDvar( "bots_play_camp" ) == "" ) // bots camp and follow
setDvar( "bots_play_camp", true ); setDvar( "bots_play_camp", true );
if ( getDvar( "bots_play_aim" ) == "" ) if ( getDvar( "bots_play_aim" ) == "" )
setDvar( "bots_play_aim", true ); setDvar( "bots_play_aim", true );
if ( getDvar( "bots_play_jumpdrop" ) == "" ) //bots jump and dropshot if ( getDvar( "bots_play_jumpdrop" ) == "" ) // bots jump and dropshot
setDvar( "bots_play_jumpdrop", true ); setDvar( "bots_play_jumpdrop", true );
level.bots = []; level.bots = [];
level.bot_decoys = []; level.bot_decoys = [];
level.bot_planes = []; level.bot_planes = [];
if ( !isDefined( game["botWarfare"] ) ) if ( !isDefined( game[ "botWarfare" ] ) )
game["botWarfare"] = true; game[ "botWarfare" ] = true;
thread fixGamemodes(); thread fixGamemodes();
thread onPlayerConnect(); thread onPlayerConnect();
@ -164,7 +164,7 @@ handleBots()
for ( i = 0; i < bots.size; i++ ) for ( i = 0; i < bots.size; i++ )
{ {
kick( bots[i] getEntityNumber() ); kick( bots[ i ] getEntityNumber() );
} }
} }
@ -190,7 +190,7 @@ connected()
self thread maps\mp\bots\_bot_script::connected(); self thread maps\mp\bots\_bot_script::connected();
level.bots[level.bots.size] = self; level.bots[ level.bots.size ] = self;
self thread onDisconnect(); self thread onDisconnect();
level notify( "bot_connected", self ); level notify( "bot_connected", self );
@ -477,23 +477,23 @@ teamBots_loop()
for ( i = 0; i < playercount; i++ ) for ( i = 0; i < playercount; i++ )
{ {
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() )
{ {
if ( player.pers["team"] == "allies" ) if ( player.pers[ "team" ] == "allies" )
alliesbots++; alliesbots++;
else if ( player.pers["team"] == "axis" ) else if ( player.pers[ "team" ] == "axis" )
axisbots++; axisbots++;
} }
else else
{ {
if ( player.pers["team"] == "allies" ) if ( player.pers[ "team" ] == "allies" )
alliesplayers++; alliesplayers++;
else if ( player.pers["team"] == "axis" ) else if ( player.pers[ "team" ] == "axis" )
axisplayers++; axisplayers++;
} }
} }
@ -528,23 +528,23 @@ teamBots_loop()
for ( i = 0; i < playercount; i++ ) for ( i = 0; i < playercount; i++ )
{ {
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 ( player.pers["team"] == toTeam ) if ( player.pers[ "team" ] == toTeam )
continue; continue;
if ( toTeam == "allies" ) if ( toTeam == "allies" )
player thread [[level.allies]](); player thread [[ level.allies ]]();
else if ( toTeam == "axis" ) else if ( toTeam == "axis" )
player thread [[level.axis]](); player thread [[ level.axis ]]();
else else
player thread [[level.spectator]](); player thread [[ level.spectator ]]();
break; break;
} }
@ -557,19 +557,19 @@ teamBots_loop()
for ( i = 0; i < playercount; i++ ) for ( i = 0; i < playercount; i++ )
{ {
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 ( player.pers["team"] == "axis" ) if ( player.pers[ "team" ] == "axis" )
{ {
if ( axis > teamAmount ) if ( axis > teamAmount )
{ {
player thread [[level.allies]](); player thread [[ level.allies ]]();
break; break;
} }
} }
@ -577,12 +577,12 @@ teamBots_loop()
{ {
if ( axis < teamAmount ) if ( axis < teamAmount )
{ {
player thread [[level.axis]](); player thread [[ level.axis ]]();
break; break;
} }
else if ( player.pers["team"] != "allies" ) else if ( player.pers[ "team" ] != "allies" )
{ {
player thread [[level.allies]](); player thread [[ level.allies ]]();
break; break;
} }
} }
@ -638,14 +638,14 @@ addBots_loop()
for ( i = 0; i < playercount; i++ ) for ( i = 0; i < playercount; i++ )
{ {
player = level.players[i]; player = level.players[ i ];
if ( player isdemoclient() ) if ( player isdemoclient() )
continue; continue;
if ( player is_bot() ) if ( player is_bot() )
bots++; bots++;
else if ( !isDefined( player.pers["team"] ) || ( player.pers["team"] != "axis" && player.pers["team"] != "allies" ) ) else if ( !isDefined( player.pers[ "team" ] ) || ( player.pers[ "team" ] != "axis" && player.pers[ "team" ] != "allies" ) )
spec++; spec++;
else else
players++; players++;
@ -660,17 +660,17 @@ addBots_loop()
for ( i = 0; i < playercount; i++ ) for ( i = 0; i < playercount; i++ )
{ {
player = level.players[i]; player = level.players[ i ];
if ( player is_bot() ) if ( player is_bot() )
continue; continue;
if ( !isDefined( player.pers["team"] ) ) if ( !isDefined( player.pers[ "team" ] ) )
continue; continue;
if ( player.pers["team"] == "axis" ) if ( player.pers[ "team" ] == "axis" )
axisplayers++; axisplayers++;
else if ( player.pers["team"] == "allies" ) else if ( player.pers[ "team" ] == "allies" )
alliesplayers++; alliesplayers++;
} }
@ -742,8 +742,8 @@ add_bot()
if ( isdefined( bot ) ) if ( isdefined( bot ) )
{ {
bot.pers["isBot"] = true; bot.pers[ "isBot" ] = true;
bot.pers["isBotWarfare"] = true; bot.pers[ "isBotWarfare" ] = true;
bot thread maps\mp\bots\_bot_script::added(); bot thread maps\mp\bots\_bot_script::added();
} }
} }
@ -850,21 +850,21 @@ watch_decoy( g )
{ {
g.team = self.team; g.team = self.team;
level.bot_decoys[level.bot_decoys.size] = g; level.bot_decoys[ level.bot_decoys.size ] = g;
g waittill( "death" ); g waittill( "death" );
for ( entry = 0; entry < level.bot_decoys.size; entry++ ) for ( entry = 0; entry < level.bot_decoys.size; entry++ )
{ {
if ( level.bot_decoys[entry] == g ) if ( level.bot_decoys[ entry ] == g )
{ {
while ( entry < level.bot_decoys.size - 1 ) while ( entry < level.bot_decoys.size - 1 )
{ {
level.bot_decoys[entry] = level.bot_decoys[entry + 1]; level.bot_decoys[ entry ] = level.bot_decoys[ entry + 1 ];
entry++; entry++;
} }
level.bot_decoys[entry] = undefined; level.bot_decoys[ entry ] = undefined;
break; break;
} }
} }
@ -968,7 +968,7 @@ bot_watch_planes_loop()
for ( i = 0; i < ents.size; i++ ) for ( i = 0; i < ents.size; i++ )
{ {
ent = ents[i]; ent = ents[ i ];
if ( isDefined( ent.bot_plane ) ) if ( isDefined( ent.bot_plane ) )
continue; continue;
@ -1000,21 +1000,21 @@ watch_plane( ent )
{ {
ent.bot_plane = true; ent.bot_plane = true;
level.bot_planes[level.bot_planes.size] = ent; level.bot_planes[ level.bot_planes.size ] = ent;
ent waittill_any( "death", "delete", "leaving" ); ent waittill_any( "death", "delete", "leaving" );
for ( entry = 0; entry < level.bot_planes.size; entry++ ) for ( entry = 0; entry < level.bot_planes.size; entry++ )
{ {
if ( level.bot_planes[entry] == ent ) if ( level.bot_planes[ entry ] == ent )
{ {
while ( entry < level.bot_planes.size - 1 ) while ( entry < level.bot_planes.size - 1 )
{ {
level.bot_planes[entry] = level.bot_planes[entry + 1]; level.bot_planes[ entry ] = level.bot_planes[ entry + 1 ];
entry++; entry++;
} }
level.bot_planes[entry] = undefined; level.bot_planes[ entry ] = undefined;
break; break;
} }
} }
@ -1040,7 +1040,7 @@ fixGamemodes()
level.isKillBoosting = ::bot_killBoost; level.isKillBoosting = ::bot_killBoost;
for ( i = 0; i < level.bombZones.size; i++ ) for ( i = 0; i < level.bombZones.size; i++ )
level.bombZones[i].onUse = ::bot_onUsePlantObjectFix; level.bombZones[ i ].onUse = ::bot_onUsePlantObjectFix;
break; break;
} }

View File

@ -1,20 +1,20 @@
init() init()
{ {
level.bot_builtins["printconsole"] = ::do_printconsole; level.bot_builtins[ "printconsole" ] = ::do_printconsole;
level.bot_builtins["botmovementoverride"] = ::do_botmovementoverride; level.bot_builtins[ "botmovementoverride" ] = ::do_botmovementoverride;
level.bot_builtins["botclearmovementoverride"] = ::do_botclearmovementoverride; level.bot_builtins[ "botclearmovementoverride" ] = ::do_botclearmovementoverride;
level.bot_builtins["botclearbuttonoverride"] = ::do_botclearbuttonoverride; level.bot_builtins[ "botclearbuttonoverride" ] = ::do_botclearbuttonoverride;
level.bot_builtins["botbuttonoverride"] = ::do_botbuttonoverride; level.bot_builtins[ "botbuttonoverride" ] = ::do_botbuttonoverride;
level.bot_builtins["botclearoverrides"] = ::do_botclearoverrides; level.bot_builtins[ "botclearoverrides" ] = ::do_botclearoverrides;
level.bot_builtins["botmantleoverride"] = ::do_botmantleoverride; level.bot_builtins[ "botmantleoverride" ] = ::do_botmantleoverride;
level.bot_builtins["botclearmantleoverride"] = ::do_botclearmantleoverride; level.bot_builtins[ "botclearmantleoverride" ] = ::do_botclearmantleoverride;
level.bot_builtins["botclearweaponoverride"] = ::do_botclearweaponoverride; level.bot_builtins[ "botclearweaponoverride" ] = ::do_botclearweaponoverride;
level.bot_builtins["botweaponoverride"] = ::do_botweaponoverride; level.bot_builtins[ "botweaponoverride" ] = ::do_botweaponoverride;
level.bot_builtins["botclearbuttonoverrides"] = ::do_botclearbuttonoverrides; level.bot_builtins[ "botclearbuttonoverrides" ] = ::do_botclearbuttonoverrides;
level.bot_builtins["botaimoverride"] = ::do_botaimoverride; level.bot_builtins[ "botaimoverride" ] = ::do_botaimoverride;
level.bot_builtins["botclearaimoverride"] = ::do_botclearaimoverride; level.bot_builtins[ "botclearaimoverride" ] = ::do_botclearaimoverride;
level.bot_builtins["botmeleeparams"] = ::do_botmeleeparams; level.bot_builtins[ "botmeleeparams" ] = ::do_botmeleeparams;
level.bot_builtins["clearbotmeleeparams"] = ::do_clearbotmeleeparams; level.bot_builtins[ "clearbotmeleeparams" ] = ::do_clearbotmeleeparams;
} }
do_printconsole( s ) do_printconsole( s )