[nexuiz-commits] r8685 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Feb 28 14:42:17 EST 2010
Author: div0
Date: 2010-02-28 14:42:17 -0500 (Sun, 28 Feb 2010)
New Revision: 8685
Modified:
trunk/data/qcsrc/server/t_teleporters.qc
Log:
fix in-solid players after warpzoning
Modified: trunk/data/qcsrc/server/t_teleporters.qc
===================================================================
--- trunk/data/qcsrc/server/t_teleporters.qc 2010-02-28 19:42:05 UTC (rev 8684)
+++ trunk/data/qcsrc/server/t_teleporters.qc 2010-02-28 19:42:17 UTC (rev 8685)
@@ -346,8 +346,17 @@
tracebox(o1 - player.view_ofs, player.mins, player.maxs, o1 - player.view_ofs, MOVE_NOMONSTERS, player);
if(trace_startsolid)
{
- print("in solid\n");
- return 0; // TODO nudge out of solid here!
+ setorigin(player, o1 - player.view_ofs);
+ if(move_out_of_solid(player))
+ {
+ setorigin(player, o0);
+ o1 = player.origin + player.view_ofs;
+ }
+ else
+ {
+ setorigin(player, o0 - player.view_ofs);
+ return 0; // cannot fix
+ }
}
if((o1 - self.enemy.warpzone_origin) * self.enemy.warpzone_forward <= 0) // wrong side of the portal post-teleport
@@ -380,20 +389,19 @@
e = self.enemy;
if(warpzone_teleport(other))
{
+ if(self.aiment.target)
+ {
+ oldself = self;
+ activator = other;
+ self = self.aiment;
+ SUB_UseTargets();
+ self = oldself;
+ }
}
else
{
dprint("WARPZONE FAIL AHAHAHAHAH))\n");
}
-
- if(self.aiment.target)
- {
- oldself = self;
- activator = other;
- self = self.aiment;
- SUB_UseTargets();
- self = oldself;
- }
}
void warpzone_findtarget (void)
{
More information about the nexuiz-commits
mailing list