]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mutators/mutator/doublejump/doublejump.qc
Revert e30214cf "Purge SetResourceAmountExplicit" because it breaks map vote and...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / doublejump / doublejump.qc
index a2bd9ca0c54c295106958a96e8c9d7d4ee8a1ea8..cc60ccc1fd8a9bccf1a9006ca0b46a86796d35f8 100644 (file)
@@ -1,90 +1,36 @@
-#ifdef IMPLEMENTATION
+#include "doublejump.qh"
+
+#ifdef GAMEQC
 #ifdef SVQC
-       #include "../../../../server/antilag.qh"
+       #include <server/antilag.qh>
 #endif
-#include "../../../physics.qh"
-
-
-#if defined(SVQC)
-void doublejump_AddStats();
+#include <common/physics/player.qh>
 
-REGISTER_MUTATOR(doublejump, true)
-{
-       MUTATOR_ONADD
-       {
-               doublejump_AddStats();
-       }
-       return false;
-}
+#ifdef SVQC
+REGISTER_MUTATOR(doublejump, autocvar_sv_doublejump);
 #elif defined(CSQC)
 REGISTER_MUTATOR(doublejump, true);
 #endif
 
-
-#ifdef CSQC
-
-#define PHYS_DOUBLEJUMP                                                getstati(STAT_DOUBLEJUMP)
-
-#elif defined(SVQC)
-
-bool autocvar_sv_doublejump;
-
-#define PHYS_DOUBLEJUMP                                                autocvar_sv_doublejump
-
-.int stat_doublejump;
-
-void doublejump_UpdateStats(entity this)
-{
-       this.stat_doublejump = PHYS_DOUBLEJUMP;
-}
-
-void doublejump_AddStats()
-{
-       addstat(STAT_DOUBLEJUMP, AS_INT, stat_doublejump);
-}
-
-#endif
+#define PHYS_DOUBLEJUMP(s)                     STAT(DOUBLEJUMP, s)
 
 
 MUTATOR_HOOKFUNCTION(doublejump, PlayerJump)
 {
-       if (PHYS_DOUBLEJUMP)
+    entity player = M_ARGV(0, entity);
+
+       if (PHYS_DOUBLEJUMP(player))
        {
-               tracebox(self.origin + '0 0 0.01', self.mins, self.maxs, self.origin - '0 0 0.01', MOVE_NORMAL, self);
+               tracebox(player.origin + '0 0 0.01', player.mins, player.maxs, player.origin - '0 0 0.01', MOVE_NORMAL, player);
                if (trace_fraction < 1 && trace_plane_normal_z > 0.7)
                {
-                       player_multijump = true;
+                       M_ARGV(2, bool) = true;
 
                        // we MUST clip velocity here!
-                       float f = self.velocity * trace_plane_normal;
+                       float f = player.velocity * trace_plane_normal;
                        if (f < 0)
-                               self.velocity -= f * trace_plane_normal;
+                               player.velocity -= f * trace_plane_normal;
                }
        }
-       return false;
-}
-
-MUTATOR_HOOKFUNCTION(doublejump, PlayerPhysics)
-{
-#ifdef SVQC
-       doublejump_UpdateStats(self);
-#endif
-       return false;
 }
-
-#ifdef SVQC
-
-MUTATOR_HOOKFUNCTION(doublejump, BuildMutatorsString)
-{
-       ret_string = strcat(ret_string, ":doublejump");
-       return false;
-}
-
-MUTATOR_HOOKFUNCTION(doublejump, BuildMutatorsPrettyString)
-{
-       ret_string = strcat(ret_string, ", Double jump");
-       return false;
-}
-
-#endif
 #endif