6 #define SUB_ANGLES(s) (s).angles
7 #define SUB_VELOCITY velocity
8 #define SUB_AVELOCITY avelocity
9 #define SUB_ORIGIN origin
10 #define SUB_SETORIGIN(s,v) setorigin((s), (v))
11 #define SUB_NEXTTHINK nextthink
12 #define SUB_THINK think
13 #define SUB_LTIME ltime
14 #define SUB_FLAGS flags
18 void _Movetype_LinkEdict(float touch_triggers);
20 #define SUB_ANGLES(s) (s).move_angles
21 #define SUB_VELOCITY move_velocity
22 #define SUB_AVELOCITY move_avelocity
23 #define SUB_ORIGIN move_origin
24 #define SUB_NEXTTHINK move_nextthink
25 #define SUB_THINK move_think
26 #define SUB_LTIME move_ltime
27 #define SUB_FLAGS move_flags
29 void SUB_SETORIGIN(entity s, vector v)
32 WITH(entity, self, s, _Movetype_LinkEdict(true));
38 void SUB_SetFade (entity ent, float when, float fading_time);
39 void SUB_VanishOrRemove (entity ent);
41 .vector finaldest, finalangle; //plat.qc stuff
44 .float t_length, t_width;
49 // player animation state
50 .float animstate_startframe;
51 .float animstate_numframes;
52 .float animstate_framerate;
53 .float animstate_starttime;
54 .float animstate_endtime;
55 .float animstate_override;
56 .float animstate_looping;
64 .float platmovetype_start, platmovetype_end;
78 .float trigger_reverse;
80 // Keys player is holding
82 // message delay for func_door locked by keys and key locks
83 // this field is used on player entities
84 .float key_door_messagetime;
89 // this stuff is defined in the server side engine VM, so we must define it separately here
91 const float DAMAGE_NO = 0;
92 const float DAMAGE_YES = 1;
93 const float DAMAGE_AIM = 2;
96 float STATE_BOTTOM = 1;
100 .string noise, noise1, noise2, noise3; // contains names of wavs to play
102 .float max_health; // players maximum health is stored here