]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Don't allow bots to make use of too large ladders
authorterencehill <piuntn@gmail.com>
Sun, 21 May 2017 09:23:17 +0000 (11:23 +0200)
committerterencehill <piuntn@gmail.com>
Sun, 21 May 2017 09:23:17 +0000 (11:23 +0200)
qcsrc/common/triggers/func/ladder.qc
qcsrc/server/bot/default/navigation.qc

index b5f0accfbaf72e9c6f4af476cdcca09fe15ce8e6..c8cebc112d18dae8cacec45dfb100340bbaaa987 100644 (file)
@@ -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);
index f110a524910b8a823aa839e5186da4ad02070daf..c31a62860c14a5c0d52767a6c806407fda6cd322 100644 (file)
@@ -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)