This commit is contained in:
ineed bots
2024-03-11 14:15:37 -06:00
parent e75ebddafa
commit 1b7b9242ae
4 changed files with 92 additions and 53 deletions

View File

@ -41,6 +41,9 @@ This mod extends the functionality and features of Combat Training in Black Ops
- Bots have a slight delay after spawning, scales inversely with difficulty. - Bots have a slight delay after spawning, scales inversely with difficulty.
- Bots can reroll carepackages. - Bots can reroll carepackages.
- Bots can use the valkyrie rocket carepackage streak. - Bots can use the valkyrie rocket carepackage streak.
- Bots can melee lunge.
- Bots can jumpshot and dropshot.
- Bots can use altmode weapons (gl, ft, mk)
## Installation ## Installation
0. Download the [latest release](https://github.com/ineedbots/t5_bot_warfare/releases) of Bot Warfare. 0. Download the [latest release](https://github.com/ineedbots/t5_bot_warfare/releases) of Bot Warfare.
@ -84,6 +87,14 @@ This mod extends the functionality and features of Combat Training in Black Ops
| bots_play_aim | If the bots can aim. | 1 | | bots_play_aim | If the bots can aim. | 1 |
## Changelog ## Changelog
- v1.2.0
- Bots can now melee lunge
- Bots can now jumpshot and dropshot
- Fix some script runtime errors
- Improved bots using altmode weapons
- Reduced variable usage
- Major cleanup
- v1.1.1 - v1.1.1
- Fixed some script runtime errors - Fixed some script runtime errors
- Improved domination - Improved domination

View File

@ -168,13 +168,14 @@ bot_on_spawn()
self waittill( "spawned_player" ); self waittill( "spawned_player" );
self BotBuiltinClearOverrides( true ); self BotBuiltinClearOverrides( true );
self BotBuiltinWeaponOverride( self getcurrentweapon() ); self BotBuiltinWeaponOverride( self getcurrentweapon() );
self.bot_is_doing_some_other_override = false;
self.bot_lock_goal = false; self.bot_lock_goal = false;
self.help_time = undefined; self.help_time = undefined;
self.bot_was_follow_script_update = undefined; self.bot_was_follow_script_update = undefined;
self.bot_attacking_plane = false; self.bot_attacking_plane = false;
// grenade c4 watcher // todo: grenade c4 watcher
self thread bot_spawn(); self thread bot_spawn();
} }
} }
@ -394,6 +395,7 @@ bot_spawn()
self thread bot_revive_think(); self thread bot_revive_think();
// todo:
// stockpile.gsc // stockpile.gsc
// hotel.gsc // hotel.gsc
// kowloon.gsc // kowloon.gsc
@ -423,7 +425,7 @@ bot_spawn()
self thread bot_uav_think(); self thread bot_uav_think();
self thread bot_weapon_think(); self thread bot_weapon_think();
// reload cancel // todo: reload cancel
self thread bot_listen_to_steps(); self thread bot_listen_to_steps();
self thread bot_revenge_think(); self thread bot_revenge_think();
self thread follow_target(); self thread follow_target();
@ -680,6 +682,7 @@ bot_wait_stop_move()
*/ */
BotUseRandomEquipment() BotUseRandomEquipment()
{ {
// todo
} }
/* /*
@ -687,6 +690,7 @@ BotUseRandomEquipment()
*/ */
BotLookAtRandomThing( obj_target ) BotLookAtRandomThing( obj_target )
{ {
// todo
} }
/* /*
@ -741,6 +745,7 @@ fire_c4()
for ( ;; ) for ( ;; )
{ {
// todo
// self thread BotPressAds( 0.05 ); // self thread BotPressAds( 0.05 );
wait 0.1; wait 0.1;
} }
@ -2477,6 +2482,10 @@ bot_plane_attack( plane )
self botStopMove( true ); self botStopMove( true );
self.bot_attacking_plane = true; self.bot_attacking_plane = true;
if ( !self.bot_is_doing_some_other_override )
{
self.bot_is_doing_some_other_override = true;
if ( self changeToWeapon( weap ) ) if ( self changeToWeapon( weap ) )
{ {
self do_bot_plane_combat( plane, weap ); self do_bot_plane_combat( plane, weap );
@ -2486,6 +2495,9 @@ bot_plane_attack( plane )
self BotBuiltinClearButtonOverride( "ads" ); self BotBuiltinClearButtonOverride( "ads" );
} }
self.bot_is_doing_some_other_override = false;
}
self botStopMove( false ); self botStopMove( false );
self.bot_attacking_plane = false; self.bot_attacking_plane = false;
self notify( "bot_force_check_switch" ); self notify( "bot_force_check_switch" );
@ -6376,6 +6388,10 @@ watch_for_melee_override()
{ {
dist = distance( self.origin, threat.origin ); dist = distance( self.origin, threat.origin );
if ( !self.bot_is_doing_some_other_override )
{
self.bot_is_doing_some_other_override = true;
if ( self isonground() && self getstance() != "prone" && !self inLastStand() && dist < getdvarfloat( "aim_automelee_range" ) && ( getConeDot( threat.origin, self.origin, self getplayerangles() ) > 0.9 || dist < 10 ) ) if ( self isonground() && self getstance() != "prone" && !self inLastStand() && dist < getdvarfloat( "aim_automelee_range" ) && ( getConeDot( threat.origin, self.origin, self getplayerangles() ) > 0.9 || dist < 10 ) )
{ {
angles = vectortoangles( threat.origin - self.origin ); angles = vectortoangles( threat.origin - self.origin );
@ -6407,10 +6423,14 @@ watch_for_melee_override()
self BotBuiltinClearMeleeParams(); self BotBuiltinClearMeleeParams();
self BotBuiltinClearAimOverride(); self BotBuiltinClearAimOverride();
wait 1; wait 1;
break; break;
} }
self.bot_is_doing_some_other_override = false;
}
wait 0.05; wait 0.05;
thisThreat = self getthreat(); thisThreat = self getthreat();
} }
@ -6480,6 +6500,10 @@ watch_for_override_stuff()
weapon_is_good = false; weapon_is_good = false;
} }
if ( !self.bot_is_doing_some_other_override )
{
self.bot_is_doing_some_other_override = true;
if ( weapon_is_good && ( dist > NEAR_DIST ) && ( dist < LONG_DIST ) && ( randomint( 100 ) < chance ) && ( ( time - last_jump_time ) > SPAM_JUMP_TIME ) ) if ( weapon_is_good && ( dist > NEAR_DIST ) && ( dist < LONG_DIST ) && ( randomint( 100 ) < chance ) && ( ( time - last_jump_time ) > SPAM_JUMP_TIME ) )
{ {
if ( randomint( 2 ) ) if ( randomint( 2 ) )
@ -6513,6 +6537,9 @@ watch_for_override_stuff()
} }
} }
self.bot_is_doing_some_other_override = false;
}
thisThreat = self getthreat(); thisThreat = self getthreat();
while ( isdefined( thisThreat ) && isdefined( threat ) && thisThreat == threat ) while ( isdefined( thisThreat ) && isdefined( threat ) && thisThreat == threat )

View File

@ -760,6 +760,7 @@ botStopMove( what )
*/ */
BotSetStance( what ) BotSetStance( what )
{ {
// todo! make these all proper!
} }
/* /*

View File

@ -15,7 +15,7 @@
*/ */
init() init()
{ {
level.bw_version = "1.1.1"; level.bw_version = "1.2.0";
level.bot_offline = false; level.bot_offline = false;