X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fdefault%2Fhavocbot%2Fhavocbot.qc;h=94499c2eb53bedc3ddfc6de34de24a806acb3787;hp=17a7c29ef8a5029231a9f1f90ec328ac761db79d;hb=52de08a8dae0a5b71226ac9d1cb982cb2bb36c12;hpb=8639f042c5ef61287b2f7e0dbf17f8c08a2c0ebf diff --git a/qcsrc/server/bot/default/havocbot/havocbot.qc b/qcsrc/server/bot/default/havocbot/havocbot.qc index 17a7c29ef8..94499c2eb5 100644 --- a/qcsrc/server/bot/default/havocbot/havocbot.qc +++ b/qcsrc/server/bot/default/havocbot/havocbot.qc @@ -881,7 +881,8 @@ void havocbot_movetogoal(entity this) diff = destorg - this.origin; - if (this.goalcurrent == this.goalentity && time < this.goalentity_lock_timeout && vdist(diff, <, 10)) + if (time < this.bot_stop_moving_timeout + || (this.goalcurrent == this.goalentity && time < this.goalentity_lock_timeout && vdist(diff, <, 10))) { // stop if the locked goal has been reached destorg = this.origin; @@ -1065,6 +1066,12 @@ void havocbot_movetogoal(entity this) // Check for water/slime/lava and dangerous edges // (only when the bot is on the ground or jumping intentionally) + if (skill + this.bot_moveskill <= 3 && time > this.bot_stop_moving_timeout + && current_speed > maxspeed * 0.9 && fabs(deviation.y) > 70) + { + this.bot_stop_moving_timeout = time + 0.4 + random() * 0.2; + } + offset = (vdist(this.velocity, >, 32) ? this.velocity * 0.2 : v_forward * 32); vector dst_ahead = this.origin + this.view_ofs + offset; vector dst_down = dst_ahead - '0 0 3000'; @@ -1189,7 +1196,12 @@ void havocbot_movetogoal(entity this) } if (!this.bot_aimdir_executed) - bot_aimdir(this, dir, -1); + { + if (time < this.bot_stop_moving_timeout) + bot_aimdir(this, normalize(this.goalcurrent.origin - this.origin), -1); + else + bot_aimdir(this, dir, -1); + } if (!ladder_zdir) { @@ -1197,6 +1209,7 @@ void havocbot_movetogoal(entity this) dir = normalize(dir + dodge); } + makevectors(this.v_angle); //dir = this.bot_dodgevector; //if (this.bot_dodgevector_jumpbutton) // PHYS_INPUT_BUTTON_JUMP(this) = true;