mirror of
https://github.com/ineedbots/iw5_bot_warfare.git
synced 2025-04-25 23:29:12 +00:00
Bots call in some streaks
This commit is contained in:
parent
8679a97ac6
commit
39aa881f2c
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user