#define INDEPENDENT_ATTACK_FINISHED
-float require_spawnfunc_prefix; // if this float exists, only functions with spawnfunc_ name prefix qualify as spawn functions
+noref float require_spawnfunc_prefix; // if this float exists, only functions with spawnfunc_ name prefix qualify as spawn functions
#define BUTTON_ATCK button0
#define BUTTON_JUMP button2
.vector anim_die1; // player dies
.vector anim_die2; // player dies differently
.vector anim_draw; // player pulls out a weapon
-.vector anim_duck; // player crouches (from idle to duckidle)
+// .vector anim_duck; // player crouches (from idle to duckidle)
.vector anim_duckwalk; // player walking while crouching
.vector anim_duckjump; // player jumping from a crouch
.vector anim_duckidle; // player idling while crouching
.float watersound_finished;
.float iscreature;
+.float damagedbycontents;
.vector oldvelocity;
.float pauseregen_finished;
.float runes;
+// Keys player is holding
+.float itemkeys;
+// message delay for func_door locked by keys and key locks
+// this field is used on player entities
+.float key_door_messagetime;
+
.float version;
.float cvar_cl_handicap;
.float cvar_cl_playerdetailreduction;
.float cvar_cl_clippedspectating;
+.float cvar_cl_autoscreenshot;
.float cvar_cl_movement_track_canjump;
+.float cvar_cl_newusekeysupported;
.string cvar_g_xonoticversion;
.string cvar_cl_weaponpriority;
.float clip_size;
.float minelayer_mines;
+.float grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab
+
#define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE
// when doing this, hagar can go through clones
// #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_BBOX
.float misc_bulletcounter; // replaces uzi & hlac bullet counter.
void PlayerUseKey();
+
+typedef vector(entity player, entity spot, vector current) spawn_evalfunc_t;
+.spawn_evalfunc_t spawn_evalfunc;