24 #ifndef MADS_DRAGONSPHERE_SCENES_H 25 #define MADS_DRAGONSPHERE_SCENES_H 27 #include "mads/scene.h" 28 #include "mads/dragonsphere/game_dragonsphere.h" 33 namespace Dragonsphere {
47 VERB_WALK_ACROSS = 0x11,
48 VERB_WALK_BEHIND = 0x1C,
50 VERB_WALK_THROUGH = 0x25,
51 VERB_WALK_INTO = 0x27,
57 VERB_POUR_CONTENTS_OF = 0x63,
59 VERB_SHIFT_SELF = 0x73,
60 VERB_SHIFT_INTO_BEAR = 0x74,
61 VERB_SHIFT_INTO_SEAL = 0x75,
62 VERB_SHIFT_INTO_SNAKE = 0x76,
63 VERB_WALK_DOWN = 0xA9,
65 VERB_WALK_AROUND = 0x221
81 NOUN_NIGHTSTAND = 0x19,
83 NOUN_DRESSING_SCREEN = 0x1B,
84 NOUN_ROYAL_CREST = 0x1D,
85 NOUN_WASHBASIN = 0x1F,
88 NOUN_FIREPLACE = 0x22,
89 NOUN_FIREPLACE_SCREEN = 0x23,
90 NOUN_DOOR_TO_QUEENS_ROOM = 0x24,
91 NOUN_HALL_TO_SOUTH = 0x26,
92 NOUN_WALL_PLAQUE = 0x28,
93 NOUN_DECORATION = 0x29,
95 NOUN_WALL_SCONCE = 0x2B,
96 NOUN_BUST_ON_WALL = 0x2C,
97 NOUN_WALL_ARCH = 0x2D,
98 NOUN_SIGNET_RING = 0x2E,
100 NOUN_GANGBANG = 0x31,
101 NOUN_BIRD_FIGURINE = 0x32,
103 NOUN_BIRDCALL = 0x34,
105 NOUN_MAKE_NOISE = 0x36,
106 NOUN_SHIELDSTONE = 0x37,
110 NOUN_DRINK_FROM = 0x3D,
116 NOUN_PLAY_WITH = 0x43,
118 NOUN_HEAL_THYSELF = 0x45,
119 NOUN_HEAL_SELF = 0x46,
120 NOUN_POLYSTONE = 0x47,
122 NOUN_RED_POWERSTONE = 0x49,
123 NOUN_YELLOW_POWERSTONE = 0x4A,
124 NOUN_BLUE_POWERSTONE = 0x4B,
125 NOUN_KEY_CROWN = 0x4C,
129 NOUN_BOTTLE_OF_FLIES = 0x50,
130 NOUN_LISTEN_TO = 0x51,
131 NOUN_SOUL_EGG = 0x52,
133 NOUN_MAGIC_BELT = 0x54,
139 NOUN_FEATHERS = 0x5B,
144 NOUN_FLASK_FULL_OF_ACID = 0x60,
145 NOUN_POUR_CONTENTS = 0x61,
148 NOUN_POWER_VACUUM_STONE = 0x67,
149 NOUN_TAKE_MAGIC_FROM = 0x68,
150 NOUN_DEAD_RAT = 0x69,
154 NOUN_CRYSTAL_BALL = 0x6D,
155 NOUN_GAZE_INTO = 0x6E,
156 NOUN_INVOKE_POWER_OF = 0x6F,
157 NOUN_BLACK_SPHERE = 0x70,
158 NOUN_SOPTUS_SOPORIFIC = 0x71,
159 NOUN_SHIFTER_RING = 0x72,
161 NOUN_MEDICINE_BUNDLE = 0x78,
163 NOUN_PARTLY_BUILT_BUNDLE = 0x7A,
164 NOUN_RATSICLE = 0x7B,
166 NOUN_TENTACLE_PARTS = 0x7D,
168 NOUN_TELEPORT_DOOR = 0x7F,
170 NOUN_RARE_COIN = 0x81,
172 NOUN_CRYSTAL_FLOWER = 0x83,
173 NOUN_DIAMOND_DUST = 0x84,
174 NOUN_RUBY_RING = 0x85,
175 NOUN_GOLD_NUGGET = 0x86,
176 NOUN_MAGIC_MUSIC_BOX = 0x87,
178 NOUN_PIECE_OF_PAPER = 0x89,
179 NOUN_SPEAK_WORDS_ON = 0x8A,
180 NOUN_VORTEX_STONE = 0x8B,
182 NOUN_FIREPLACE_SCREEN2 = 0x8D,
183 NOUN_BUST_ON_WALL2 = 0x8E,
184 NOUN_LOOK_AT2 = 0x8F,
186 NOUN_DRAGONSPHERE = 0x91,
188 NOUN_THRONE_ROOM = 0x93,
189 NOUN_RETURN_TO = 0x94,
191 NOUN_PASSAGEWAY_TO_WEST = 0x96,
192 NOUN_PASSAGEWAY_TO_EAST = 0x97,
193 NOUN_CAVE_FLOOR = 0x98,
194 NOUN_STONE_COLUMN = 0x99,
196 NOUN_LOOK_INTO = 0x9B,
198 NOUN_CASTLE_GATE = 0x9D,
202 NOUN_HAYSTACK = 0xA1,
203 NOUN_ROOT_THROUGH = 0xA2,
204 NOUN_BATTLEMENTS = 0xA3,
205 NOUN_GATE_TO_THRONE_ROOM = 0xA4,
206 NOUN_CASTLE_WALL = 0xA5,
208 NOUN_WALL_SWITCH = 0xA7,
210 NOUN_EDGE_OF_ABYSS = 0xAA,
211 NOUN_COURTYARD = 0xAB,
213 NOUN_CAVE_CEILING = 0xAD,
214 NOUN_CAVE_WALL = 0xAE,
216 NOUN_DOOR_TO_THRONE_ROOM = 0xB0,
217 NOUN_GO_THROUGH = 0xB1,
218 NOUN_DINING_TABLE = 0xB2,
219 NOUN_ACTIVATE = 0xB3,
220 NOUN_BATTLEMENT = 0xB4,
221 NOUN_DOOR_TO_GAURDROOM = 0xB5,
222 NOUN_DUNGEON_FLOOR = 0xB6,
223 NOUN_DUNGEON_WALLS = 0xB7,
224 NOUN_DUNGEON_CEILING = 0xB8,
226 NOUN_FLOOR_GRATE = 0xBA,
227 NOUN_MANACLES = 0xBB,
228 NOUN_CALENDAR = 0xBC,
229 NOUN_DOOR_TO_GUARDROOM = 0xBD,
230 NOUN_DOOR_TO_COUNCIL_ROOM = 0xBE,
231 NOUN_GUARD_STATION = 0xBF,
232 NOUN_DOOR_TO_DUNGEON_CELL = 0xC0,
233 NOUN_DOORWAY_TO_CELL = 0xC1,
234 NOUN_DUNGEON_DOOR = 0xC2,
235 NOUN_DUNGEON_WALL = 0xC3,
237 NOUN_DOOR_TO_HALLWAY = 0xC5,
239 NOUN_BOOKSHELF = 0xC7,
241 NOUN_READING_BENCH = 0xC9,
243 NOUN_LOVESEAT = 0xCB,
244 NOUN_WOOD_BASKET = 0xCC,
246 NOUN_GUARD_STOOL = 0xCE,
248 NOUN_DIVIDING_WALL = 0xD0,
250 NOUN_MARKET_GROUNDS = 0xD2,
255 NOUN_GATE_TO_COURTYARD = 0xD7,
256 NOUN_ROAD_TO_EAST = 0xD8,
259 NOUN_MERCHANTS_STALL = 0xDB,
261 NOUN_DOWN_WELL = 0xDD,
266 NOUN_JUMP_DOWN = 0xE2,
268 NOUN_DOORWAY_TO_SOUTH = 0xE4,
269 NOUN_PEDESTAL = 0xE5,
270 NOUN_DOOR_TO_NORTH = 0xE6,
271 NOUN_PAINTING = 0xE7,
272 NOUN_DOCUMENT = 0xE8,
273 NOUN_INK_BOTTLE = 0xE9,
274 NOUN_QUILL_PEN = 0xEA,
275 NOUN_CHANDELIER = 0xEB,
276 NOUN_COUNCIL_TABLE = 0xEC,
277 NOUN_CANDLESTICK = 0xED,
281 NOUN_THE_SCENE = 0xF1,
283 NOUN_END_TABLE = 0xF3,
284 NOUN_BATTLE_AXES = 0xF4,
285 NOUN_DOOR_TO_KINGS_ROOM = 0xF5,
286 NOUN_COAT_OF_ARMS = 0xF6,
287 NOUN_LARGE_WINDOW = 0xF7,
288 NOUN_SMALL_WINDOW = 0xF8,
289 NOUN_DOOR_TO_MEETING_ROOM = 0xF9,
290 NOUN_DOOR_TO_BALLROOM = 0xFA,
292 NOUN_SHUTTERS = 0xFC,
293 NOUN_BOOKCASE = 0xFD,
294 NOUN_DOOR_TO_COURTYARD = 0xFE,
295 NOUN_PLATFORM = 0xFF,
297 NOUN_RED_CARPET = 0x101,
298 NOUN_KINGS_THRONE = 0x102,
300 NOUN_QUEENS_THRONE = 0x104,
301 NOUN_TRAPDOOR = 0x105,
304 NOUN_DIARIES = 0x108,
305 NOUN_SWIM_DOWN = 0x109,
306 NOUN_SCULLERY_MAID = 0x10A,
307 NOUN_DOORWAY_TO_DUNGEON = 0x10B,
309 NOUN_DARKNESS_BEAST = 0x10D,
311 NOUN_PUT_MAGIC_INTO = 0x10F,
315 NOUN_SECRET_DOOR = 0x113,
316 NOUN_WALL_PANEL = 0x114,
317 NOUN_DOORWAY = 0x115,
319 NOUN_SOPTUS_ECLIPTUS = 0x117,
320 NOUN_GUARD_CAPTAIN = 0x118,
321 NOUN_MERCHANT = 0x119,
322 NOUN_SHAPECHANGER = 0x11A,
323 NOUN_RED_STONE = 0x11B,
324 NOUN_YELLOW_STONE = 0x11C,
325 NOUN_BLUE_STONE = 0x11D,
327 NOUN_FLASK_OF_ACID = 0x11F,
328 NOUN_PARTIAL_BUNDLE = 0x120,
329 NOUN_SOPORIFIC = 0x121,
330 NOUN_PARCHMENT = 0x122,
332 NOUN_MACMORN = 0x124,
333 NOUN_MOUNTAINSIDE = 0x125,
334 NOUN_PATH_TO_SOUTH = 0x126,
335 NOUN_ROUGH_STONE = 0x127,
336 NOUN_CLIMB_UP = 0x128,
337 NOUN_LARGE_ROCK = 0x129,
338 NOUN_SMALL_ROCK = 0x12A,
339 NOUN_PATH_TO_WEST = 0x12B,
340 NOUN_CAVE_ENTRANCE = 0x12C,
342 NOUN_BLANKET = 0x12E,
343 NOUN_FIREPIT = 0x12F,
344 NOUN_FLAT_STONE = 0x130,
346 NOUN_SPIRIT_BUNDLE = 0x132,
347 NOUN_TRAIL_LEADING_UP = 0x133,
349 NOUN_TRAIL_LEADING_DOWN = 0x135,
351 NOUN_REACH_IN = 0x137,
352 NOUN_TRAIL_LEADING_WEST = 0x138,
353 NOUN_PATH_TO_EAST = 0x139,
354 NOUN_WATERFALL = 0x13A,
356 NOUN_EDGE_OF_CLIFF = 0x13C,
358 NOUN_CLIMB_DOWN = 0x13E,
359 NOUN_LANDING = 0x13F,
360 NOUN_BOULDERS = 0x140,
361 NOUN_ROCK_TUMBLE = 0x141,
362 NOUN_ROCK_TREE = 0x142,
364 NOUN_JUMP_TO = 0x144,
366 NOUN_PILLARS = 0x146,
367 NOUN_SPECIAL_ROCK = 0x147,
368 NOUN_GAZE_UPON = 0x148,
371 NOUN_STAIRWAY = 0x14B,
372 NOUN_MECHANISM = 0x14C,
373 NOUN_SPEARHEADS = 0x14D,
374 NOUN_TRAP_DOOR = 0x14E,
376 NOUN_DOWN_RIVER = 0x150,
377 NOUN_SWIM_UP = 0x151,
378 NOUN_UP_RIVER = 0x152,
380 NOUN_SWIM_TO = 0x154,
381 NOUN_SWIM_TOWARDS = 0x155,
382 NOUN_KING_CALLASH = 0x156,
383 NOUN_KINGS_THRONE2 = 0x157,
386 NOUN_CLIMB_THROUGH = 0x15A,
387 NOUN_QUEEN_MOTHER = 0x15B,
388 NOUN_MACMORN2 = 0x15C,
389 NOUN_SMALL_LEDGE = 0x15D,
390 NOUN_MACMORN3 = 0x15E,
392 NOUN_TO_KITTY_HEAVEN = 0x160,
393 NOUN_KITTY_HEAVEN = 0x161,
394 NOUN_ROOM_110 = 0x162,
400 NOUN_ROOM_501 = 0x168,
404 NOUN_STRANGER = 0x16C,
405 NOUN_TOWER_DOOR = 0x16D,
406 NOUN_DOOR_TO_EAST = 0x16E,
407 NOUN_DOOR_TO_WEST = 0x16F,
409 NOUN_DOORWAY_TO_EAST = 0x171,
410 NOUN_DOORWAY_TO_WEST = 0x172,
412 NOUN_DOOR_TO_MAGIC_ROOM = 0x174,
413 NOUN_ANCIENT_BARREL = 0x175,
414 NOUN_COBWEBS = 0x176,
416 NOUN_MUSTY_CHART = 0x178,
417 NOUN_LAB_TABLE = 0x179,
418 NOUN_PETCOCK = 0x17A,
423 NOUN_METAL_PLATE = 0x17F,
424 NOUN_SHAFT_OF_LIGHT = 0x180,
425 NOUN_CABINET = 0x181,
426 NOUN_BALANCE = 0x182,
428 NOUN_FREEZER = 0x184,
429 NOUN_CONTENTS_OF_FREEZER = 0x185,
430 NOUN_CAGE_WITH_RATS = 0x186,
431 NOUN_DOOR_TO_SOUTH = 0x187,
432 NOUN_TRAIL_OF_GREEN_SLIME = 0x188,
433 NOUN_NECK_LOCK = 0x189,
435 NOUN_SKELETON = 0x18B,
436 NOUN_LEG_CLAMPS = 0x18C,
437 NOUN_LEG_LOCK = 0x18D,
438 NOUN_WAIST_LOCK = 0x18E,
439 NOUN_NER_TOM = 0x18F,
441 NOUN_JUMP_INTO = 0x191,
443 NOUN_DOOR_TO_EYE_CHAMBER = 0x193,
444 NOUN_DRESSER = 0x194,
446 NOUN_WITCH_PARAPHERNALIA = 0x196,
447 NOUN_SHELVES = 0x197,
448 NOUN_MAGIC_TOMES = 0x198,
449 NOUN_MAGIC_PARAPHERNALIA = 0x199,
450 NOUN_BOOK_OF_MAGIC = 0x19A,
451 NOUN_HOURGLASS = 0x19B,
452 NOUN_STONE_SPHERE = 0x19C,
453 NOUN_SHADOW_OF_WINDOW = 0x19D,
454 NOUN_MUSIC_BOX = 0x19E,
455 NOUN_LARGE_SPIDER_WEB = 0x19F,
456 NOUN_INFERNAL_MACHINE = 0x1A0,
457 NOUN_WATER_SOURCE = 0x1A1,
458 NOUN_FLOW_OF_WATER = 0x1A2,
460 NOUN_DOORWAY_TO_CORRIDOR = 0x1A4,
461 NOUN_TELESCOPE = 0x1A5,
462 NOUN_STRANGE_MAP = 0x1A6,
463 NOUN_CIRCLE_OF_SPHERES = 0x1A7,
464 NOUN_STONE_BED = 0x1A8,
465 NOUN_DRAGON_SCULPTURE = 0x1A9,
467 NOUN_RAT_CAGE = 0x1AB,
468 NOUN_DOWN_BUTTON = 0x1AC,
469 NOUN_DOOR_TO_MACHINE_ROOM = 0x1AD,
470 NOUN_STRANGE_PORTAL = 0x1AE,
471 NOUN_DOOR_FRAME = 0x1AF,
472 NOUN_ELEVATOR_HOLE = 0x1B0,
473 NOUN_UP_BUTTON = 0x1B1,
474 NOUN_DOORWAY_TO_DARK_ROOM = 0x1B2,
475 NOUN_BIG_SKULL = 0x1B3,
476 NOUN_ELEVATOR_PLATFORM = 0x1B4,
478 NOUN_TOP_BUTTON = 0x1B6,
479 NOUN_BOTTOM_BUTTON = 0x1B7,
480 NOUN_TELEPORTAL = 0x1B8,
481 NOUN_EYE_CHAMBER_DOORWAY = 0x1B9,
482 NOUN_MACHINE_ROOM_DOORWAY = 0x1BA,
483 NOUN_GLOWING_FLOOR = 0x1BB,
484 NOUN_BRYNN_FANN = 0x1BC,
485 NOUN_GRAN_CALLAHACH = 0x1BD,
486 NOUN_SLATHAN_NI_PATAN = 0x1BE,
487 NOUN_HIGHTOWER = 0x1BF,
488 NOUN_SOPTUS_ECLIPTUS2 = 0x1C0,
490 NOUN_MOUNTAIN_PATH = 0x1C2,
491 NOUN_PATH_BEHIND_TOWER = 0x1C3,
493 NOUN_SLATHAN_NI_PATAN2 = 0x1C5,
495 NOUN_PATH_AROUND_TOWER = 0x1C7,
496 NOUN_PATH_TO_HIGHTOWER = 0x1C8,
497 NOUN_SPIRIT_PLANE = 0x1C9,
498 NOUN_SPIRIT_TREE = 0x1CA,
499 NOUN_REMAINS = 0x1CC,
500 NOUN_DOORWAY_TO_ELEVATOR = 0x1CD,
501 NOUN_DRAGON_DOOR = 0x1CE,
502 NOUN_DRAGON_BONES = 0x1CF,
503 NOUN_IRON_FLOOR = 0x1D0,
506 NOUN_HOMEMADE_BUNDLE = 0x1D3,
512 NOUN_DESERT_TO_WEST = 0x1D9,
514 NOUN_DESERT_TO_EAST = 0x1DB,
515 NOUN_DESERT_TO_SOUTH = 0x1DC,
516 NOUN_DESERT_TO_NORTH = 0x1DD,
518 NOUN_POWERSTONE = 0x1DF,
525 NOUN_MAGIC_GRAPES = 0x1E6,
526 NOUN_ROCS_NEST = 0x1E7,
527 NOUN_GRAPE_VINE = 0x1E8,
528 NOUN_STRANGE_SQUARE = 0x1E9,
529 NOUN_WATER_SPHERE = 0x1EA,
530 NOUN_EAST_END_OF_ISLAND = 0x1EB,
532 NOUN_SECRET_MESSAGE = 0x1ED,
534 NOUN_SAND_NEAR_STONES = 0x1EF,
535 NOUN_DESERT_SKY = 0x1F0,
537 NOUN_PALM_TREE = 0x1F2,
539 NOUN_LEAN_TO = 0x1F4,
542 NOUN_WATER_FLOW = 0x1F7,
543 NOUN_FLOATING_DISK = 0x1F8,
544 NOUN_GNARLED_ROOT = 0x1F9,
545 NOUN_SNAKE_PIT = 0x1FA,
548 NOUN_GUARDHOUSE = 0x1FD,
549 NOUN_BONE_TREE = 0x1FE,
550 NOUN_EAR_ROCK = 0x1FF,
551 NOUN_MOUTH_ROCK = 0x200,
552 NOUN_NOSE_ROCK = 0x201,
553 NOUN_NEW_BUNDLE = 0x202,
556 NOUN_ROCS_NEST2 = 0x205,
558 NOUN_PURPLE_GEM = 0x207,
559 NOUN_PURPLE_STONE = 0x208,
560 NOUN_GREEN_STONE = 0x209,
564 NOUN_SCIMITAR = 0x20D,
565 NOUN_SITTING_PILLOW = 0x20E,
566 NOUN_WATER_GOURD = 0x20F,
568 NOUN_TENT_POLE = 0x211,
570 NOUN_PARAPHERNALIA = 0x213,
571 NOUN_SLATHAN_NI_PATAN3 = 0x214,
572 NOUN_EYE_ROCK = 0x215,
573 NOUN_BODY_TREE = 0x216,
574 NOUN_CLEARING = 0x217,
575 NOUN_TENTACLES = 0x218,
576 NOUN_SPELL_SHIELD = 0x219,
577 NOUN_POOL_MONSTER = 0x21A,
578 NOUN_SHIFTER_BOULDER = 0x21B,
579 NOUN_DEAD_TREE = 0x21C,
581 NOUN_SHIFTER_VILLAGE = 0x21E,
582 NOUN_SLATHAN_SKY = 0x21F,
583 NOUN_SHIFTER = 0x220,
584 NOUN_WRECKED_BRIDGE = 0x222,
586 NOUN_WRECKED_SHACK = 0x224,
587 NOUN_WISE_SHIFTER = 0x225,
589 NOUN_ENTRANCE_TO_MAZE = 0x227,
590 NOUN_TOPIARY_TOAD = 0x228,
591 NOUN_BOULDER = 0x229,
592 NOUN_MUSHROOM = 0x22A,
593 NOUN_SLATHAN_SKY2 = 0x22B,
595 NOUN_TREE_STUMP = 0x22D,
596 NOUN_SANCTUARY_WOODS = 0x22E,
599 NOUN_SHIFTING_MONSTER = 0x231,
602 NOUN_TOPIARY_TOADSTOOL = 0x234,
603 NOUN_TOPIARY_GARGOYLE = 0x235,
604 NOUN_TOPIARY_DRAGON = 0x236,
605 NOUN_GUARDIAN = 0x237,
606 NOUN_BUTTERFLY_KING = 0x238,
608 NOUN_CEDAR_CHEST = 0x23A,
609 NOUN_DRAGONSPHERE2 = 0x23B,
610 NOUN_PATH_TO_HIGHTOWER2 = 0x23C,
616 static SceneLogic *createScene(MADSEngine *vm);
622 class DragonsphereScene :
public SceneLogic {
624 DragonsphereGlobals &_globals;
625 GameDragonsphere &_game;
636 void lowRoomsEntrySound();
641 DragonsphereScene(MADSEngine *vm);
646 class SceneInfoDragonsphere :
public SceneInfo {
647 friend class SceneInfo;
649 void loadCodes(BaseSurface &depthSurface,
int variant)
override;
656 SceneInfoDragonsphere(MADSEngine *vm) : SceneInfo(vm) {}
660 class DummyScene :
public DragonsphereScene {
662 DummyScene(MADSEngine *vm) : DragonsphereScene(vm) {
663 warning(
"Unimplemented scene");
666 void setup()
override {}
667 void enter()
override {}
668 void actions()
override {}
void warning(MSVC_PRINTF const char *s,...) GCC_PRINTF(1