#include "multijump.qh"
-#ifndef MENUQC
+#ifdef GAMEQC
#ifdef SVQC
#include <server/antilag.qh>
#if defined(SVQC)
-REGISTER_MUTATOR(multijump, cvar("g_multijump"));
+REGISTER_MUTATOR(multijump, autocvar_g_multijump);
#elif defined(CSQC)
REGISTER_MUTATOR(multijump, true);
#endif
#define PHYS_MULTIJUMP_MAXSPEED(s) STAT(MULTIJUMP_MAXSPEED, s)
#define PHYS_MULTIJUMP_DODGING(s) STAT(MULTIJUMP_DODGING, s)
#define PHYS_MULTIJUMP_COUNT(s) STAT(MULTIJUMP_COUNT, s)
+#define PHYS_MULTIJUMP_CLIENTDEFAULT(s) STAT(MULTIJUMP_CLIENT, s)
.bool multijump_ready;
#ifdef CSQC
-bool autocvar_cl_multijump = true;
+int cvar_cl_multijump;
+int autocvar_cl_multijump = -1;
#define PHYS_MULTIJUMP_CLIENT(s) autocvar_cl_multijump
#elif defined(SVQC)
-.bool cvar_cl_multijump;
+.int cvar_cl_multijump;
- #define PHYS_MULTIJUMP_CLIENT(s) (s).cvar_cl_multijump
+ #define PHYS_MULTIJUMP_CLIENT(s) CS(s).cvar_cl_multijump
#endif
MUTATOR_HOOKFUNCTION(multijump, PlayerPhysics)
if(!PHYS_MULTIJUMP(player)) { return; }
int client_multijump = PHYS_MULTIJUMP_CLIENT(player);
+ if(client_multijump == -1)
+ client_multijump = PHYS_MULTIJUMP_CLIENTDEFAULT(player);
if(client_multijump > 1)
return; // nope
if(M_ARGV(2, bool))
{
if(PHYS_MULTIJUMP_DODGING(player))
- if(player.movement_x != 0 || player.movement_y != 0) // don't remove all speed if player isnt pressing any movement keys
+ if(PHYS_CS(player).movement_x != 0 || PHYS_CS(player).movement_y != 0) // don't remove all speed if player isnt pressing any movement keys
{
float curspeed;
vector wishvel, wishdir;
//#endif
makevectors(player.v_angle_y * '0 1 0');
- wishvel = v_forward * player.movement_x + v_right * player.movement_y;
+ wishvel = v_forward * PHYS_CS(player).movement_x + v_right * PHYS_CS(player).movement_y;
wishdir = normalize(wishvel);
player.velocity_x = wishdir_x * curspeed; // allow "dodging" at a multijump
}
}
-#ifdef SVQC
+REPLICATE(cvar_cl_multijump, int, "cl_multijump");
-REPLICATE(cvar_cl_multijump, bool, "cl_multijump");
+#ifdef SVQC
MUTATOR_HOOKFUNCTION(multijump, BuildMutatorsString)
{