diff --git a/maps/mp/bots/_bot.gsc b/maps/mp/bots/_bot.gsc index 99a92d6..3294269 100644 --- a/maps/mp/bots/_bot.gsc +++ b/maps/mp/bots/_bot.gsc @@ -155,6 +155,7 @@ init() level thread onPlayerConnect(); level thread addNotifyOnAirdrops(); level thread watchScrabler(); + level thread watchRadar(); level thread handleBots(); @@ -304,6 +305,58 @@ fixKoth() } } +/* + Watches radars +*/ +watchRadar() +{ + for (;;) + { + wait 1; + + for ( i = level.players.size - 1; i >= 0; i-- ) + { + player = level.players[i]; + player.bot_isInRadar = false; + } + + grenades = getEntArray( "grenade", "classname" ); + + for (i = grenades.size - 1; i >= 0; i--) + { + grenade = grenades[i]; + + if ( !isDefined( grenade ) ) + continue; + + if (!isDefined(grenade.name) || grenade.name != "portable_radar_mp") + continue; + + for ( h = level.players.size - 1; h >= 0; h-- ) + { + player = level.players[h]; + + if (!isReallyAlive(player)) + continue; + + if (isDefined(grenade.owner) && grenade.owner == player) + continue; + + if(level.teamBased && grenade.team == player.team) + continue; + + if (player _hasPerk("specialty_coldblooded")) + continue; + + if (DistanceSquared(player.origin, scrambler.origin) > 256*256) + continue; + + player.bot_isInRadar = true; + } + } + } +} + /* Watches scrambler */ diff --git a/maps/mp/bots/_bot_script.gsc b/maps/mp/bots/_bot_script.gsc index 88f2465..5181602 100644 --- a/maps/mp/bots/_bot_script.gsc +++ b/maps/mp/bots/_bot_script.gsc @@ -3217,7 +3217,7 @@ bot_uav_think() if(distFromPlayer > dist) continue; - if((!isSubStr(player getCurrentWeapon(), "_silencer") && player.bots_firing) || (hasRadar && !player _hasPerk("specialty_coldblooded")) || player maps\mp\perks\_perkfunctions::isPainted()) + if((!isSubStr(player getCurrentWeapon(), "_silencer") && player.bots_firing) || (hasRadar && !player _hasPerk("specialty_coldblooded")) || player maps\mp\perks\_perkfunctions::isPainted() || player.bot_isInRadar) { distSq = self.pers["bots"]["skill"]["help_dist"] * self.pers["bots"]["skill"]["help_dist"]; if (distFromPlayer < distSq && bulletTracePassed(self getEye(), player getTagOrigin( "j_spineupper" ), false, player))