1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 #ifndef LASTEXPRESS_SHARED_H
24 #define LASTEXPRESS_SHARED_H
25 
26 #include "common/func.h"
27 
28 namespace LastExpress {
29 
30 //////////////////////////////////////////////////////////////////////////
31 // Sound
32 //////////////////////////////////////////////////////////////////////////
33 
34 enum SoundTag {
35 	kSoundTagNone        = 0,
36 	kSoundTagAmbient     = 1,
37 	kSoundTagOldAmbient  = 2,
38 	kSoundTagWalla       = 3,
39 	kSoundTagOldWalla    = 4,
40 	kSoundTagConcert     = 5,
41 	// 6 is unused
42 	kSoundTagLink        = 7,
43 	kSoundTagOldLink     = 8,
44 	kSoundTagNIS         = 9,
45 	kSoundTagOldNIS      = 10,
46 	kSoundTagIntro       = 11,
47 	// 12 is unused
48 	kSoundTagMenu        = 13,
49 	kSoundTagOldMenu     = 14,
50 	kSoundTagCredits     = 15,
51 	kSoundTagFirstNormal = 16
52 	// every normal sound gets its own tag from an incrementing counter
53 	// initialized as kSoundTagFirstNormal,
54 	// so tags can have values not covered by this enum
55 };
56 
57 /*
58     These are the flags used by the original game
59     to keep track of sound entry status.
60 
61     They are directly exposed via savefiles,
62     so we should be aware of them
63     even though we don't use some of them internally.
64 
65     Sound playback is asynchronous.
66     We have threads and mutexes for synchronization,
67     DOS games have main code and IRQ/interrupt handlers instead,
68     some flags come in pairs to deal with this:
69     the main code sets kSoundFlagXxxRequested as a signal
70     to the interrupt handler, the interrupt handler processes it
71     (e.g. stops using the associated buffer for Close and Mute requests)
72     and sets the corresponding result flag. The main code can proceed then
73     (e.g. release the associated buffer).
74 
75     The original game has a limited number of sound buffers (namely, 6)
76     (plus 16 versions of ADPCM decoder in assembly language,
77     one for every non-zero volume, so I suppose the performance was an issue).
78     The original game has also many events that could happen in different areas
79     of the train at the same time, some of them are synchronized via the sound
80     (kActionEndSound). To deal with it, the original game uses kSoundFlagMute:
81     muted sounds don't have their own buffer, don't participate in mixing the channels,
82     but the interrupt handler still tracks their progress.
83     Non-audible sounds (e.g. because the corresponding event goes on in another car)
84     are always muted; if the number of audible sounds exceeds the number of buffers,
85     least-priority sounds are muted as well (the priority is the sum of a static
86     constant from the entry constructor and the current volume).
87 
88     Normally the sound duration is read from (one of the fields
89     in the header of) the associated file. However, if the sound entry
90     is started as muted, the buffer is not allocated and no data are read;
91     in this case, the duration is estimated from file size.
92     Since HPF archives store all sizes as counts of 0x800-byte blocks,
93     this loses some precision, but nothing to really care about.
94     If a started-as-muted sound is unmuted later (Cath enters the car
95     where a dialog takes place), the exact duration is loaded from the file;
96     kSoundFlagHeaderProcessed says that the duration is exact.
97 
98     We have more sound channels available, we are not so limited
99     by the performance, and we lose some control of how exactly the backend
100     processes the sound as a payment for portability, so we can afford
101     to just mix the silence without special processing of muted entries.
102 */
103 enum SoundFlag {
104 	kSoundVolumeEntityDefault = 0xFFFFFFFF, // special value for SoundManager::playSound; choose volume based on distance to the entity
105 
106 	kVolumeNone               = 0x0,
107 	kVolume1                  = 0x1,
108 	kVolume2                  = 0x2,
109 	kVolume3                  = 0x3,
110 	kVolume4                  = 0x4,
111 	kVolume5                  = 0x5,
112 	kVolume6                  = 0x6,
113 	kVolume7                  = 0x7,
114 	kVolume8                  = 0x8,
115 	kVolume9                  = 0x9,
116 	kVolume10                 = 0xA,
117 	kVolume11                 = 0xB,
118 	kVolume12                 = 0xC,
119 	kVolume13                 = 0xD,
120 	kVolume14                 = 0xE,
121 	kVolume15                 = 0xF,
122 	kVolumeFull               = 0x10,
123 
124 	kSoundVolumeMask          = 0x1F,
125 
126 	kSoundFlagPlayRequested   = 0x20,
127 	kSoundFlagPlaying         = 0x40, // IRQ handler has seen kSoundFlagPlayRequested and has started the playback
128 	kSoundFlagMuteRequested   = 0x80,
129 	kSoundFlagMuteProcessed   = 0x100, // IRQ handler has seen kSoundFlagMuteRequested
130 	kSoundFlagMute            = kSoundFlagMuteRequested | kSoundFlagMuteProcessed,
131 	kSoundFlagCloseRequested  = 0x200, // close requested, waiting for IRQ handler to confirm
132 	kSoundFlagClosed          = 0x400, // IRQ handler has seen kSoundFlagClosing and is completely done with this sound
133 	kSoundFlagCloseOnDataEnd  = 0x800, // used as the opposite of kSoundFlagLooped
134 	kSoundFlagLooped          = 0x1000,
135 	kSoundFlagCyclicBuffer    = 0x2000, // when the decoder reaches the end of buffer, the decoder should continue from the beginning of buffer
136 	kSoundFlagHasUnreadData   = 0x4000, // stream has more data
137 	kSoundFlagDelayedActivate = 0x8000, // start playing at _activateTime
138 	kSoundFlagHasLinkAfter    = 0x10000, // _linkAfter is valid and should be activated after this sound; used by xxx.NIS sounds for xxx.LNK
139 	kSoundFlagHasSubtitles    = 0x20000,
140 	kSoundFlagPaused          = 0x40000, // IRQ handler has seen kSoundFlagPauseRequested and does not use the buffer anymore
141 	kSoundFlagFixedVolume     = 0x80000, // Turns off the logic of volume adjusting for entity-related sounds when distance to entity is changed
142 	kSoundFlagVolumeChanging  = 0x100000, // smooth changing of the volume is in progress
143 	kSoundFlagHeaderProcessed = 0x200000, // count of blocks is the accurate value from the header
144 	kSoundFlagPauseRequested  = 0x400000, // used when the reader needs to change the buffer
145 	kSoundFlagDecodeStall     = 0x800000, // the decoder has stopped because the reader is too slow and has not yet provided further data
146 
147 	kSoundTypeNormal          = 0x0000000, // everything not included in any specific category
148 	kSoundTypeAmbient         = 0x1000000, // train sounds, steam, wind, restaurant sounds
149 	kSoundTypeConcert         = 0x2000000, // 1917.LNK
150 	kSoundTypeMenu            = 0x3000000, // menu screen, blinking egg after time travel; excluded from savefiles
151 	kSoundTypeLink            = 0x4000000, // xxx.LNK linked after NIS sound, except for 1917.LNK
152 	kSoundTypeIntro           = 0x5000000, // intro at game start before showing the menu
153 	kSoundTypeWalla           = 0x6000000, // LOOP8A.SND by kEntityTables2
154 	kSoundTypeNIS             = 0x7000000, // special entry managed by NIS code
155 
156 	kSoundTypeMask            = 0x7000000,
157 
158 	kSoundFlagKeepAfterFinish = 0x8000000, // don't free the entry when it has stopped playing; used for kSoundTypeNIS
159 	kSoundFlagDecodeError     = 0x20000000, // error in compressed stream
160 	kSoundFlagFading          = 0x40000000, // prevents attempts to unfade once fade is requested
161 	kSoundFlagUnmuteRequested = 0x80000000  // purely informational
162 };
163 
164 enum AmbientSoundState {
165 	kAmbientSoundEnabled  = 1,
166 	kAmbientSoundSteam    = 2
167 };
168 
169 //////////////////////////////////////////////////////////////////////////
170 // Time values
171 //////////////////////////////////////////////////////////////////////////
172 
173 // Time is measured in ticks, with 15 ticks per second. One minute is 900
174 // ticks, one hour is 54,000 ticks, and one day is 1,296,000 ticks.
175 
176 enum TimeValue {
177 	kTimeNone                 = 0,
178 	kTime5933                 = 5933,
179 
180 	kTimeCityParis            = 1037700,	// Day 1, 19:13
181 	kTime1039500              = 1039500,	// Day 1, 19:15
182 	kTimeStartGame            = 1061100,	// Day 1, 19:39
183 
184 	// Chapter 1
185 	kTimeChapter1             = 1062000,	// Day 1, 19:40
186 	kTime1071000              = 1071000,	// Day 1, 19:50
187 	kTimeParisEpernay         = 1075500,	// Day 1, 19:55
188 	kTime1080000              = 1080000,	// Day 1, 20:00
189 	kTime1084500              = 1084500,	// Day 1, 20:05
190 	kTime1089000              = 1089000,	// Day 1, 20:10
191 	kTime1093500              = 1093500,	// Day 1, 20:15
192 	kTime1094400              = 1094400,	// Day 1, 20:16
193 	kTime1096200              = 1096200,	// Day 1, 20:18
194 	kTime1098000              = 1098000,	// Day 1, 20:20
195 	kTime1102500              = 1102500,	// Day 1, 20:25
196 	kTime1107000              = 1107000,	// Day 1, 20:30
197 	kTime1111500              = 1111500,	// Day 1, 20:35
198 	kTime1120500              = 1120500,	// Day 1, 20:45
199 	kTime1125000              = 1125000,	// Day 1, 20:50
200 	kTime1134000              = 1134000,	// Day 1, 21:00
201 	kTime1138500              = 1138500,	// Day 1, 21:05
202 	kTime1143000              = 1143000,	// Day 1, 21:10
203 	kTimeEnterEpernay         = 1147500,	// Day 1, 21:15
204 	kTimeCityEpernay          = 1148400,	// Day 1, 21:16
205 	kTimeExitEpernay          = 1150200,	// Day 1, 21:18
206 	kTime1156500              = 1156500,	// Day 1, 21:25
207 	kTime1161000              = 1161000,	// Day 1, 21:30
208 	kTime1162800              = 1162800,	// Day 1, 21:32
209 	kTime1165500              = 1165500,	// Day 1, 21:35
210 	kTime1167300              = 1167300,	// Day 1, 21:37
211 	kTimeEnterChalons         = 1170000,	// Day 1, 21:40
212 	kTimeCityChalons          = 1170900,	// Day 1, 21:41
213 	kTimeExitChalons          = 1173600,	// Day 1, 21:44
214 	kTime1174500              = 1174500,	// Day 1, 21:45
215 	kTime1179000              = 1179000,	// Day 1, 21:50
216 	kTime1183500              = 1183500,	// Day 1, 21:55
217 	kTime1184400              = 1184400,	// Day 1, 21:56
218 	kTime1188000              = 1188000,	// Day 1, 22:00
219 	kTime1189800              = 1189800,	// Day 1, 22:02
220 	kTime1192500              = 1192500,	// Day 1, 22:05
221 	kTime1197000              = 1197000,	// Day 1, 22:10
222 	kTime1201500              = 1201500,	// Day 1, 22:15
223 	kTime1206000              = 1206000,	// Day 1, 22:20
224 	kTime1215000              = 1215000,	// Day 1, 22:30
225 	kTime1224000              = 1224000,	// Day 1, 22:40
226 	kTime1225800              = 1225800,	// Day 1, 22:42
227 	kTimeCityBarLeDuc         = 1228500,	// Day 1, 22:45
228 	kTimeExitBarLeDuc         = 1231200,	// Day 1, 22:48
229 	kTime1233000              = 1233000,	// Day 1, 22:50
230 	kTime1242000              = 1242000,	// Day 1, 23:00
231 	kTime1260000              = 1260000,	// Day 1, 23:20
232 	kTimeCityNancy            = 1303200,	// Day 2, 00:08
233 	kTimeExitNancy            = 1307700,	// Day 2, 00:13
234 	kTime1323000              = 1323000,	// Day 2, 00:30
235 	kTimeCityLuneville        = 1335600,	// Day 2, 00:44
236 	kTimeExitLuneville        = 1338300,	// Day 2, 00:47
237 	kTimeCityAvricourt        = 1359900,	// Day 2, 01:11
238 	kTimeExitAvricourt        = 1363500,	// Day 2, 01:15
239 	kTimeCityDeutschAvricourt = 1367100,	// Day 2, 01:19
240 	kTimeExitDeutschAvricourt = 1370700,	// Day 2, 01:23
241 	kTime1386000              = 1386000,	// Day 2, 01:40
242 	kTimeBedTime              = 1404000,	// Day 2, 02:00
243 	kTime1417500              = 1417500,	// Day 2, 02:15
244 	kTimeEnterStrasbourg      = 1424700,	// Day 2, 02:23
245 	kTime1449000              = 1449000,	// Day 2, 02:50
246 	kTime1458000              = 1458000,	// Day 2, 03:00
247 	kTime1485000              = 1485000,	// Day 2, 03:30
248 	kTime1489500              = 1489500,	// Day 2, 03:35
249 	kTimeCityStrasbourg       = 1490400,	// Day 2, 03:36
250 	kTime1492200              = 1492200,	// Day 2, 03:38
251 	kTimeExitStrasbourg       = 1493100,	// Day 2, 03:39
252 	kTimeChapter1End          = 1494000,	// Day 2, 03:40
253 	kTime1503000              = 1503000,	// Day 2, 03:50
254 	kTime1512000              = 1512000,	// Day 2, 04:00
255 	kTimeCityBadenOos         = 1539000,	// Day 2, 04:30
256 	kTimeExitBadenOos         = 1541700,	// Day 2, 04:33
257 	kTimeCityKarlsruhe        = 1563300,	// Day 2, 04:57
258 	kTimeCityStuttgart        = 1656000,	// Day 2, 06:40
259 	kTimeChapter1End2         = 1647000,	// Day 2, 06:30
260 	kTimeChapter1End3         = 1674000,	// Day 2, 07:00
261 	kTimeCityGeislingen       = 1713600,	// Day 2, 07:44
262 	kTime1714500              = 1714500,	// Day 2, 07:45
263 	kTimeCityUlm              = 1739700,	// Day 2, 08:13
264 
265 	// Chapter 2
266 	kTimeChapter2             = 1750500,	// Day 2, 08:25
267 	kTime1759500              = 1759500,	// Day 2, 08:35
268 	kTime1755000              = 1755000,	// Day 2, 08:30
269 	kTime1764000              = 1764000,	// Day 2, 08:40
270 	kTime1768500              = 1768500,	// Day 2, 08:45
271 	kTime1773000              = 1773000,	// Day 2, 08:50
272 	kTime1777500              = 1777500,	// Day 2, 08:55
273 	kTime1782000              = 1782000,	// Day 2, 09:00
274 	kTime1786500              = 1786500,	// Day 2, 09:05
275 	kTime1791000              = 1791000,	// Day 2, 09:10
276 	kTime1800000              = 1800000,	// Day 2, 09:20
277 	kTime1801800              = 1801800,	// Day 2, 09:22
278 	kTime1806300              = 1806300,	// Day 2, 09:27
279 	kTime1809000              = 1809000,	// Day 2, 09:30
280 	kTimeCityAugsburg         = 1809900,	// Day 2, 09:31
281 	kTime1813500              = 1813500,	// Day 2, 09:35
282 	kTime1818000              = 1818000,	// Day 2, 09:40
283 	kTime1818900              = 1818900,	// Day 2, 09:41
284 	kTime1820700              = 1820700,	// Day 2, 09:43
285 	kTime1822500              = 1822500,	// Day 2, 09:45
286 	kTime1827000              = 1827000,	// Day 2, 09:50
287 	kTime1831500              = 1831500,	// Day 2, 09:55
288 	kTime1836000              = 1836000,	// Day 2, 10:00
289 	kTime1845000              = 1845000,	// Day 2, 10:10
290 	kTime1849500              = 1849500,	// Day 2, 10:15
291 	kTimeCityMunich           = 1852200,	// Day 2, 10:18
292 
293 	// Chapter 3
294 	kTimeChapter3             = 1944000,	// Day 2, 12:00
295 	kTime1953000              = 1953000,	// Day 2, 12:10
296 	kTime1966500              = 1966500,	// Day 2, 12:25
297 	kTime1969200              = 1969200,	// Day 2, 12:28
298 	kTime1971000              = 1971000,	// Day 2, 12:30
299 	kTimeEnterSalzbourg       = 1982700,	// Day 2, 12:43
300 	kTime1983600              = 1983600,	// Day 2, 12:44
301 	kTimeCitySalzbourg        = 1984500,	// Day 2, 12:45
302 	kTime1989000              = 1989000,	// Day 2, 12:50
303 	kTimeExitSalzbourg        = 1989900,	// Day 2, 12:51
304 	kTime1993500              = 1993500,	// Day 2, 12:55
305 	kTime1998000              = 1998000,	// Day 2, 13:00
306 	kTime2002500              = 2002500,	// Day 2, 13:05
307 	kTime2011500              = 2011500,	// Day 2, 13:15
308 	kTime2016000              = 2016000,	// Day 2, 13:20
309 	kTime2020500              = 2020500,	// Day 2, 13:25
310 	kTime2025000              = 2025000,	// Day 2, 13:30
311 	kTime2034000              = 2034000,	// Day 2, 13:40
312 	kTime2038500              = 2038500,	// Day 2, 13:45
313 	kTime2040300              = 2040300,	// Day 2, 13:47
314 	kTime2043000              = 2043000,	// Day 2, 13:50
315 	kTimeEnterAttnangPuchheim = 2047500,	// Day 2, 13:55
316 	kTimeCityAttnangPuchheim  = 2049300,	// Day 2, 13:57
317 	kTime2052000              = 2052000,	// Day 2, 14:00
318 	kTimeExitAttnangPuchheim  = 2052900,	// Day 2, 14:01
319 	kTime2056500              = 2056500,	// Day 2, 14:05
320 	kTime2061000              = 2061000,	// Day 2, 14:10
321 	kTime2062800              = 2062800,	// Day 2, 14:12
322 	kTime2065500              = 2065500,	// Day 2, 14:15
323 	kTime2070000              = 2070000,	// Day 2, 14:20
324 	kTimeEnterWels            = 2073600,	// Day 2, 14:24
325 	kTimeCityWels             = 2075400,	// Day 2, 14:26
326 	kTime2079000              = 2079000,	// Day 2, 14:30
327 	kTimeExitWels             = 2079900,	// Day 2, 14:31
328 	kTime2083500              = 2083500,	// Day 2, 14:35
329 	kTime2088000              = 2088000,	// Day 2, 14:40
330 	kTime2088900              = 2088900,	// Day 2, 14:41
331 	kTime2092500              = 2092500,	// Day 2, 14:45
332 	kTime2097000              = 2097000,	// Day 2, 14:50
333 	kTimeEnterLinz            = 2099700,	// Day 2, 14:53
334 	kTimeCityLinz             = 2101500,	// Day 2, 14:55
335 	kTimeExitLinz             = 2105100,    // Day 2, 14:59
336 	kTime2106000              = 2106000,	// Day 2, 15:00
337 	kTime2110500              = 2110500,	// Day 2, 15:05
338 	kTime2115000              = 2115000,	// Day 2, 15:10
339 	kTime2117700              = 2117700,	// Day 2, 15:13
340 	kTime2119500              = 2119500,	// Day 2, 15:15
341 	kTime2124000              = 2124000,	// Day 2, 15:20
342 	kTime2133000              = 2133000,	// Day 2, 15:30
343 	kTime2138400              = 2138400,	// Day 2, 15:36
344 	kTime2142000              = 2142000,	// Day 2, 15:40
345 	kTime2146500              = 2146500,	// Day 2, 15:45
346 	kTime2147400              = 2147400,	// Day 2, 15:46
347 	kTime2151000              = 2151000,	// Day 2, 15:50
348 	kTimeCityAmstetten        = 2154600,	// Day 2, 15:54
349 	kTime2155500              = 2155500,	// Day 2, 15:55
350 	kTime2160000              = 2160000,	// Day 2, 16:00
351 	kTime2169000              = 2169000,	// Day 2, 16:10
352 	kTime2173500              = 2173500,	// Day 2, 16:15
353 	kTime2187000              = 2187000,	// Day 2, 16:30
354 	kTime2182500              = 2182500,	// Day 2, 16:25
355 	kTime2196000              = 2196000,	// Day 2, 16:40
356 	kTime2200500              = 2200500,	// Day 2, 16:45
357 	kTime2205000              = 2205000,	// Day 2, 16:50
358 	kTime2214000              = 2214000,	// Day 2, 17:00
359 	kTime2218500              = 2218500,	// Day 2, 17:05
360 	kTime2223000              = 2223000,	// Day 2, 17:10
361 	kTime2227500              = 2227500,	// Day 2, 17:15
362 	kTime2241000              = 2241000,	// Day 2, 17:30
363 	kTime2248200              = 2248200,	// Day 2, 17:38
364 	kTime2250000              = 2250000,	// Day 2, 17:40
365 	kTime2254500              = 2254500,	// Day 2, 17:45
366 	kTime2259000              = 2259000,	// Day 2, 17:50
367 	kTime2263500              = 2263500,	// Day 2, 17:55
368 	kTime2266200              = 2266200,	// Day 2, 17:58
369 	kTimeCityVienna           = 2268000,	// Day 2, 18:00
370 
371 	// Chapter 4
372 	kTime2349000              = 2349000,	// Day 2, 19:30
373 	kTimeChapter4             = 2353500,	// Day 2, 19:35
374 	kTime2354400              = 2354400,	// Day 2, 19:36
375 	kTime2356200              = 2356200,	// Day 2, 19:38
376 	kTime2358000              = 2358000,	// Day 2, 19:40
377 	kTime2360700              = 2360700,	// Day 2, 19:43
378 	kTime2362500              = 2362500,	// Day 2, 19:45
379 	kTime2361600              = 2361600,	// Day 2, 19:44
380 	kTime2367000              = 2367000,	// Day 2, 19:50
381 	kTime2370600              = 2370600,	// Day 2, 19:54
382 	kTime2378700              = 2378700,	// Day 2, 20:03
383 	kTimeEnterPoszony         = 2381400,	// Day 2, 20:06
384 	kTimeCityPoszony          = 2383200,	// Day 2, 20:08
385 	kTime2385000              = 2385000,	// Day 2, 20:10
386 	kTimeExitPoszony          = 2386800,	// Day 2, 20:12
387 	kTime2389500              = 2389500,	// Day 2, 20:15
388 	kTime2394000              = 2394000,	// Day 2, 20:20
389 	kTime2398500              = 2398500,	// Day 2, 20:25
390 	kTime2403000              = 2403000,	// Day 2, 20:30
391 	kTime2407500              = 2407500,	// Day 2, 20:35
392 	kTime2410200              = 2410200,	// Day 2, 20:38
393 	kTime2412000              = 2412000,	// Day 2, 20:40
394 	kTime2414700              = 2414700,	// Day 2, 20:43
395 	kTime2415600              = 2415600,	// Day 2, 20:44
396 	kTimeEnterGalanta         = 2416500,	// Day 2, 20:45
397 	kTimeCityGalanta          = 2418300,	// Day 2, 20:47
398 	kTime2421000              = 2421000,	// Day 2, 20:50
399 	kTimeExitGalanta          = 2421900,	// Day 2, 20:51
400 	kTime2422800              = 2422800,	// Day 2, 20:52
401 	kTime2428200              = 2428200,	// Day 2, 20:58
402 	kTime2425500              = 2425500,	// Day 2, 20:55
403 	kTime2430000              = 2430000,	// Day 2, 21:00
404 	kTime2434500              = 2434500,	// Day 2, 21:05
405 	kTime2439000              = 2439000,	// Day 2, 21:10
406 	kTime2443500              = 2443500,	// Day 2, 21:15
407 	kTime2448000              = 2448000,	// Day 2, 21:20
408 	kTime2452500              = 2452500,	// Day 2, 21:25
409 	kTime2455200              = 2455200,	// Day 2, 21:28
410 	kTime2457000              = 2457000,	// Day 2, 21:30
411 	kTime2466000              = 2466000,	// Day 2, 21:40
412 	kTime2470500              = 2470500,	// Day 2, 21:45
413 	kTime2475000              = 2475000,	// Day 2, 21:50
414 	kTime2479500              = 2479500,	// Day 2, 21:55
415 	kTime2484000              = 2484000,	// Day 2, 22:00
416 	kTime2488500              = 2488500,	// Day 2, 22:05
417 	kTime2493000              = 2493000,	// Day 2, 22:10
418 	kTime2506500              = 2506500,	// Day 2, 22:25
419 	kTime2507400              = 2507400,	// Day 2, 22:26
420 	kTime2511000              = 2511000,	// Day 2, 22:30
421 	kTime2511900              = 2511900,	// Day 2, 22:31
422 	kTime2517300              = 2517300,	// Day 2, 22:37
423 	kTime2519100              = 2519100,	// Day 2, 22:39
424 	kTime2520000              = 2520000,	// Day 2, 22:40
425 	kTime2533500              = 2533500,	// Day 2, 22:55
426 	kTime2535300              = 2535300,	// Day 2, 22:57
427 	kTime2538000              = 2538000,	// Day 2, 23:00
428 	kTimeCityBudapest         = 2551500,	// Day 2, 23:15
429 
430 	// Chapter 5
431 	kTimeChapter5             = 2844000,	// Day 3, 04:40
432 	kTimeTrainStopped         = 2898000,	// Day 3, 05:40
433 	kTime2907000              = 2907000,	// Day 3, 05:50
434 	kTime2916000              = 2916000,	// Day 3, 06:00
435 	kTime2934000              = 2934000,    // Day 3, 06:20
436 	kTimeTrainStopped2        = 2943000,	// Day 3, 06:30
437 	kTime2949300              = 2949300,    // Day 3, 06:37
438 	kTimeCityBelgrade         = 2952000,	// Day 3, 06:40
439 	kTime2983500              = 2983500,	// Day 3, 07:15
440 	kTimeCityNish             = 3205800,	// Day 3, 11:22
441 	kTimeCityTzaribrod        = 3492000,	// Day 3, 16:40
442 	kTime3645000              = 3645000,	// Day 3, 19:30
443 	kTimeCitySofia            = 3690000,	// Day 3, 20:20
444 	kTimeCityAdrianople       = 4320900,	// Day 4, 08:01
445 	kTime4914000              = 4914000,    // Day 4, 19:00
446 	kTime4920300              = 4920300,    // Day 4, 19:07
447 	kTime4923000              = 4923000,	// Day 4, 19:10
448 	kTime4929300              = 4929300,	// Day 4, 19:17
449 	kTimeCityConstantinople   = 4941000,	// Day 4, 19:30
450 
451 
452 	kTime10881000             = 10881000,
453 	kTimeEnd                  = 15803100,
454 	kTime16451100             = 16451100,
455 
456 	kTimeInvalid              = 2147483647,
457 	kTimeInvalid2             = 0xFFFFFEDA
458 };
459 
460 //////////////////////////////////////////////////////////////////////////
461 // Archive & Chapter ID
462 //////////////////////////////////////////////////////////////////////////
463 enum ArchiveIndex {
464 	kArchiveAll = 0,
465 	kArchiveCd1 = 1,
466 	kArchiveCd2 = 2,
467 	kArchiveCd3 = 3
468 };
469 
470 enum ChapterIndex {
471 	kChapterAll = 0,
472 	kChapter1   = 1,
473 	kChapter2   = 2,
474 	kChapter3   = 3,
475 	kChapter4   = 4,
476 	kChapter5   = 5
477 };
478 
479 //////////////////////////////////////////////////////////////////////////
480 // Index of scenes
481 //////////////////////////////////////////////////////////////////////////
482 enum SceneIndex {
483 	kSceneNone                    = 0,
484 	kSceneMenu                    = 1,
485 
486 	kSceneIntro                   = 30,
487 
488 	// Inventory
489 	kSceneMatchbox                = 31,
490 	kSceneTelegram                = 32,
491 	kScenePassengerList           = 33,
492 	kSceneScarf                   = 34,
493 	kSceneParchemin               = 35,
494 	kSceneArticle                 = 36,
495 	kScenePaper                   = 37,
496 	kSceneFirebird                = 38,
497 	kSceneBriefcase               = 39,
498 
499 	// Normal scenes
500 	kSceneDefault                 = 40,
501 	kScene41                      = 41,
502 	kSceneCompartmentCorpse       = 42,     // Tyler compartment with corpse on floor
503 
504 	// Fight
505 	kSceneFightMilos              = 43,
506 	kSceneFightMilosBedOpened     = 44,
507 	kSceneFightAnna               = 45,
508 	kSceneFightIvo                = 46,
509 	kSceneFightSalko              = 47,
510 	kSceneFightVesna              = 48,
511 
512 	kSceneEuropeMap               = 49,
513 
514 	// Game over
515 	kSceneGameOverStopPolice      = 50,
516 	kSceneGameOverTrainStopped    = 51,
517 	kSceneGameOverTrainStopped2   = 52,
518 	kSceneGameOverTrainExplosion  = 53,
519 	kSceneGameOverTrainExplosion2 = 54,
520 	kSceneGameOverBloodJacket     = 55,
521 	kSceneGameOverPolice          = 56,
522 	kSceneGameOverPolice1         = 57,
523 	kSceneGameOverAnnaDied        = 58,
524 	kSceneGameOverVienna          = 59,
525 	kSceneGameOverVienna1         = 60,
526 	kSceneGameOverVienna2         = 61,
527 	kSceneGameOverAlarm           = 62,
528 	kSceneGameOverPolice2         = 63,
529 	kSceneGameOverAlarm2          = 64,
530 
531 	// Start screen
532 	kSceneStartScreen             = 65,
533 
534 	kSceneBeetle                  = 128,
535 
536 	kSceneFightDefault            = 820,
537 
538 	kSceneInvalid                 = 0xffffffff
539 };
540 
541 //////////////////////////////////////////////////////////////////////////
542 // Jacket
543 //////////////////////////////////////////////////////////////////////////
544 enum JacketType {
545 	kJacketOriginal   = 0,
546 	kJacketBlood      = 1,
547 	kJacketGreen      = 2
548 };
549 
550 //////////////////////////////////////////////////////////////////////////
551 // City
552 //////////////////////////////////////////////////////////////////////////
553 enum CityIndex {
554 	kCityEpernay = 0,
555 	kCityChalons,
556 	kCityBarleduc,
557 	kCityNancy,
558 	kCityLuneville,
559 	kCityAvricourt,                // 5
560 	kCityDeutschAvricourt,
561 	kCityStrasbourg,
562 	kCityBadenOos,
563 	kCitySalzbourg,
564 	kCityAttnangPuchheim,          // 10
565 	kCityWels,
566 	kCityLinz,
567 	kCityVienna,
568 	kCityPoszony,
569 	kCityGalanta,                  // 15
570 	kCityPolice
571 };
572 
573 //////////////////////////////////////////////////////////////////////////
574 // Savegame ID
575 //////////////////////////////////////////////////////////////////////////
576 enum GameId {
577 	kGameBlue,
578 	kGameRed,
579 	kGameGreen,
580 	kGamePurple,
581 	kGameTeal,
582 	kGameGold
583 };
584 
585 enum SavegameType {
586 	kSavegameTypeIndex = 0,
587 	kSavegameTypeTime = 1,
588 	kSavegameTypeEvent = 2,
589 	kSavegameTypeEvent2 = 3,
590 	kSavegameTypeAuto = 4,
591 	kSavegameTypeTickInterval = 5
592 };
593 
594 //////////////////////////////////////////////////////////////////////////
595 // Cursor style
596 //////////////////////////////////////////////////////////////////////////
597 enum CursorStyle {
598 	kCursorNormal,
599 	kCursorForward,
600 	kCursorBackward,
601 	kCursorTurnRight,
602 	kCursorTurnLeft,
603 	kCursorUp,
604 	kCursorDown,
605 	kCursorLeft,
606 	kCursorRight,
607 	kCursorHand,
608 	kCursorHandKnock,                     // 10
609 	kCursorMagnifier,
610 	kCursorHandPointer,
611 	kCursorSleep,
612 	kCursorTalk,
613 	kCursorTalk2,     // Need better name
614 
615 	// Items
616 	kCursorMatchBox,
617 	kCursorTelegram,
618 	kCursorPassengerList,
619 	kCursorArticle,
620 	kCursorScarf,     // 20
621 	kCursorPaper,
622 	kCursorParchemin,
623 	kCursorMatch,
624 	kCursorWhistle,
625 	kCursorKey,
626 	kCursorBomb,
627 	kCursorFirebird,
628 	kCursorBriefcase,
629 	kCursorCorpse,
630 
631 	// Combat
632 	kCursorPunchLeft,                      // 30
633 	kCursorPunchRight,
634 
635 	// Portraits
636 	kCursorPortrait,                      // 32
637 	kCursorPortraitSelected,
638 	kCursorPortraitGreen,
639 	kCursorPortraitGreenSelected,
640 	kCursorPortraitYellow,
641 	kCursorPortraitYellowSelected,
642 	kCursorHourGlass,
643 	kCursorEggBlue,
644 	kCursorEggRed,                        // 40
645 	kCursorEggGreen,
646 	kCursorEggPurple,
647 	kCursorEggTeal,
648 	kCursorEggGold,
649 	kCursorEggClock,
650 	kCursorNormal2,
651 	kCursorBlank,
652 	kCursorMAX,
653 
654 	// Special
655 	kCursorProcess = 128,
656 	kCursorKeepValue = 255
657 };
658 
659 //////////////////////////////////////////////////////////////////////////
660 // Position - should be between 0 & 100
661 //////////////////////////////////////////////////////////////////////////
662 typedef unsigned char Position;
663 
664 //////////////////////////////////////////////////////////////////////////
665 // EntityPosition
666 //////////////////////////////////////////////////////////////////////////
667 enum EntityPosition {
668 	kPositionNone     = 0,
669 	kPosition_1     = 1,
670 	kPosition_3     = 3,
671 	kPosition_4     = 4,
672 	kPosition_500   = 500,
673 	kPosition_540   = 540,
674 	kPosition_750   = 750,
675 	kPosition_849   = 849,
676 	kPosition_850   = 850,
677 	kPosition_851   = 851,
678 	kPosition_1200  = 1200,
679 	kPosition_1430  = 1430,
680 	kPosition_1500  = 1500,
681 	kPosition_1540  = 1540,
682 	kPosition_1750  = 1750,
683 	kPosition_2000  = 2000,
684 	kPosition_2087  = 2087,
685 	kPosition_2086  = 2086,
686 	kPosition_2088  = 2088,
687 	kPosition_2110  = 2110,
688 	kPosition_2300  = 2300,
689 	kPosition_2330  = 2330,
690 	kPosition_2410  = 2410,
691 	kPosition_2436  = 2436,
692 	kPosition_2490  = 2490,
693 	kPosition_2500  = 2500,
694 	kPosition_2587  = 2587,
695 	kPosition_2588  = 2588,
696 	kPosition_2690  = 2690,
697 	kPosition_2740  = 2740,
698 	kPosition_2830  = 2830,
699 	kPosition_2980  = 2980,
700 	kPosition_3050  = 3050,
701 	kPosition_3110  = 3110,
702 	kPosition_3390  = 3390,
703 	kPosition_3450  = 3450,
704 	kPosition_3500  = 3500,
705 	kPosition_3550  = 3550,
706 	kPosition_3650  = 3650,
707 	kPosition_3760  = 3760,
708 	kPosition_3820  = 3820,
709 	kPosition_3890  = 3890,
710 	kPosition_3969  = 3969,
711 	kPosition_3970  = 3970,
712 	kPosition_4070  = 4070,
713 	kPosition_4100  = 4100,
714 	kPosition_4370  = 4370,
715 	kPosition_4455  = 4455,
716 	kPosition_4460  = 4460,
717 	kPosition_4500  = 4500,
718 	kPosition_4590  = 4590,
719 	kPosition_4680  = 4680,
720 	kPosition_4689  = 4689,
721 	kPosition_4690  = 4690,
722 	kPosition_4691  = 4691,
723 	kPosition_4770  = 4470,
724 	kPosition_4840  = 4840,
725 	kPosition_5000  = 5000,
726 	kPosition_5090  = 5090,
727 	kPosition_5140  = 5140,
728 	kPosition_5419  = 5419,
729 	kPosition_5420  = 5420,
730 	kPosition_5440  = 5440,
731 	kPosition_5500  = 5500,
732 	kPosition_5540  = 5540,
733 	kPosition_5610  = 5610,
734 	kPosition_5790  = 5790,
735 	kPosition_5799  = 5799,
736 	kPosition_5800  = 5800,
737 	kPosition_5810  = 5810,
738 	kPosition_5890  = 5890,
739 	kPosition_5900  = 5900,
740 	kPosition_5970  = 5970,
741 	kPosition_6000  = 6000,
742 	kPosition_6130  = 6130,
743 	kPosition_6160  = 6160,
744 	kPosition_6220  = 6220,
745 	kPosition_6410  = 6410,
746 	kPosition_6460  = 6460,
747 	kPosition_6469  = 6469,
748 	kPosition_6470  = 6470,
749 	kPosition_6471  = 6471,
750 	kPosition_6800  = 6800,
751 	kPosition_6850  = 6850,
752 	kPosition_7000  = 7000,
753 	kPosition_7160  = 7160,
754 	kPosition_7250  = 7250,
755 	kPosition_7320  = 7320,
756 	kPosition_7500  = 7500,
757 	kPosition_7510  = 7510,
758 	kPosition_7850  = 7850,
759 	kPosition_7870  = 7870,
760 	kPosition_7900  = 7900,
761 	kPosition_7950  = 7950,
762 	kPosition_8000  = 8000,
763 	kPosition_8012  = 8012,
764 	kPosition_8013  = 8013,
765 	kPosition_8160  = 8160,
766 	kPosition_8200  = 8200,
767 	kPosition_8500  = 8500,
768 	kPosition_8512  = 8512,
769 	kPosition_8513  = 8513,
770 	kPosition_8514  = 8514,
771 	kPosition_8800  = 8800,
772 	kPosition_9020  = 9020,
773 	kPosition_9269  = 9269,
774 	kPosition_9250  = 9250,
775 	kPosition_9270  = 9270,
776 	kPosition_9271  = 9271,
777 	kPosition_9460  = 9460,
778 	kPosition_9500  = 9500,
779 	kPosition_9510  = 9510,
780 	kPosition_30000 = 30000
781 };
782 
783 //////////////////////////////////////////////////////////////////////////
784 // Location
785 //////////////////////////////////////////////////////////////////////////
786 enum Location {
787 	kLocationOutsideCompartment = 0,
788 	kLocationInsideCompartment = 1,
789 	kLocationOutsideTrain = 2
790 };
791 
792 //////////////////////////////////////////////////////////////////////////
793 // Car
794 //////////////////////////////////////////////////////////////////////////
795 enum CarIndex {
796 	kCarNone = 0,
797 	kCarBaggageRear = 1,
798 	kCarKronos = 2,
799 	kCarGreenSleeping = 3,
800 	kCarRedSleeping = 4,
801 	kCarRestaurant = 5,
802 	kCarBaggage = 6,
803 	kCarCoalTender = 7,
804 	kCarLocomotive = 8,
805 	kCar9 = 9
806 };
807 
808 //////////////////////////////////////////////////////////////////////////
809 // Clothes
810 //////////////////////////////////////////////////////////////////////////
811 enum ClothesIndex {
812 	kClothesDefault = 0,
813 	kClothes1 = 1,
814 	kClothes2 = 2,
815 	kClothes3 = 3,
816 
817 	kClothesInvalid
818 };
819 
820 //////////////////////////////////////////////////////////////////////////
821 // Objects (doors)
822 //////////////////////////////////////////////////////////////////////////
823 enum ObjectLocation {
824 	kObjectLocationNone = 0,
825 	kObjectLocation1    = 1, // Floor?
826 	kObjectLocation2    = 2, // Bed ?
827 	kObjectLocation3    = 3,
828 	kObjectLocation4    = 4, // Window ?
829 	kObjectLocation5 = 5,
830 	kObjectLocation6 = 6,
831 	kObjectLocation7 = 7,
832 	kObjectLocation8 = 8,
833 	kObjectLocation9 = 9,
834 	kObjectLocation10 = 10,
835 	kObjectLocation18 = 18
836 };
837 
838 enum ObjectModel {
839 	kObjectModelNone = 0,
840 	kObjectModel1    = 1,
841 	kObjectModel2    = 2,
842 	kObjectModel3    = 3,
843 	kObjectModel4    = 4,
844 	kObjectModel5    = 5,
845 	kObjectModel6    = 6,
846 	kObjectModel7    = 7,
847 	kObjectModel8    = 8,
848 	kObjectModel9    = 9,
849 	kObjectModel10   = 10
850 };
851 
852 //////////////////////////////////////////////////////////////////////////
853 // Entity direction
854 //////////////////////////////////////////////////////////////////////////
855 enum EntityDirection {
856 	kDirectionNone   = 0,
857 	kDirectionUp     = 1,
858 	kDirectionDown   = 2,
859 	kDirectionLeft   = 3,
860 	kDirectionRight  = 4,
861 	kDirectionSwitch = 5
862 };
863 
864 //////////////////////////////////////////////////////////////////////////
865 // Combat
866 //////////////////////////////////////////////////////////////////////////
867 enum FightType {
868 	kFightMilos   = 2001,
869 	kFightAnna    = 2002,
870 	kFightIvo     = 2003,
871 	kFightSalko   = 2004,
872 	kFightVesna   = 2005
873 };
874 
875 //////////////////////////////////////////////////////////////////////////
876 // Index of items in inventory data
877 //////////////////////////////////////////////////////////////////////////
878 enum InventoryItem {
879 	kItemNone,
880 	kItemMatchBox,
881 	kItem2,
882 	kItem3,
883 	kItemTelegram,
884 	kItem5,               // 5
885 	kItemPassengerList,
886 	kItem7,
887 	kItemScarf,
888 	kItem9,
889 	kItemParchemin,       // 10
890 	kItem11,
891 	kItemMatch,
892 	kItemWhistle,
893 	kItemBeetle,
894 	kItemKey,             // 15
895 	kItemBomb,
896 	kItem17,
897 	kItemFirebird,
898 	kItemBriefcase,
899 	kItemCorpse,          // 20
900 	kItemGreenJacket,
901 	kItem22,
902 	kItemPaper,
903 	kItemArticle,
904 	kItem25,             // 25
905 	kItem26,
906 	kItem27,
907 	kItem28,
908 	kItem29,
909 	kItem30,            // 30
910 	kItem31,
911 
912 	// Portrait (not an index)
913 	kPortraitOriginal  = 32,
914 	kPortraitGreen     = 34,
915 	kPortraitYellow    = 36,
916 
917 	kItemInvalid       = 128,
918 
919 	kItem146           = 146,
920 	kItem147           = 147,
921 
922 	// Toggles
923 	kItemToggleHigh    = 0x7F,
924 	kItemToggleLow     = 0xF7
925 };
926 
927 //////////////////////////////////////////////////////////////////////////
928 // Object ID
929 //////////////////////////////////////////////////////////////////////////
930 enum ObjectIndex {
931 	kObjectNone,
932 	kObjectCompartment1,
933 	kObjectCompartment2,
934 	kObjectCompartment3,
935 	kObjectCompartment4,
936 	kObjectCompartment5,                 // 5
937 	kObjectCompartment6,
938 	kObjectCompartment7,
939 	kObjectCompartment8,
940 	kObjectOutsideTylerCompartment,
941 	kObject10,                           // 10
942 	kObject11,
943 	kObject12,
944 	kObject13,
945 	kObject14,
946 	kObject15,                           // 15
947 	kObject16,
948 	kObjectHandleBathroom,
949 	kObjectHandleInsideBathroom,
950 	kObjectKitchen,
951 	kObject20,                          // 20
952 	kObject21,
953 	kObject22,
954 	kObjectTrainTimeTable,
955 	kObjectRedSleepingCar,
956 	kObject25,                          // 25
957 	kObjectHandleOutsideLeft,
958 	kObjectHandleOutsideRight,
959 	kObject28,
960 	kObject29,
961 	kObject30,                          // 30
962 	kObject31,
963 	kObjectCompartmentA,
964 	kObjectCompartmentB,
965 	kObjectCompartmentC,
966 	kObjectCompartmentD,                // 35
967 	kObjectCompartmentE,
968 	kObjectCompartmentF,
969 	kObjectCompartmentG,
970 	kObjectCompartmentH,
971 	kObject40,                          // 40
972 	kObject41,
973 	kObject42,
974 	kObject43,
975 	kObjectOutsideBetweenCompartments,
976 	kObjectOutsideAnnaCompartment,     // 45
977 	kObject46,
978 	kObject47,
979 	kObject48, // might be the egg
980 	kObject49,
981 	kObject50,                          // 50
982 	kObject51,
983 	kObject52,
984 	kObject53,
985 	kObject54,
986 	kObjectRestaurantCar,               // 55
987 	kObject56,
988 	kObject57,
989 	kObject58,
990 	kObject59,
991 	kObject60,                          // 60
992 	kObject61,
993 	kObject62,
994 	kObject63,
995 	kObject64,
996 	kObject65,                          // 65
997 	kObject66,
998 	kObject67,
999 	kObject68,
1000 	kObject69,
1001 	kObject70,                          // 70
1002 	kObject71,
1003 	kObject72,
1004 	kObjectCeiling,
1005 	kObject74,
1006 	kObjectCompartmentKronos,           // 75
1007 	kObject76,
1008 	kObject77,
1009 	kObject78,
1010 	kObject79,
1011 	kObject80,                          // 80
1012 	kObject81,
1013 	kObject82,
1014 	kObject83,
1015 	kObject84,
1016 	kObject85,                          // 85
1017 	kObject86,
1018 	kObject87,
1019 	kObject88,
1020 	kObject89,
1021 	kObject90,                          // 90
1022 	kObject91,
1023 	kObject92,
1024 	kObject93,
1025 	kObject94,
1026 	kObject95,                          // 95
1027 	kObject96,
1028 	kObject97,
1029 	kObject98,
1030 	kObject99,
1031 	kObject100,                         // 100
1032 	kObject101,
1033 	kObject102,
1034 	kObject103,
1035 	kObject104,
1036 	kObject105,                         // 105
1037 	kObject106,
1038 	kObject107,
1039 	kObject108,
1040 	kObjectCageMax,
1041 	kObject110,                         // 110
1042 	kObject111,
1043 	kObject112,
1044 	kObject113,
1045 	kObject114,
1046 	kObject115,                         // 115
1047 	kObject116,
1048 	kObject117,
1049 	kObject118,
1050 	kObject119,
1051 	kObject120,                         // 120
1052 	kObject121,
1053 	kObject122,
1054 	kObject123,
1055 	kObject124,
1056 	kObject125,                         // 125
1057 	kObject126,
1058 	kObject127,
1059 	kObjectMax
1060 };
1061 
1062 //////////////////////////////////////////////////////////////////////////
1063 // Entity ID
1064 //////////////////////////////////////////////////////////////////////////
1065 enum EntityIndex {
1066 	kEntityPlayer,
1067 	kEntityAnna,
1068 	kEntityAugust,
1069 	kEntityMertens,
1070 	kEntityCoudert,
1071 	kEntityPascale,             // 5
1072 	kEntityWaiter1,
1073 	kEntityWaiter2,
1074 	kEntityCooks,
1075 	kEntityVerges,
1076 	kEntityTatiana,             // 10
1077 	kEntityVassili,
1078 	kEntityAlexei,
1079 	kEntityAbbot,
1080 	kEntityMilos,
1081 	kEntityVesna,               // 15
1082 	kEntityIvo,
1083 	kEntitySalko,
1084 	kEntityKronos,
1085 	kEntityKahina,
1086 	kEntityFrancois,            // 20
1087 	kEntityMmeBoutarel,
1088 	kEntityBoutarel,
1089 	kEntityRebecca,
1090 	kEntitySophie,
1091 	kEntityMahmud,              // 25
1092 	kEntityYasmin,
1093 	kEntityHadija,
1094 	kEntityAlouan,
1095 	kEntityGendarmes,
1096 	kEntityMax,                 // 30
1097 	kEntityChapters,
1098 	kEntityTrain,
1099 	kEntityTables0,
1100 	kEntityTables1,
1101 	kEntityTables2,             // 35
1102 	kEntityTables3,
1103 	kEntityTables4,
1104 	kEntityTables5,
1105 	kEntity39,
1106 
1107 	kEntitySteam = 255
1108 };
1109 
1110 //////////////////////////////////////////////////////////////////////////
1111 // Events
1112 //   - a single D at the end means that Cath is on the right of the "scene" (D = Down the train, U = Up the train)
1113 //   - DD: during the day, coming down the train
1114 //   - DU: during the day, coming up the train
1115 //   - ND: during the night, coming down the train
1116 //   - NU: during the night, coming up the train
1117 //////////////////////////////////////////////////////////////////////////
1118 enum EventIndex {
1119 	kEventNone = 0,
1120 	kEventGotALight = 1,
1121 	kEventGotALightD = 2,
1122 	kEventDinerMindJoin = 3,
1123 	kEventDinerAugustOriginalJacket = 4,
1124 	kEventDinerAugust = 5,
1125 	kEventDinerAugustAlexeiBackground = 6,
1126 	kEventMeetAugustTylerCompartment = 7,
1127 	kEventMeetAugustTylerCompartmentBed = 8,
1128 	kEventMeetAugustHisCompartment = 9,
1129 	kEventMeetAugustHisCompartmentBed = 10,
1130 	kEventAugustFindCorpse = 11,
1131 	kEventAugustPresentAnna = 12,
1132 	kEventAugustPresentAnnaFirstIntroduction = 13,
1133 	kEventAnnaIntroductionRejected = 14,
1134 	kEventAnnaConversationGoodNight = 15,
1135 	kEventAnnaVisitToCompartmentGun = 16,
1136 	kEventInvalid_17 = 17,
1137 	kEventAnnaGoodNight = 18,
1138 	kEventAnnaGoodNightInverse = 19,
1139 	kEventAugustGoodMorning = 20,
1140 	kEventAugustMerchandise = 21,
1141 	kEventAugustTalkGold = 22,
1142 	kEventAugustTalkGoldDay = 23,
1143 	kEventAugustTalkCompartmentDoor = 24,
1144 	kEventAugustTalkCompartmentDoorBlueRedingote = 25,
1145 	kEventAugustLunch = 26,
1146 	kEventKronosVisit = 27,
1147 	kEventAnnaSearchingCompartment = 28,
1148 	kEventAugustBringEgg = 29,
1149 	kEventAugustBringBriefcase = 30,
1150 	kEventAugustTalkCigar = 31,
1151 	kEventAnnaBaggageArgument = 32,
1152 	kEventAnnaBagagePart2 = 33,
1153 	kEventAnnaConversation_34 = 34,
1154 	kEventAugustDrink = 35,
1155 	kEventAnnaTired = 36,
1156 	kEventAnnaTiredKiss = 37,
1157 	kEventAnnaBaggageTies = 38,
1158 	kEventAnnaBaggageTies2 = 39,
1159 	kEventAnnaBaggageTies3 = 40,
1160 	kEventAnnaBaggageTies4 = 41,
1161 	kEventAugustUnhookCarsBetrayal = 42,
1162 	kEventAugustUnhookCars = 43,
1163 	kEventLocomotiveAnnaStopsTrain = 44,
1164 	kEventInvalid_45 = 45,
1165 	kEventTrainStopped = 46,
1166 	kEventAnnaKissTrainHijacked = 47,
1167 	kEventTrainHijacked = 48,
1168 	kEventAnnaKilled = 49,
1169 	kEventKronosGoingToInvitation = 50,
1170 	kEventKronosConversation = 51,
1171 	kEventKahinaAskSpeakFirebird = 52,
1172 	kEventKahinaAskSpeak = 53,
1173 	kEventKronosConversationFirebird = 54,
1174 	kEventKahinaGunYellow = 55,
1175 	kEventKahinaGunBlue = 56,
1176 	kEventKahinaGun = 57,
1177 	kEventKronosBringEggCeiling = 58,
1178 	kEventKronosBringEgg = 59,
1179 	kEventKronosBringNothing = 60,
1180 	kEventKronosReturnBriefcase = 61,
1181 	kEventKronosHostageAnna = 62,
1182 	kEventKronosGiveFirebird = 63,
1183 	kEventKahinaPunchBaggageCarEntrance = 64,
1184 	kEventKahinaPunchBlue = 65,
1185 	kEventKahinaPunchYellow = 66,
1186 	kEventKahinaPunchSalon = 67,
1187 	kEventKahinaPunchKitchen = 68,
1188 	kEventKahinaPunchBaggageCar = 69,
1189 	kEventKahinaPunchCar = 70,
1190 	kEventKahinaPunchSuite4 = 71,
1191 	kEventKahinaPunchRestaurant = 72,
1192 	kEventKronosHostageAnnaNoFirebird = 73,
1193 	kEventKahinaPunch = 74,
1194 	kEventKahinaWrongDoor = 75,
1195 	kEventAlexeiDiner = 76,
1196 	kEventAlexeiDinerOriginalJacket = 77,
1197 	kEventAlexeiSalonVassili = 78,
1198 	kEventAlexeiSalonCath = 79,
1199 	kEventAlexeiSalonPoem = 80,
1200 	kEventTatianaAskMatchSpeakRussian = 81,
1201 	kEventTatianaAskMatch = 82,
1202 	kEventTatianaGivePoem = 83,
1203 	kEventVassiliSeizure = 84,
1204 	kEventTatianaBreakfastAlexei = 85,
1205 	kEventTatianaBreakfast = 86,
1206 	kEventTatianaBreakfastGivePoem = 87,
1207 	kEventTatianaAlexei = 88,
1208 	kEventTatianaCompartmentStealEgg = 89,
1209 	kEventTatianaCompartment = 90,
1210 	kEventVassiliCompartmentStealEgg = 91,
1211 	kEventTatianaTylerCompartment = 92,
1212 	kEventTylerCastleDream= 93,
1213 	kEventVassiliDeadAlexei = 94,
1214 	kEventCathFreePassengers = 95,
1215 	kEventTatianaVassiliTalk = 96,
1216 	kEventTatianaVassiliTalkNight = 97,
1217 	kEventMilosTylerCompartmentVisit = 98,
1218 	kEventMilosTylerCompartmentBedVisit = 99,
1219 	kEventMilosTylerCompartment = 100,
1220 	kEventMilosTylerCompartmentBed = 101,
1221 	kEventMilosTylerCompartmentDefeat = 102,
1222 	kEventMilosCorpseFloor = 103,
1223 	kEventMilosCompartmentVisitAugust = 104,
1224 	kEventMilosCorridorThanks = 105,
1225 	kEventMilosCorridorThanksD = 106,
1226 	kEventMilosCompartmentVisitTyler = 107,
1227 	kEventLocomotiveMilosDay = 108,
1228 	kEventLocomotiveMilosNight = 109,
1229 	kEventAbbotIntroduction = 110,
1230 	kEventAbbotWrongCompartment = 111,
1231 	kEventAbbotWrongCompartmentBed = 112,
1232 	kEventAbbotInvitationDrink = 113,
1233 	kEventAbbotDrinkGiveDetonator = 114,
1234 	kEventTrainExplosionBridge = 115,
1235 	kEventDefuseBomb = 116,
1236 	kEventAbbotDrinkDefuse = 117,
1237 	kEventMertensLastCar = 118,
1238 	kEventMertensLastCarOriginalJacket = 119,
1239 	kEventMertensKronosInvitation = 120,
1240 	kEventMertensKronosInvitationCompartment = 121,
1241 	kEventMertensKronosInvitationClosedWindows = 122,
1242 	kEventMertensBloodJacket = 123,
1243 	kEventCoudertBloodJacket = 124,
1244 	kEventMertensCorpseFloor = 125,
1245 	kEventMertensCorpseBed = 126,
1246 	kEventMertensDontMakeBed = 127,
1247 	kEventInvalid_128 = 128,
1248 	kEventGendarmesArrestation = 129,
1249 	kEventVergesSuitcase = 130,
1250 	kEventVergesSuitcaseStart = 131,
1251 	kEventVergesSuitcaseOtherEntry = 132,
1252 	kEventVergesSuitcaseOtherEntryStart = 133,
1253 	kEventVergesSuitcaseNight = 134,
1254 	kEventVergesSuitcaseNightStart = 135,
1255 	kEventVergesSuitcaseNightOtherEntry = 136,
1256 	kEventVergesSuitcaseNightOtherEntryStart = 137,
1257 	kEventMertensAskTylerCompartment = 138,
1258 	kEventMertensAskTylerCompartmentD = 139,
1259 	kEventMertensPushCallNight = 140,
1260 	kEventMertensPushCall = 141,
1261 	kEventMertensAugustWaiting = 142,
1262 	kEventMertensAugustWaitingCompartment = 143,
1263 	kEventIntroBroderbrund = 144,
1264 	kEventCoudertAskTylerCompartment = 145,
1265 	kEventMertensKronosConcertInvitation = 146,
1266 	kEventCoudertGoingOutOfVassiliCompartment = 147,
1267 	kEventLocomotiveConductorsDiscovered = 148,
1268 	kEventLocomotiveConductorsLook = 149,
1269 	kEventMahmudWrongDoor = 150,
1270 	kEventMahmudWrongDoorOriginalJacket = 151,
1271 	kEventMahmudWrongDoorDay = 152,
1272 	kEventVergesEscortToDiningCar = 153,
1273 	kEventVergesBaggageCarOffLimits = 154,
1274 	kEventVergesCanIHelpYou = 155,
1275 	kEventCoudertBaggageCar = 156,
1276 	kEventCathTurningDay = 157,
1277 	kEventCathTurningNight = 158,
1278 	kEventIntro = 159,
1279 	kEventCathDream = 160,
1280 	kEventCorpseDropBridge = 161,
1281 	kEventTrainPassing = 162,
1282 	kEventVergesAnnaDead = 163,
1283 	kEventViennaAugustUnloadGuns = 164,
1284 	kEventViennaKronosFirebird = 165,
1285 	kEventViennaContinueGame = 166,
1286 	kEventCathVesnaRestaurantKilled = 167,
1287 	kEventCathMaxCage = 168,
1288 	kEventCathMaxFree = 169,
1289 	kEventCathMaxLickHand = 170,
1290 	kEventCathIvoFight = 171,
1291 	kEventCathSalkoTrainTopFight = 172,
1292 	kEventCathVesnaTrainTopFight = 173,
1293 	kEventCathVesnaTrainTopKilled = 174,
1294 	kEventCathVesnaTrainTopWin = 175,
1295 	kEventCathSalkoTrainTopWin = 176,
1296 	kEventFrancoisWhistle = 177,
1297 	kEventFrancoisWhistleD = 178,
1298 	kEventFrancoisWhistleNight = 179,
1299 	kEventFrancoisWhistleNightD = 180,
1300 	kEventFrancoisShowBeetle = 181,
1301 	kEventFrancoisShowBeetleD = 182,
1302 	kEventFrancoisTradeWhistle = 183,
1303 	kEventFrancoisTradeWhistleD = 184,
1304 	kEventFrancoisShowEgg = 185,
1305 	kEventFrancoisShowEggD = 186,
1306 	kEventFrancoisShowEggNightD = 187,
1307 	kEventFrancoisShowEggNight = 188,
1308 	kEventKronosBringFirebird = 189,
1309 	kEventKronosOpenFirebird = 190,
1310 	kEventFinalSequence = 191,
1311 	kEventLocomotiveRestartTrain = 192,
1312 	kEventLocomotiveOldBridge = 193,
1313 	kEventLocomotiveAbbotGetSomeRest = 194,
1314 	kEventLocomotiveAbbotShoveling = 195,
1315 	kEventLocomotiveMilosShovelingDay = 196,
1316 	kEventLocomotiveMilosShovelingNight = 197,
1317 	kEventAnnaGiveScarf = 198,
1318 	kEventAnnaGiveScarfDiner = 199,
1319 	kEventAnnaGiveScarfSalon = 200,
1320 	kEventAnnaGiveScarfMonogram = 201,
1321 	kEventAnnaGiveScarfDinerMonogram = 202,
1322 	kEventAnnaGiveScarfSalonMonogram = 203,
1323 	kEventAnnaGiveScarfAsk = 204,
1324 	kEventAnnaGiveScarfDinerAsk = 205,
1325 	kEventAnnaGiveScarfSalonAsk = 206,
1326 	kEventAugustArrivalInMunich = 207,
1327 	kEventAnnaDialogGoToJerusalem = 208,
1328 	kEventConcertStart = 209,
1329 	kEventConcertEnd = 210,
1330 	kEventCathFallingAsleep = 211,
1331 	kEventCathWakingUp = 212,
1332 	kEventConcertCough = 213,
1333 	kEventConcertSit = 214,
1334 	kEventConcertLeaveWithBriefcase = 215,
1335 	kEventCorpseDropFloorOriginal = 216,
1336 	kEventCorpseDropFloorGreen = 217,
1337 	kEventCorpsePickFloorOriginal = 218,
1338 	kEventCorpsePickFloorGreen = 219,
1339 	kEventCorpsePickFloorOpenedBedOriginal = 220,
1340 	kEventCorpsePickBedOriginal = 221,
1341 	kEventCorpsePickBedGreen = 222,
1342 	kEventCorpseDropBedOriginal = 223,
1343 	kEventCorpseDropBedGreen = 224,
1344 	kEventCorpseDropWindowOriginal = 225,
1345 	kEventCorpseDropWindowGreen = 226,
1346 	kEventCathFindCorpse = 227,
1347 	kEventCathLookOutsideWindowDay = 228,
1348 	kEventCathLookOutsideWindowNight = 229,
1349 	kEventCathGoOutsideTylerCompartmentDay = 230,
1350 	kEventCathGoOutsideTylerCompartmentNight = 231,
1351 	kEventCathGoOutsideDay = 232,
1352 	kEventCathGoOutsideNight = 233,
1353 	kEventCathSlipTylerCompartmentDay = 234,
1354 	kEventCathSlipTylerCompartmentNight = 235,
1355 	kEventCathSlipDay = 236,
1356 	kEventCathSlipNight = 237,
1357 	kEventCathGetInsideTylerCompartmentDay = 238,
1358 	kEventCathGetInsideTylerCompartmentNight = 239,
1359 	kEventCathGetInsideDay = 240,
1360 	kEventCathGetInsideNight = 241,
1361 	kEventCathGettingInsideAnnaCompartment = 242,
1362 	kEventCathClimbUpTrainGreenJacket = 243,
1363 	kEventCathClimbUpTrainNoJacketNight = 244,
1364 	kEventCathClimbUpTrainNoJacketDay = 245,
1365 	kEventCathClimbDownTrainGreenJacket = 246,
1366 	kEventCathClimbDownTrainNoJacketNight = 247,
1367 	kEventCathClimbDownTrainNoJacketDay= 248,
1368 	kEventCathTopTrainGreenJacket = 249,
1369 	kEventCathTopTrainNoJacketNight = 250,
1370 	kEventCathTopTrainNoJacketDay = 251,
1371 	kEventCathBreakCeiling = 252,
1372 	kEventCathJumpDownCeiling = 253,
1373 	kEventCathJumpUpCeilingBriefcase = 254,
1374 	kEventCathJumpUpCeiling = 255,
1375 	kEventPickGreenJacket = 256,
1376 	kEventPickScarfGreen = 257,
1377 	kEventPickScarfOriginal = 258,
1378 	kEventCloseMatchbox = 259,
1379 	kEventCathStruggleWithBonds = 260,
1380 	kEventCathBurnRope = 261,
1381 	kEventCathRemoveBonds = 262,
1382 	kEventCathStruggleWithBonds2 = 263,
1383 	kEventCathDefusingBomb = 264,
1384 	kEventCathSmokeNight = 265,
1385 	kEventCathSmokeDay = 266,
1386 	kEventCathOpenEgg = 267,
1387 	kEventCathOpenEggNoBackground = 268,
1388 	kEventCathCloseEgg = 269,
1389 	kEventCathCloseEggNoBackground = 270,
1390 	kEventCathUseWhistleOpenEgg = 271,
1391 	kEventCathUseWhistleOpenEggNoBackground = 272
1392 };
1393 
1394 //////////////////////////////////////////////////////////////////////////
1395 // Action ID (used by entity logic)
1396 //////////////////////////////////////////////////////////////////////////
1397 enum ActionIndex {
1398 	kActionNone            = 0,
1399 	kAction1               = 1,
1400 	kActionEndSound        = 2,
1401 	kActionExitCompartment = 3,
1402 	kAction4               = 4,
1403 	kActionExcuseMeCath    = 5,
1404 	kActionExcuseMe        = 6,
1405 	kActionKnock           = 8,
1406 	kActionOpenDoor        = 9,
1407 	kAction10              = 10,
1408 	kAction11              = 11,
1409 	kActionDefault         = 12,
1410 	kAction16              = 16,
1411 	kActionDrawScene       = 17,
1412 	kActionCallback        = 18,
1413 
1414 	/////////////////////////////
1415 	// Abbot
1416 	/////////////////////////////
1417 	kAction100969180 = 100969180,    // Anna
1418 	kAction101169422 = 101169422,
1419 	kAction104060776 = 104060776,
1420 	kAction135600432 = 135600432,
1421 	kAction136196244 = 136196244,
1422 	kAction157159392 = 157159392,
1423 	kAction157489665 = 157489665,
1424 	kAction158480160 = 158480160,
1425 	kAction192054567 = 192054567,
1426 	kAction203073664 = 203073664,
1427 	kAction222609266 = 222609266,
1428 
1429 	/////////////////////////////
1430 	// Alexei
1431 	/////////////////////////////
1432 	kAction100906246 = 100906246,
1433 	kAction123536024 = 123536024,
1434 	kAction124697504 = 124697504,
1435 	kAction135664192 = 135664192,
1436 	kAction135854208 = 135854208,
1437 	kAction188784532 = 188784532,
1438 	kAction221617184 = 221617184,
1439 
1440 	/////////////////////////////
1441 	// Alouan
1442 	/////////////////////////////
1443 	kAction189489753 = 189489753,
1444 	kAction190219584 = 190219584,    // Francois
1445 
1446 	/////////////////////////////
1447 	// Anna
1448 	/////////////////////////////
1449 	kAction136702400 = 136702400,
1450 	kAction139254416 = 139254416,
1451 	kAction156049968 = 156049968,
1452 	kAction157370960 = 157370960,
1453 	kAction157894320 = 157894320,
1454 	kAction159332865 = 159332865,   // August
1455 	kAction189299008 = 189299008,
1456 	kAction191668032 = 191668032,   // some action during or before concert?
1457 	kAction201437056 = 201437056,
1458 	kAction235856512 = 235856512,
1459 	kAction236060709 = 236060709,
1460 	kAction238936000 = 238936000,
1461 	kAction259136835 = 259136835,
1462 	kAction291662081 = 291662081,
1463 
1464 
1465 	/////////////////////////////
1466 	// August
1467 	/////////////////////////////
1468 	kAction123793792 = 123793792,
1469 	kAction134611040 = 134611040,
1470 	kAction168046720 = 168046720,
1471 	kAction168627977 = 168627977,
1472 	kAction169032608 = 169032608,
1473 	kAction189426612 = 189426612,
1474 	kAction203859488 = 203859488,
1475 	kAction219522616 = 219522616,    // Waiter1
1476 	kAction225182640 = 225182640,
1477 	kAction235257824 = 235257824,
1478 
1479 	/////////////////////////////
1480 	// Boutarel
1481 	/////////////////////////////
1482 	kAction125039808 = 125039808,
1483 	kAction134466544 = 134466544,
1484 	kAction135854206 = 135854206,
1485 	kAction159003408 = 159003408,
1486 	kAction203520448 = 203520448,
1487 	kAction237889408 = 237889408,
1488 
1489 	/////////////////////////////
1490 	// Chapters
1491 	/////////////////////////////
1492 	kAction135800432 = 135800432,
1493 	kActionChapter3  = 139122728,
1494 	kActionChapter5  = 139254416,
1495 	kAction156435676 = 156435676,
1496 	kAction169629818 = 169629818,
1497 	kAction171843264 = 171843264,
1498 	kAction190346110 = 190346110,
1499 
1500 	/////////////////////////////
1501 	// Cooks
1502 	/////////////////////////////
1503 	kAction101632192 = 101632192,
1504 	kAction224849280 = 224849280,
1505 	kAction236976550 = 236976550,
1506 
1507 	/////////////////////////////
1508 	// Coudert
1509 	/////////////////////////////
1510 	kAction123733488 = 123733488,
1511 	kAction154005632 = 154005632,
1512 	kAction155991520 = 155991520,
1513 	kAction157026693 = 157026693,
1514 	kAction168253822 = 168253822,
1515 	kAction168254872 = 168254872,
1516 	kAction168316032 = 168316032,    // Tatiana
1517 	kAction169557824 = 169557824,
1518 	kAction171394341 = 171394341,    // Mertens
1519 	kAction185671840 = 185671840,
1520 	kAction185737168 = 185737168,
1521 	kAction188570113 = 188570113,
1522 	kAction189026624 = 189026624,
1523 	kAction189750912 = 189750912,
1524 	kAction192063264 = 192063264,    // Anna
1525 	kAction201431954 = 201431954,    // Mertens / Verges
1526 	kAction201439712 = 201439712,
1527 	kAction205033696 = 205033696,
1528 	kAction205346192 = 205346192,    // Francois
1529 	kAction219971920 = 219971920,    // Anna
1530 	kAction223068211 = 223068211,    // MmeBoutarel
1531 	kAction225932896 = 225932896,
1532 	kAction226031488 = 226031488,    // Verges
1533 	kAction235061888 = 235061888,    // Tatiana
1534 	kAction238358920 = 238358920,    // Anna
1535 	kAction253868128 = 253868128,    // Anna
1536 	kAction285528346 = 285528346,    // Rebecca
1537 	kAction292048641 = 292048641,
1538 	kAction305159806 = 305159806,
1539 	kAction326348944 = 326348944,
1540 	kAction339669520 = 339669520,    // Verges
1541 
1542 	/////////////////////////////
1543 	// Francois
1544 	/////////////////////////////
1545 	kAction100901266 = 100901266,
1546 	kAction100957716 = 100957716,
1547 	kAction101107728 = 101107728,
1548 	kAction189872836 = 189872836,
1549 	kAction190390860 = 190390860,
1550 
1551 	/////////////////////////////
1552 	// Gendarmes
1553 	/////////////////////////////
1554 	kAction168710784 = 168710784,
1555 	kAction169499649 = 169499649,
1556 
1557 	/////////////////////////////
1558 	// Kahina
1559 	/////////////////////////////
1560 	kAction92186062  = 92186062,
1561 	kAction137503360 = 137503360,
1562 	kAction237555748 = 237555748,
1563 
1564 	/////////////////////////////
1565 	// Kronos
1566 	/////////////////////////////
1567 	kAction137685712 = 137685712,
1568 	kAction138085344 = 138085344,
1569 	kAction171849314 = 171849314,
1570 	kAction235599361 = 235599361,
1571 
1572 	/////////////////////////////
1573 	// Mahmud
1574 	/////////////////////////////
1575 	kAction102227384 = 102227384,    // Mertens
1576 	kAction156567128 = 156567128,
1577 	kAction170483072 = 170483072,
1578 	kAction225563840 = 225563840,
1579 
1580 	/////////////////////////////
1581 	// Max
1582 	/////////////////////////////
1583 	kAction71277948  = 71277948,
1584 	kAction158007856 = 158007856,
1585 	kAction101687594 = 101687594,
1586 	kAction122358304 = 122358304,    // also Waiter2/Boutarel?
1587 	kActionMaxFreeFromCage = 135204609,
1588 	kAction156622016 = 156622016,
1589 
1590 	/////////////////////////////
1591 	// Mertens
1592 	/////////////////////////////
1593 	kAction155604840 = 155604840,    // MmeBoutarel
1594 	kAction169633856 = 169633856,
1595 	kAction188635520 = 188635520,
1596 	kAction190082817 = 190082817,
1597 	kAction192849856 = 192849856,
1598 	kAction204379649 = 204379649,
1599 	kAction224122407 = 224122407,
1600 	kAction238732837 = 238732837,
1601 	kAction238790488 = 238790488,    // Tatiana
1602 	kAction269436673 = 269436673,
1603 	kAction269624833 = 269624833,
1604 	kAction302614416 = 302614416,
1605 	kAction303343617 = 303343617,
1606 
1607 	/////////////////////////////
1608 	// Milos
1609 	/////////////////////////////
1610 	kAction88652208 = 88652208,      // Coudert
1611 	kAction122865568 = 122865568,
1612 	kAction123852928 = 123852928,
1613 	kAction123199584 = 123199584,    // Coudert
1614 	kAction157691176 = 157691176,
1615 	kAction208228224 = 208228224,
1616 	kAction221683008 = 221683008,
1617 	kAction259125998 = 259125998,
1618 
1619 	/////////////////////////////
1620 	// Mme Boutarel
1621 	/////////////////////////////
1622 	kAction102484312 = 102484312,
1623 	kAction102752636 = 102752636,
1624 	kAction134289824 = 134289824,
1625 	kAction168986720 = 168986720,
1626 	kAction202221040 = 202221040,
1627 	kAction242526416 = 242526416,
1628 
1629 	/////////////////////////////
1630 	// Pascale
1631 	/////////////////////////////
1632 	kAction101824388 = 101824388,
1633 	kAction136059947 = 136059947,
1634 	kAction169750080 = 169750080,
1635 	kAction190605184 = 190605184,
1636 	kAction191604416 = 191604416,
1637 	kAction207769280 = 207769280,
1638 	kAction223262556 = 223262556,
1639 	kAction239072064 = 239072064,
1640 	kAction257489762 = 257489762,
1641 	kAction269479296 = 269479296,
1642 	kAction352703104 = 352703104,
1643 	kAction352768896 = 352768896,
1644 
1645 	/////////////////////////////
1646 	// Rebecca
1647 	/////////////////////////////
1648 	kAction125496184 = 125496184,
1649 	kAction155465152 = 155465152,
1650 	kAction155980128 = 155980128,
1651 	kAction169358379 = 169358379,
1652 	kAction224253538 = 224253538,
1653 	kAction254915200 = 254915200,
1654 
1655 	/////////////////////////////
1656 	// Salko
1657 	/////////////////////////////
1658 	kAction55996766  = 55996766,
1659 	kAction101169464 = 101169464,
1660 	kAction102675536 = 102675536,    // Ivo
1661 	kAction136184016 = 136184016,
1662 
1663 	/////////////////////////////
1664 	// Servers 0
1665 	/////////////////////////////
1666 	kAction170016384 = 170016384,
1667 	kAction188893625 = 188893625,
1668 	kAction201964801 = 201964801,    // August
1669 	kAction204704037 = 204704037,
1670 	kAction207330561 = 207330561,
1671 	kAction218128129 = 218128129,
1672 	kAction218586752 = 218586752,
1673 	kAction218983616 = 218983616,
1674 	kAction223712416 = 223712416,
1675 	kAction237485916 = 237485916,
1676 	kAction252568704 = 252568704,
1677 	kAction268773672 = 268773672,    // Anna / August
1678 	kAction270068760 = 270068760,
1679 	kAction270410280 = 270410280,
1680 	kAction286403504 = 286403504,
1681 	kAction286534136 = 286534136,
1682 	kAction292758554 = 292758554,
1683 	kAction304061224 = 304061224,
1684 	kAction337548856 = 337548856,
1685 
1686 	/////////////////////////////
1687 	// Servers 1
1688 	/////////////////////////////
1689 	kAction101106391 = 101106391,
1690 	kAction122288808 = 122288808,    // Boutarel
1691 	kAction123712592 = 123712592,    // Ivo
1692 	kAction125826561 = 125826561,    // August
1693 	kAction134486752 = 134486752,    // August
1694 	kAction168717392 = 168717392,    // Boutarel
1695 	kAction189688608 = 189688608,
1696 	kAction219377792 = 219377792,
1697 	kAction223002560 = 223002560,
1698 	kAction236237423 = 236237423,
1699 	kAction256200848 = 256200848,
1700 	kAction258136010 = 258136010,
1701 	kAction269485588 = 269485588,
1702 	kAction291721418 = 291721418,
1703 	kAction302203328 = 302203328,
1704 	kAction302996448 = 302996448,
1705 	kAction326144276 = 326144276,
1706 
1707 	/////////////////////////////
1708 	// Sophie
1709 	/////////////////////////////
1710 	kActionProceedChapter5  = 70549068,
1711 	kAction123668192 = 123668192,
1712 	kAction125242096 = 125242096,
1713 	kAction136654208 = 136654208,
1714 	kAction259921280 = 259921280,
1715 	kAction292775040 = 292775040,
1716 
1717 	/////////////////////////////
1718 	// Tables
1719 	/////////////////////////////
1720 	kActionDrawTablesWithChairs = 103798704,
1721 	kAction136455232 = 136455232,
1722 
1723 	/////////////////////////////
1724 	// Tatiana
1725 	/////////////////////////////
1726 	kAction69239528  = 69239528,
1727 	kAction123857088 = 123857088,
1728 	kAction124973510 = 124973510,
1729 	kAction154071333 = 154071333,
1730 	kAction156444784 = 156444784,
1731 	kAction169360385 = 169360385,
1732 	kAction191198209 = 191198209,
1733 	kAction223183000 = 223183000,    // August
1734 	kAction236053296 = 236053296,    // Alexei
1735 	kAction236241630 = 236241630,    // Anna
1736 	kAction236517970 = 236517970,    // Anna
1737 	kAction268620864 = 268620864,    // August
1738 	kAction290869168 = 290869168,
1739 
1740 	/////////////////////////////
1741 	// Train
1742 	/////////////////////////////
1743 	kAction191070912 = 191070912,
1744 	kActionTrainStopRunning = 191350523,
1745 	kActionCatchBeetle = 202613084,
1746 	kAction203339360 = 203339360,
1747 	kActionTrainStartRunning = 203419131,
1748 	kAction203863200 = 203863200,
1749 	kAction222746496 = 222746496,
1750 	kActionBreakCeiling = 225056224,
1751 	kAction290410610 = 290410610,
1752 	kActionJumpDownCeiling = 338494260,
1753 
1754 	/////////////////////////////
1755 	// Verges
1756 	/////////////////////////////
1757 	kAction125233040 = 125233040,   // Abbot
1758 	kAction125499160 = 125499160,
1759 	kAction155853632 = 155853632,
1760 	kAction158617345 = 158617345,
1761 	kAction167854368 = 167854368,
1762 	kAction168187490 = 168187490,
1763 	kAction168255788 = 168255788,
1764 	kActionDeliverMessageToTyler = 191337656,
1765 	kAction202558662 = 202558662,
1766 
1767 	/////////////////////////////
1768 	// Vassili
1769 	/////////////////////////////
1770 	kAction122732000 = 122732000,
1771 	kAction168459827 = 168459827,
1772 	kAction191477936 = 191477936,
1773 
1774 	/////////////////////////////
1775 	// Vesna
1776 	/////////////////////////////
1777 	kAction124190740 = 124190740,
1778 	kAction134427424 = 134427424,
1779 	kAction135024800 = 135024800,
1780 	kAction137165825 = 137165825,
1781 	kAction155913424 = 155913424,
1782 	kAction190412928 = 190412928,
1783 	kAction203663744 = 203663744,
1784 	kAction204832737 = 204832737,
1785 
1786 	/////////////////////////////
1787 	// Misc
1788 	/////////////////////////////
1789 	kAction158610240 = 158610240,
1790 	kAction167992577 = 167992577,
1791 	kAction168646401 = 168646401,
1792 	kAction169300225 = 169300225,
1793 	kAction169773228 = 169773228,
1794 	kActionEndChapter = 190346110,
1795 	kAction191001984 = 191001984,
1796 	kAction192637492 = 192637492,
1797 	kAction201959744 = 201959744,
1798 	kAction202621266 = 202621266,
1799 	kAction202884544 = 202884544,
1800 	kAction203078272 = 203078272,
1801 	kAction205034665 = 205034665,
1802 	kAction205294778 = 205294778,
1803 	kActionUseWhistle = 270751616,
1804 	kAction272177921 = 272177921,
1805 	kAction224309120 = 224309120,
1806 	kAction225358684 = 225358684,
1807 	kAction225367984 = 225367984,
1808 	kAction226078300 = 226078300, // Whistle
1809 
1810 	kActionEnd
1811 };
1812 
1813 } // End of namespace LastExpress
1814 
1815 #endif // LASTEXPRESS_SHARED_H
1816