#include <common/weapons/_all.qh>
#include <common/stats.qh>
-#define INDEPENDENT_ATTACK_FINISHED 1
-
// Globals
float g_footsteps, g_grappling_hook;
float currentbots;
float bots_would_leave;
-void UpdateFrags(entity player, int f);
-.int totalfrags;
+.int totalfrags; // NOTE: reused for multiple purposes
// flag set on worldspawn so that the code knows if it is dedicated or not
float server_is_dedicated;
.float count;
//.float cnt2;
-.int respawn_flags;
-.float respawn_time;
-.float respawn_time_max;
.float death_time;
.float fade_time;
.float fade_rate;
-void player_setupanimsformodel(entity this);
-
.string mdl;
.string playermodel;
// WEAPONTODO
.float autoswitch;
-bool client_hasweapon(entity this, Weapon wpn, .entity weaponentity, float andammo, bool complain);
-void w_clear(Weapon thiswep, entity actor, .entity weaponentity, int fire);
-void w_ready(Weapon thiswep, entity actor, .entity weaponentity, int fire);
-// VorteX: standalone think for weapons, so normal think on weaponentity can be reserved by weaponflashes (which needs update even player dies)
-.float weapon_nextthink;
-.void(Weapon thiswep, entity actor, .entity weaponentity, int fire) weapon_think;
-
-
-// there is 2 weapon tics that can run in one server frame
-const int W_TICSPERFRAME = 2;
-
-void weapon_defaultspawnfunc(entity this, Weapon e);
float intermission_running;
float intermission_exittime;
.float spawnshieldtime;
.float item_spawnshieldtime;
-.entity flagcarried;
-
.int playerid;
.float noalign; // if set to 1, the item or spawnpoint won't be dropped to the floor
string gamemode_name;
-string W_Apply_Weaponreplace(string in);
-
void FixIntermissionClient(entity e);
void FixClientCvars(entity e);
float bot_waypoints_for_items;
-.float attack_finished_for[REGISTRY_MAX(Weapons) * MAX_WEAPONSLOTS];
-.float attack_finished_single[MAX_WEAPONSLOTS];
-#if INDEPENDENT_ATTACK_FINISHED
-#define ATTACK_FINISHED_FOR(ent, w, slot) ((ent).(attack_finished_for[((w) - WEP_FIRST) * MAX_WEAPONSLOTS + (slot)]))
-#else
-#define ATTACK_FINISHED_FOR(ent, w, slot) ((ent).attack_finished_single[slot])
-#endif
-#define ATTACK_FINISHED(ent, w) ATTACK_FINISHED_FOR(ent, ent.(w).m_weapon.m_id, weaponslot(w))
-
// speedrun: when 1, player auto teleports back when capture timeout happens
.float speedrunning;
float tracebox_hits_trigger_hurt(vector start, vector mi, vector ma, vector end);
-float next_pingtime;
-
// autotaunt system
.float cvar_cl_autotaunt;
.float cvar_cl_voice_directional;
.void(entity this) reset; // if set, an entity is reset using this
.void(entity this) reset2; // if set, an entity is reset using this (after calling ALL the reset functions for other entities)
-void ClientData_Touch(entity e);
-
//vector debug_shotorg; // if non-zero, overrides the shot origin of all weapons
.bool wasplayer;
bool radar_showennemies;
-.float weapon_load[REGISTRY_MAX(Weapons)];
-.int ammo_none; // used by the reloading system, must always be 0
-.int clip_load;
-.int old_clip_load;
-.int clip_size;
-
.int minelayer_mines;
.float vortex_charge;
.float vortex_charge_rottime;
const int FROZEN_TEMP_REVIVING = 2;
const int FROZEN_TEMP_DYING = 3;
-const int ACTIVE_NOT = 0;
-const int ACTIVE_ACTIVE = 1;
-const int ACTIVE_IDLE = 2;
-const int ACTIVE_BUSY = 2;
-const int ACTIVE_TOGGLE = 3;
.int active;
.void (entity this, int act_state) setactive;
.entity realowner;
const int MIF_GUIDED_TRACKING = MIF_GUIDED_HEAT | MIF_GUIDED_LASER | MIF_GUIDED_AI | MIF_GUIDED_TAG;
const int MIF_GUIDED_CONFUSABLE = MIF_GUIDED_HEAT | MIF_GUIDED_AI;
-#define MISSILE_IS_CONFUSABLE(m) ((m.missile_flags & MIF_GUIDED_CONFUSABLE) ? true : false)
-#define MISSILE_IS_GUIDED(m) ((m.missile_flags & MIF_GUIDED_ALL) ? true : false)
-#define MISSILE_IS_TRACKING(m) ((m.missile_flags & MIF_GUIDED_TRACKING) ? true : false)
-
////
.string cvar_cl_physics;