X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Fcommon.qc;h=706acde4448aef1d6bad8eb039570cbecabc6129;hb=125d619e9ab2a307b15b7ee1a2ededed32c7e84d;hp=6481242dc69aeccea26cf57caed0cb7cf2a7537d;hpb=cd109cf922bc405155c680582745d645bd057ded;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/common.qc b/qcsrc/warpzonelib/common.qc index 6481242dc..706acde44 100644 --- a/qcsrc/warpzonelib/common.qc +++ b/qcsrc/warpzonelib/common.qc @@ -1,13 +1,13 @@ +#include "common.qh" + #if defined(CSQC) #include "../dpdefs/csprogsdefs.qh" - #include "common.qh" #include "../server/t_items.qh" #elif defined(MENUQC) #elif defined(SVQC) - #include "../dpdefs/progsdefs.qh" + #include "../common/weapons/all.qh" #include "../dpdefs/dpextensions.qh" - #include "common.qh" - #include "../common/weapons/weapons.qh" + #include "../dpdefs/progsdefs.qh" #endif void WarpZone_Accumulator_Clear(entity acc) @@ -573,6 +573,45 @@ vector WarpZoneLib_NearestPointOnBox(vector mi, vector ma, vector org) return nearest; } +float WarpZoneLib_BadClassname(string myclassname) +{ + switch(myclassname) + { + case "weapon_info": + case "monster_info": + case "deathtype": + case "callback": + case "callbackchain": + case "weaponentity": + case "exteriorweaponentity": + case "csqc_score_team": + case "pingplreport": + case "ent_client_scoreinfo": + case "saved_cvar_value": + case "accuracy": + case "entcs_sender_v2": + case "entcs_receiver_v2": + case "clientinit": + case "sprite_waypoint": + case "waypoint": + case "gibsplash": + //case "net_linked": // actually some real entities are linked without classname, fail + case "": + return true; + } + + if(startsWith(myclassname, "msg_")) + return true; + + if(startsWith(myclassname, "target_")) + return true; + + if(startsWith(myclassname, "info_")) + return true; + + return false; +} + .float WarpZone_findradius_hit; .entity WarpZone_findradius_next; void WarpZone_FindRadius_Recurse(vector org, float rad, vector org0, vector transform, vector shift, float needlineofsight) @@ -591,6 +630,8 @@ void WarpZone_FindRadius_Recurse(vector org, float rad, vector org0, for(e = e0; e; e = e.chain) { + if(WarpZoneLib_BadClassname(e.classname)) + continue; p = WarpZoneLib_NearestPointOnBox(e.origin + e.mins, e.origin + e.maxs, org0); if(needlineofsight) { @@ -626,6 +667,9 @@ void WarpZone_FindRadius_Recurse(vector org, float rad, vector org0, } for(e = wz; e; e = e.WarpZone_findradius_next) { + if(WarpZoneLib_BadClassname(e.classname)) + continue; + org0_new = WarpZone_TransformOrigin(e, org); traceline(e.warpzone_targetorigin, org0_new, MOVE_NOMONSTERS, e); org_new = trace_endpos;