mirror of
https://github.com/JezuzLizard/t4sp_bot_warfare.git
synced 2025-04-20 13:35:43 +00:00
fixed wallweapons
This commit is contained in:
parent
2fad2787a0
commit
411a1a047a
@ -171,7 +171,7 @@ onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon,
|
||||
|
||||
onActorDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset )
|
||||
{
|
||||
if ( isDefined( eAttacker ) && isPlayer( eAttacker ) && eAttacker isBot() && getDvarInt( "bots_t8_mode" ) )
|
||||
if ( isDefined( eAttacker ) && isPlayer( eAttacker ) && eAttacker isBot() && getDvarInt( "bots_t8_mode" ) && ( !isDefined( self.magic_bullet_shield ) || !self.magic_bullet_shield ) )
|
||||
{
|
||||
iDamage += int( self.maxhealth * randomFloatRange( 0.25, 1.25 ) );
|
||||
}
|
||||
|
@ -905,7 +905,9 @@ target_loop()
|
||||
( traceAnkleRight["fraction"] >= 1.0 || traceAnkleRight["surfacetype"] == "glass" ) )
|
||||
|
||||
&& ( getConeDot( enemy.origin, self.origin, myAngles ) >= myFov ||
|
||||
( isObjDef && obj.trace_time ) ) );
|
||||
( isObjDef && obj.trace_time ) )
|
||||
|
||||
&& ( !isDefined( enemy.magic_bullet_shield ) || !enemy.magic_bullet_shield ) );
|
||||
|
||||
if ( isDefined( self.bot.target_this_frame ) && self.bot.target_this_frame == enemy )
|
||||
{
|
||||
|
@ -648,6 +648,31 @@ DistanceSquared2D( to, from )
|
||||
return DistanceSquared( to, from );
|
||||
}
|
||||
|
||||
RectDistanceSquared( origin )
|
||||
{
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
dz = 0;
|
||||
|
||||
if ( origin[0] < self.x0 )
|
||||
dx = origin[0] - self.x0;
|
||||
else if ( origin[0] > self.x1 )
|
||||
dx = origin[0] - self.x1;
|
||||
|
||||
if ( origin[1] < self.y0 )
|
||||
dy = origin[1] - self.y0;
|
||||
else if ( origin[1] > self.y1 )
|
||||
dy = origin[1] - self.y1;
|
||||
|
||||
|
||||
if ( origin[2] < self.z0 )
|
||||
dz = origin[2] - self.z0;
|
||||
else if ( origin[2] > self.z1 )
|
||||
dz = origin[2] - self.z1;
|
||||
|
||||
return dx * dx + dy * dy + dz * dz;
|
||||
}
|
||||
|
||||
/*
|
||||
Rounds to the nearest whole number.
|
||||
*/
|
||||
|
@ -189,6 +189,69 @@ debug_offset_line( node )
|
||||
}
|
||||
}
|
||||
|
||||
PointInsideUseTrigger( point )
|
||||
{
|
||||
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 ( !bulletTracePassed( 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 ) );
|
||||
|
@ -68,7 +68,7 @@ Finder( eObj )
|
||||
continue;
|
||||
}
|
||||
|
||||
org = self getOffset( model );
|
||||
org = self getOffset( model, weapon_spawns[ i ] );
|
||||
|
||||
if ( GetPathIsInaccessible( self.origin, org ) )
|
||||
{
|
||||
@ -81,12 +81,16 @@ Finder( eObj )
|
||||
return answer;
|
||||
}
|
||||
|
||||
getOffset( model )
|
||||
getOffset( model, weapon )
|
||||
{
|
||||
// some weapons have 90 offset... how to handle this??
|
||||
angle_off = -90;
|
||||
org = model get_angle_offset_node( 40, ( 0, -90, 0 ), ( 0, 0, 1 ) );
|
||||
|
||||
org = model get_angle_offset_node( 40, ( 0, angle_off, 0 ), ( 0, 0, 1 ) );
|
||||
test_org = ( org[0], org[1], weapon.origin[2] );
|
||||
|
||||
if ( !weapon PointInsideUseTrigger( test_org ) )
|
||||
{
|
||||
org = model get_angle_offset_node( 40, ( 0, 90, 0 ), ( 0, 0, 1 ) );
|
||||
}
|
||||
|
||||
return org;
|
||||
}
|
||||
@ -164,7 +168,7 @@ WatchToGoToWeapon( weapon )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( self IsTouching( weapon ) )
|
||||
if ( self IsTouching( weapon ) || weapon PointInsideUseTrigger( self.origin ) )
|
||||
{
|
||||
self notify( "goal" );
|
||||
break; // is this needed?
|
||||
@ -178,7 +182,7 @@ GoDoWallweapon( eObj )
|
||||
|
||||
weapon = eObj.eEnt;
|
||||
model = getEnt( weapon.target, "targetname" );
|
||||
org = self getOffset( model );
|
||||
org = self getOffset( model, weapon );
|
||||
|
||||
// go to weapon
|
||||
self thread WatchToGoToWeapon( weapon );
|
||||
@ -192,8 +196,7 @@ GoDoWallweapon( eObj )
|
||||
return;
|
||||
}
|
||||
|
||||
// istouching use triggers doesnt work well
|
||||
if ( !self IsTouching( weapon ) && false )
|
||||
if ( !self IsTouching( weapon ) && !weapon PointInsideUseTrigger( self.origin ) )
|
||||
{
|
||||
eObj.sReason = "not touching weapon";
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user