1<!--
2
3This is an XML document type definition (DTD) for the Marathon MML document
4format. Written by Loren Petrich, updated by Christian Bauer.
5
6-->
7
8<!--==== Entities ====-->
9
10<!ENTITY % index_attr "index CDATA #REQUIRED">
11
12<!--==== The root element "mnarathon" ====-->
13
14<!ELEMENT marathon
15	(	stringset |
16		interface |
17		motion_sensor |
18		overhead_map |
19		infravision |
20		player_name |
21		dynamic_limits |
22		weapons |
23		items |
24		liquids |
25		platforms |
26		control_panels |
27		opengl |
28		cheats
29	)+
30>
31
32<!--==== Other elements ====-->
33
34<!ELEMENT stringset (string)*>
35<!ATTLIST stringset %index_attr;>
36
37<!ELEMENT string (#PCDATA)>
38<!ATTLIST string %index_attr;>
39
40<!ELEMENT interface (rect|color|font|weapon)+>
41
42<!ELEMENT rect EMPTY>
43<!ATTLIST rect
44	%index_attr;
45	top CDATA #REQUIRED
46	left CDATA #REQUIRED
47	bottom CDATA #REQUIRED
48	right CDATA #REQUIRED
49>
50
51<!ELEMENT color EMPTY>
52<!ATTLIST color
53	%index_attr;
54	red CDATA #REQUIRED
55	green CDATA #REQUIRED
56	blue CDATA #REQUIRED
57>
58
59<!ELEMENT font EMPTY>
60<!ATTLIST font
61	%index_attr;
62	name CDATA #IMPLIED
63	size CDATA #IMPLIED
64	style CDATA #IMPLIED
65	file CDATA #IMPLIED
66>
67
68<!ELEMENT weapon (ammo)*>
69<!ATTLIST weapon
70	%index_attr;
71	shape CDATA #IMPLIED
72	start_y CDATA #IMPLIED
73	end_y CDATA #IMPLIED
74	start_x CDATA #IMPLIED
75	end_x CDATA #IMPLIED
76	top CDATA #IMPLIED
77	left CDATA #IMPLIED
78	multiple CDATA #IMPLIED
79>
80
81<!ELEMENT ammo EMPTY>
82<!ATTLIST ammo
83	%index_attr;
84	type CDATA #IMPLIED
85	left CDATA #IMPLIED
86	top CDATA #IMPLIED
87	across CDATA #IMPLIED
88	down CDATA #IMPLIED
89	delta_x CDATA #IMPLIED
90	delta_y CDATA #IMPLIED
91	bullet_shape CDATA #IMPLIED
92	empty_shape CDATA #IMPLIED
93	right_to_left CDATA #IMPLIED
94>
95
96<!ELEMENT motion_sensor (ms_assign)+>
97
98<!ELEMENT ms_assign EMPTY>
99<!ATTLIST ms_assign
100	monster CDATA #REQUIRED
101	type CDATA #REQUIRED
102>
103
104<!-- FIXME: "items" already used in "marathon"
105<!ELEMENT overhead_map (assign_live|assign_dead|aliens|items|projectiles|paths|line|color|font)*>
106-->
107<!ELEMENT overhead_map (assign_live|assign_dead|aliens|projectiles|paths|line|color|font)*>
108<!ATTLIST overhead_map
109	mode CDATA #IMPLIED
110	title_offset CDATA #IMPLIED
111>
112
113<!ELEMENT assign_live EMPTY>
114<!ATTLIST assign_live
115	monster CDATA #REQUIRED
116	type CDATA #REQUIRED
117>
118
119<!ELEMENT assign_dead EMPTY>
120<!ATTLIST assign_dead
121	coll CDATA #REQUIRED
122	type CDATA #REQUIRED
123>
124
125<!ELEMENT aliens EMPTY>
126<!ATTLIST aliens
127	on CDATA #REQUIRED
128>
129
130<!-- FIXME: "items" already used in "marathon"
131<!ELEMENT items EMPTY>
132<!ATTLIST items
133	on CDATA #REQUIRED
134>
135-->
136
137<!ELEMENT projectiles EMPTY>
138<!ATTLIST projectiles
139	on CDATA #REQUIRED
140>
141
142<!ELEMENT paths EMPTY>
143<!ATTLIST paths
144	on CDATA #REQUIRED
145>
146
147<!ELEMENT line EMPTY>
148<!ATTLIST line
149	type CDATA #REQUIRED
150	scale CDATA #REQUIRED
151	width CDATA #REQUIRED
152>
153
154<!ELEMENT infravision (iv_assign|color)+>
155
156<!ELEMENT iv_assign EMPTY>
157<!ATTLIST iv_assign
158	coll CDATA #REQUIRED
159	color CDATA #REQUIRED
160>
161
162<!ELEMENT player_name (#PCDATA)>
163
164<!-- FIXME: "paths" and "projectiles" already used in "overhead_map"
165<!ELEMENT dynamic_limits (objects|monsters|paths|projectiles|effects|rendered|local_collision|global_collision)+>
166-->
167<!ELEMENT dynamic_limits (objects|monsters|effects|rendered|local_collision|global_collision)+>
168
169<!ELEMENT objects EMPTY>
170<!ATTLIST objects
171	value CDATA #REQUIRED
172>
173
174<!ELEMENT monsters EMPTY>
175<!ATTLIST monsters
176	value CDATA #REQUIRED
177>
178
179<!-- FIXME: "paths" and "projectiles" already used in overhead_map
180<!ELEMENT paths EMPTY>
181<!ATTLIST paths
182	value CDATA #REQUIRED
183>
184
185<!ELEMENT projectiles EMPTY>
186<!ATTLIST projectiles
187	value CDATA #REQUIRED
188>
189-->
190
191<!ELEMENT effects EMPTY>
192<!ATTLIST effects
193	value CDATA #REQUIRED
194>
195
196<!ELEMENT rendered EMPTY>
197<!ATTLIST rendered
198	value CDATA #REQUIRED
199>
200
201<!ELEMENT local_collision EMPTY>
202<!ATTLIST local_collision
203	value CDATA #REQUIRED
204>
205
206<!ELEMENT global_collision EMPTY>
207<!ATTLIST global_collision
208	value CDATA #REQUIRED
209>
210
211<!ELEMENT weapons (shell_casings|order)+>
212
213<!ELEMENT shell_casings EMPTY>
214<!ATTLIST shell_casings
215	%index_attr;
216	coll CDATA #IMPLIED
217	seq CDATA #IMPLIED
218	x0 CDATA #IMPLIED
219	y0 CDATA #IMPLIED
220	vx0 CDATA #IMPLIED
221	vy0 CDATA #IMPLIED
222	dvx CDATA #IMPLIED
223	dvy CDATA #IMPLIED
224>
225
226<!ELEMENT order EMPTY>
227<!ATTLIST order
228	%index_attr;
229	weapon CDATA #REQUIRED
230>
231
232<!ELEMENT items (item)+>
233
234<!ELEMENT item (shape?)>
235<!ATTLIST item
236	%index_attr;
237	singular CDATA #IMPLIED
238	plural CDATA #IMPLIED
239	maximum CDATA #IMPLIED
240	invalid CDATA #IMPLIED
241	type CDATA #IMPLIED
242>
243
244<!ELEMENT shape EMPTY>
245<!ATTLIST shape
246	coll CDATA #IMPLIED
247	clut CDATA #IMPLIED
248	seq CDATA #IMPLIED
249	frame CDATA #IMPLIED
250>
251
252<!ELEMENT liquids (liquid)+>
253
254<!ELEMENT liquid (sound|effect|damage)*>
255<!ATTLIST liquid
256	%index_attr;
257	coll CDATA #IMPLIED
258	frame CDATA #IMPLIED
259	transfer CDATA #IMPLIED
260	damage_freq CDATA #IMPLIED
261	submerged CDATA #IMPLIED
262>
263
264<!ELEMENT sound EMPTY>
265<!ATTLIST sound
266	type CDATA #REQUIRED
267	which CDATA #REQUIRED
268>
269
270<!ELEMENT effect EMPTY>
271<!ATTLIST effect
272	type CDATA #REQUIRED
273	which CDATA #REQUIRED
274>
275
276<!ELEMENT damage EMPTY>
277<!ATTLIST damage
278	type CDATA #IMPLIED
279	flags CDATA #IMPLIED
280	base CDATA #IMPLIED
281	random CDATA #IMPLIED
282	scale CDATA #IMPLIED
283>
284
285<!ELEMENT platforms (platform)+>
286
287<!ELEMENT platform (damage?)>
288<!ATTLIST platform
289	%index_attr;
290	start_extend CDATA #IMPLIED
291	start_contract CDATA #IMPLIED
292	stop_extend CDATA #IMPLIED
293	stop_contract CDATA #IMPLIED
294	obstructed CDATA #IMPLIED
295	uncontrollable CDATA #IMPLIED
296	moving CDATA #IMPLIED
297	item CDATA #IMPLIED
298>
299
300<!ELEMENT control_panels (panel)+>
301
302<!ELEMENT panel (sound?)>
303<!ATTLIST panel
304	%index_attr;
305	type CDATA #IMPLIED
306	coll CDATA #IMPLIED
307	active_frame CDATA #IMPLIED
308	inactive_frame CDATA #IMPLIED
309	pitch CDATA #IMPLIED
310	item CDATA #IMPLIED
311>
312
313<!ELEMENT opengl (texture|txtr_clear|model|model_clear|fog)+>
314
315<!ELEMENT texture EMPTY>
316<!ATTLIST texture
317	coll CDATA #REQUIRED
318	clut CDATA #IMPLIED
319	bitmap CDATA #REQUIRED
320	opac_type CDATA #IMPLIED
321	opac_scale CDATA #IMPLIED
322	opac_shift CDATA #IMPLIED
323	void_visible CDATA #IMPLIED
324	normal_image CDATA #IMPLIED
325	normal_mask CDATA #IMPLIED
326	glow_image CDATA #IMPLIED
327	glow_mask CDATA #IMPLIED
328	normal_blend CDATA #IMPLIED
329	glow_blend CDATA #IMPLIED
330	image_scale CDATA #IMPLIED
331	x_offset CDATA #IMPLIED
332	y_offset CDATA #IMPLIED
333>
334
335<!ELEMENT txtr_clear EMPTY>
336<!ATTLIST txtr_clear
337	coll CDATA #IMPLIED
338>
339
340<!ELEMENT model (skin)>
341<!ATTLIST model
342	coll CDATA #REQUIRED
343	seq CDATA #REQUIRED
344	scale CDATA #IMPLIED
345	x_rot CDATA #IMPLIED
346	y_rot CDATA #IMPLIED
347	z_rot CDATA #IMPLIED
348	x_shift CDATA #IMPLIED
349	y_shift CDATA #IMPLIED
350	z_shift CDATA #IMPLIED
351	side CDATA #IMPLIED
352	norm_type CDATA #IMPLIED
353	norm_split CDATA #IMPLIED
354	light_type CDATA #IMPLIED
355	depth_type CDATA #IMPLIED
356	file CDATA #IMPLIED
357	type CDATA #IMPLIED
358>
359
360<!ELEMENT skin EMPTY>
361<!ATTLIST skin
362	clut CDATA #IMPLIED
363	opac_type CDATA #IMPLIED
364	opac_scale CDATA #IMPLIED
365	opac_shift CDATA #IMPLIED
366	normal_image CDATA #IMPLIED
367	normal_mask CDATA #IMPLIED
368	glow_image CDATA #IMPLIED
369	glow_mask CDATA #IMPLIED
370	normal_blend CDATA #IMPLIED
371	glow_blend CDATA #IMPLIED
372>
373
374<!ELEMENT model_clear EMPTY>
375<!ATTLIST model_clear
376	coll CDATA #IMPLIED
377>
378
379<!ELEMENT fog (color)>
380<!ATTLIST fog
381	on CDATA #IMPLIED
382	depth CDATA #IMPLIED
383	type CDATA #IMPLIED
384>
385
386<!ELEMENT cheats EMPTY>
387<!ATTLIST cheats
388	on CDATA #IMPLIED
389	max_keymod CDATA #IMPLIED
390>
391