target cleanup

This commit is contained in:
INeedBots 2020-10-31 14:33:10 -06:00
parent 2896e40c04
commit 03836689ff

View File

@ -462,6 +462,48 @@ reload_thread()
self thread reload();
}
createTargetObj(ent, theTime)
{
obj = spawnStruct();
obj.entity = ent;
obj.last_seen_pos = (0, 0, 0);
obj.dist = 0;
obj.time = theTime;
obj.trace_time = 0;
obj.no_trace_time = 0;
obj.trace_time_time = 0;
obj.rand = randomInt(100);
obj.didlook = false;
obj.isplay = isPlayer(ent);
obj.offset = undefined;
obj.bone = undefined;
obj.aim_offset = undefined;
return obj;
}
updateAimOffset(obj)
{
}
targetObjUpdateTraced(obj, daDist, ent, theTime)
{
obj.no_trace_time = 0;
obj.trace_time += 50;
obj.dist = daDist;
obj.last_seen_pos = ent.origin;
obj.trace_time_time = theTime;
updateAimOffset(obj);
}
targetObjUpdateNoTrace(obj)
{
obj.no_trace_time += 50;
obj.trace_time = 0;
obj.didlook = false;
}
/*
The main target thread, will update the bot's main target. Will auto target enemy players and handle script targets.
*/
@ -495,8 +537,14 @@ target()
hasTarget = false;
}
if(isDefined(self.bot.script_target))
playercount = level.players.size;
for(i = -1; i < playercount; i++)
{
if (i == -1)
{
if(!isDefined(self.bot.script_target))
continue;
ent = self.bot.script_target;
key = ent getEntityNumber()+"";
daDist = distanceSquared(self.origin, ent.origin);
@ -506,107 +554,33 @@ target()
if (isDefined(self.bot.script_target_offset))
entOrigin += self.bot.script_target_offset;
for(;;)
{
if(SmokeTrace(myEye, entOrigin, level.smokeRadius) && bulletTracePassed(myEye, entOrigin, false, ent))
{
if(!isObjDef)
{
obj = spawnStruct();
obj.entity = ent;
obj.last_seen_pos = (0, 0, 0);
obj.dist = 0;
obj.time = theTime;
obj.trace_time = 0;
obj.no_trace_time = 0;
obj.trace_time_time = 0;
obj.rand = randomInt(100);
obj.didlook = false;
obj.isplay = isPlayer(ent);
obj = createTargetObj(ent, theTime);
obj.offset = self.bot.script_target_offset;
obj.bone = undefined;
obj.aim_offset = undefined;
self.bot.targets[key] = obj;
}
obj.no_trace_time = 0;
obj.trace_time += 50;
obj.dist = daDist;
obj.last_seen_pos = ent.origin;
obj.trace_time_time = theTime;
targetObjUpdateTraced(obj, daDist, ent, theTime);
}
else
{
if(!isObjDef)
break;
continue;
obj.no_trace_time += 50;
obj.trace_time = 0;
obj.didlook = false;
targetObjUpdateNoTrace(obj);
if(obj.no_trace_time > rememberTime)
{
self.bot.targets[key] = undefined;
break;
continue;
}
}
if(theTime - obj.time < initReactTime)
break;
timeDiff = theTime - obj.trace_time_time;
if(timeDiff < bestTime)
{
bestTargets = [];
bestTime = timeDiff;
}
if(timeDiff == bestTime)
bestTargets[key] = obj;
break;
}
}
if(isDefined(self.bot.target_this_frame))
{
player = self.bot.target_this_frame;
key = player getEntityNumber()+"";
obj = self.bot.targets[key];
daDist = distanceSquared(self.origin, player.origin);
if(!isDefined(obj))
{
obj = spawnStruct();
obj.entity = player;
obj.last_seen_pos = (0, 0, 0);
obj.dist = 0;
obj.time = theTime;
obj.trace_time = 0;
obj.no_trace_time = 0;
obj.trace_time_time = 0;
obj.rand = randomInt(100);
obj.didlook = false;
obj.isplay = isPlayer(player);
obj.offset = undefined;
obj.bone = undefined;
obj.aim_offset = undefined;
self.bot.targets[key] = obj;
}
obj.no_trace_time = 0;
obj.trace_time += 50;
obj.dist = daDist;
obj.last_seen_pos = player.origin;
obj.trace_time_time = theTime;
self.bot.target_this_frame = undefined;
}
playercount = level.players.size;
for(i = 0; i < playercount; i++)
else
{
player = level.players[i];
@ -631,7 +605,7 @@ target()
targetAnkleLeft = player getTagOrigin( "j_ankle_le" );
targetAnkleRight = player getTagOrigin( "j_ankle_ri" );
if((distanceSquared(BulletTrace(myEye, targetHead, false, self)["position"], targetHead) < 0.05 ||
canTargetPlayer = ((distanceSquared(BulletTrace(myEye, targetHead, false, self)["position"], targetHead) < 0.05 ||
distanceSquared(BulletTrace(myEye, targetAnkleLeft, false, self)["position"], targetAnkleLeft) < 0.05 ||
distanceSquared(BulletTrace(myEye, targetAnkleRight, false, self)["position"], targetAnkleRight) < 0.05)
@ -639,42 +613,32 @@ target()
daDist < level.bots_maxKnifeDistance*4)
&& (getConeDot(player.origin, self.origin, myAngles) >= myFov ||
(isObjDef && obj.trace_time)))
(isObjDef && obj.trace_time)));
if (isDefined(self.bot.target_this_frame) && self.bot.target_this_frame == player)
{
self.bot.target_this_frame = undefined;
canTargetPlayer = true;
}
if(canTargetPlayer)
{
if(!isObjDef)
{
obj = spawnStruct();
obj.entity = player;
obj.last_seen_pos = (0, 0, 0);
obj.dist = 0;
obj.time = theTime;
obj.trace_time = 0;
obj.no_trace_time = 0;
obj.trace_time_time = 0;
obj.rand = randomInt(100);
obj.didlook = false;
obj.isplay = isPlayer(player);
obj.offset = undefined;
obj.bone = undefined;
obj.aim_offset = undefined;
obj = createTargetObj(player, theTime);
self.bot.targets[key] = obj;
}
obj.no_trace_time = 0;
obj.trace_time += 50;
obj.dist = daDist;
obj.last_seen_pos = player.origin;
obj.trace_time_time = theTime;
targetObjUpdateTraced(obj, daDist, player, theTime);
}
else
{
if(!isObjDef)
continue;
obj.no_trace_time += 50;
obj.trace_time = 0;
obj.didlook = false;
targetObjUpdateNoTrace(obj);
if(obj.no_trace_time > rememberTime)
{
@ -682,6 +646,7 @@ target()
continue;
}
}
}
if(theTime - obj.time < initReactTime)
continue;