]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/warpzonelib/server.qc
Merge remote-tracking branch 'origin/divVerent/new-laser-by-morphed'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / warpzonelib / server.qc
index 3d4a750455a3e5947b073e3c62e698a9d347ea74..dfc30bdfd569868c8d3f96f569fd521bae877e80 100644 (file)
@@ -1,4 +1,6 @@
-#define REMOVEHACK
+#ifdef WARPZONELIB_KEEPDEBUG
+#define WARPZONELIB_REMOVEHACK
+#endif
 
 // for think function
 .vector warpzone_save_origin;
@@ -300,6 +302,7 @@ float WarpZone_Camera_Send(entity to, float sendflags)
        return TRUE;
 }
 
+#ifndef WARPZONELIB_KEEPDEBUG
 float WarpZone_CheckProjectileImpact(entity player)
 {
        vector o0, v0;
@@ -317,7 +320,7 @@ float WarpZone_CheckProjectileImpact(entity player)
        if(!wz)
                return 0;
 
-#ifdef REMOVEHACK
+#ifdef WARPZONELIB_REMOVEHACK
        print("impactfilter found something - and it no longer gets handled correctly - please tell divVerent whether anything behaves broken now\n");
 #else
        print("impactfilter found something - and it even gets handled correctly - please tell divVerent that this code apparently gets triggered again\n");
@@ -326,7 +329,7 @@ float WarpZone_CheckProjectileImpact(entity player)
        print("Origin: ", vtos(player.origin), "\n");
        print("Velocity: ", vtos(player.velocity), "\n");
 
-#ifdef REMOVEHACK
+#ifdef WARPZONELIB_REMOVEHACK
        return 0;
 #else
        // retry previous move
@@ -365,6 +368,8 @@ float WarpZone_CheckProjectileImpact(entity player)
        return +1;
 #endif
 }
+#endif
+
 float WarpZone_Projectile_Touch()
 {
        float f;
@@ -372,9 +377,15 @@ float WarpZone_Projectile_Touch()
                return TRUE;
 
        // no further impacts if we teleported this frame!
+       // this is because even if we did teleport, the engine still may raise
+       // touch events for the previous location
+       // engine now aborts moves on teleport, so this SHOULD not happen any more
+       // but if this is called from TouchAreaGrid of the projectile moving,
+       // then this won't do
        if(time == self.warpzone_teleport_time)
                return TRUE;
 
+#ifndef WARPZONELIB_KEEPDEBUG
        // this SEEMS to not happen at the moment, but if it did, it would be more reliable
        {
                float save_dpstartcontents;
@@ -419,6 +430,7 @@ float WarpZone_Projectile_Touch()
                trace_inopen = save_inopen;
                trace_inwater = save_inwater;
        }
+#endif
 
        if(WarpZone_Projectile_Touch_ImpactFilter_Callback())
                return TRUE;
@@ -571,7 +583,7 @@ void WarpZone_InitStep_UpdateTransform()
                                print("Position target of trigger_warpzone near ", vtos(self.aiment.origin), " points into trigger_warpzone. BEWARE.\n");
                                norm = -1 * norm;
                        }
-                       ang = vectoangles(norm, v_up); // keep rotation, but turn exactly against plane
+                       ang = vectoangles2(norm, v_up); // keep rotation, but turn exactly against plane
                        ang_x = -ang_x;
                        if(norm * v_forward < 0.99)
                                print("trigger_warpzone near ", vtos(self.aiment.origin), " has been turned to match plane orientation (", vtos(self.aiment.angles), " -> ", vtos(ang), "\n");