Handle different bones for dogs and gibbed zombies.

Readd difficulty settings.
This commit is contained in:
JezuzLizard 2023-04-30 01:52:00 -07:00
parent dbf6ce6f3e
commit c7558faa47
4 changed files with 84 additions and 3 deletions

View File

@ -545,12 +545,18 @@ target_loop()
targetAnkleLeft = enemy getTagOrigin( "j_ankle_le" ); targetAnkleLeft = enemy getTagOrigin( "j_ankle_le" );
targetAnkleRight = enemy getTagOrigin( "j_ankle_ri" ); targetAnkleRight = enemy getTagOrigin( "j_ankle_ri" );
} }
else else if ( !enemy targetIsGibbed() )
{ {
targetHead = enemy getTagOrigin( "j_head" ); targetHead = enemy getTagOrigin( "j_head" );
targetAnkleLeft = enemy getTagOrigin( "j_ankle_le" ); targetAnkleLeft = enemy getTagOrigin( "j_ankle_le" );
targetAnkleRight = enemy getTagOrigin( "j_ankle_ri" ); targetAnkleRight = enemy getTagOrigin( "j_ankle_ri" );
} }
else
{
targetHead = enemy getTagOrigin( "j_spinelower" );
targetAnkleLeft = enemy getTagOrigin( "j_spinelower" );
targetAnkleRight = enemy getTagOrigin( "j_spinelower" );
}
traceHead = bulletTrace( myEye, targetHead, false, enemy ); traceHead = bulletTrace( myEye, targetHead, false, enemy );
traceAnkleLeft = bulletTrace( myEye, targetAnkleLeft, false, enemy ); traceAnkleLeft = bulletTrace( myEye, targetAnkleLeft, false, enemy );
@ -676,12 +682,16 @@ target()
selectBoneForTarget( enemy, bones ) selectBoneForTarget( enemy, bones )
{ {
if ( enemy targetIsDog() ) if ( enemy targetIsDog() )
{
return "j_head";
}
else if ( !enemy targetIsGibbed() )
{ {
return PickRandom( bones ); return PickRandom( bones );
} }
else else
{ {
return PickRandom( bones ); return "j_spineupper";
} }
} }

View File

@ -8,6 +8,8 @@
added() added()
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self set_diff();
} }
/* /*
@ -272,6 +274,62 @@ difficulty()
} }
} }
/*
Sets the bot difficulty.
*/
set_diff()
{
rankVar = GetDvarInt( "bots_skill" );
switch ( rankVar )
{
case 0:
self.pers["bots"]["skill"]["base"] = Round( random_normal_distribution( 3.5, 1.75, 1, 7 ) );
break;
case 8:
break;
case 9:
self.pers["bots"]["skill"]["base"] = randomIntRange( 1, 7 );
self.pers["bots"]["skill"]["aim_time"] = 0.05 * randomIntRange( 1, 20 );
self.pers["bots"]["skill"]["init_react_time"] = 50 * randomInt( 100 );
self.pers["bots"]["skill"]["reaction_time"] = 50 * randomInt( 100 );
self.pers["bots"]["skill"]["no_trace_ads_time"] = 50 * randomInt( 100 );
self.pers["bots"]["skill"]["no_trace_look_time"] = 50 * randomInt( 100 );
self.pers["bots"]["skill"]["remember_time"] = 50 * randomInt( 100 );
self.pers["bots"]["skill"]["fov"] = randomFloatRange( -1, 1 );
randomNum = randomIntRange( 500, 25000 );
self.pers["bots"]["skill"]["dist_start"] = randomNum;
self.pers["bots"]["skill"]["dist_max"] = randomNum * 2;
self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomInt( 20 );
self.pers["bots"]["skill"]["help_dist"] = randomIntRange( 500, 25000 );
self.pers["bots"]["skill"]["semi_time"] = randomFloatRange( 0.05, 1 );
self.pers["bots"]["skill"]["shoot_after_time"] = randomFloatRange( 0.05, 1 );
self.pers["bots"]["skill"]["aim_offset_time"] = randomFloatRange( 0.05, 1 );
self.pers["bots"]["skill"]["aim_offset_amount"] = randomFloatRange( 0.05, 1 );
self.pers["bots"]["skill"]["bone_update_interval"] = randomFloatRange( 0.05, 1 );
self.pers["bots"]["skill"]["bones"] = "j_head,j_spineupper,j_ankle_ri,j_ankle_le";
self.pers["bots"]["behavior"]["strafe"] = randomInt( 100 );
self.pers["bots"]["behavior"]["nade"] = randomInt( 100 );
self.pers["bots"]["behavior"]["sprint"] = randomInt( 100 );
self.pers["bots"]["behavior"]["camp"] = randomInt( 100 );
self.pers["bots"]["behavior"]["follow"] = randomInt( 100 );
self.pers["bots"]["behavior"]["crouch"] = randomInt( 100 );
self.pers["bots"]["behavior"]["switch"] = randomInt( 100 );
self.pers["bots"]["behavior"]["class"] = randomInt( 100 );
self.pers["bots"]["behavior"]["jump"] = randomInt( 100 );
break;
default:
self.pers["bots"]["skill"]["base"] = rankVar;
break;
}
}
/* /*
When the bot spawned, after the difficulty wait. Start the logic for the bot. When the bot spawned, after the difficulty wait. Start the logic for the bot.
*/ */

View File

@ -993,7 +993,18 @@ getRandomGoal()
return PickRandom( level.waypointsInPlayableArea ).origin; return PickRandom( level.waypointsInPlayableArea ).origin;
} }
/*
Checks if target is dog
*/
targetIsDog() targetIsDog()
{ {
return isDefined( self.targetname ) && self.targetname == "zombie_dog"; return isDefined( self.targetname ) && self.targetname == "zombie_dog";
} }
/*
Checks if target is gibbed
*/
targetIsGibbed()
{
return isDefined( self.gibbed ) && self.gibbed;
}

View File

@ -223,13 +223,14 @@ addBot()
return; return;
// guy.killingAll = true; // guy.killingAll = true;
weapon = "zombie_thompson"; weapon = "ray_gun";
guy giveWeapon( weapon ); // ptrs41_zombie zombie_doublebarrel guy giveWeapon( weapon ); // ptrs41_zombie zombie_doublebarrel
guy switchToWeapon( weapon ); // colt_dirty_harry guy switchToWeapon( weapon ); // colt_dirty_harry
//guy thread walk_to_player(); //guy thread walk_to_player();
//guy thread do_move(); //guy thread do_move();
/*
while ( isDefined( guy ) ) while ( isDefined( guy ) )
{ {
if ( isDefined( level.isPlayerDead ) && [[level.isPlayerDead]]( guy ) ) if ( isDefined( level.isPlayerDead ) && [[level.isPlayerDead]]( guy ) )
@ -243,6 +244,7 @@ addBot()
wait 0.05; wait 0.05;
} }
*/
} }
onPlayerConnect() onPlayerConnect()