3 #include "../../../../server/antilag.qh"
5 #include "../../../physics.qh"
9 void doublejump_AddStats();
11 REGISTER_MUTATOR(doublejump, true)
15 doublejump_AddStats();
20 REGISTER_MUTATOR(doublejump, true);
26 #define PHYS_DOUBLEJUMP getstati(STAT_DOUBLEJUMP)
30 bool autocvar_sv_doublejump;
32 #define PHYS_DOUBLEJUMP autocvar_sv_doublejump
36 void doublejump_UpdateStats(entity this)
38 this.stat_doublejump = PHYS_DOUBLEJUMP;
41 void doublejump_AddStats()
43 addstat(STAT_DOUBLEJUMP, AS_INT, stat_doublejump);
49 MUTATOR_HOOKFUNCTION(doublejump, PlayerJump)
53 tracebox(self.origin + '0 0 0.01', self.mins, self.maxs, self.origin - '0 0 0.01', MOVE_NORMAL, self);
54 if (trace_fraction < 1 && trace_plane_normal_z > 0.7)
56 player_multijump = true;
58 // we MUST clip velocity here!
59 float f = self.velocity * trace_plane_normal;
61 self.velocity -= f * trace_plane_normal;
67 MUTATOR_HOOKFUNCTION(doublejump, PlayerPhysics)
70 doublejump_UpdateStats(self);
77 MUTATOR_HOOKFUNCTION(doublejump, BuildMutatorsString)
79 ret_string = strcat(ret_string, ":doublejump");
83 MUTATOR_HOOKFUNCTION(doublejump, BuildMutatorsPrettyString)
85 ret_string = strcat(ret_string, ", Double jump");