From 2825e7aea2e8989a262302351d2848fff61312b8 Mon Sep 17 00:00:00 2001 From: terencehill Date: Wed, 3 May 2017 21:58:09 +0200 Subject: [PATCH] Bot navigation: slighltly improve ladder detection --- qcsrc/server/bot/default/bot.qc | 5 ++--- qcsrc/server/bot/default/navigation.qc | 5 +++-- qcsrc/server/bot/default/navigation.qh | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/qcsrc/server/bot/default/bot.qc b/qcsrc/server/bot/default/bot.qc index 3fa56d942..575ab48a3 100644 --- a/qcsrc/server/bot/default/bot.qc +++ b/qcsrc/server/bot/default/bot.qc @@ -571,9 +571,8 @@ void autoskill(float factor) void bot_calculate_stepheightvec() { stepheightvec = autocvar_sv_stepheight * '0 0 1'; - jumpstepheightvec = stepheightvec + - ((autocvar_sv_jumpvelocity * autocvar_sv_jumpvelocity) / (2 * autocvar_sv_gravity)) * '0 0 0.85'; - // 0.75 factor is for safety to make the jumps easy + jumpheight_vec = (autocvar_sv_jumpvelocity ** 2) / (2 * autocvar_sv_gravity) * '0 0 1'; + jumpstepheightvec = stepheightvec + jumpheight_vec * 0.85; // reduce it a bit to make the jumps easy } float bot_fixcount() diff --git a/qcsrc/server/bot/default/navigation.qc b/qcsrc/server/bot/default/navigation.qc index 840ca49f1..14d944623 100644 --- a/qcsrc/server/bot/default/navigation.qc +++ b/qcsrc/server/bot/default/navigation.qc @@ -178,15 +178,16 @@ bool tracewalk(entity e, vector start, vector m1, vector m2, vector end, float m if (trace_fraction < 1 || trace_startsolid) { bool ladder_found = false; - FOREACH_ENTITY_CLASS("func_ladder", boxesoverlap(trace_endpos + m1 + '-1 -1 -1', trace_endpos + m2 + '1 1 1', it.absmin, it.absmax), + FOREACH_ENTITY_CLASS("func_ladder", true, { + if(boxesoverlap(org + jumpheight_vec + m1 + '-1 -1 -1', org + jumpheight_vec + m2 + '1 1 1', it.absmin, it.absmax)) if(boxesoverlap(end, end, it.absmin + (m1 - eZ * m1.z - '1 1 0'), it.absmax + (m2 - eZ * m2.z + '1 1 0'))) ladder_found = true; // can't return here ("Loop mutex held by tracewalk" error) }); if(ladder_found) { if(autocvar_bot_debug_tracewalk) - debugnodestatus(org, DEBUG_NODE_SUCCESS); + debugnodestatus(end, DEBUG_NODE_SUCCESS); //print("tracewalk: ", vtos(start), " can reach ", vtos(end), "\n"); return true; diff --git a/qcsrc/server/bot/default/navigation.qh b/qcsrc/server/bot/default/navigation.qh index 9a6a0c8a6..078f1ede7 100644 --- a/qcsrc/server/bot/default/navigation.qh +++ b/qcsrc/server/bot/default/navigation.qh @@ -9,6 +9,7 @@ float navigation_testtracewalk; vector jumpstepheightvec; vector stepheightvec; +vector jumpheight_vec; entity navigation_bestgoal; -- 2.39.2