.vector v_angle_old;
.string lastclassname;
-.float() PlayerPhysplug;
+.float(entity) PlayerPhysplug;
float AdjustAirAccelQW(float accelqw, float factor);
bool IsFlying(entity a);
#define PHYS_INPUT_BUTTON_ZOOM(s) PHYS_INPUT_BUTTON_BUTTON4(s)
#define PHYS_INPUT_BUTTON_CROUCH(s) PHYS_INPUT_BUTTON_BUTTON5(s)
#define PHYS_INPUT_BUTTON_HOOK(s) PHYS_INPUT_BUTTON_BUTTON6(s)
+
+#ifdef CSQC
+STATIC_INIT(PHYS_INPUT_BUTTON_HOOK)
+{
+ localcmd("alias +hook +button6\n");
+ localcmd("alias -hook -button6\n");
+}
+#endif
+
#define PHYS_INPUT_BUTTON_INFO(s) PHYS_INPUT_BUTTON_BUTTON7(s)
#define PHYS_INPUT_BUTTON_DRAG(s) PHYS_INPUT_BUTTON_BUTTON8(s)
#define PHYS_INPUT_BUTTON_USE(s) PHYS_INPUT_BUTTON_BUTTON_USE(s)
#define PHYS_INPUT_BUTTON_ZOOMSCRIPT(s) PHYS_INPUT_BUTTON_BUTTON9(s)
#define PHYS_INPUT_BUTTON_JETPACK(s) PHYS_INPUT_BUTTON_BUTTON10(s)
+#ifdef CSQC
+STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK)
+{
+ localcmd("alias +jetpack +button10\n");
+ localcmd("alias -jetpack -button10\n");
+}
+#endif
+
// if more buttons are needed, start using impulse bits as buttons
#define PHYS_INPUT_BUTTON_BACKWARD(s) (PHYS_INPUT_MOVEVALUES(s).x < 0)
#define SET_JUMP_HELD(s) ((s).flags &= ~FL_JUMPRELEASED)
#define UNSET_JUMP_HELD(s) ((s).flags |= FL_JUMPRELEASED)
-#define IS_ONGROUND(s) boolean((s).flags & FL_ONGROUND)
-#define SET_ONGROUND(s) ((s).flags |= FL_ONGROUND)
-#define UNSET_ONGROUND(s) ((s).flags &= ~FL_ONGROUND)
-
#define WAS_ONGROUND(s) boolean((s).lastflags & FL_ONGROUND)
#define ITEMS_STAT(s) ((s).items)
+.float teleport_time;
+#define PHYS_TELEPORT_TIME(s) ((s).teleport_time)
+
+.float waterjump_time;
+#define PHYS_WATERJUMP_TIME(s) ((s).waterjump_time)
+
#ifdef CSQC
+ #define PHYS_FIXANGLE(s) ('0 0 0')
+ #define PHYS_MOVETYPE(s) ((s).move_movetype)
+
string autocvar_cl_jumpspeedcap_min;
string autocvar_cl_jumpspeedcap_max;
- noref float pmove_waterjumptime;
-
const int FL_WATERJUMP = 2048; // player jumping out of water
const int FL_JUMPRELEASED = 4096; // for jump debouncing
.vector movement;
.vector v_angle;
+ .entity hook;
+
// TODO
#define IS_CLIENT(s) ((s).isplayermodel)
#define IS_PLAYER(s) ((s).isplayermodel)
#define PHYS_GRAVITY(s) STAT(MOVEVARS_GRAVITY, s)
- #define PHYS_TELEPORT_TIME(s) ((s).teleport_time)
-
#define TICRATE ticrate
#define PHYS_INPUT_ANGLES(s) input_angles
#define PHYS_INPUT_BUTTON_BUTTON15(s) boolean(input_buttons & BIT(17))
#define PHYS_INPUT_BUTTON_BUTTON16(s) boolean(input_buttons & BIT(18))
- #define PHYS_DEAD(s) ((s).csqcmodel_isdead)
-
#define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE (boolean(moveflags & MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE))
#define GAMEPLAYFIX_NOGRAVITYONGROUND (boolean(moveflags & MOVEFLAG_NOGRAVITYONGROUND))
#define GAMEPLAYFIX_Q2AIRACCELERATE (boolean(moveflags & MOVEFLAG_Q2AIRACCELERATE))
#elif defined(SVQC)
+ #define PHYS_FIXANGLE(s) ((s).fixangle)
+ #define PHYS_MOVETYPE(s) ((s).movetype)
+
bool Physics_Valid(string thecvar);
.float stat_sv_airspeedlimit_nonqw = _STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW);
.string jumpspeedcap_min;
.string jumpspeedcap_max;
- #define PHYS_TELEPORT_TIME(s) ((s).teleport_time)
-
#define PHYS_GRAVITY(s) autocvar_sv_gravity
#define TICRATE sys_frametime
#define PHYS_INPUT_BUTTON_BUTTON15(s) ((s).button15)
#define PHYS_INPUT_BUTTON_BUTTON16(s) ((s).button16)
- #define PHYS_DEAD(s) ((s).deadflag != DEAD_NO)
-
#define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE autocvar_sv_gameplayfix_gravityunaffectedbyticrate
#define GAMEPLAYFIX_NOGRAVITYONGROUND autocvar_sv_gameplayfix_nogravityonground
#define GAMEPLAYFIX_Q2AIRACCELERATE autocvar_sv_gameplayfix_q2airaccelerate