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" );
targetAnkleRight = enemy getTagOrigin( "j_ankle_ri" );
}
else
else if ( !enemy targetIsGibbed() )
{
targetHead = enemy getTagOrigin( "j_head" );
targetAnkleLeft = enemy getTagOrigin( "j_ankle_le" );
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 );
traceAnkleLeft = bulletTrace( myEye, targetAnkleLeft, false, enemy );
@ -676,12 +682,16 @@ target()
selectBoneForTarget( enemy, bones )
{
if ( enemy targetIsDog() )
{
return "j_head";
}
else if ( !enemy targetIsGibbed() )
{
return PickRandom( bones );
}
else
{
return PickRandom( bones );
return "j_spineupper";
}
}

View File

@ -8,6 +8,8 @@
added()
{
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.
*/

View File

@ -993,7 +993,18 @@ getRandomGoal()
return PickRandom( level.waypointsInPlayableArea ).origin;
}
/*
Checks if target is dog
*/
targetIsDog()
{
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;
// guy.killingAll = true;
weapon = "zombie_thompson";
weapon = "ray_gun";
guy giveWeapon( weapon ); // ptrs41_zombie zombie_doublebarrel
guy switchToWeapon( weapon ); // colt_dirty_harry
//guy thread walk_to_player();
//guy thread do_move();
/*
while ( isDefined( guy ) )
{
if ( isDefined( level.isPlayerDead ) && [[level.isPlayerDead]]( guy ) )
@ -243,6 +244,7 @@ addBot()
wait 0.05;
}
*/
}
onPlayerConnect()