//dprint("e ", vtos(diffang), " < ", ftos(maxfiredeviation), "\n");
// decide whether to fire this time
- if (v * shotdir >= cos(maxfiredeviation * DEG2RAD))
- if(vdist(trace_endpos-shotorg, <, 500 + 500 * bound(0, skill + this.bot_aggresskill, 10)) || random()*random()>bound(0,(skill+this.bot_aggresskill)*0.05,1))
- this.bot_firetimer = time + bound(0.1, 0.5-(skill+this.bot_aggresskill)*0.05, 0.5);
- //traceline(shotorg,shotorg+shotdir*1000,false,NULL);
+ if (maxfiredeviation != 0 && v * shotdir > cos(maxfiredeviation * DEG2RAD))
+ {
+ traceline(shotorg, shotorg + shotdir * 1000, false, NULL);
+ if (vdist(trace_endpos - shotorg, <, 500 + 500 * bound(0, skill + this.bot_aggresskill, 10))
+ || random() * random() > bound(0, (skill + this.bot_aggresskill) * 0.05, 1))
+ {
+ this.bot_firetimer = time + bound(0.1, 0.5 - (skill + this.bot_aggresskill) * 0.05, 0.5);
+ }
+ }
//dprint(ftos(maxfiredeviation),"\n");
//dprint(" diff:", vtos(diffang), "\n");
}
}
+ if (time > this.bot_firetimer)
+ {
+ this.dphitcontentsmask = hf;
+ return false;
+ }
+
//if (r > maxshottime * shotspeed)
// return false;
this.dphitcontentsmask = hf;
else
{
if(IS_PLAYER(this.bot_aimtarg))
- bot_aimdir(this, this.bot_aimtarg.origin + this.bot_aimtarg.view_ofs - this.origin - this.view_ofs , -1);
+ bot_aimdir(this, this.bot_aimtarg.origin + this.bot_aimtarg.view_ofs - this.origin - this.view_ofs, 0);
}
}
else if (this.goalcurrent)
vector dir = get_closer_dest(this.goalcurrent, this.origin);
dir -= this.origin + this.view_ofs;
dir.z = 0;
- bot_aimdir(this, dir, -1);
+ bot_aimdir(this, dir, 0);
}
// if the bot is not attacking, consider reloading weapons
if (!this.bot_aimdir_executed)
{
if (time < this.bot_stop_moving_timeout)
- bot_aimdir(this, normalize(this.goalcurrent.origin - this.origin), -1);
+ bot_aimdir(this, normalize(this.goalcurrent.origin - this.origin), 0);
else
- bot_aimdir(this, dir, -1);
+ bot_aimdir(this, dir, 0);
}
if (!ladder_zdir)
vector dir = get_closer_dest(this.goalcurrent, this.origin);
dir -= this.origin + this.view_ofs;
dir.z = 0;
- bot_aimdir(this, dir, -1);
+ bot_aimdir(this, dir, 0);
}
if(this.aistatus & AI_STATUS_WAYPOINT_PERSONAL_REACHED)