From 69496c6bda374f50e24d3c7fe9448d4fc173b295 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 4 Oct 2008 20:30:37 +0000 Subject: [PATCH] fix MrBougo's portal bug git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4628 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/portals.qc | 3 --- data/qcsrc/server/portals.qh | 3 +++ data/qcsrc/server/w_porto.qc | 19 +++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/data/qcsrc/server/portals.qc b/data/qcsrc/server/portals.qc index 640573a1e..87034ec29 100644 --- a/data/qcsrc/server/portals.qc +++ b/data/qcsrc/server/portals.qc @@ -5,9 +5,6 @@ .vector portal_safe_origin; .float portal_wants_to_vanish; .float portal_activatetime; -.float portal_id; - -.entity portal_in, portal_out; vector Portal_Transform_Apply(vector transform, vector v) { diff --git a/data/qcsrc/server/portals.qh b/data/qcsrc/server/portals.qh index 649987558..9a5a544e8 100644 --- a/data/qcsrc/server/portals.qh +++ b/data/qcsrc/server/portals.qh @@ -1,3 +1,6 @@ +.float portal_id; +.entity portal_in, portal_out; + void Portal_ClearAll(entity own); void Portal_ClearAllLater(entity own); float Portal_SpawnOutPortalAtTrace(entity own, vector dir, float id); diff --git a/data/qcsrc/server/w_porto.qc b/data/qcsrc/server/w_porto.qc index 5d1021bac..bf5b533bd 100644 --- a/data/qcsrc/server/w_porto.qc +++ b/data/qcsrc/server/w_porto.qc @@ -1,4 +1,3 @@ -.float portal_id; .entity porto_current; .vector porto_v_angle; // holds "held" view angles .float porto_v_angle_held; @@ -113,12 +112,20 @@ void W_Porto_Touch (void) } else { - if(Portal_SpawnOutPortalAtTrace(self.owner, self.right_vector, self.portal_id)) + if(self.owner.portal_in.portal_id == self.portal_id) { - sound(self, CHAN_PROJECTILE, "porto/create.ogg", VOL_BASE, ATTN_NORM); - trace_plane_normal = norm; - centerprint(self.owner, "^4Out^7-portal created.\n"); - W_Porto_Success(); + if(Portal_SpawnOutPortalAtTrace(self.owner, self.right_vector, self.portal_id)) + { + sound(self, CHAN_PROJECTILE, "porto/create.ogg", VOL_BASE, ATTN_NORM); + trace_plane_normal = norm; + centerprint(self.owner, "^4Out^7-portal created.\n"); + W_Porto_Success(); + } + else + { + sound(self, CHAN_PROJECTILE, "porto/unsupported.ogg", VOL_BASE, ATTN_NORM); + W_Porto_Fail(0); + } } else { -- 2.39.2