-#ifndef MOVETYPES_H
-#define MOVETYPES_H
+#pragma once
#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 IS_ONSLICK(s) boolean((s).flags & FL_ONSLICK)
+#define SET_ONSLICK(s) ((s).flags |= FL_ONSLICK)
+#define UNSET_ONSLICK(s) ((s).flags &= ~FL_ONSLICK)
+
+#define GAMEPLAYFIX_DOWNTRACEONGROUND(s) STAT(GAMEPLAYFIX_DOWNTRACEONGROUND, s)
+#define GAMEPLAYFIX_EASIERWATERJUMP(s) STAT(GAMEPLAYFIX_EASIERWATERJUMP, s)
+#define GAMEPLAYFIX_STEPDOWN(s) STAT(GAMEPLAYFIX_STEPDOWN, s)
+#define GAMEPLAYFIX_STEPMULTIPLETIMES(s) STAT(GAMEPLAYFIX_STEPMULTIPLETIMES, s)
+#define GAMEPLAYFIX_UNSTICKPLAYERS(s) STAT(GAMEPLAYFIX_UNSTICKPLAYERS, s)
+#define GAMEPLAYFIX_WATERTRANSITION(s) STAT(GAMEPLAYFIX_WATERTRANSITION, s)
#ifdef CSQC
.float bouncestop;
.float bouncefactor;
#endif
-#ifdef SVQC
-.bool move_qcphysics;
-#endif
-
void set_movetype(entity this, int mt);
.float move_movetype;
.entity aiment;
.vector punchangle;
-.entity move_groundentity; // FIXME add move_groundnetworkentity?
+.entity groundentity; // FIXME add move_groundnetworkentity?
.float move_suspendedinair;
.float move_didgravity;
vector _Movetype_ClipVelocity(vector vel, vector norm, float f);
void _Movetype_PushEntityTrace(entity this, vector push);
float _Movetype_PushEntity(entity this, vector push, float failonstartsolid);
-void makevectors_matrix(vector myangles);
void Movetype_Physics_NoMatchTicrate(entity this, float movedt, bool isclient);
void Movetype_Physics_MatchTicrate(entity this, float tr, bool sloppy);
const int FL_ITEM = 256;
const int FL_ONGROUND = 512;
+#elif defined(SVQC)
+const int MOVETYPE_ANGLENOCLIP = 1;
+const int MOVETYPE_ANGLECLIP = 2;
#endif
+const int FL_ONSLICK = BIT(20);
+
const int MOVETYPE_FAKEPUSH = 13;
const int MOVEFLAG_VALID = BIT(23);
#ifdef CSQC
#define moveflags STAT(MOVEFLAGS)
#endif
-
-#endif