1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19*/
20// protocol.h -- communications protocols
21
22#define	PROTOCOL_VERSION	15
23
24// if the high bit of the servercmd is set, the low bits are fast update flags:
25#define	U_MOREBITS	(1<<0)
26#define	U_ORIGIN1	(1<<1)
27#define	U_ORIGIN2	(1<<2)
28#define	U_ORIGIN3	(1<<3)
29#define	U_ANGLE2	(1<<4)
30#define	U_NOLERP	(1<<5)		// don't interpolate movement
31#define	U_FRAME		(1<<6)
32#define U_SIGNAL	(1<<7)		// just differentiates from other updates
33
34// svc_update can pass all of the fast update bits, plus more
35#define	U_ANGLE1	(1<<8)
36#define	U_ANGLE3	(1<<9)
37#define	U_MODEL		(1<<10)
38#define	U_COLORMAP	(1<<11)
39#define	U_SKIN		(1<<12)
40#define	U_EFFECTS	(1<<13)
41#define	U_LONGENTITY	(1<<14)
42
43
44#define	SU_VIEWHEIGHT	(1<<0)
45#define	SU_IDEALPITCH	(1<<1)
46#define	SU_PUNCH1		(1<<2)
47#define	SU_PUNCH2		(1<<3)
48#define	SU_PUNCH3		(1<<4)
49#define	SU_VELOCITY1	(1<<5)
50#define	SU_VELOCITY2	(1<<6)
51#define	SU_VELOCITY3	(1<<7)
52//define	SU_AIMENT		(1<<8)  AVAILABLE BIT
53#define	SU_ITEMS		(1<<9)
54#define	SU_ONGROUND		(1<<10)		// no data follows, the bit is it
55#define	SU_INWATER		(1<<11)		// no data follows, the bit is it
56#define	SU_WEAPONFRAME	(1<<12)
57#define	SU_ARMOR		(1<<13)
58#define	SU_WEAPON		(1<<14)
59
60// a sound with no channel is a local only sound
61#define	SND_VOLUME		(1<<0)		// a byte
62#define	SND_ATTENUATION	(1<<1)		// a byte
63#define	SND_LOOPING		(1<<2)		// a long
64
65
66// defaults for clientinfo messages
67#define	DEFAULT_VIEWHEIGHT	22
68
69
70// game types sent by serverinfo
71// these determine which intermission screen plays
72#define	GAME_COOP			0
73#define	GAME_DEATHMATCH		1
74
75//==================
76// note that there are some defs.qc that mirror to these numbers
77// also related to svc_strings[] in cl_parse
78//==================
79
80//
81// server to client
82//
83#define	svc_bad				0
84#define	svc_nop				1
85#define	svc_disconnect		2
86#define	svc_updatestat		3	// [byte] [long]
87#define	svc_version			4	// [long] server version
88#define	svc_setview			5	// [short] entity number
89#define	svc_sound			6	// <see code>
90#define	svc_time			7	// [float] server time
91#define	svc_print			8	// [string] null terminated string
92#define	svc_stufftext		9	// [string] stuffed into client's console buffer
93								// the string should be \n terminated
94#define	svc_setangle		10	// [angle3] set the view angle to this absolute value
95
96#define	svc_serverinfo		11	// [long] version
97						// [string] signon string
98						// [string]..[0]model cache
99						// [string]...[0]sounds cache
100#define	svc_lightstyle		12	// [byte] [string]
101#define	svc_updatename		13	// [byte] [string]
102#define	svc_updatefrags		14	// [byte] [short]
103#define	svc_clientdata		15	// <shortbits + data>
104#define	svc_stopsound		16	// <see code>
105#define	svc_updatecolors	17	// [byte] [byte]
106#define	svc_particle		18	// [vec3] <variable>
107#define	svc_damage			19
108
109#define	svc_spawnstatic		20
110//	svc_spawnbinary		21
111#define	svc_spawnbaseline	22
112
113#define	svc_temp_entity		23
114
115#define	svc_setpause		24	// [byte] on / off
116#define	svc_signonnum		25	// [byte]  used for the signon sequence
117
118#define	svc_centerprint		26	// [string] to put in center of the screen
119
120#define	svc_killedmonster	27
121#define	svc_foundsecret		28
122
123#define	svc_spawnstaticsound	29	// [coord3] [byte] samp [byte] vol [byte] aten
124
125#define	svc_intermission	30		// [string] music
126#define	svc_finale			31		// [string] music [string] text
127
128#define	svc_cdtrack			32		// [byte] track [byte] looptrack
129#define svc_sellscreen		33
130
131#define svc_cutscene		34
132
133//
134// client to server
135//
136#define	clc_bad			0
137#define	clc_nop 		1
138#define	clc_disconnect	2
139#define	clc_move		3			// [usercmd_t]
140#define	clc_stringcmd	4		// [string] message
141
142
143//
144// temp entity events
145//
146#define	TE_SPIKE			0
147#define	TE_SUPERSPIKE		1
148#define	TE_GUNSHOT			2
149#define	TE_EXPLOSION		3
150#define	TE_TAREXPLOSION		4
151#define	TE_LIGHTNING1		5
152#define	TE_LIGHTNING2		6
153#define	TE_WIZSPIKE			7
154#define	TE_KNIGHTSPIKE		8
155#define	TE_LIGHTNING3		9
156#define	TE_LAVASPLASH		10
157#define	TE_TELEPORT			11
158#define TE_EXPLOSION2		12
159
160// PGM 01/21/97
161#define TE_BEAM				13
162// PGM 01/21/97
163
164#ifdef QUAKE2
165#define TE_IMPLOSION		14
166#define TE_RAILTRAIL		15
167#endif
168