-#ifndef CSQCMODEL_HOOKS
-#define CSQCMODEL_HOOKS
+#pragma once
-void CSQCPlayer_Precache();
+bool autocvar_cl_respawn_ghosts_keepcolors;
+int autocvar_cl_playerdetailreduction;
+int autocvar_cl_modeldetailreduction;
+float autocvar_cl_loddistance1 = 768;
+float autocvar_cl_loddistance2 = 2048;
+bool autocvar_cl_forceplayermodels;
+bool autocvar_cl_forceplayercolors;
+bool autocvar_cl_forceuniqueplayercolors;
+string autocvar_cl_forcemyplayermodel;
+int autocvar_cl_forcemyplayerskin;
+int autocvar_cl_forcemyplayercolors;
+int autocvar__cl_color;
+int autocvar__cl_playerskin;
+string autocvar__cl_playermodel;
+float autocvar_cl_deathglow;
+float autocvar_cl_deathglow_min = 0.5;
+float autocvar_cl_jetpack_attenuation = 2;
+float autocvar_r_hdr_glowintensity;
-#endif
+// FEATURE: EF_NODRAW workalike
+const int EF_BRIGHTFIELD = BIT(0);
+const int EF_BRIGHTLIGHT = BIT(2);
+const int EF_DIMLIGHT = BIT(3);
+const int EF_DOUBLESIDED = BIT(15);
+const int EF_NOSELFSHADOW = BIT(16);
+const int EF_DYNAMICMODELLIGHT = BIT(17);
+const int EF_RESTARTANIM_BIT = BIT(20);
+const int EF_TELEPORT_BIT = BIT(21);
+
+const int MF_ROCKET = BIT(0); // leave a trail
+const int MF_GRENADE = BIT(1); // leave a trail
+const int MF_GIB = BIT(2); // leave a trail
+const int MF_ROTATE = BIT(3); // rotate (bonus items)
+const int MF_TRACER = BIT(4); // green split trail
+const int MF_ZOMGIB = BIT(5); // small blood trail
+const int MF_TRACER2 = BIT(6); // orange split trail
+const int MF_TRACER3 = BIT(7); // purple trail
+
+.int csqcmodel_effects;
+.int csqcmodel_modelflags;
+.int csqcmodel_traileffect;
+
+.bool csqcmodel_isdead; // used by shownames and miscfunctions (entcs_IsDead) to know when a player is dead
+
+.int isplayermodel;
+
+void CSQCModel_Effects_Apply(entity this);
+
+void CSQCModel_Hook_PreDraw(entity this, bool isplayer);