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 ASYLUM_SHARED_H 24 #define ASYLUM_SHARED_H 25 26 namespace Asylum { 27 28 ////////////////////////////////////////////////////////////////////////// 29 // Global 30 ////////////////////////////////////////////////////////////////////////// 31 enum GameFlag { 32 kGameFlag0 = 0, 33 34 kGameFlag4 = 4, 35 kGameFlag12 = 12, 36 kGameFlag52 = 52, 37 kGameFlag86 = 86, 38 kGameFlag87 = 87, 39 kGameFlag88 = 88, 40 kGameFlag114 = 114, 41 kGameFlag115 = 115, 42 kGameFlag128 = 128, 43 kGameFlag169 = 169, 44 kGameFlagScriptProcessing = 183, 45 kGameFlag186 = 186, 46 kGameFlagCommentLeavingCell = 214, 47 kGameFlag215 = 215, 48 kGameFlag219 = 219, 49 kGameFlagSolveVCRPuzzle = 220, 50 kGameFlag235 = 235, 51 kGameFlag238 = 238, 52 kGameFlag239 = 239, 53 kGameFlag243 = 243, 54 kGameFlag244 = 244, 55 kGameFlag245 = 245, 56 kGameFlag246 = 246, 57 kGameFlag247 = 247, 58 kGameFlag248 = 248, 59 kGameFlag249 = 249, 60 kGameFlag253 = 253, 61 kGameFlag254 = 254, 62 kGameFlag255 = 255, 63 kGameFlag256 = 256, 64 kGameFlag257 = 257, 65 kGameFlag258 = 258, 66 kGameFlag259 = 259, 67 kGameFlag260 = 260, 68 kGameFlag261 = 261, 69 kGameFlag262 = 262, 70 kGameFlag263 = 263, 71 kGameFlag264 = 264, 72 kGameFlag265 = 265, 73 kGameFlag266 = 266, 74 kGameFlag267 = 267, 75 kGameFlag268 = 268, 76 kGameFlag269 = 269, 77 kGameFlag270 = 270, 78 kGameFlag271 = 271, 79 kGameFlag272 = 272, 80 kGameFlag273 = 273, 81 kGameFlag274 = 274, 82 kGameFlag275 = 275, 83 kGameFlag276 = 276, 84 kGameFlag279 = 279, 85 kGameFlag281 = 281, 86 kGameFlag282 = 282, 87 kGameFlag283 = 283, 88 kGameFlag284 = 284, 89 kGameFlag289 = 289, 90 kGameFlag319 = 319, 91 kGameFlag320 = 320, 92 kGameFlag321 = 321, 93 kGameFlag322 = 322, 94 kGameFlag323 = 323, 95 kGameFlag353 = 353, 96 kGameFlag354 = 354, 97 kGameFlag355 = 355, 98 kGameFlag358 = 358, 99 kGameFlag368 = 368, 100 kGameFlag369 = 369, 101 kGameFlag370 = 370, 102 kGameFlag371 = 371, 103 kGameFlag384 = 384, 104 kGameFlag387 = 387, 105 kGameFlag391 = 391, 106 kGameFlag405 = 405, 107 kGameFlag423 = 423, 108 kGameFlag438 = 438, 109 kGameFlag439 = 439, 110 kGameFlag440 = 440, 111 kGameFlag441 = 441, 112 kGameFlag442 = 442, 113 kGameFlag447 = 447, 114 kGameFlag448 = 448, 115 kGameFlag450 = 450, 116 kGameFlag451 = 451, 117 kGameFlag452 = 452, 118 kGameFlag453 = 453, 119 kGameFlag454 = 454, 120 kGameFlag455 = 455, 121 kGameFlag470 = 470, 122 kGameFlag481 = 481, 123 kGameFlag511 = 511, 124 kGameFlag528 = 528, 125 kGameFlag543 = 543, 126 kGameFlag544 = 544, 127 kGameFlag545 = 545, 128 kGameFlag553 = 553, 129 kGameFlag556 = 556, 130 kGameFlag557 = 557, 131 kGameFlag558 = 558, 132 kGameFlag560 = 560, 133 kGameFlag561 = 561, 134 kGameFlag562 = 562, 135 kGameFlag563 = 563, 136 kGameFlag564 = 564, 137 kGameFlag565 = 565, 138 kGameFlag566 = 566, 139 kGameFlag567 = 567, 140 kGameFlag568 = 568, 141 kGameFlag569 = 569, 142 kGameFlag570 = 570, 143 kGameFlag572 = 572, 144 kGameFlag582 = 582, 145 kGameFlag583 = 583, 146 kGameFlag596 = 596, 147 kGameFlag597 = 597, 148 kGameFlag598 = 598, 149 kGameFlag599 = 599, 150 kGameFlag600 = 600, 151 kGameFlag608 = 608, 152 kGameFlag619 = 619, 153 kGameFlag635 = 635, 154 kGameFlag636 = 636, 155 kGameFlag637 = 637, 156 kGameFlagSolveHiveControl = 640, 157 kGameFlag684 = 684, 158 kGameFlag685 = 685, 159 kGameFlag686 = 686, 160 kGameFlag687 = 687, 161 kGameFlag688 = 688, 162 kGameFlag689 = 689, 163 kGameFlag690 = 690, 164 kGameFlag691 = 691, 165 kGameFlag692 = 692, 166 kGameFlag693 = 693, 167 kGameFlag694 = 694, 168 kGameFlag695 = 695, 169 kGameFlag696 = 696, 170 kGameFlag697 = 697, 171 kGameFlag698 = 698, 172 kGameFlag699 = 699, 173 kGameFlag700 = 700, 174 kGameFlag701 = 701, 175 kGameFlag702 = 702, 176 kGameFlag703 = 703, 177 kGameFlag704 = 704, 178 kGameFlag705 = 705, 179 kGameFlag706 = 706, 180 kGameFlag707 = 707, 181 kGameFlag708 = 708, 182 kGameFlag722 = 722, 183 kGameFlag723 = 723, 184 kGameFlag724 = 724, 185 kGameFlag725 = 725, 186 kGameFlag726 = 726, 187 kGameFlag727 = 727, 188 kGameFlag728 = 728, 189 kGameFlag729 = 729, 190 kGameFlag730 = 730, 191 kGameFlag759 = 759, 192 kGameFlag760 = 760, 193 kGameFlag761 = 761, 194 kGameFlag776 = 776, 195 kGameFlag790 = 790, 196 kGameFlag791 = 791, 197 kGameFlag792 = 792, 198 kGameFlag794 = 794, 199 kGameFlag795 = 795, 200 kGameFlag796 = 796, 201 kGameFlag797 = 797, 202 kGameFlag801 = 801, 203 kGameFlag802 = 802, 204 kGameFlag803 = 803, 205 kGameFlag804 = 804, 206 kGameFlag805 = 805, 207 kGameFlag806 = 806, 208 kGameFlag809 = 809, 209 kGameFlag810 = 810, 210 kGameFlag815 = 815, 211 kGameFlag816 = 816, 212 kGameFlag817 = 817, 213 kGameFlag818 = 818, 214 kGameFlag819 = 819, 215 kGameFlag820 = 820, 216 kGameFlag821 = 821, 217 kGameFlag822 = 822, 218 kGameFlag823 = 823, 219 kGameFlag824 = 824, 220 kGameFlag825 = 825, 221 kGameFlag826 = 826, 222 kGameFlag827 = 827, 223 kGameFlag828 = 828, 224 kGameFlag829 = 829, 225 kGameFlag830 = 830, 226 kGameFlagSolveHiveMachine = 834, 227 kGameFlag866 = 866, 228 kGameFlag875 = 875, 229 kGameFlag876 = 876, 230 kGameFlag877 = 877, 231 kGameFlag878 = 878, 232 kGameFlag879 = 879, 233 kGameFlag880 = 880, 234 kGameFlag881 = 881, 235 kGameFlag897 = 897, 236 kGameFlag899 = 899, 237 kGameFlagFinishGame = 901, 238 kGameFlag925 = 925, 239 kGameFlag937 = 937, 240 kGameFlag1009 = 1009, 241 kGameFlag1021 = 1021, 242 kGameFlag1022 = 1022, 243 kGameFlag1023 = 1023, 244 kGameFlag1054 = 1054, 245 kGameFlag1055 = 1055, 246 kGameFlag1056 = 1056, 247 kGameFlag1057 = 1057, 248 kGameFlag1058 = 1058, 249 kGameFlag1059 = 1059, 250 kGameFlag1060 = 1060, 251 kGameFlag1061 = 1061, 252 kGameFlag1062 = 1062, 253 kGameFlag1063 = 1063, 254 kGameFlag1064 = 1064, 255 kGameFlag1065 = 1065, 256 kGameFlag1066 = 1066, 257 kGameFlag1067 = 1067, 258 kGameFlag1099 = 1099, 259 kGameFlag1108 = 1108, 260 kGameFlag1121 = 1121, 261 kGameFlag1122 = 1122, 262 kGameFlag1131 = 1131, 263 kGameFlag1137 = 1137, 264 kGameFlag1144 = 1144, 265 kGameFlag3189 = 3189, 266 kGameFlag3351 = 3351, 267 kGameFlag3386 = 3386, 268 kGameFlag3387 = 3387, 269 kGameFlag3388 = 3388, 270 kGameFlag3389 = 3389, 271 kGameFlag3754 = 3754, 272 kGameFlag3755 = 3755, 273 kGameFlag3810 = 3810, 274 kGameFlag3823 = 3823, 275 kGameFlag3842 = 3842, 276 kGameFlag3843 = 3843, 277 kGameFlag3931 = 3931 278 }; 279 280 enum ChapterIndex { 281 kChapterInvalid = -1, 282 kChapterNone = 0, 283 kChapter1, 284 kChapter2, 285 kChapter3, 286 kChapter4, 287 kChapter5, 288 kChapter6, 289 kChapter7, 290 kChapter8, 291 kChapter9, 292 kChapter10, 293 kChapter11, 294 kChapter12, 295 kChapter13 296 }; 297 298 ////////////////////////////////////////////////////////////////////////// 299 // Resources 300 ////////////////////////////////////////////////////////////////////////// 301 302 enum ResourcePackId { 303 kResourcePackText = 0, 304 kResourcePackShared = 1, 305 kResourcePackMusic = 2, // Special case: will load from mus* resources 306 kResourcePackSpeech = 3, 307 kResourcePackSharedSound = 4, 308 kResourcePackTowerCells = 5, 309 kResourcePackInnocentAbandoned = 6, 310 kResourcePackCourtyardAndChapel = 7, 311 kResourcePackCircusOfFools = 8, 312 kResourcePackLaboratory = 9, 313 kResourcePackHive = 10, 314 kResourcePackMorgueAndCemetery = 11, 315 kResourcePackLostVillage = 12, 316 kResourcePackGauntlet = 13, 317 kResourcePackMansion = 14, 318 kResourcePackCave = 15, 319 kResourcePackMaze = 16, 320 kResourcePackMorgansLastGame = 17, 321 kResourcePackSound = 18, 322 kResourcePack104 = 104, 323 kResourcePack204 = 204, 324 kResourcePack304 = 304, 325 326 kResourcePackInvalid = 0xFFF 327 }; 328 329 #define MAKE_RESOURCE(pack, index) (ResourceId)((((pack) << 16) + 0x80000000) + (unsigned) (int32)(index)) 330 331 typedef int ResourceId; 332 333 enum ResourcesId { 334 kResourceInvalid = -1, 335 kResourceNone = 0 336 }; 337 338 #define kMusicStopped -666 339 340 ////////////////////////////////////////////////////////////////////////// 341 // Drawing 342 ////////////////////////////////////////////////////////////////////////// 343 enum DrawFlags { 344 kDrawFlagNone = 0, 345 kDrawFlagMirrorLeftRight = 2 346 }; 347 348 ////////////////////////////////////////////////////////////////////////// 349 // Actions 350 ////////////////////////////////////////////////////////////////////////// 351 enum ActionType { 352 kActionTypeNone = 0, 353 kActionTypeFind = 1, 354 kActionTypeTalk = 2, 355 kActionTypeGrab = 4, 356 kActionType8 = 8, 357 kActionType16 = 16 358 }; 359 360 ////////////////////////////////////////////////////////////////////////// 361 // Script 362 ////////////////////////////////////////////////////////////////////////// 363 enum OpcodeType { 364 kOpcodeReturn = 0, 365 kOpcodeSetGameFlag, 366 kOpcodeClearGameFlag, 367 kOpcodeToggleGameFlag, 368 kOpcodeJumpIfGameFlag, 369 kOpcodeHideCursor, // 5 370 kOpcodeShowCursor, 371 kOpcodePlayAnimation, 372 kOpcodeMoveScenePosition, 373 kOpcodeHideActor, 374 kOpcodeShowActor, // 10 375 kOpcodeSetActorPosition, 376 kOpcodeSetSceneMotionStatus, 377 kOpcodeDisableActor, 378 kOpcodeEnableActor, 379 kOpcodeEnableObjects, // 15 380 kOpcodeReturn1, 381 kOpcodeRemoveObject, 382 kOpcodeJumpActorSpeech, 383 kOpcodeJumpAndSetDirection, 384 kOpcodeJumpIfActorCoordinates, // 20 385 kOpcodeNop, 386 kOpcodeResetAnimation, 387 kOpcodeDisableObject, 388 kOpcodeJumpIfSoundPlayingAndPlaySound, 389 kOpcodeJumpIfActionFind, // 25 390 kOpcodeSetActionFind, 391 kOpcodeClearActionFind, 392 kOpcodeJumpIfActionGrab, 393 kOpcodeSetActionGrab, 394 kOpcodeClearActionGrab, // 30 395 kOpcodeJumpIfActionTalk, 396 kOpcodeSetActionTalk, 397 kOpcodeClearActionTalk, 398 kOpcodeAddToInventory, 399 kOpcodeRemoveFromInventory, // 35 400 kOpcodeJumpIfInventoryOmits, 401 kOpcodeRunEncounter, 402 kOpcodeJumpIfAction16, 403 kOpcodeSetAction16, 404 kOpcodeClearAction16, // 40 405 kOpcodeSelectInventoryItem, 406 kOpcodeJumpIfInventoryItemNotSelected, 407 kOpcodeChangeScene, 408 kOpcodeInteract, 409 kOpcodePlayMovie, // 45 410 kOpcodeStopAllObjectsSounds, 411 kOpcodeStopProcessing, 412 kOpcodeResumeProcessing, 413 kOpcodeResetSceneRect, 414 kOpcodeChangeMusicById, // 50 415 kOpcodeStopMusic, 416 kOpcodeIncrementParam1, 417 kOpcodeSetVolume, 418 kOpcodeJump, 419 kOpcodeRunPuzzle, // 55 420 kOpcodeJumpIfAction8, 421 kOpcodeSetAction8, 422 kOpcodeClearAction8, 423 kOpcodeCreatePalette, 424 kOpcodeIncrementParam2, // 60 425 kOpcodeWaitUntilFramePlayed, 426 kOpcodeUpdateWideScreen, 427 kOpcodeJumpIfActor, 428 kOpcodePlaySpeechScene, 429 kOpcodePlaySpeech, // 65 430 kOpcodePlaySpeechScene2, 431 kOpcodeMoveScenePositionFromActor, 432 kOpcodePaletteFade, 433 kOpcodeStartPaletteFadeThread, 434 kOpcodePlaySoundUpdateObject, // 70 435 kOpcodeActorFaceTarget, 436 kOpcodeHidMatteBars, 437 kOpcodeShowMatteBars, 438 kOpcodeJumpIfSoundPlaying, 439 kOpcodeChangePlayer, // 75 440 kOpcodeChangeActorStatus, 441 kOpcodeStopSound, 442 kOpcodeJumpRandom, 443 kOpcodeClearScreen, 444 kOpcodeQuit, // 80 445 kOpcodeJumpObjectFrame, 446 kOpcodeDeleteGraphics, 447 kOpcodeSetPlayerField944, 448 kOpcodeSetScriptField1BB0, 449 kOpcodeOnScriptField1BB0, // 85 450 kOpcodeWalkToActor, 451 kOpcodeSetResourcePalette, 452 kOpcodeSetObjectFrameIndexAndFlags, 453 kOpcodeSetObjectFlags, 454 kOpcodeSetActorActionIndex2, // 90 455 kOpcodeUpdateTransparency, 456 kOpcodeQueueScript, 457 kOpcodeProcessActor, 458 kOpcodeClearActorFields, 459 kOpcodeSetObjectLastFrameIndex, // 95 460 kOpcodeSetActionAreaFlags, 461 kOpcodeMorphActor, 462 kOpcodeShowMenu, 463 kOpcodeUpdateGlobalFlags 464 }; 465 466 ////////////////////////////////////////////////////////////////////////// 467 // Actor 468 ////////////////////////////////////////////////////////////////////////// 469 470 typedef int ActorIndex; 471 472 enum ActorIndexes { 473 kActorInvalid = -1, 474 // TODO: check if the names match the actor type 475 kActorMax = 0, 476 kActorSarah = 1, 477 kActorCyclops = 2, 478 kActorAztec = 3 479 }; 480 481 enum ActorStatus { 482 kActorStatusNone = 0, 483 kActorStatusWalking = 1, // Walking 484 kActorStatusWalkingTo, // Auto-walking to target 485 kActorStatusInteracting, 486 kActorStatusEnabled, // Standing Still 487 kActorStatusDisabled, // 5 488 kActorStatusShowingInventory, 489 kActorStatusStoppedInteracting, 490 kActorStatus8, 491 kActorStatusFidget, 492 kActorStatus10, 493 kActorStatus11, 494 kActorStatusWalking2, 495 kActorStatusWalkingTo2, 496 kActorStatusEnabled2, 497 kActorStatusAttacking, // 15 498 kActorStatusGettingHurt, 499 kActorStatusRestarting, 500 kActorStatus18, 501 kActorStatusHittingPumpkin, 502 kActorStatusStoppedHitting, 503 kActorStatusMorphingInto 504 }; 505 506 enum ActorDirection { 507 kDirectionInvalid = -1, 508 kDirectionN = 0, 509 kDirectionNW = 1, 510 kDirectionW = 2, 511 kDirectionSW = 3, 512 kDirectionS = 4, 513 kDirectionSE = 5, 514 kDirectionE = 6, 515 kDirectionNE = 7, 516 kDirection8 = 8 517 }; 518 519 enum ActorFlags { 520 kActorFlagVisible = 1, 521 kActorFlagMasked = 2 522 }; 523 524 enum DirectionFrom { 525 kDirectionFromObject = 0, 526 kDirectionFromPolygons = 1, 527 kDirectionFromActor = 2, 528 kDirectionFromParameters = 3 529 }; 530 531 ////////////////////////////////////////////////////////////////////////// 532 // Object 533 ////////////////////////////////////////////////////////////////////////// 534 enum ObjectId { 535 kObjectInvalid = -1, 536 kObjectNone = 0, 537 kObjectHeadBanger = 101, 538 kObjectAngelFlares = 112, 539 kObjectTicaTac01 = 391, 540 kObjectGuyFalls = 434, 541 kObjectGuyWobbles = 405, 542 kObjectRocker = 441, 543 kObjectOpeningGate = 485, 544 kObjectTableRecordRoom = 659, 545 kObject703 = 703, 546 kObjectTree8 = 726, 547 kObjectSlab = 743, 548 kObjectPreacherBobAssistant = 802, 549 kObjectPreacherBob = 803, 550 kObjectNPC024Church = 816, 551 kObjectNPC024Fountain = 825, 552 kObjectNPC027Sit = 838, 553 kObjectNPC028Sit = 839, 554 kObjectNPC029Sit = 840, 555 kObjectNPC027Dancing = 844, 556 kObjectNPC028Dancing = 845, 557 kObjectNPC026OutOfWay = 861, 558 kObjectNPC026Talking = 862, 559 kObjectOrangeRecord = 920, 560 kObjectJessieStatusQuo = 984, 561 kObjectMarty02 = 991, 562 kObjectEileenOnBench = 993, 563 kObject994 = 994, 564 kObjectFishingBoy = 1001, 565 kObjectDennisStatusQuo = 1011, 566 kObjectSailorBoy = 1013, 567 kObjectEleenOnGround = 1019, 568 kObjectSailorStatusQuo = 1021, 569 kObjectNPC026TalkStatusQuo = 1038, 570 kObjectSuckerSittingStatusQuo = 1084, 571 kObjectBubbles = 1185, 572 kObjectGlow = 1186, 573 kObjectDome = 1187, 574 kObjectRedLight = 1188, 575 kObjectRing = 1189, 576 kObjectBallMovesUpright = 1190, 577 kObjectGearsLightUp = 1191, 578 kObjectMariaPointsLeft = 1200, 579 kObjectMariaPointsRight = 1201, 580 kObjectNPC032Sleeping = 1250, 581 kObjectNPC032StatusQuoOutside = 1254, 582 kObjectNPC032StatusQuoBigTop = 1256, 583 kObjectGlobe = 1261, 584 kObjectDrawers3 = 1276, 585 kObjectChalice = 1286, 586 kObjectFreezerHallInterior = 1337, 587 kObjectNPC033StartEnc = 1338, 588 kObjectNPC033GetBook = 1343, 589 kObjectNPC033Reading = 1344, 590 kObjectOldMan3 = 1377, 591 kObjectTattooManStatusQuo = 1391, // NPC 34 592 kObjectStrongmanStatusQuo = 1402, // NPC 35 593 kObjectStrongmanStatusQuo2 = 1405, // NPC 35 594 kObjectInfernoStatusQuo = 1408, // NPC 36 595 kObjectJugglerWithPin = 1423, // NPC 37 596 kObjectJuggler = 1424, // NPC 37 597 kObjectClownStatusQuo = 1428, // NPC 38 598 kObjectTrixieStatusQuo = 1432, // NPC 39 599 kObjectSimonStatusQuo = 1434, // NPC 40 600 kObjectBigTopBarrel = 1436, 601 kObjectFunTixStatusQuo = 1437, // NPC 44 602 kObjectStandBehindJuggler = 1438, 603 kObjectFreakTixStatusQuoUp = 1439, // NPC 45 604 kObjectFreakTixStatusQuoDown = 1440, // NPC 45 605 kObjectFortTellerStatusQuo = 1444, // NPC 45 606 kObjectStrongmanLeft = 1449, // NPC 35 607 kObjectStrongmanRight = 1450, // NPC 35 608 kObjectRingTossStatusQuo = 1451, // NPC 47 609 kObjectKnockDownStatusQuo = 1455, // NPC 47 610 kObjectPigShootStatusQuo = 1456, // NPC 47 611 kObjectPretZoolStatusQuo = 1461, // NPC 48 612 kObjectTimberStatusQuo = 1462, // NPC 49 613 kObjectTwinsStatusQuo = 1465, // NPC 50 614 kObjectSeanStatusQuo = 1468, // NPC 51 615 kObjectMomAndPopStatusQuo = 1470, // NPCs 52-53 616 kObjectCrow1FlysAway = 1485, 617 kObjectCrow1Pecks = 1486, 618 kObjectCrow2AmbientPecks = 1495, 619 kObjectCrow2FlysAway = 1500, 620 kObjectCrow3FlysAway = 1502, 621 kObjectCrow3Pecks = 1503, 622 kObjectCrow4FlysAway = 1506, 623 kObjectCrow4Pecks = 1507, 624 kObjectPumpkin1Loop = 1523, 625 kObjectPumpkin2Loop = 1524, 626 kObjectPumpkin3Loop = 1525, 627 kObjectPumpkin4Loop = 1526, 628 kObjectPumpkin5Loop = 1527, 629 kObjectPumpkin6Loop = 1528, 630 kObjectPumpkin7Loop = 1529, 631 kObjectPumpkin1Dies = 1530, 632 kObjectPumpkin2Dies = 1531, 633 kObjectPumpkin3Dies = 1532, 634 kObjectPumpkin4Dies = 1533, 635 kObjectPumpkin5Dies = 1534, 636 kObjectPumpkin6Dies = 1535, 637 kObjectPumpkin7Dies = 1536, 638 kObjectDennisStatus2 = 1580, 639 kObjectPreAlphaNut = 1582, 640 kObjectPreAlphaNut2 = 1584, 641 kObjectDeadMomFromOutside = 1589, 642 kObjectHeadOnTable = 1595, 643 kObjectCave = 1763, 644 kObjectWitchDoctor = 1778, 645 kObjectStoneWifeStatuQuo = 1782, 646 kObjectFishermanWidowStatusQuo = 1786, 647 kObjectABarrier = 1899, 648 kObjectMonsterUp = 1956, 649 kObjectMonsterStatus = 1957, 650 kObjectMonsterDeath = 1958, 651 kObjectMonsterAttack = 1959, 652 kObjectPuke1 = 1960, 653 kObjectPuke2 = 1961, 654 kObjectPuke3 = 1962, 655 kObjectMonsterHurt = 1997, 656 kObjectWheel1 = 2113, 657 kObjectWheel2 = 2114, 658 kObjectWheel3 = 2115, 659 kObjectWheel4 = 2116, 660 kObjectWheel5 = 2117, 661 kObjectWheel6 = 2118, 662 kObjectWheel7 = 2119, 663 kObjectStoneMasonStatusHitt = 2123, 664 kObjectFlamingHeadLeftSide = 2129, 665 kObjectHook1B = 2131, 666 kObjectHook2B = 2132, 667 kObjectHook3B = 2133, 668 kObjectHook4B = 2134, 669 kObjectHook5B = 2135, 670 kObjectHook6B = 2136, 671 kObjectHook0Down = 2152, 672 kObjectHook2Down = 2154, 673 kObjectHook3Down = 2155, 674 kObjectHook4Down = 2156, 675 kObjectHook5Down = 2157, 676 kObjectHook6Down = 2158, 677 kObject2230 = 2230, 678 kObjectGravinStatusQuoCyber = 2324, 679 kObjectGravinWorkMachine = 2337, 680 kObjectNPC062GritzaStatusQuo = 2399, 681 kObjectNPC063GrundleStatusQuo = 2410, 682 kObjectNPC064GrellaStatusQuo = 2418, 683 kObjectSparkPuzzleLeft = 2427, 684 kObjectSparkPuzzleMiddle = 2429, 685 kObjectLavaBridge = 2445, 686 kObjectSparkPuzzleRight = 2451, 687 kObjectNPC065StatusQuo = 2469, 688 kObjectFloorTrap1 = 2473, 689 kObjectFloorTrap2 = 2474, 690 kObjectFloorTrap3 = 2475, 691 kObjectFloorTrap4 = 2476, 692 kObjectFloorTrap5 = 2477, 693 kObjectGlow4 = 2478, 694 kObjectBugOnTable = 2480, 695 kObjectFloorTrap6 = 2481, 696 kObjectFloorTrap7 = 2482, 697 kObjectFloorTrap8 = 2483, 698 kObjectFloorTrap9 = 2484, 699 kObjectWadeThroughLava = 2500, 700 kObjectNPC066StatusQuo = 2504, 701 kObject2507 = 2507, 702 kObjectBrokenPipe = 2508, 703 kObjectBodySlides1 = 2514, 704 kObjectBodySlides2 = 2515, 705 kObjectBodySlides3 = 2516, 706 kObjectBodySlides4 = 2517, 707 kObjectBodySlides5 = 2518, 708 kObjectBodySlides6 = 2519, 709 kObjectEmberPopsOut = 2526, 710 kObjectBugCarriesEmber = 2527, 711 kObjectGirlStatusQuo = 2541, 712 kObjectWitchWifeStirring = 2543, 713 kObjectFurnaceHole = 2554, 714 kObjectInsidePipeCyberPod = 2555, 715 kObjectTopOfFurnace = 2566, 716 kObjectElderBugLimb = 2572, 717 kObjectQuetzlcaotlStatusQuo = 2578, 718 kObjectGhost1 = 2579, 719 kObjectGhost2 = 2580, 720 kObjectGhost3 = 2581, 721 kObjectGhost4 = 2582, 722 kObjectGhost5 = 2583, 723 kObjectGhost6 = 2584, 724 kObjectDiscardedBugPincer = 2587, 725 kObjectGong1 = 2590, 726 kObjectGong2 = 2591, 727 kObjectGong3 = 2592, 728 kObjectGong4 = 2593, 729 kObjectGong5 = 2594, 730 kObjectGong6 = 2596, 731 kObjectGhost2b = 2634, 732 kObjectRitualLoop = 2674, 733 kObjectLine = 2859, 734 kObjectZapPattern1 = 2876, 735 kObjectZapPattern2 = 2877, 736 kObjectZapPattern3 = 2878, 737 kObjectBlanklPixelForWarrior = 2884, 738 kObjectPixelForHutWarrior = 2885, 739 kObjectPixelForWaterfallGhost = 2886, 740 kObjectZapPattern4 = 2892, 741 kObjectZapPattern5 = 2893, 742 kObjectZapPattern6 = 2894, 743 kObjectZapPattern7 = 2895, 744 kObjectZapPattern8 = 2896, 745 kObjectZapPattern9 = 2897, 746 kObjectLitLimbScanner = 3061, 747 kObjectOfficeWallNew = 3062, 748 kObjectCyberTable = 3065, 749 750 kObjectEnd 751 }; 752 753 enum ObjectFlag { 754 kObjectFlagEnabled = 0x1, 755 kObjectFlag2 = 0x2, 756 kObjectFlag4 = 0x4, 757 kObjectFlag6 = 0x6, 758 kObjectFlag8 = 0x8, 759 kObjectFlag10 = 0x10, 760 kObjectFlag20 = 0x20, 761 kObjectFlag40 = 0x40, 762 kObjectFlag80 = 0x80, 763 kObjectFlagBF = 0xBF, 764 kObjectFlag1000 = 0x1000, 765 kObjectFlagC000 = 0xC000, 766 kObjectFlag10000 = 0x10000, 767 kObjectFlag10E38 = 0x10E38, 768 kObjectFlag20000 = 0x20000, 769 kObjectFlag40000 = 0x40000 770 }; 771 772 ////////////////////////////////////////////////////////////////////////// 773 // Puzzles 774 ////////////////////////////////////////////////////////////////////////// 775 enum PuzzleId { 776 kPuzzleVCR = 0, 777 kPuzzlePipes, 778 kPuzzleTicTacToe, 779 kPuzzleLock, 780 kPuzzle4, 781 kPuzzleWheel, // 5 782 kPuzzleBoardSalvation, 783 kPuzzleBoardYouth, 784 kPuzzleBoardKeyHidesTo, 785 kPuzzleWritings, 786 kPuzzle11, // 10 787 kPuzzleMorgueDoor, 788 kPuzzleClock, 789 kPuzzleTimeMachine, 790 kPuzzleFisherman, 791 kPuzzleHiveMachine, // 15 792 kPuzzleHiveControl 793 }; 794 795 ////////////////////////////////////////////////////////////////////////// 796 // Custom engine actions 797 ////////////////////////////////////////////////////////////////////////// 798 enum AsylumAction { 799 kAsylumActionShowVersion, 800 kAsylumActionQuickLoad, 801 kAsylumActionQuickSave, 802 kAsylumActionSwitchToSarah, 803 kAsylumActionSwitchToGrimwall, 804 kAsylumActionSwitchToOlmec 805 }; 806 807 ////////////////////////////////////////////////////////////////////////// 808 // Helpers 809 ////////////////////////////////////////////////////////////////////////// 810 #define CLEAR_ARRAY(type, name) { \ 811 for (Common::Array<type *>::iterator it = name.begin(); it != name.end(); it++) {\ 812 delete *it; \ 813 *it = NULL; \ 814 } \ 815 name.clear(); \ 816 } 817 818 ////////////////////////////////////////////////////////////////////////// 819 // Macros 820 ////////////////////////////////////////////////////////////////////////// 821 822 // Misc 823 #define rnd(val) _vm->getRandom(val) 824 825 // Engine subclasses 826 #define getEncounter() _vm->encounter() 827 #define getCursor() _vm->cursor() 828 #define getMenu() _vm->menu() 829 #define getPuzzles() _vm->puzzles() 830 #define getReaction() _vm->reaction() 831 #define getResource() _vm->resource() 832 #define getSound() _vm->sound() 833 #define getSaveLoad() _vm->savegame() 834 #define getScene() _vm->scene() 835 #define getScreen() _vm->screen() 836 #define getScript() _vm->script() 837 #define getSharedData() _vm->data() 838 #define getSpecial() _vm->special() 839 #define getSpeech() _vm->speech() 840 #define getText() _vm->text() 841 #define getVideo() _vm->video() 842 #define getWorld() _vm->scene()->worldstats() 843 844 ////////////////////////////////////////////////////////////////////////// 845 // Sub-integer partial access macros 846 ////////////////////////////////////////////////////////////////////////// 847 #define LOBYTE(d) (*((char *)&(d))) 848 #define BYTE1(d) (*((char *)&(d) + 1)) // Same as HIBYTE() 849 #define BYTE2(d) (*((char *)&(d) + 2)) 850 #define LOWORD(x) (*((int16 *)&(x))) 851 852 ////////////////////////////////////////////////////////////////////////// 853 // Resource ID macros 854 ////////////////////////////////////////////////////////////////////////// 855 #define RESOURCE_PACK(id) (ResourcePackId)((((uint32)id) >> 16) & 0x7FFF) 856 #define RESOURCE_INDEX(id) (uint16)(id) 857 858 } // End of namespace Asylum 859 860 #endif // ASYLUM_SHARED_H 861