mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
196 lines
3.5 KiB
Plaintext
196 lines
3.5 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\bots\_bot_hack.gsc
|
|
* Game: Call of Duty: Black Ops 2
|
|
* Platform: PC
|
|
* Function Count: 5
|
|
* Decompile Time: 1 ms
|
|
* Timestamp: 10/28/2023 12:10:26 AM
|
|
*******************************************************************/
|
|
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_utility;
|
|
#include maps/mp/bots/_bot;
|
|
#include maps/mp/gametypes/ctf;
|
|
|
|
//Function Number: 1
|
|
bot_hack_tank_get_goal_origin(tank)
|
|
{
|
|
nodes = getnodesinradiussorted(tank.origin,256,0,64,"Path");
|
|
foreach(node in nodes)
|
|
{
|
|
dir = vectornormalize(node.origin - tank.origin);
|
|
dir = VectorScale(dir);
|
|
goal = tank.origin + dir;
|
|
if(findpath(self.origin,goal,0))
|
|
{
|
|
return goal;
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
//Function Number: 2
|
|
bot_hack_has_goal(tank)
|
|
{
|
|
goal = self getgoal("hack");
|
|
if(IsDefined(goal))
|
|
{
|
|
if(distancesquared(goal,tank.origin) < 16384)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 3
|
|
bot_hack_at_goal()
|
|
{
|
|
if(self atgoal("hack"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
goal = self getgoal("hack");
|
|
if(IsDefined(goal))
|
|
{
|
|
tanks = getentarray("talon","targetname");
|
|
tanks = arraysort(tanks,self.origin);
|
|
foreach(tank in tanks)
|
|
{
|
|
if(distancesquared(goal,tank.origin) < 16384)
|
|
{
|
|
if(IsDefined(tank.trigger) && self istouching(tank.trigger))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 4
|
|
bot_hack_goal_pregame(tanks)
|
|
{
|
|
foreach(tank in tanks)
|
|
{
|
|
if(IsDefined(tank.owner))
|
|
{
|
|
}
|
|
else if(IsDefined(tank.team) && tank.team == self.team)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
goal = self bot_hack_tank_get_goal_origin(tank);
|
|
if(IsDefined(goal))
|
|
{
|
|
if(self addgoal(goal,24,2,"hack"))
|
|
{
|
|
self.goal_flag = tank;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
bot_hack_think()
|
|
{
|
|
if(bot_hack_at_goal())
|
|
{
|
|
self setstance("crouch");
|
|
wait(0.25);
|
|
self addgoal(self.origin,24,4,"hack");
|
|
self pressusebutton(level.drone_hack_time + 1);
|
|
wait(level.drone_hack_time + 1);
|
|
self setstance("stand");
|
|
self cancelgoal("hack");
|
|
}
|
|
|
|
tanks = getentarray("talon","targetname");
|
|
tanks = arraysort(tanks,self.origin);
|
|
if(!(is_true(level.drones_spawned)))
|
|
{
|
|
self bot_hack_goal_pregame(tanks);
|
|
}
|
|
else
|
|
{
|
|
foreach(tank in tanks)
|
|
{
|
|
if(IsDefined(tank.owner) && tank.owner == self)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
if(!(IsDefined(tank.owner)))
|
|
{
|
|
if(self bot_hack_has_goal(tank))
|
|
{
|
|
return;
|
|
}
|
|
|
|
goal = self bot_hack_tank_get_goal_origin(tank);
|
|
if(IsDefined(goal))
|
|
{
|
|
self addgoal(goal,24,2,"hack");
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(tank.isstunned && distancesquared(self.origin,tank.origin) < 262144)
|
|
{
|
|
goal = self bot_hack_tank_get_goal_origin(tank);
|
|
if(IsDefined(goal))
|
|
{
|
|
self addgoal(goal,24,3,"hack");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!(maps/mp/bots/_bot::bot_vehicle_weapon_ammo("emp_grenade_mp")))
|
|
{
|
|
ammo = getentarray("weapon_scavenger_item_hack_mp","classname");
|
|
ammo = arraysort(ammo,self.origin);
|
|
foreach(bag in ammo)
|
|
{
|
|
if(findpath(self.origin,bag.origin,0))
|
|
{
|
|
self addgoal(bag.origin,24,2,"hack");
|
|
return;
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
foreach(tank in tanks)
|
|
{
|
|
if(IsDefined(tank.owner) && tank.owner == self)
|
|
{
|
|
}
|
|
else if(tank.isstunned)
|
|
{
|
|
}
|
|
else if(self throwgrenade("emp_grenade_mp",tank.origin))
|
|
{
|
|
self waittill(_k122,_k162,"grenade_fire");
|
|
goal = self bot_hack_tank_get_goal_origin(tank);
|
|
if(IsDefined(goal))
|
|
{
|
|
self addgoal(goal,24,3,"hack");
|
|
wait(0.5);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |