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