5 REPLICATE(cvar_cl_multijump,
bool,
"cl_multijump");
19 #define PHYS_MULTIJUMP(s) STAT(MULTIJUMP, s) 20 #define PHYS_MULTIJUMP_SPEED(s) STAT(MULTIJUMP_SPEED, s) 21 #define PHYS_MULTIJUMP_ADD(s) STAT(MULTIJUMP_ADD, s) 22 #define PHYS_MULTIJUMP_MAXSPEED(s) STAT(MULTIJUMP_MAXSPEED, s) 23 #define PHYS_MULTIJUMP_DODGING(s) STAT(MULTIJUMP_DODGING, s) 24 #define PHYS_MULTIJUMP_COUNT(s) STAT(MULTIJUMP_COUNT, s) 25 #define PHYS_MULTIJUMP_CLIENTDEFAULT(s) STAT(MULTIJUMP_CLIENT, s) 27 .bool multijump_ready;
30 int autocvar_cl_multijump = -1;
31 #define PHYS_MULTIJUMP_CLIENT(s) autocvar_cl_multijump 33 #define PHYS_MULTIJUMP_CLIENT(s) CS_CVAR(s).cvar_cl_multijump 41 player.multijump_count = PHYS_MULTIJUMP_COUNT(player);
43 if(!PHYS_MULTIJUMP(player)) {
return; }
46 player.multijump_count = 0;
53 if(!PHYS_MULTIJUMP(player)) {
return; }
55 int client_multijump = PHYS_MULTIJUMP_CLIENT(player);
56 if(client_multijump == -1)
57 client_multijump = PHYS_MULTIJUMP_CLIENTDEFAULT(player);
58 if(client_multijump > 1)
62 player.multijump_ready =
true;
64 player.multijump_ready =
false;
66 int phys_multijump = PHYS_MULTIJUMP(player);
68 if(!
M_ARGV(2,
bool) && player.multijump_ready && (PHYS_MULTIJUMP_COUNT(player) < phys_multijump || phys_multijump == -1) && player.velocity_z > PHYS_MULTIJUMP_SPEED(player) &&
69 (!PHYS_MULTIJUMP_MAXSPEED(player) ||
vdist(player.velocity, <=, PHYS_MULTIJUMP_MAXSPEED(player))))
71 if (PHYS_MULTIJUMP(player))
73 if (!PHYS_MULTIJUMP_ADD(player))
78 player.velocity_z = 0;
86 if(PHYS_MULTIJUMP_DODGING(player))
87 if(PHYS_CS(player).movement_x != 0 || PHYS_CS(player).movement_y != 0)
98 curspeed =
vlen(
vec2(player.velocity));
102 wishvel =
v_forward * PHYS_CS(player).movement_x +
v_right * PHYS_CS(player).movement_y;
105 player.velocity_x = wishdir_x * curspeed;
106 player.velocity_y = wishdir_y * curspeed;
109 if (PHYS_MULTIJUMP(player) > 0)
111 player.multijump_count += 1;
115 player.multijump_ready =
false;
#define REGISTER_MUTATOR(id, dependence)
REPLICATE(cvar_cl_casings, bool, "cl_casings")
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1 s1 strcat(_("Level %s: "), "^BG%s\3\, _("^BGPress ^F2%s^BG to enter the game"))
vector(float skel, float bonenum) _skel_get_boneabs_hidden
#define PHYS_JUMPVELOCITY(s)
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt()
bool PlayerJump(entity this)
#define MUTATOR_HOOKFUNCTION(...)