From b93bc02b53456a75a917566d6cb359e1a88c4e06 Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 5 Sep 2008 09:52:52 +0000 Subject: [PATCH] fix more bugs with race + portals git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4352 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/portals.qc | 7 +++++++ data/qcsrc/server/race.qc | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/data/qcsrc/server/portals.qc b/data/qcsrc/server/portals.qc index 70a1b0d78..d1f051121 100644 --- a/data/qcsrc/server/portals.qc +++ b/data/qcsrc/server/portals.qc @@ -184,6 +184,10 @@ void Portal_Touch() self.portal_activatetime = time + 0.1; return; } + if(other != self.owner) + if(other.classname == "player") + if(IS_INDEPENDENT_PLAYER(other) || IS_INDEPENDENT_PLAYER(self.owner)) + return; // cannot go through someone else's portal fixedmakevectors(self.angles); if((other.origin - self.origin) * v_forward < 0) return; @@ -346,6 +350,9 @@ void Portal_Think() if(time < self.portal_activatetime) if(e == o) continue; + if(e != o) + if(IS_INDEPENDENT_PLAYER(e) || IS_INDEPENDENT_PLAYER(o)) + continue; // cannot go through someone else's portal // if e would hit the portal in a frame... // already teleport him tracebox(e.origin, e.mins, e.maxs, e.origin + e.velocity * 2 * frametime, MOVE_NORMAL, e); diff --git a/data/qcsrc/server/race.qc b/data/qcsrc/server/race.qc index 5832c322a..eaee20701 100644 --- a/data/qcsrc/server/race.qc +++ b/data/qcsrc/server/race.qc @@ -339,7 +339,7 @@ void checkpoint_touch() oldself = self; self = other.porto_current; W_Porto_Fail(1); - self = other; + self = oldself; } if(other.race_checkpoint == -1 || other.race_checkpoint == self.race_checkpoint) -- 2.39.2