mirror of
https://github.com/JezuzLizard/t4sp_bot_warfare.git
synced 2025-04-19 21:22:54 +00:00
cleanup
This commit is contained in:
parent
8a9aa8fdb4
commit
91d1728e41
@ -78,6 +78,9 @@ init()
|
||||
if ( getDvar( "bots_t8_mode" ) == "" )
|
||||
setDvar( "bots_t8_mode", false );
|
||||
|
||||
if ( getDvar( "bots_play_opendoors" ) == "" )
|
||||
setDvar( "bots_play_opendoors", true );
|
||||
|
||||
if ( !isDefined( game["botWarfare"] ) )
|
||||
game["botWarfare"] = true;
|
||||
|
||||
|
@ -236,6 +236,14 @@ BotNotifyBotEvent( msg, a, b, c, d, e, f, g )
|
||||
self notify( "bot_event", msg, a, b, c, d, e, f, g );
|
||||
}
|
||||
|
||||
/*
|
||||
Does the bot have an objective?
|
||||
*/
|
||||
BotHasObjective()
|
||||
{
|
||||
return self maps\bots\objectives\_utility::HasBotObjective();
|
||||
}
|
||||
|
||||
/*
|
||||
Returns if the bot has a script goal.
|
||||
(like t5 gsc bot)
|
||||
@ -312,6 +320,7 @@ SetPriorityObjective()
|
||||
ClearPriorityObjective()
|
||||
{
|
||||
self.bot.prio_objective = false;
|
||||
self notify( "kill_goal" );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -648,6 +657,9 @@ DistanceSquared2D( to, from )
|
||||
return DistanceSquared( to, from );
|
||||
}
|
||||
|
||||
/*
|
||||
Distance from box
|
||||
*/
|
||||
RectDistanceSquared( origin )
|
||||
{
|
||||
dx = 0;
|
||||
@ -1071,6 +1083,9 @@ inLastStand()
|
||||
return self [[func]]();
|
||||
}
|
||||
|
||||
/*
|
||||
Is reviving player
|
||||
*/
|
||||
isReviving( revivee )
|
||||
{
|
||||
func = GetFunction( "maps/_laststand", "is_reviving" );
|
||||
@ -1122,3 +1137,204 @@ isWeaponPrimary( weap )
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Checks whether the path generated by the ASTAR path finding is inaccessible
|
||||
*/
|
||||
GetPathIsInaccessible( from, to, team, best_effort )
|
||||
{
|
||||
if ( isDefined( best_effort ) )
|
||||
{
|
||||
path = generatePath( from, to, team, level.bot_allowed_negotiation_links, best_effort );
|
||||
}
|
||||
else
|
||||
{
|
||||
path = generatePath( from, to, team, level.bot_allowed_negotiation_links );
|
||||
}
|
||||
|
||||
return ( !isDefined( path ) || ( path.size <= 0 ) );
|
||||
}
|
||||
|
||||
/*
|
||||
Returns how long the path is
|
||||
*/
|
||||
get_path_dist( start, end, team )
|
||||
{
|
||||
path = generatePath( start, end, team, level.bot_allowed_negotiation_links, 192.0 );
|
||||
|
||||
if ( !isDefined( path ) || path.size <= 0 )
|
||||
{
|
||||
return 999999999;
|
||||
}
|
||||
|
||||
dist = 0;
|
||||
prev_node = undefined;
|
||||
|
||||
for ( i = 0; i < path.size; i++ )
|
||||
{
|
||||
if ( i == 0 )
|
||||
{
|
||||
prev_node = path[ i ];
|
||||
continue;
|
||||
}
|
||||
|
||||
dist += distance( prev_node.origin, path[ i ].origin );
|
||||
prev_node = path[ i ];
|
||||
}
|
||||
|
||||
return dist;
|
||||
}
|
||||
|
||||
/*
|
||||
Clamp lerp,
|
||||
*/
|
||||
ClampLerp( dist, min_dist, max_dist, max_bonus, min_bonus )
|
||||
{
|
||||
answer = 0;
|
||||
|
||||
if ( dist <= min_dist )
|
||||
{
|
||||
answer += max_bonus;
|
||||
}
|
||||
else if ( dist >= max_dist )
|
||||
{
|
||||
answer += min_bonus;
|
||||
}
|
||||
else
|
||||
{
|
||||
dist_multi = 1 - ( ( dist - min_dist ) / ( max_dist - min_dist ) );
|
||||
answer += min_bonus + ( ( max_bonus - min_bonus ) * dist_multi );
|
||||
}
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
/*
|
||||
Base an origin offset from an ent
|
||||
*/
|
||||
get_angle_offset_node( forward_size, angle_offset, offset )
|
||||
{
|
||||
if ( !isDefined( forward_size ) )
|
||||
{
|
||||
forward_size = 40;
|
||||
}
|
||||
|
||||
if ( !isDefined( angle_offset ) )
|
||||
{
|
||||
angle_offset = ( 0, 0, 0 );
|
||||
}
|
||||
|
||||
if ( !isDefined( offset ) )
|
||||
{
|
||||
offset = ( 0, 0, 0 );
|
||||
}
|
||||
|
||||
angles = ( 0, self.angles[ 1 ], 0 );
|
||||
angles += angle_offset;
|
||||
node = self.origin + ( AnglesToForward( angles ) * forward_size ) + offset;
|
||||
node = clamp_to_ground( node );
|
||||
|
||||
if ( getDvarInt( "bots_main_debug" ) )
|
||||
{
|
||||
self thread debug_offset_line( node );
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
/*
|
||||
Draw the offset
|
||||
*/
|
||||
debug_offset_line( node )
|
||||
{
|
||||
self endon( "death" );
|
||||
self notify( "debug_offset_line" );
|
||||
self endon( "debug_offset_line" );
|
||||
|
||||
while ( isDefined( self ) )
|
||||
{
|
||||
line( self.origin, node );
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Is the point inside this use trigger?
|
||||
*/
|
||||
PointInsideUseTrigger( point )
|
||||
{
|
||||
if ( getDvarInt( "bots_main_debug" ) )
|
||||
{
|
||||
self thread debug_bounding_box_for_ent();
|
||||
}
|
||||
|
||||
mins = self getmins();
|
||||
maxs = self getmaxs();
|
||||
|
||||
box = spawnstruct();
|
||||
box.x0 = self.origin[0] + mins[0];
|
||||
box.x1 = self.origin[0] + maxs[0];
|
||||
box.y0 = self.origin[1] + mins[1];
|
||||
box.y1 = self.origin[1] + maxs[1];
|
||||
box.z0 = self.origin[2] + mins[2];
|
||||
box.z1 = self.origin[2] + maxs[2];
|
||||
|
||||
if ( box RectDistanceSquared( self.origin ) > 72 * 72 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !sightTracePassed( point, self.origin, false, undefined ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
Draw the aabb of the ent
|
||||
*/
|
||||
debug_bounding_box_for_ent( color )
|
||||
{
|
||||
self endon( "death" );
|
||||
self notify( "debug_bounding_box_for_ent" );
|
||||
self endon( "debug_bounding_box_for_ent" );
|
||||
|
||||
if ( !isDefined( color ) )
|
||||
color = ( randomFloatRange( 0, 1 ), randomFloatRange( 0, 1 ), randomFloatRange( 0, 1 ) );
|
||||
|
||||
while ( isDefined( self ) )
|
||||
{
|
||||
mins = self getmins();
|
||||
maxs = self getmaxs();
|
||||
|
||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], mins[1], maxs[2] ), color );
|
||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( maxs[0], mins[1], mins[2] ), color );
|
||||
|
||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
||||
|
||||
line( self.origin + ( maxs[0], mins[1], mins[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( maxs[0], mins[1], mins[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
||||
|
||||
line( self.origin + ( mins[0], mins[1], maxs[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
||||
line( self.origin + ( mins[0], mins[1], maxs[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
||||
|
||||
line( self.origin + ( mins[0], maxs[1], mins[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( mins[0], maxs[1], mins[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Clamp the origin to the ground
|
||||
*/
|
||||
clamp_to_ground( org )
|
||||
{
|
||||
trace = playerPhysicsTrace( org + ( 0, 0, 20 ), org - ( 0, 0, 2000 ) );
|
||||
return trace;
|
||||
}
|
||||
|
@ -139,14 +139,14 @@ bot_objective_think()
|
||||
}
|
||||
|
||||
// already on a better obj
|
||||
if ( self HasBotObjective() && ( best_prio.GUID == self.bot_current_objective.GUID || best_prio.fPriority < self [[self.bot_current_objective.eParentObj.fpPriorty]]( self.bot_current_objective.eParentObj, self.bot_current_objective.eEnt ) ) )
|
||||
if ( isDefined( self.bot_current_objective ) && ( best_prio.GUID == self.bot_current_objective.GUID || best_prio.fPriority < self [[self.bot_current_objective.eParentObj.fpPriorty]]( self.bot_current_objective.eParentObj, self.bot_current_objective.eEnt ) ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// DO THE OBJ
|
||||
// cancel the old obj
|
||||
if ( self HasBotObjective() )
|
||||
if ( isDefined( self.bot_current_objective ) )
|
||||
{
|
||||
// cancel it
|
||||
self CancelObjective( "new obj: " + best_prio.sName );
|
||||
|
@ -104,7 +104,7 @@ Finder( eObj )
|
||||
continue;
|
||||
}
|
||||
|
||||
answer[answer.size] = self CreateFinderObjective( eObj, eObj.sName + "_" + vending GetEntityNumber(), vending, self [[eObj.fpPriorty]]( eObj, vending ) );
|
||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, vending );
|
||||
}
|
||||
|
||||
return answer;
|
||||
@ -174,7 +174,7 @@ Priority( eObj, eEnt )
|
||||
base_priority = 2;
|
||||
base_priority += ClampLerp( get_path_dist( self.origin, eEnt.origin ), 500, 1600, 3, 0 );
|
||||
|
||||
if ( self HasBotObjective() && self.bot_current_objective.eEnt != eEnt )
|
||||
if ( self HasBotObjective() && self GetBotObjectiveEnt() != eEnt )
|
||||
{
|
||||
base_priority -= 1;
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ Finder( eObj )
|
||||
continue;
|
||||
}
|
||||
|
||||
answer[answer.size] = self CreateFinderObjective( eObj, eObj.sName + "_" + ents[i] GetEntityNumber(), ents[i], self [[eObj.fpPriorty]]( eObj, ents[i] ) );
|
||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, ents[i] );
|
||||
}
|
||||
|
||||
return answer;
|
||||
@ -46,7 +46,7 @@ Priority( eObj, eEnt )
|
||||
base_priority = 0;
|
||||
base_priority += ClampLerp( get_path_dist( self.origin, eEnt.origin ), 300, 700, 2, -2 );
|
||||
|
||||
if ( self HasBotObjective() && self.bot_current_objective.eEnt != eEnt )
|
||||
if ( self HasBotObjective() && self GetBotObjectiveEnt() != eEnt )
|
||||
{
|
||||
base_priority -= 1;
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ Finder( eObj )
|
||||
continue;
|
||||
}
|
||||
|
||||
Answer[Answer.size] = self CreateFinderObjective( eObj, eObj.sName + "_" + Player GetEntityNumber(), Player, self [[eObj.fpPriorty]]( eObj, Player ) );
|
||||
Answer[Answer.size] = self CreateFinderObjectiveEZ( eObj, Player );
|
||||
}
|
||||
|
||||
return Answer;
|
||||
@ -58,7 +58,7 @@ Priority( eObj, eEnt )
|
||||
base_priority = 3;
|
||||
base_priority += ClampLerp( get_path_dist( self.origin, eEnt.origin ), 500, 1200, 2, 0 );
|
||||
|
||||
if ( self HasBotObjective() && self.bot_current_objective.eEnt != eEnt )
|
||||
if ( self HasBotObjective() && self GetBotObjectiveEnt() != eEnt )
|
||||
{
|
||||
base_priority -= 1;
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ Finder( eObj )
|
||||
continue;
|
||||
}
|
||||
|
||||
answer[answer.size] = self CreateFinderObjective( eObj, eObj.sName + "_" + chest GetEntityNumber(), chest, self [[eObj.fpPriorty]]( eObj, chest ) );
|
||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, chest );
|
||||
}
|
||||
|
||||
return answer;
|
||||
@ -99,7 +99,7 @@ Priority( eObj, eEnt )
|
||||
base_priority = 1;
|
||||
base_priority += ClampLerp( get_path_dist( self.origin, eEnt.origin ), 600, 1800, 2, 0 );
|
||||
|
||||
if ( self HasBotObjective() && self.bot_current_objective.eEnt != eEnt )
|
||||
if ( self HasBotObjective() && self GetBotObjectiveEnt() != eEnt )
|
||||
{
|
||||
base_priority -= 1;
|
||||
}
|
||||
|
@ -17,6 +17,11 @@ CreateObjectiveForManger( sName, fpFinder, fpPriorty, fpExecuter, iProcessRate )
|
||||
return Answer;
|
||||
}
|
||||
|
||||
CreateFinderObjectiveEZ( eObj, eEnt )
|
||||
{
|
||||
return self CreateFinderObjective( eObj, eObj.sName + "_" + eEnt GetEntityNumber(), eEnt, self [[eObj.fpPriorty]]( eObj, eEnt ) );
|
||||
}
|
||||
|
||||
CreateFinderObjective( eObj, sName, eEnt, fPriority )
|
||||
{
|
||||
Answer = SpawnStruct();
|
||||
@ -33,71 +38,6 @@ CreateFinderObjective( eObj, sName, eEnt, fPriority )
|
||||
return Answer;
|
||||
}
|
||||
|
||||
/*
|
||||
Checks whether the path generated by the ASTAR path finding is inaccessible
|
||||
*/
|
||||
GetPathIsInaccessible( from, to, team, best_effort )
|
||||
{
|
||||
if ( isDefined( best_effort ) )
|
||||
{
|
||||
path = generatePath( from, to, team, level.bot_allowed_negotiation_links, best_effort );
|
||||
}
|
||||
else
|
||||
{
|
||||
path = generatePath( from, to, team, level.bot_allowed_negotiation_links );
|
||||
}
|
||||
|
||||
return ( !isDefined( path ) || ( path.size <= 0 ) );
|
||||
}
|
||||
|
||||
get_path_dist( start, end, team )
|
||||
{
|
||||
path = generatePath( start, end, team, level.bot_allowed_negotiation_links, 192.0 );
|
||||
|
||||
if ( !isDefined( path ) || path.size <= 0 )
|
||||
{
|
||||
return 999999999;
|
||||
}
|
||||
|
||||
dist = 0;
|
||||
prev_node = undefined;
|
||||
|
||||
for ( i = 0; i < path.size; i++ )
|
||||
{
|
||||
if ( i == 0 )
|
||||
{
|
||||
prev_node = path[ i ];
|
||||
continue;
|
||||
}
|
||||
|
||||
dist += distance( prev_node.origin, path[ i ].origin );
|
||||
prev_node = path[ i ];
|
||||
}
|
||||
|
||||
return dist;
|
||||
}
|
||||
|
||||
ClampLerp( dist, min_dist, max_dist, max_bonus, min_bonus )
|
||||
{
|
||||
answer = 0;
|
||||
|
||||
if ( dist <= min_dist )
|
||||
{
|
||||
answer += max_bonus;
|
||||
}
|
||||
else if ( dist >= max_dist )
|
||||
{
|
||||
answer += min_bonus;
|
||||
}
|
||||
else
|
||||
{
|
||||
dist_multi = 1 - ( ( dist - min_dist ) / ( max_dist - min_dist ) );
|
||||
answer += min_bonus + ( ( max_bonus - min_bonus ) * dist_multi );
|
||||
}
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
GetBotsAmountForEntity( eEnt )
|
||||
{
|
||||
if ( !isDefined( eEnt.bots ) )
|
||||
@ -147,122 +87,28 @@ CompletedObjective( successful, reason )
|
||||
self notify( "completed_bot_objective", successful, reason );
|
||||
}
|
||||
|
||||
GetBotObjectiveEnt()
|
||||
{
|
||||
if ( !self HasBotObjective() )
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return self GetBotObjective().eEnt;
|
||||
}
|
||||
|
||||
/*
|
||||
Gets bot objective
|
||||
*/
|
||||
GetBotObjective()
|
||||
{
|
||||
return self.bot_current_objective;
|
||||
}
|
||||
|
||||
/*
|
||||
Does the bot have an objective?
|
||||
*/
|
||||
HasBotObjective()
|
||||
{
|
||||
return isDefined( self.bot_current_objective );
|
||||
}
|
||||
|
||||
get_angle_offset_node( forward_size, angle_offset, offset )
|
||||
{
|
||||
if ( !isDefined( forward_size ) )
|
||||
{
|
||||
forward_size = 40;
|
||||
}
|
||||
|
||||
if ( !isDefined( angle_offset ) )
|
||||
{
|
||||
angle_offset = ( 0, 0, 0 );
|
||||
}
|
||||
|
||||
if ( !isDefined( offset ) )
|
||||
{
|
||||
offset = ( 0, 0, 0 );
|
||||
}
|
||||
|
||||
angles = ( 0, self.angles[ 1 ], 0 );
|
||||
angles += angle_offset;
|
||||
node = self.origin + ( AnglesToForward( angles ) * forward_size ) + offset;
|
||||
node = clamp_to_ground( node );
|
||||
|
||||
if ( getDvarInt( "bots_main_debug" ) )
|
||||
{
|
||||
self thread debug_offset_line( node );
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
debug_offset_line( node )
|
||||
{
|
||||
self endon( "death" );
|
||||
self notify( "debug_offset_line" );
|
||||
self endon( "debug_offset_line" );
|
||||
|
||||
while ( isDefined( self ) )
|
||||
{
|
||||
line( self.origin, node );
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
PointInsideUseTrigger( point )
|
||||
{
|
||||
if ( getDvarInt( "bots_main_debug" ) )
|
||||
{
|
||||
self thread debug_bounding_box_for_ent();
|
||||
}
|
||||
|
||||
mins = self getmins();
|
||||
maxs = self getmaxs();
|
||||
|
||||
box = spawnstruct();
|
||||
box.x0 = self.origin[0] + mins[0];
|
||||
box.x1 = self.origin[0] + maxs[0];
|
||||
box.y0 = self.origin[1] + mins[1];
|
||||
box.y1 = self.origin[1] + maxs[1];
|
||||
box.z0 = self.origin[2] + mins[2];
|
||||
box.z1 = self.origin[2] + maxs[2];
|
||||
|
||||
if ( box RectDistanceSquared( self.origin ) > 72 * 72 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !sightTracePassed( point, self.origin, false, undefined ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
debug_bounding_box_for_ent( color )
|
||||
{
|
||||
self endon( "death" );
|
||||
self notify( "debug_bounding_box_for_ent" );
|
||||
self endon( "debug_bounding_box_for_ent" );
|
||||
|
||||
if ( !isDefined( color ) )
|
||||
color = ( randomFloatRange( 0, 1 ), randomFloatRange( 0, 1 ), randomFloatRange( 0, 1 ) );
|
||||
|
||||
while ( isDefined( self ) )
|
||||
{
|
||||
mins = self getmins();
|
||||
maxs = self getmaxs();
|
||||
|
||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], mins[1], maxs[2] ), color );
|
||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( maxs[0], mins[1], mins[2] ), color );
|
||||
|
||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
||||
|
||||
line( self.origin + ( maxs[0], mins[1], mins[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( maxs[0], mins[1], mins[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
||||
|
||||
line( self.origin + ( mins[0], mins[1], maxs[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
||||
line( self.origin + ( mins[0], mins[1], maxs[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
||||
|
||||
line( self.origin + ( mins[0], maxs[1], mins[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
||||
line( self.origin + ( mins[0], maxs[1], mins[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
clamp_to_ground( org )
|
||||
{
|
||||
trace = playerPhysicsTrace( org + ( 0, 0, 20 ), org - ( 0, 0, 2000 ) );
|
||||
return trace;
|
||||
return isDefined( self GetBotObjective() );
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ Finder( eObj )
|
||||
continue;
|
||||
}
|
||||
|
||||
answer[answer.size] = self CreateFinderObjective( eObj, eObj.sName + "_" + weapon_spawns[i] GetEntityNumber(), weapon_spawns[i], self [[eObj.fpPriorty]]( eObj, weapon_spawns[i] ) );
|
||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, weapon_spawns[i] );
|
||||
}
|
||||
|
||||
return answer;
|
||||
@ -107,7 +107,7 @@ Priority( eObj, eEnt )
|
||||
base_priority = 0;
|
||||
base_priority += ClampLerp( get_path_dist( self.origin, eEnt.origin ), 0, 800, 1, -2 );
|
||||
|
||||
if ( self HasBotObjective() && self.bot_current_objective.eEnt != eEnt )
|
||||
if ( self HasBotObjective() && self GetBotObjectiveEnt() != eEnt )
|
||||
{
|
||||
base_priority -= 1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user