X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Fserver.qc;h=f4141c8a3df01899ca3754c2bcb20c8a98f24cfe;hb=1a0c965a464a681b57e171b38a81c7e5f6876115;hp=f71fbe2d985b37fc9279f11f98009f307c5540c5;hpb=5b6650aacd624aa8a1153ee4322fb40a94eb3cb9;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/server.qc b/qcsrc/warpzonelib/server.qc index f71fbe2d9..f4141c8a3 100644 --- a/qcsrc/warpzonelib/server.qc +++ b/qcsrc/warpzonelib/server.qc @@ -604,8 +604,38 @@ void WarpZone_StartFrame() self = e; WarpZones_Reconnect(); } + + entity oldself, oldother; + oldself = self; + oldother = other; for(e = world; (e = nextent(e)); ) + { WarpZone_StoreProjectileData(e); + float f; + f = clienttype(e); + if(f == CLIENTTYPE_REAL) + { + if(e.solid != SOLID_NOT) // not spectating? + continue; + if(e.movetype != MOVETYPE_NOCLIP && e.movetype != MOVETYPE_FLY) // not spectating? (this is to catch observers) + continue; + self = WarpZone_Find(e.origin + e.mins, e.origin + e.maxs); + if(!self) + continue; + other = e; + if(WarpZoneLib_ExactTrigger_Touch()) + continue; + WarpZone_Teleport(e); // NOT triggering targets by this! + } + if(f == CLIENTTYPE_NOTACLIENT) + { + for(; (e = nextent(e)); ) + WarpZone_StoreProjectileData(e); + break; + } + } + self = oldself; + other = oldother; } .float warpzone_reconnecting;