From 09fabb9fe3fc10ba4a9c1951cf12669a1a82fe9f Mon Sep 17 00:00:00 2001 From: terencehill Date: Sun, 21 May 2017 11:23:17 +0200 Subject: [PATCH] Don't allow bots to make use of too large ladders --- qcsrc/common/triggers/func/ladder.qc | 4 ++++ qcsrc/server/bot/default/navigation.qc | 1 + 2 files changed, 5 insertions(+) diff --git a/qcsrc/common/triggers/func/ladder.qc b/qcsrc/common/triggers/func/ladder.qc index b5f0accfb..c8cebc112 100644 --- a/qcsrc/common/triggers/func/ladder.qc +++ b/qcsrc/common/triggers/func/ladder.qc @@ -45,6 +45,10 @@ void func_ladder_init(entity this) trigger_init(this); func_ladder_link(this); + + if(min(this.absmax.x - this.absmin.x, this.absmax.y - this.absmin.y) > 100) + return; + this.bot_pickup = true; // allow bots to make use of this ladder vector top = (this.absmin + this.absmax) / 2; top.z = this.absmax.z + 1 - PL_MIN_CONST.z; float cost = waypoint_getdistancecost_simple(this.absmax.z - this.absmin.z); diff --git a/qcsrc/server/bot/default/navigation.qc b/qcsrc/server/bot/default/navigation.qc index f110a5249..c31a62860 100644 --- a/qcsrc/server/bot/default/navigation.qc +++ b/qcsrc/server/bot/default/navigation.qc @@ -182,6 +182,7 @@ bool tracewalk(entity e, vector start, vector m1, vector m2, vector end, float e bool ladder_found = false; IL_EACH(g_ladders, it.classname == "func_ladder", { + if(it.bot_pickup) if(boxesoverlap(org + jumpheight_vec + m1 + '-1 -1 -1', org + jumpheight_vec + m2 + '1 1 1', it.absmin, it.absmax)) if(boxesoverlap(end, end2, 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) -- 2.39.2