From: Rudolf Polzer Date: Fri, 13 Sep 2013 10:23:38 +0000 (+0200) Subject: Increase requirements for screenshots: doesn't reach caulk by an axial X-Git-Tag: xonotic-v0.8.0~336 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=adca2859346bcdecbc619dcd3b60835f1a31253d;p=xonotic%2Fxonotic-data.pk3dir.git Increase requirements for screenshots: doesn't reach caulk by an axial direction, and must see an item/spawnpoint. --- diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 50fd92fad..0b5b42781 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -1940,30 +1940,32 @@ float MoveToRandomMapLocation(entity e, float goodcontents, float badcontents, f // these can be traceLINES as we already verified the starting box mstart = start + 0.5 * (e.mins + e.maxs); traceline(mstart, mstart + '1 0 0' * delta_x, MOVE_NORMAL, e); - if (trace_fraction >= 1) + if (trace_fraction >= 1 || trace_dphittexturename == "common/caulk") continue; traceline(mstart, mstart - '1 0 0' * delta_x, MOVE_NORMAL, e); - if (trace_fraction >= 1) + if (trace_fraction >= 1 || trace_dphittexturename == "common/caulk") continue; traceline(mstart, mstart + '0 1 0' * delta_y, MOVE_NORMAL, e); - if (trace_fraction >= 1) + if (trace_fraction >= 1 || trace_dphittexturename == "common/caulk") continue; traceline(mstart, mstart - '0 1 0' * delta_y, MOVE_NORMAL, e); - if (trace_fraction >= 1) + if (trace_fraction >= 1 || trace_dphittexturename == "common/caulk") continue; traceline(mstart, mstart + '0 0 1' * delta_z, MOVE_NORMAL, e); - if (trace_fraction >= 1) + if (trace_fraction >= 1 || trace_dphittexturename == "common/caulk") continue; - // rule 4: we must "see" some spawnpoint + // rule 4: we must "see" some spawnpoint or item for(sp = world; (sp = find(sp, classname, "info_player_deathmatch")); ) if(checkpvs(mstart, sp)) - break; + if((traceline(mstart, sp.origin, MOVE_NORMAL, e), trace_fraction) >= 1) + break; if(!sp) { for(sp = world; (sp = findflags(sp, flags, FL_ITEM)); ) if(checkpvs(mstart, sp)) - break; + if((traceline(mstart, sp.origin + (sp.mins + sp.maxs) * 0.5, MOVE_NORMAL, e), trace_fraction) >= 1) + break; if(!sp) continue; }