Bots call in some streaks

This commit is contained in:
ineedbots 2021-05-22 21:57:02 -06:00
parent 8679a97ac6
commit 39aa881f2c

View File

@ -1617,7 +1617,7 @@ start_bot_threads()
// inventory usage // inventory usage
if (getDvarInt("bots_play_killstreak")) if (getDvarInt("bots_play_killstreak"))
{ {
// self thread bot_killstreak_think(); self thread bot_killstreak_think();
self thread bot_box_think(); self thread bot_box_think();
} }
@ -3163,7 +3163,7 @@ bot_listen_to_steps()
break; break;
} }
hasHeartbeat = (isSubStr(self GetCurrentWeapon(), "_heartbeat") && !self IsEMPed() && !self isNuked()); hasHeartbeat = (isSubStr(self GetCurrentWeapon(), "_heartbeat") && ((!self IsEMPed() && !self isNuked()) || self _hasPerk("specialty_spygame")));
heartbeatDist = 350*350; heartbeatDist = 350*350;
if(!IsDefined(heard) && hasHeartbeat) if(!IsDefined(heard) && hasHeartbeat)
@ -4057,7 +4057,7 @@ getKillstreakTargetLocation()
continue; continue;
if(!isReallyAlive(player)) if(!isReallyAlive(player))
continue; continue;
if(player _hasPerk("specialty_coldblooded")) if(player _hasPerk("specialty_blindeye"))
continue; continue;
if(!bulletTracePassed(player.origin, player.origin+(0,0,2048), false, player) && self.pers["bots"]["skill"]["base"] > 3) if(!bulletTracePassed(player.origin, player.origin+(0,0,2048), false, player) && self.pers["bots"]["skill"]["base"] > 3)
continue; continue;
@ -4092,33 +4092,6 @@ clear_remote_on_death(isac130)
self ClearUsingRemote(); self ClearUsingRemote();
} }
/*
Returns if any harriers exists that is an enemy
*/
isAnyEnemyPlanes()
{
if (!isDefined(level.harriers))
return false;
for (i = 0; i < level.harriers.size; i++)
{
plane = level.harriers[i];
if (!isDefined(plane))
continue;
if (level.teamBased && plane.team == self.team)
continue;
if (isDefined(plane.owner) && plane.owner == self)
continue;
return true;
}
return false;
}
/* /*
Bots think to use killstreaks Bots think to use killstreaks
*/ */
@ -4128,20 +4101,15 @@ bot_killstreak_think()
self endon("death"); self endon("death");
level endon("game_ended"); level endon("game_ended");
doFastContinue = false; doFastContinue = undefined;
for (;;) for (;;)
{ {
if (doFastContinue) if (!isDefined(doFastContinue))
doFastContinue = false;
else
{ {
wait randomIntRange(1, 3); wait randomIntRange(1, 3);
} }
if ( !isDefined( self.pers["killstreaks"][0] ) )
continue;
if(self BotIsFrozen()) if(self BotIsFrozen())
continue; continue;
@ -4151,7 +4119,7 @@ bot_killstreak_think()
if(self isDefusing() || self isPlanting()) if(self isDefusing() || self isPlanting())
continue; continue;
if (self isEMPed()) if (self isEMPed() || self isNuked())
continue; continue;
if (self IsUsingRemote()) if (self IsUsingRemote())
@ -4160,7 +4128,33 @@ bot_killstreak_think()
if (self InLastStand() && !self InFinalStand()) if (self InLastStand() && !self InFinalStand())
continue; continue;
streakName = self.pers["killstreaks"][0].streakName; useableStreaks = [];
if (!isDefined(doFastContinue))
{
if (self.pers["killstreaks"][0].available)
useableStreaks[useableStreaks.size] = 0;
if (self.pers["killstreaks"][1].available && self.streakType != "specialist")
useableStreaks[useableStreaks.size] = 1;
if (self.pers["killstreaks"][2].available && self.streakType != "specialist")
useableStreaks[useableStreaks.size] = 2;
if (self.pers["killstreaks"][3].available && self.streakType != "specialist")
useableStreaks[useableStreaks.size] = 3;
}
else
{
useableStreaks[0] = doFastContinue;
doFastContinue = undefined;
}
if (!useableStreaks.size)
continue;
self.killstreakIndexWeapon = random(useableStreaks);
streakName = self.pers["killstreaks"][self.killstreakIndexWeapon].streakName;
if (level.inGracePeriod && maps\mp\killstreaks\_killstreaks::deadlyKillstreak(streakName)) if (level.inGracePeriod && maps\mp\killstreaks\_killstreaks::deadlyKillstreak(streakName))
continue; continue;
@ -4175,12 +4169,11 @@ bot_killstreak_think()
if (!isDefined(lifeId)) if (!isDefined(lifeId))
lifeId = -1; lifeId = -1;
if (isStrStart(streakName, "helicopter_") && self isAnyEnemyPlanes() && self.pers["bots"]["skill"]["base"] > 3) print (self.name + " " + streakName);
continue;
if (maps\mp\killstreaks\_killstreaks::isRideKillstreak(streakName) || maps\mp\killstreaks\_killstreaks::isCarryKillstreak(streakName)) if (maps\mp\killstreaks\_killstreaks::isRideKillstreak(streakName) || maps\mp\killstreaks\_killstreaks::isCarryKillstreak(streakName))
{ {
if (self inLastStand()) if (self inLastStand() || true)
continue; continue;
if (lifeId == self.deaths && !self HasScriptGoal() && !self.bot_lock_goal && streakName != "sentry" && !self nearAnyOfWaypoints(128, level.waypointsCamp)) if (lifeId == self.deaths && !self HasScriptGoal() && !self.bot_lock_goal && streakName != "sentry" && !self nearAnyOfWaypoints(128, level.waypointsCamp))
@ -4325,7 +4318,7 @@ bot_killstreak_think()
{ {
if (streakName == "airdrop_mega" || streakName == "airdrop_sentry_minigun" || streakName == "airdrop") if (streakName == "airdrop_mega" || streakName == "airdrop_sentry_minigun" || streakName == "airdrop")
{ {
if (self HasScriptAimPos()) if (self HasScriptAimPos() || true)
continue; continue;
if (streakName != "airdrop_mega" && level.littleBirds > 2) if (streakName != "airdrop_mega" && level.littleBirds > 2)
@ -4377,26 +4370,39 @@ bot_killstreak_think()
} }
else else
{ {
if (streakName == "harrier_airstrike" && level.planes > 1)
continue;
if (streakName == "nuke" && isDefined( level.nukeIncoming )) if (streakName == "nuke" && isDefined( level.nukeIncoming ))
continue; continue;
if (streakName == "counter_uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeCounterUAVs[self.team]) || (!level.teamBased && level.activeCounterUAVs[self.guid]))) if (streakName == "counter_uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeCounterUAVs[self.team]) || (!level.teamBased && level.activeCounterUAVs[self.guid])))
continue; continue;
if (streakName == "uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && (level.activeUAVs[self.team] || level.activeCounterUAVs[level.otherTeam[self.team]])) || (!level.teamBased && (level.activeUAVs[self.guid] || self.isRadarBlocked)))) if ((streakName == "uav" || streakName == "uav_support" || streakName == "triple_uav") && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && (level.activeUAVs[self.team] || level.activeCounterUAVs[level.otherTeam[self.team]])) || (!level.teamBased && (level.activeUAVs[self.guid] || self.isRadarBlocked))))
continue; continue;
if (streakName == "emp" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.teamEMPed[level.otherTeam[self.team]]) || (!level.teamBased && isDefined( level.empPlayer )))) if (streakName == "emp" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.teamEMPed[level.otherTeam[self.team]]) || (!level.teamBased && isDefined( level.empPlayer ))))
continue; continue;
if (streakName == "littlebird_flock" || streakName == "helicopter" || streakName == "helicopter_flares" || streakName == "littlebird_support")
{
numIncomingVehicles = 1;
if (streakName == "littlebird_flock")
numIncomingVehicles = 5;
if (currentActiveVehicleCount() >= maxVehiclesAllowed() || level.fauxVehicleCount + numIncomingVehicles >= maxVehiclesAllowed())
continue;
if (streakName == "helicopter" && isDefined( level.chopper ))
continue;
if (streakName == "littlebird_support" && (isDefined( level.littlebirdGuard ) || maps\mp\killstreaks\_helicopter::exceededMaxLittlebirds( "littlebird_support" )))
continue;
}
location = undefined; location = undefined;
directionYaw = undefined; directionYaw = undefined;
switch (streakName) switch (streakName)
{ {
case "harrier_airstrike": case "littlebird_flock":
case "stealth_airstrike": case "stealth_airstrike":
case "precision_airstrike": case "precision_airstrike":
location = self getKillstreakTargetLocation(); location = self getKillstreakTargetLocation();
@ -4406,9 +4412,12 @@ bot_killstreak_think()
continue; continue;
case "helicopter": case "helicopter":
case "helicopter_flares": case "helicopter_flares":
case "littlebird_support":
case "uav": case "uav":
case "nuke": case "uav_support":
case "counter_uav": case "counter_uav":
case "triple_uav":
case "nuke":
case "emp": case "emp":
self BotStopMoving(true); self BotStopMoving(true);