Add a difficulty setting for Jebel Barkal, refs #4963.
[0ad.git] / binaries / data / mods / public / maps / scenario.rng
blob947f019b147ed35aa03020102dca635acfb73230
1 <?xml version="1.0" encoding="UTF-8"?>
2 <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3 <start>
4 <a:documentation/>
5 <!--
6 NOTE: To modify this Relax NG grammar, edit the Relax NG Compact (.rnc) file
7 and use a converter tool like trang to generate the Relax NG XML (.rng) file
8 -->
9 <a:documentation/>
10 <ref name="Scenario"/>
11 </start>
12 <define name="color_rgb">
13 <a:documentation/>
14 <!-- Defines # -->
15 <a:documentation/>
16 <attribute name="r">
17 <data type="decimal">
18 <param name="minInclusive">0</param>
19 <param name="maxInclusive">1</param>
20 </data>
21 </attribute>
22 <attribute name="g">
23 <data type="decimal">
24 <param name="minInclusive">0</param>
25 <param name="maxInclusive">1</param>
26 </data>
27 </attribute>
28 <attribute name="b">
29 <data type="decimal">
30 <param name="minInclusive">0</param>
31 <param name="maxInclusive">1</param>
32 </data>
33 </attribute>
34 </define>
35 <define name="suncolor_rgb">
36 <!-- RGB can be > 1 due to overbrightness -->
37 <attribute name="r">
38 <data type="decimal">
39 <param name="minInclusive">0</param>
40 </data>
41 </attribute>
42 <attribute name="g">
43 <data type="decimal">
44 <param name="minInclusive">0</param>
45 </data>
46 </attribute>
47 <attribute name="b">
48 <data type="decimal">
49 <param name="minInclusive">0</param>
50 </data>
51 </attribute>
52 </define>
53 <define name="pos_xyz">
54 <attribute name="x">
55 <data type="float"/>
56 </attribute>
57 <attribute name="y">
58 <data type="float"/>
59 </attribute>
60 <attribute name="z">
61 <data type="float"/>
62 </attribute>
63 </define>
64 <define name="pos_xz">
65 <attribute name="x">
66 <data type="decimal"/>
67 </attribute>
68 <attribute name="z">
69 <data type="decimal"/>
70 </attribute>
71 </define>
72 <define name="angle">
73 <attribute name="angle">
74 <data type="float"/>
75 </attribute>
76 </define>
77 <!-- TODO: bounds are not documented for many of these -->
78 <define name="Scenario">
79 <a:documentation/>
80 <!-- Scenario # -->
81 <a:documentation/>
82 <element name="Scenario">
83 <interleave>
84 <attribute name="version">
85 <data type="positiveInteger"/>
86 </attribute>
87 <element name="Environment">
88 <interleave>
89 <element name="SkySet">
90 <text/>
91 </element>
92 <element name="SunColor">
93 <ref name="suncolor_rgb"/>
94 </element>
95 <element name="SunElevation">
96 <ref name="angle"/>
97 </element>
98 <element name="SunRotation">
99 <ref name="angle"/>
100 </element>
101 <element name="TerrainAmbientColor">
102 <ref name="color_rgb"/>
103 </element>
104 <element name="UnitsAmbientColor">
105 <ref name="color_rgb"/>
106 </element>
107 <optional>
108 <element name="Fog">
109 <interleave>
110 <element name="FogFactor">
111 <data type="decimal">
112 <param name="minInclusive">0</param>
113 </data>
114 <!-- TODO: what is the max? -->
115 </element>
116 <element name="FogThickness">
117 <data type="decimal">
118 <param name="minInclusive">0</param>
119 </data>
120 <!-- TODO: what is the max? -->
121 </element>
122 <element name="FogColor">
123 <ref name="color_rgb"/>
124 </element>
125 </interleave>
126 </element>
127 </optional>
128 <element name="Water">
129 <element name="WaterBody">
130 <interleave>
131 <element name="Type">
132 <text/>
133 </element>
134 <!-- Not implemented -->
135 <element name="Color">
136 <ref name="color_rgb"/>
137 </element>
138 <element name="Height">
139 <data type="decimal"/>
140 </element>
141 <element name="Waviness">
142 <data type="decimal"/>
143 </element>
144 <element name="Murkiness">
145 <data type="decimal"/>
146 </element>
147 <element name="Tint">
148 <ref name="color_rgb"/>
149 </element>
150 <optional>
151 <element name="WindAngle">
152 <data type="decimal"/>
153 </element>
154 </optional>
155 </interleave>
156 </element>
157 </element>
158 <optional>
159 <element name="Postproc">
160 <element name="Brightness">
161 <data type="decimal"/>
162 </element>
163 <element name="Contrast">
164 <data type="decimal"/>
165 </element>
166 <element name="Saturation">
167 <data type="decimal"/>
168 </element>
169 <element name="Bloom">
170 <data type="decimal"/>
171 </element>
172 <element name="PostEffect">
173 <text/>
174 </element>
175 </element>
176 </optional>
177 </interleave>
178 </element>
179 <optional>
180 <element name="Terrain">
181 <optional>
182 <attribute name="patches">
183 <data type="positiveInteger"/>
184 </attribute>
185 </optional>
186 <optional>
187 <attribute name="texture"/>
188 </optional>
189 <optional>
190 <attribute name="priority">
191 <data type="nonNegativeInteger"/>
192 </attribute>
193 </optional>
194 <optional>
195 <attribute name="height">
196 <data type="positiveInteger"/>
197 </attribute>
198 </optional>
199 </element>
200 </optional>
201 <optional>
202 <element name="Script">
203 <text/>
204 </element>
205 </optional>
206 <optional>
207 <element name="Camera">
208 <!-- Camera can have weird float values -->
209 <element name="Position">
210 <ref name="pos_xyz"/>
211 </element>
212 <element name="Rotation">
213 <ref name="angle"/>
214 </element>
215 <element name="Declination">
216 <ref name="angle"/>
217 </element>
218 </element>
219 </optional>
220 <element name="ScriptSettings">
221 <text/>
222 </element>
223 <optional>
224 <element name="Entities">
225 <zeroOrMore>
226 <element name="Entity">
227 <interleave>
228 <attribute name="uid">
229 <data type="positiveInteger"/>
230 </attribute>
231 <element name="Template">
232 <text/>
233 </element>
234 <optional>
235 <element name="Player">
236 <data type="nonNegativeInteger"/>
237 </element>
238 </optional>
239 <element name="Position">
240 <ref name="pos_xz"/>
241 </element>
242 <element name="Orientation">
243 <attribute name="y">
244 <data type="decimal"/>
245 </attribute>
246 </element>
247 <optional>
248 <element name="Obstruction">
249 <attribute name="group">
250 <data type="positiveInteger"/>
251 </attribute>
252 <optional>
253 <attribute name="group2">
254 <data type="positiveInteger"/>
255 </attribute>
256 </optional>
257 </element>
258 </optional>
259 <optional>
260 <element name="Actor">
261 <attribute name="seed">
262 <data type="integer"/>
263 </attribute>
264 </element>
265 </optional>
266 </interleave>
267 </element>
268 </zeroOrMore>
269 </element>
270 </optional>
271 <optional>
272 <element name="Paths">
273 <zeroOrMore>
274 <element name="Path">
275 <interleave>
276 <attribute name="name"/>
277 <attribute name="timescale">
278 <data type="decimal"/>
279 </attribute>
280 <attribute name="orientation"/>
281 <attribute name="mode"/>
282 <attribute name="style"/>
283 <zeroOrMore>
284 <element name="Node">
285 <interleave>
286 <attribute name="deltatime">
287 <data type="decimal">
288 <param name="minInclusive">0</param>
289 </data>
290 </attribute>
291 <optional>
292 <element name="Position">
293 <ref name="pos_xyz"/>
294 </element>
295 </optional>
296 <optional>
297 <element name="Target">
298 <ref name="pos_xyz"/>
299 </element>
300 </optional>
301 </interleave>
302 </element>
303 </zeroOrMore>
304 </interleave>
305 </element>
306 </zeroOrMore>
307 </element>
308 </optional>
309 <optional>
310 <element name="Triggers">
311 <!-- Unused -->
312 <empty/>
313 </element>
314 </optional>
315 </interleave>
316 </element>
317 </define>
318 </grammar>