X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Faim.qc;h=3467e2b395d61c7c1f28357fe0460b0a97011394;hp=b678bf1b660de2a9920d29ebc5e8af7a2ef554ab;hb=ef3193f7a8b94d570b83a09e5f75ba2c87fe2bb9;hpb=1360df863d4818253cca208afc2c3f09378ce0e7 diff --git a/qcsrc/server/bot/aim.qc b/qcsrc/server/bot/aim.qc index b678bf1b6..3467e2b39 100644 --- a/qcsrc/server/bot/aim.qc +++ b/qcsrc/server/bot/aim.qc @@ -6,8 +6,8 @@ entity ka_ball; float findtrajectorywithleading(vector org, vector m1, vector m2, entity targ, float shotspeed, float shotspeedupward, float maxtime, float shotdelay, entity ignore) { - local float c, savesolid, shottime; - local vector dir, end, v, o; + float c, savesolid, shottime; + vector dir, end, v, o; if (shotspeed < 1) return FALSE; // could cause division by zero if calculated if (targ.solid < SOLID_BBOX) // SOLID_NOT and SOLID_TRIGGER @@ -78,7 +78,7 @@ float findtrajectorywithleading(vector org, vector m1, vector m2, entity targ, f // leave a valid one even if it won't reach findtrajectory_velocity = normalize(end - org) * shotspeed + shotspeedupward * '0 0 1'; return FALSE; -}; +} void lag_update() { @@ -87,7 +87,7 @@ void lag_update() if (self.lag3_time) if (time > self.lag3_time) {self.lag_func(self.lag3_time, self.lag3_float1, self.lag3_float2, self.lag3_entity1, self.lag3_vec1, self.lag3_vec2, self.lag3_vec3, self.lag3_vec4);self.lag3_time = 0;} if (self.lag4_time) if (time > self.lag4_time) {self.lag_func(self.lag4_time, self.lag4_float1, self.lag4_float2, self.lag4_entity1, self.lag4_vec1, self.lag4_vec2, self.lag4_vec3, self.lag4_vec4);self.lag4_time = 0;} if (self.lag5_time) if (time > self.lag5_time) {self.lag_func(self.lag5_time, self.lag5_float1, self.lag5_float2, self.lag5_entity1, self.lag5_vec1, self.lag5_vec2, self.lag5_vec3, self.lag5_vec4);self.lag5_time = 0;} -}; +} float lag_additem(float t, float f1, float f2, entity e1, vector v1, vector v2, vector v3, vector v4) { @@ -98,7 +98,7 @@ float lag_additem(float t, float f1, float f2, entity e1, vector v1, vector v2, if (self.lag5_time == 0) {self.lag5_time = t;self.lag5_float1 = f1;self.lag5_float2 = f2;self.lag5_entity1 = e1;self.lag5_vec1 = v1;self.lag5_vec2 = v2;self.lag5_vec3 = v3;self.lag5_vec4 = v4;return TRUE;} // no room for it (what is the best thing to do here??) return FALSE; -}; +} float bot_shouldattack(entity e) { @@ -111,9 +111,8 @@ float bot_shouldattack(entity e) return FALSE; } - if(g_freezetag) - if(e.freezetag_frozen) - return FALSE; + if(e.freezetag_frozen) + return FALSE; // If neither player has ball then don't attack unless the ball is on the // ground. @@ -127,7 +126,7 @@ float bot_shouldattack(entity e) return FALSE; } else if(bot_ignore_bots) - if(clienttype(e) == CLIENTTYPE_BOT) + if(IS_BOT_CLIENT(e)) return FALSE; if (!e.takedamage) @@ -136,13 +135,15 @@ float bot_shouldattack(entity e) return FALSE; if (e.BUTTON_CHAT) return FALSE; - if(g_minstagib) - if(e.items & IT_STRENGTH) - return FALSE; if(e.flags & FL_NOTARGET) return FALSE; + + checkentity = e; + if(MUTATOR_CALLHOOK(BotShouldAttack)) + return FALSE; + return TRUE; -}; +} void bot_lagfunc(float t, float f1, float f2, entity e1, vector v1, vector v2, vector v3, vector v4) { @@ -165,12 +166,12 @@ void bot_lagfunc(float t, float f1, float f2, entity e1, vector v1, vector v2, v self.bot_canfire = (random() < 0.95); else self.bot_canfire = 1; -}; +} float bot_aimdir(vector v, float maxfiredeviation) { - local float dist, delta_t, blend; - local vector desiredang, diffang; + float dist, delta_t, blend; + vector desiredang, diffang; //dprint("aim ", self.netname, ": old:", vtos(self.v_angle)); // make sure v_angle is sane first @@ -271,7 +272,7 @@ float bot_aimdir(vector v, float maxfiredeviation) //diffang = diffang + randomvec() * (dist * 0.05 * (3.5 - bound(0, skill, 3))); // turn - local float r, fixedrate, blendrate; + float r, fixedrate, blendrate; fixedrate = autocvar_bot_ai_aimskill_fixedrate / bound(1,dist,1000); blendrate = autocvar_bot_ai_aimskill_blendrate; r = max(fixedrate, blendrate); @@ -310,18 +311,18 @@ float bot_aimdir(vector v, float maxfiredeviation) //dprint(" diff:", vtos(diffang), "\n"); return self.bot_canfire && (time < self.bot_firetimer); -}; +} vector bot_shotlead(vector targorigin, vector targvelocity, float shotspeed, float shotdelay) { // Try to add code here that predicts gravity effect here, no clue HOW to though ... well not yet atleast... return targorigin + targvelocity * (shotdelay + vlen(targorigin - shotorg) / shotspeed); -}; +} float bot_aim(float shotspeed, float shotspeedupward, float maxshottime, float applygravity) { - local float f, r, hf, distanceratio; - local vector v; + float f, r, hf, distanceratio; + vector v; /* eprint(self); dprint("bot_aim(", ftos(shotspeed)); @@ -387,4 +388,4 @@ float bot_aim(float shotspeed, float shotspeedupward, float maxshottime, float a // return FALSE; self.dphitcontentsmask = hf; return TRUE; -}; +}