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
31 void SUB_SETORIGIN(entity s, vector v)
34 WITH(entity, self, s, _Movetype_LinkEdict(true));
40 void SUB_SetFade (entity ent, float when, float fading_time);
41 void SUB_VanishOrRemove (entity ent);
43 .vector finaldest, finalangle; //plat.qc stuff
46 .float t_length, t_width;
51 // player animation state
52 .float animstate_startframe;
53 .float animstate_numframes;
54 .float animstate_framerate;
55 .float animstate_starttime;
56 .float animstate_endtime;
57 .float animstate_override;
58 .float animstate_looping;
66 .float platmovetype_start, platmovetype_end;
80 .float trigger_reverse;
82 // Keys player is holding
84 // message delay for func_door locked by keys and key locks
85 // this field is used on player entities
86 .float key_door_messagetime;
91 // this stuff is defined in the server side engine VM, so we must define it separately here
93 const float DAMAGE_NO = 0;
94 const float DAMAGE_YES = 1;
95 const float DAMAGE_AIM = 2;
98 float STATE_BOTTOM = 1;
100 float STATE_DOWN = 3;
102 .string noise, noise1, noise2, noise3; // contains names of wavs to play
104 .float max_health; // players maximum health is stored here