#pragma once

float autocvar_g_spawnshieldtime;
float autocvar_g_spawnshield_blockdamage;
bool autocvar_sv_precacheplayermodels;
bool autocvar_sv_defaultcharacter;
bool autocvar_sv_defaultcharacterskin;
int autocvar_sv_defaultplayerskin_blue;
int autocvar_sv_defaultplayerskin_pink;
int autocvar_sv_defaultplayerskin_red;
int autocvar_sv_defaultplayerskin_yellow;
string autocvar_sv_defaultplayercolors;
string autocvar_sv_defaultplayermodel;
string autocvar_sv_defaultplayermodel_blue;
string autocvar_sv_defaultplayermodel_pink;
string autocvar_sv_defaultplayermodel_red;
string autocvar_sv_defaultplayermodel_yellow;
int autocvar_sv_defaultplayerskin;
float autocvar_sv_gibhealth;

.entity pusher;
.float pushltime;
.bool istypefrag;

.float score_frame_dmg;
.float score_frame_dmgtaken;

.float CopyBody_nextthink;
.void(entity this) CopyBody_think;
void CopyBody_Think(entity this);
void CopyBody(entity this, float keepvelocity);

void player_setupanimsformodel(entity this);

void player_anim(entity this);

void PlayerCorpseDamage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force);

void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force);

bool PlayerHeal(entity targ, entity inflictor, float amount, float limit);

void precache_all_playermodels(string pattern);

IntrusiveList g_clones;
STATIC_INIT(g_clones) { g_clones = IL_NEW(); }
