ScummVM API documentation
room.h
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 modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (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, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef STARTREK_ROOM_H
23 #define STARTREK_ROOM_H
24 
25 #include "common/rect.h"
26 #include "common/ptr.h"
27 #include "common/str.h"
28 #include "common/hashmap.h"
29 
30 #include "startrek/action.h"
31 #include "startrek/awaymission.h"
32 #include "startrek/fixedint.h"
33 #include "startrek/object.h"
34 #include "startrek/soundeffects.h"
35 #include "startrek/text.h"
36 
37 using Common::SharedPtr;
38 
39 namespace StarTrek {
40 
41 class StarTrekEngine;
42 class Room;
43 
44 #include "common/pack-start.h" // START STRUCT PACKING
45 
46 // Per-room action functions
47 struct RoomAction {
48  const Action action;
49  void (Room::*funcPtr)();
50 };
51 
52 #include "common/pack-end.h" // END STRUCT PACKING
53 
54 // Offsets of data in RDF files
55 
56 const int RDF_BAN_DATA_START = 0x1e;
57 const int RDF_BAN_DATA_END = 0x20;
58 const int RDF_WARP_ROOM_INDICES = 0x22;
59 const int RDF_ROOM_ENTRY_POSITIONS = 0x2a;
60 const int RDF_BEAM_IN_POSITIONS = 0xaa;
61 const int RDF_SPAWN_POSITIONS = 0xba;
62 
63 #define COMMON_MESSAGE_OFFSET 1000
64 #define FOLLOWUP_MESSAGE_OFFSET 600
65 #define SCOTTY_MESSAGE_OFFSET 500
66 
67 class Room {
68 public:
69  Room(StarTrekEngine *vm, const Common::String &name);
70  ~Room();
71 
72  friend class Console;
73 
74  uint16 readRdfWord(int offset);
75 
81  uint16 getMaxY() {
82  return readRdfWord(0x06);
83  }
84  uint16 getMinY() {
85  return readRdfWord(0x08);
86  }
87  Fixed8 getMinScale() {
88  return Fixed8::fromRaw(readRdfWord(0x0a));
89  }
90  Fixed8 getMaxScale() {
91  return Fixed8::fromRaw(readRdfWord(0x0c));
92  }
93  int16 getBanDataStart() {
94  return readRdfWord(RDF_BAN_DATA_START);
95  }
96  int16 getBanDataEnd() {
97  return readRdfWord(RDF_BAN_DATA_END);
98  }
99 
103  bool actionHasCode(const Action &action);
104  bool actionHasCode(int8 type, byte b1, byte b2, byte b3);
105 
109  bool handleAction(const Action &action);
110  bool handleAction(int8 type, byte b1, byte b2, byte b3);
111 
115  bool handleActionWithBitmask(const Action &action);
116  bool handleActionWithBitmask(int8 type, byte b1, byte b2, byte b3);
117 
118  uint16 getFirstHotspot() {
119  return readRdfWord(0x12);
120  }
121  uint16 getHotspotEnd() {
122  return readRdfWord(0x14);
123  }
124 
125  // Warp-related stuff
126  uint16 getFirstWarpPolygonOffset() {
127  return readRdfWord(0x16);
128  }
129  uint16 getWarpPolygonEndOffset() {
130  return readRdfWord(0x18);
131  }
132  uint16 getFirstDoorPolygonOffset() {
133  return readRdfWord(0x1a);
134  }
135  uint16 getDoorPolygonEndOffset() {
136  return readRdfWord(0x1c);
137  }
138 
143  Common::Point getBeamInPosition(int crewmanIndex);
144 
150  Common::Point getSpawnPosition(int crewmanIndex);
151 
160  bool isPointInPolygon(int offset, int16 x, int16 y);
161 
162  byte *_rdfData;
163 
164 private:
165  //uint16 _rdfSize;
166 
167  StarTrekEngine *_vm;
168  AwayMission *_awayMission;
169 
170  const RoomAction *_roomActionList;
171  const RoomTextOffsets *_roomTextList;
172  const RoomTextOffsets *_roomCommonTextList;
173  const RoomText *_roomStaticTextList;
174  Common::String _commonTextRdf;
175  byte *_commonRdfData;
176 
177  byte *loadRoomRDF(Common::String fileName);
178  void loadRoomMessages();
179  void loadOtherRoomMessages();
180  void loadRoomMessage(const char *text);
181  const char *getText(uint16 textId);
182 
183  Common::MemoryReadStreamEndian *loadBitmapFile(Common::String baseName);
184  Common::MemoryReadStreamEndian *loadFileWithParams(Common::String filename, bool unk1, bool unk2, bool unk3);
185 
186  int findFunctionPointer(int action, void (Room::*funcPtr)());
187 
188 
189  // Interface for room-specific code
193  void loadActorAnim(int actorIndex, Common::String anim, int16 x = -1, int16 y = -1, uint16 field66 = 0);
197  void loadActorAnimC(int actorIndex, Common::String anim, int16 x, int16 y, void (Room::*funcPtr)());
201  void loadActorStandAnim(int actorIndex);
206  void loadActorAnim2(int actorIndex, Common::String anim, int16 x = -1, int16 y = -1, uint16 field66 = 0);
210  int showRoomSpecificText(const char **textAddr);
211  int showMultipleTexts(const TextRef *text);
212  int showDescription(TextRef text);
213  int showText(TextRef speaker, TextRef text);
214 
218  void giveItem(int item);
219 
220  // Command 0x05: "demon4ShowSunPuzzle"
221 
225  void loadRoomIndex(int roomIndex, int spawnIndex);
229  void loseItem(int item);
233  void walkCrewman(int actorIndex, int16 destX, int16 destY, uint16 finishedAnimActionParam = 0);
234  void walkCrewmanC(int actorIndex, int16 destX, int16 destY, void (Room::*funcPtr)()); // Cmd 0x08
235 
236 public:
240  void loadMapFile(const Common::String &name);
241 
242 private:
246  void showBitmapFor5Ticks(const Common::String &bmpName, int priority);
250  bool haveItem(int item);
251 
252  // Command 0x0c: "demon6ShowCase"
253 
257  Common::Point getActorPos(int actorIndex);
261  int16 getRandomWordInRange(int start, int end);
265  void playSoundEffectIndex(int soundEffect);
269  void playMidiMusicTracks(int startTrack, int loopTrack = -1);
273  void endMission(int16 score, int16 arg2, int16 arg3);
277  void showGameOverMenu();
283  int showCodeInputBox(const char * const *codes);
287  void showRepublicMap(int16 arg0, int16 arg2);
291  void playVoc(Common::String filename);
295  void stopAllVocSounds();
296 
297  // Helper functions for repetitive stuff.
298 
299  Common::String getCrewmanAnimFilename(int object, const Common::String &str);
300 
305  void spockScan(int direction, TextRef speaker, TextRef text, bool changeDirection = false);
306  void mccoyScan(int direction, TextRef speaker, TextRef text, bool changeDirection = false);
307 
308  // Room-specific code
309 public:
310  // DEMON0
311  void demon0Tick1();
312  void demon0Tick2();
313  void demon0Tick60();
314  void demon0Tick100();
315  void demon0Tick140();
316  void demon0TouchedWarp0();
317  void demon0WalkToBottomDoor();
318  void demon0TouchedHotspot1();
319  void demon0ReachedBottomDoor();
320  void demon0WalkToTopDoor();
321  void demon0TouchedHotspot0();
322  void demon0ReachedTopDoor();
323  void demon0TalkToPrelate();
324  void demon0LookAtPrelate();
325  void demon0UsePhaserOnSnow();
326  void demon0UsePhaserOnSign();
327  void demon0UsePhaserOnShelter();
328  void demon0UsePhaserOnPrelate();
329  void demon0LookAtSign();
330  void demon0LookAtTrees();
331  void demon0LookAtSnow();
332  void demon0LookAnywhere();
333  void demon0LookAtBushes();
334  void demon0LookAtKirk();
335  void demon0LookAtMcCoy();
336  void demon0LookAtRedShirt();
337  void demon0LookAtSpock();
338  void demon0LookAtShelter();
339  void demon0TalkToKirk();
340  void demon0TalkToRedshirt();
341  void demon0TalkToMcCoy();
342  void demon0TalkToSpock();
343  void demon0AskPrelateAboutSightings();
344  void demon0UseSTricorderAnywhere();
345  void demon0UseMTricorderAnywhere();
346  void demon0UseMTricorderOnPrelate();
347  void demon0BadResponse();
348 
349  // DEMON1
350  void demon1Tick1();
351  void demon1WalkToCave();
352  void demon1TouchedTopWarp();
353  void demon1TouchedBottomWarp();
354  void demon1Timer2Expired();
355  void demon1Timer0Expired();
356  void demon1Timer3Expired();
357  void demon1Timer1Expired();
358  void demon1KlingonFinishedAimingWeapon();
359  void demon1KirkShot();
360  void demon1UsePhaserOnAnything();
361  void demon1UsePhaserOnKlingon1();
362  void demon1ShootKlingon1();
363  void demon1KlingonDropsHand();
364  void demon1UsePhaserOnKlingon2();
365  void demon1ShootKlingon2();
366  void demon1UsePhaserOnKlingon3();
367  void demon1ShootKlingon3();
368  void demon1AllKlingonsDead();
369  void demon1Timer5Expired();
370  void demon1UseMTricorderOnKlingon();
371  void demon1UseSTricorderOnTulips();
372  void demon1UseSTricorderOnPods();
373  void demon1UseSTricorderOnCattails();
374  void demon1UseSTricorderOnFerns();
375  void demon1UseSTricorderOnHand();
376  void demon1UseSTricorderOnKlingon1();
377  void demon1UseSTricorderOnKlingon2Or3();
378  void demon1UseMTricorderOnKirk();
379  void demon1UseMTricorderOnSpock();
380  void demon1UseMTricorderOnRedshirt();
381  void demon1UseMTricorderOnCrewman();
382  void demon1GetHand();
383  void demon1ReachedHand();
384  void demon1PickedUpHand();
385  void demon1FinishedGettingHand();
386  void demon1LookAtKlingon();
387  void demon1LookAtCattails();
388  void demon1LookAtTulips();
389  void demon1LookAtPods();
390  void demon1LookAtFerns();
391  void demon1LookAtStream();
392  void demon1LookAtMine();
393  void demon1LookAtMountain();
394  void demon1LookAtHand();
395  void demon1LookAnywhere();
396  void demon1LookAtKirk();
397  void demon1LookAtSpock();
398  void demon1LookAtMcCoy();
399  void demon1LookAtRedshirt();
400  void demon1TalkToKirk();
401  void demon1TalkToSpock();
402  void demon1TalkToMcCoy();
403  void demon1TalkToRedshirt();
404  void demon1TalkToUnconsciousCrewman();
405 
406  // DEMON2
407  void demon2Tick1();
408  void demon2WalkToCave();
409  void demon2ReachedCave();
410  void demon2TouchedWarp1();
411  void demon2LookAtCave();
412  void demon2LookAtMountain();
413  void demon2LookAtBerries();
414  void demon2LookAtFern();
415  void demon2LookAtMoss();
416  void demon2LookAtLights();
417  void demon2LookAtAnything();
418  void demon2LookAtKirk();
419  void demon2LookAtSpock();
420  void demon2LookAtMcCoy();
421  void demon2LookAtRedshirt();
422  void demon2TalkToKirk();
423  void demon2TalkToSpock();
424  void demon2TalkToMcCoy();
425  void demon2TalkToRedshirt();
426  void demon2UsePhaserOnBerries();
427  void demon2UseSTricorderOnBerries();
428  void demon2UseSTricorderOnMoss();
429  void demon2UseSTricorderOnFern();
430  void demon2UseSTricorderOnCave();
431  void demon2UseMTricorderOnBerries();
432  void demon2GetBerries();
433  void demon2ReachedBerries();
434  void demon2PickedUpBerries();
435 
436  // DEMON3
437  void demon3Tick1();
438  void demon3Timer0Expired();
439  void demon3Timer1Expired();
440  void demon3Timer3Expired();
441  void demon3FinishedAnimation1();
442  void demon3FinishedAnimation2();
443  void demon3FinishedWalking5();
444  void demon3McCoyInFiringPosition();
445  void demon3SpockInFiringPosition();
446  void demon3RedShirtInFiringPosition();
447  void demon3KirkInFiringPosition();
448  void demon3CrewmanInFiringPosition();
449  void demon3PullOutPhaserAndFireAtBoulder();
450  void demon3FireAtBoulder();
451  void demon3UsePhaserOnRedshirt();
452  void demon3UseStunPhaserOnBoulder();
453  void demon3UsePhaserOnBoulder1();
454  void demon3UsePhaserOnBoulder2();
455  void demon3UsePhaserOnBoulder3();
456  void demon3UsePhaserOnBoulder4();
457  void demon3BoulderCommon();
458  void demon3UseSTricorderOnMiner();
459  void demon3UseSTricorderOnPanel();
460  void demon3UseSTricorderOnBoulder();
461  void demon3UseMTricorderOnBoulder();
462  void demon3UseCrewmanOnPanel();
463  void demon3UseRedshirtOnPanel();
464  void demon3RedshirtReachedPanel();
465  void demon3RedshirtUsedPanel();
466  void demon3RedshirtElectrocuted();
467  void demon3UseSTricorderOnDoor();
468  void demon3UseSTricorderOnAnything();
469  void demon3UseMTricorderOnDoor();
470  void demon3UsePhaserOnDoor();
471  void demon3UseHandOnPanel();
472  void demon3KirkReachedHandPanel();
473  void demon3KirkUsedHandPanel();
474  void demon3UseMTricorderOnMiner();
475  void demon3UseMedkitOnMiner();
476  void demon3McCoyReachedMiner();
477  void demon3McCoyFinishedHealingMiner();
478  void demon3GetMiner();
479  void demon3TalkToMiner();
480  void demon3TalkToKirk();
481  void demon3TalkToSpock();
482  void demon3TalkToMccoy();
483  void demon3TalkToRedshirt();
484  void demon3LookAtKirk();
485  void demon3LookAtSpock();
486  void demon3LookAtMccoy();
487  void demon3LookAtRedshirt();
488  void demon3LookAnywhere();
489  void demon3LookAtMiner();
490  void demon3LookAtBoulder1();
491  void demon3LookAtBoulder2();
492  void demon3LookAtBoulder3();
493  void demon3LookAtBoulder4();
494  void demon3LookAtStructure();
495  void demon3LookAtDoor();
496  void demon3LookAtPanel();
497  void demon3LookAtLight();
498 
499  // DEMON4
500  void demon4Tick1();
501  void demon4FinishedAnimation1();
502  void demon4FinishedAnimation2();
503  void demon4FinishedAnimation3();
504  void demon4Timer0Expired();
505  void demon4Timer1Expired();
506  void demon4CrewmanReachedBeamoutPosition();
507  void demon4Timer2Expired();
508  void demon4Timer3Expired();
509  void demon4Timer4Expired();
510  void demon4Timer5Expired();
511  void demon4Timer6Expired();
512  void demon4UsePhaserOnNauian();
513  void demon4UseMetalOnSecurityEquipment();
514  void demon4KirkReachedSecurityEquipment();
515  void demon4KirkFinishedUsingSecurityEquipment();
516  void demon4UseMetalOnNauian();
517  void demon4KirkReachedNauian();
518  void demon4UseSkullOnNauian();
519  void demon4KirkReachedNauianWithSkull();
520  void demon4UsePhaserOnPanel();
521  void demon4UsePhaserOnPattern();
522  void demon4UsePhaserOnMccoy();
523  void demon4TalkToNauian();
524  void demon4LookAtPattern();
525  void demon4LookAtAlien();
526  void demon4LookAnywhere();
527  void demon4LookAtSecurityEquipment();
528  void demon4LookAtFloor();
529  void demon4LookAtKirk();
530  void demon4LookAtMccoy();
531  void demon4LookAtSpock();
532  void demon4LookAtRedshirt();
533  void demon4LookAtChamber();
534  void demon4LookAtPanel();
535  void demon4UseKirkOnPanel();
536  void demon4UseSpockOnPanel();
537  void demon4UseMccoyOnPanel();
538  void demon4UseRedshirtOnPanel();
539  void demon4UseCrewmanOnPanel();
540  void demon4CrewmanReachedPanel();
541  bool demon4ShowSunPuzzle();
542  void demon4TalkToKirk();
543  void demon4TalkToMccoy();
544  void demon4TalkToSpock();
545  void demon4TalkToRedshirt();
546  void demon4UseSTricorderOnChamber();
547  void demon4UseSTricorderOnPattern();
548  void demon4UseMTricorderOnPattern();
549  void demon4UseSTricorderOnPanel();
550  void demon4UseMTricorderOnPanel();
551  void demon4UseSTricorderOnAnything();
552  void demon4UseMTricorderOnAnything();
553  void demon4UseSTricorderOnNauian();
554  void demon4UseMTricorderOnNauian();
555  void demon4UseSTricorderOnSecurityEquipment();
556  void demon4UseMTricorderOnSecurityEquipment();
557 
558  // DEMON5
559  void demon5Tick1();
560  void demon5WalkToDoor();
561  void demon5TouchedDoorOpenTrigger();
562  void demon5DoorOpenedOrReachedDoor();
563  void demon5UseSTricorderOnCrate();
564  void demon5UsePhaserOnAnything();
565  void demon5UseHandOnStephen();
566  void demon5UseBerryOnStephen();
567  void demon5UseHypoDytoxinOnChub();
568  void demon5MccoyReachedChub();
569  void demon5MccoyHealedChub();
570  void demon5UseHypoDytoxinOnAnything();
571  void demon5UseBerryOnChub();
572  void demon5LookAtRoberts();
573  void demon5LookAtGrisnash();
574  void demon5LookAtStephen();
575  void demon5LookAtKirk();
576  void demon5LookAtSpock();
577  void demon5LookAtMccoy();
578  void demon5LookAtRedshirt();
579  void demon5LookAtMountain();
580  void demon5LookAtCrate();
581  void demon5LookAnywhere();
582  void demon5LookAtChub();
583  void demon5TalkToRoberts();
584  void demon5TalkToChub();
585  void demon5TalkToGrisnash();
586  void demon5TalkToStephen();
587  void demon5TalkToKirk();
588  void demon5TalkToSpock();
589  void demon5TalkToRedshirt();
590  void demon5TalkToMccoy();
591  void demon5UseMTricorderOnRoberts();
592  void demon5UseMTricorderOnChub();
593  void demon5UseMTricorderOnGrisnash();
594  void demon5UseMTricorderOnStephen();
595  void demon5CheckCompletedStudy();
596  void demon5GetCrate();
597 
598  // DEMON6
599  void demon6Tick1();
600  void demon6Tick30();
601  void demon6SpockReachedComputer();
602  void demon6WalkToDoor();
603  void demon6TouchedDoorOpenTrigger();
604  void demon6DoorOpenedOrReachedDoor();
605  void demon6UsePhaserOnStephen();
606  void demon6UsePhaserOnCase();
607  void demon6LookAtWorkspace();
608  void demon6LookAtCase();
609  void demon6LookAtTable();
610  void demon6LookAtMineral();
611  void demon6LookAtShells();
612  void demon6LookAtSkull();
613  void demon6LookAtMetal();
614  void demon6LookAtMeteor();
615  void demon6LookAtMountain();
616  void demon6LookAtSynthesizer();
617  void demon6LookAtKirk();
618  void demon6LookAtSpock();
619  void demon6LookAtMccoy();
620  void demon6LookAtRedshirt();
621  void demon6LookAtComputer();
622  void demon6LookAnywhere();
623  void demon6LookAtStephen();
624  void demon6TalkToMccoy();
625  void demon6TalkToSpock();
626  void demon6TalkToKirk();
627  void demon6TalkToRedshirt();
628  void demon6TalkToStephen();
629  void demon6StephenIsInsulted();
630  void demon6StephenDescribesItemsInCase();
631  void demon6UseBerryOnStephen();
632  void demon6UseBerryOnSynthesizer();
633  void demon6MccoyReachedSynthesizer();
634  void demon6FinishedMakingHypoDytoxin();
635  void demon6UseHandOnWorkspace();
636  void demon6SpockReachedWorkspace();
637  void demon6SpockFinishedRepairingHand();
638  void demon6UseAnythingOnWorkspace();
639  void demon6UseCrewmanOnCase();
640  void demon6UseKirkOnComputer();
641  void demon6UseMccoyOnComputer();
642  void demon6UseRedshirtOnComputer();
643  void demon6UseSpockOnComputer();
644  void demon6UseMineralOnStephen();
645  void demon6UseShellsOnStephen();
646  void demon6UseMeteorOnStephen();
647  void demon6UseSkullOnStephen();
648  void demon6UseMetalOnStephen();
649  void demon6ReturnItemToStephen(int item);
650  void demon6UseHandOnStephen();
651  void demon6UseMTricoderOnStephen();
652  void demon6UseSTricoderOnTable();
653  void demon6UseSTricoderOnComputer();
654  void demon6UseSTricoderOnMineral();
655  void demon6UseSTricoderOnShells();
656  void demon6UseSTricoderOnSkull();
657  void demon6UseSTricoderOnMetal();
658  void demon6UseSTricoderOnMeteor();
659  void demon6UseSTricoderOnCase();
660  void demon6UseSTricoderOnSynthesizer();
661  void demon6GetCase();
662  void demon6KirkReachedCase();
663  int demon6ShowCase(int visible);
664  int demon6ShowCaseProcessInput(Sprite *sprites, Sprite *buttonSprite, int visible);
665  int demon6ShowCaseProcessSelection(Sprite *sprites, Sprite *clickedSprite, int visible);
666 
667  // TUG0
668  void tug0Tick1();
669  void tug0LookAtEngineer();
670  void tug0GetEngineer();
671  void tug0LookAtControls();
672  void tug0UseSpockOnControls();
673  void tug0SpockReachedControlsToExamine();
674  void tug0SpockExaminedControls();
675  void tug0UseTransmogrifierWithoutBitOnControls();
676  void tug0UseTransmogrifierWithBitOnControls();
677  void tug0SpockReachedControlsWithTransmogrifier();
678  void tug0SpockFinishedUsingTransmogrifier();
679  void tug0TransporterScreenFullyLit();
680  void tug0UseWireScrapsOnControls();
681  void tug0UseWireOnControls();
682  void tug0SpockReachedControlsWithWire();
683  void tug0SpockFinishedUsingWire();
684  void tug0UseMedkitOnEngineer();
685  void tug0MccoyReachedEngineer();
686  void tug0MccoyHealedEngineer();
687  void tug0EngineerGotUp();
688  void tug0GetTransmogrifier();
689  void tug0KirkReachedToolbox();
690  void tug0KirkGotTransmogrifier();
691  void tug0LookAtToolbox();
692  void tug0UsePhaserOnWelder();
693  void tug0UseWelderOnWireScraps();
694  void tug0UseWelderOnMetalScraps();
695  void tug0UseCombBitOnTransmogrifier();
696  void tug0UseTransporter();
697  void tug0SpockReachedControlsToTransport();
698  void tug0SpockPreparedTransporter();
699  void tug0SpockReachedTransporter();
700  void tug0FinishedTransporting();
701  void tug0UseBombOnTransporter();
702  void tug0KirkReachedTransporter();
703  void tug0KirkPlacedBomb();
704  void tug0SpockReachedControlsForBomb();
705  void tug0SpockBeginsBeamingBomb();
706  void tug0SpockFinishesBeamingBomb();
707  void tug0BombExploded();
708  void tug0UseMTricorderOnControls();
709  void tug0UseSTricorderOnControls();
710  void tug0UseMTricorderOnEngineer();
711  void tug0MccoyReachedEngineerToScan();
712  void tug0MccoyFinishedScanningEngineer();
713  void tug0UseSTricorderOnEngineer();
714  void tug0WalkToDoor();
715  void tug0LookAtKirk();
716  void tug0LookAtSpock();
717  void tug0LookAtMccoy();
718  void tug0LookAtRedshirt();
719  void tug0LookAtTransporter();
720  void tug0LookAtDoor();
721  void tug0TalkToKirk();
722  void tug0TalkToMccoy();
723  void tug0TalkToSpock();
724  void tug0TalkToRedshirt();
725  void tug0TalkToEngineer();
726  void tug0UseCommunicator();
727  void tug0LookAnywhere();
728  void tug0UseSTricorderAnywhere();
729  void tug0UseMTricorderAnywhere();
730 
731  // TUG1
732  void tug1Tick1();
733  void tug1UseSTricorderOnAnything();
734  void tug1LookAtBridgeDoor();
735  void tug1UseSTricorderOnBridgeDoor();
736  void tug1UsePhaserOnBridgeDoor();
737  void tug1KirkReachedFiringPosition();
738  void tug1KirkPulledOutPhaser();
739  void tug1KirkFinishedFiringPhaser();
740  void tug1TalkToSpock();
741  void tug1UseSTricorderOnJunkPile();
742  void tug1LookAtJunkPile();
743  void tug1GetJunkPile();
744  void tug1KirkReachedJunkPile();
745  void tug1KirkFinishedTakingJunkPile();
746  void tug1UsePhaserOnWelder();
747  void tug1UseWelderOnWireScraps();
748  void tug1UseWelderOnMetalScraps();
749  void tug1UseCombBitOnTransmogrifier();
750  void tug1UsePhaserWelderOnBridgeDoor();
751  void tug1UsePhaserWelderOnBridgeDoorInLeftSpot();
752  void tug1KirkReachedBridgeDoorWithWelder();
753  void tug1KirkFinishedUsingWelder();
754  void tug1KirkReachedBridgeDoorWithWelderInLeftSpot();
755  void tug1KirkFinishedUsingWelderInLeftSpot();
756  void tug1LookAnywhere();
757  void tug1LookAtMccoy();
758  void tug1LookAtSpock();
759  void tug1LookAtRedshirt();
760  void tug1TalkToMccoy();
761  void tug1TalkToRedshirt();
762  void tug1LookAtTerminal();
763  void tug1LookAtDebris();
764  void tug1LookAtBrigDoor();
765  void tug1UseSTricorderOnBrigDoor();
766  void tug1TalkToKirk();
767  void tug1UseCommunicator();
768  void tug1WalkToBridgeDoor();
769  void tug1KirkReachedBridgeDoor();
770  void tug1BridgeDoorOpened();
771  void tug1WalkToBrigDoor();
772  void tug1UseMTricorderAnywhere();
773  void tug1UseMTricorderOnBridgeDoor();
774  void tug1UseMTricorderOnBrigDoor();
775  void tug1UseSpockOnBridgeDoor();
776  void tug1UseRedshirtOnBridgeDoor();
777  void tug1UseMedkitOnBridgeDoor();
778 
779  // TUG2
780  void tug2Tick1();
781  void tug2Tick60();
782  void tug2LookAtButton();
783  void tug2LookAtMccoy();
784  void tug2LookAtSpock();
785  void tug2LookAtRedshirt();
786  void tug2GetBomb();
787  void tug2KirkReachedBomb();
788  void tug2KirkGotBomb();
789  void tug2LookAtBomb();
790  void tug2LookAtGuard1();
791  void tug2LookAtGuard2();
792  void tug2LookAtWires();
793  void tug2UseSTricorderOnButton();
794  void tug2UseMccoyOnWires();
795  void tug2UseMccoyOnBomb();
796  void tug2UseRedshirtOnWires();
797  void tug2RedshirtReachedWires();
798  void tug2RedshirtDefusedBomb();
799  void tug2RedshirtReturnedToPosition();
800  void tug2UseKirkOnWires();
801  void tug2KirkReachedWires();
802  void tug2UseSpockOnWires();
803  void tug2SpockReachedWires();
804  void tug2SpockReturnedToPosition();
805  void tug2GetWires();
806  void tug2KirkReachedWiresToGet();
807  void tug2KirkGotWires();
808  void tug2UseKirkOnButton();
809  void tug2KirkReachedButton();
810  void tug2UseSpockOnButton();
811  void tug2SpockReachedButton();
812  void tug2UseMccoyOnButton();
813  void tug2MccoyReachedButton();
814  void tug2UseRedshirtOnButton();
815  void tug2RedshirtReachedButton();
816  void tug2TurnedOffForceField();
817  void tug2PrisonersDead();
818  void tug2PrisonersReleased();
819  void tug2UsePhaserOnBrig();
820  void tug2ElasiReadyPhaser();
821  void tug2CheckEndFirefight();
822  void tug2UseStunPhaserOnGuard1();
823  void tug2KirkShootGuard1();
824  void tug2UseStunPhaserOnGuard2();
825  void tug2KirkShootGuard2();
826  void tug2UseKillPhaserOnGuard1();
827  void tug2KirkKillGuard1();
828  void tug2UseKillPhaserOnGuard2();
829  void tug2KirkKillGuard2();
830  void tug2UsePhaserOnWelder();
831  void tug2UseWelderOnWireScraps();
832  void tug2UseWelderOnMetalScraps();
833  void tug2UseCombBitOnTransmogrifier();
834  void tug2ShotByElasi();
835  void tug2WalkToDoor();
836  void tug2LookAtDoor();
837  void tug2LookAtKirk();
838  void tug2TalkToKirk();
839  void tug2TalkToMccoy();
840  void tug2TalkToRedshirt();
841  void tug2TalkToSpock();
842  void tug2UseCommunicator();
843  void tug2DetermineElasiShooter();
844  void tug2Timer0Expired();
845  void tug2GuardShootsCrewman();
846  void tug2Timer2Expired();
847  void tug2UseSTricorderOnBomb();
848  void tug2UseMTricorderOnGuard1();
849  void tug2UseMTricorderOnGuard2();
850  void tug2TalkToGuard1();
851  void tug2TalkToGuard2();
852  void tug2UseMedkitOnBomb();
853  void tug2UseMedkitOnGuard1();
854  void tug2UseMedkitOnGuard2();
855  void tug2LookAnywhere();
856  void tug2TalkToBrig();
857  void tug2UseMTricorderOnBrig();
858  void tug2UseMTricorderOnOpenBrig();
859  void tug2UsePhaserAnywhere();
860 
861  // TUG3
862  void tug3Tick1();
863  void tug3Tick40();
864  void tug3LookAnywhere();
865  void tug3ElasiSurrendered();
866  void tug3UsePhaserAnywhere();
867  void tug3ElasiDrawPhasers();
868  void tug3UseStunPhaserOnElasi1();
869  void tug3UseStunPhaserOnElasi2();
870  void tug3UseStunPhaserOnElasi3();
871  void tug3UseStunPhaserOnElasi4();
872  void tug3UseKillPhaserOnElasi1();
873  void tug3UseKillPhaserOnElasi2();
874  void tug3UseKillPhaserOnElasi3();
875  void tug3UseKillPhaserOnElasi4();
876  void tug3ElasiStunnedOrKilled();
877  void tug3TalkToElasi1();
878  void tug3Elasi1DrewPhaser();
879  void tug3Elasi1ShotConsole();
880  void tug3Elasi1DrewPhaser2();
881  void tug3Elasi1ShotConsoleAndSurrenders();
882  void tug3LookAtMccoy();
883  void tug3LookAtSpock();
884  void tug3LookAtRedshirt();
885  void tug3LookAtElasi1();
886  void tug3LookAtElasi2();
887  void tug3LookAtElasi3();
888  void tug3LookAtElasi4();
889  void tug3TalkToMccoy();
890  void tug3TalkToSpock();
891  void tug3TalkToRedshirt();
892  void tug3UseCommunicator();
893  void tug3Timer0Expired();
894  void tug3AllCrewmenDead();
895  void tug3Timer1Expired();
896  void tug3EndMission();
897  void tug3SecurityTeamBeamedIn();
898 
899  // LOVE0
900  void love0Tick1();
901  void love0Tick10();
902  void love0WalkToDoor2();
903  void love0OpenDoor2();
904  void love0ReachedDoor2();
905  void love0WalkToDoor1();
906  void love0OpenDoor1();
907  void love0ReachedDoor1();
908  void love0LookAtConsole();
909  void love0LookAtViewscreen();
910  void love0LookAnywhere();
911  void love0LookAtDoor1();
912  void love0LookAtDoor2();
913  void love0LookAtKirk();
914  void love0LookAtMccoy();
915  void love0LookAtSpock();
916  void love0LookAtRedshirt();
917  void love0TalkToKirk();
918  void love0TalkToMccoy();
919  void love0TalkToSpock();
920  void love0TalkToRedshirt();
921  void love0UseMTricorderAnywhere();
922  void love0UseSTricorderOnConsole();
923  void love0UseSTricorderAnywhere();
924  void love0UseKirkOnConsole();
925  void love0UseRedshirtOnConsole();
926  void love0UseSpockOnConsole();
927  void love0SpockReachedConsole();
928  void love0SpockAccessedConsole();
929  void love0UseMccoyOnConsole();
930  void love0MccoyReachedConsole();
931  void love0MccoyAccessedConsole();
932  void love0InteractWithConsole();
933  void love0GetDoorOrConsole();
934 
935  // LOVE1
936  void love1Tick1();
937  void love1WalkToDoor3();
938  void love1OpenDoor3();
939  void love1ReachedDoor3();
940  void love1WalkToDoor1();
941  void love1OpenDoor1();
942  void love1ReachedDoor1();
943  void love1WalkToDoor2();
944  void love1OpenDoor2();
945  void love1ReachedDoor2();
946  void love1LookAtLaser();
947  void love1LookAtKirk();
948  void love1LookAtSpock();
949  void love1LookAtMccoy();
950  void love1LookAtRedshirt();
951  void love1LookAnywhere();
952  void love1LookAtNozzle();
953  void love1LookAtLadder();
954  void love1LookAtDoor1Or2();
955  void love1LookAtDoor3();
956  void love1LookAtDistillator();
957  void love1LookAtChamber();
958  void love1LookAtReplicator();
959  void love1LookAtFreezer();
960  void love1LookAtDishes();
961  void love1TalkToKirk();
962  void love1TalkToSpock();
963  void love1TalkToMccoy();
964  void love1TalkToRedshirt();
965  void love1UseMTricorderOnDishes();
966  void love1UseMTricorderAnywhere();
967  void love1UseSTricorderOnReplicator();
968  void love1UseSTricorderOnLaser();
969  void love1UseSTricorderOnFreezer();
970  void love1UseSTricorderAnywhere();
971  void love1UseSTricorderOnDishes();
972  void love1UseSTricorderOnDistillator();
973  void love1GetFreezer();
974  void love1KirkReachedFreezer();
975  void love1KirkGotVirusCulture();
976  void love1GetFromChamber();
977  void love1KirkReachedChamber();
978  void love1KirkGotCureSample();
979  void love1GetFromNozzle();
980  void love1KirkReachedNozzleToGet();
981  void love1KirkGotBottleFromNozzle();
982  void love1UseN2OOnNozzle();
983  void love1UseH2OOnNozzle();
984  void love1UseNH3OnNozzle();
985  void love1UseRLGOnNozzle();
986  void love1KirkReachedNozzleToPut();
987  void love1KirkPutBottleInNozzle();
988  void love1UseAnthingOnNozzle();
989  void love1UseSpockOnReplicator();
990  void love1UseRedshirtOnReplicator();
991  void love1UseMccoyOnReplicator();
992  void love1MccoyReachedReplicator();
993  void love1MccoyUsedReplicator();
994  void love1ChamberClosed();
995  void love1ChamberOpened();
996  void love1UseAnythingOnChamber();
997  void love1UseDishesOnChamber();
998  void love1KirkReachedChamberToPut();
999  void love1ChamberOpenedForDish();
1000  void love1KirkPutDishInChamber();
1001  void love1UseInsulationOnDistillator();
1002  void love1KirkReachedDistillator();
1003  void love1KirkGotPolyberylcarbonate();
1004  void love1UseKirkOnFreezer();
1005  void love1UseRedshirtOnFreezer();
1006  void love1UseSpockOnFreezer();
1007  void love1UseMccoyOnFreezer();
1008  void love1CrewmanReachedFreezer();
1009  void love1CrewmanOpenedOrClosedFreezer();
1010  void love1UseAnythingOnFreezer();
1011  void love1ReachedFreezerWithArbitraryItem();
1012  void love1FinishedUsingArbitraryItemOnFreezer();
1013  void love1UseAnythingOnReplicator();
1014  void love1ReachedReplicatorWithArbitraryItem();
1015  void love1FinishedUsingArbitraryItemOnReplicator();
1016  void love1UseAnythingOnDistillator();
1017  void love1ReachedDistillatorWithArbitraryItem();
1018  void love1FinishedUsingArbitraryItemOnDistillator();
1019  void love1UseKirkOnLadder();
1020  void love1UseSpockOnLadder();
1021  void love1UseMccoyOnLadder();
1022  void love1UseRedshirtOnLadder();
1023  void love1CrewmanReachedLadder();
1024  void love1CrewmanDiedFromPhaser();
1025  void love1TouchedHotspot0();
1026 
1027  // LOVE2
1028  void love2Tick1();
1029  void love2TouchedWarp1();
1030  void love2Timer3Expired();
1031  void love2WalkToDoor();
1032  void love2TouchedHotspot0();
1033  void love2DoorReachedOrOpened();
1034  void love2LookAtCabinet();
1035  void love2LookAtDoor();
1036  void love2LookAtSynthesizer();
1037  void love2LookAtAnywhere();
1038  void love2LookAtAntigrav();
1039  void love2LookAtMccoy();
1040  void love2LookAtSpock();
1041  void love2LookAtRedshirt();
1042  void love2LookAtKirk();
1043  void love2LookAtArdak();
1044  void love2LookAtChamber();
1045  void love2LookAtCan1();
1046  void love2LookAtCan2();
1047  void love2TalkToKirk();
1048  void love2TalkToSpock();
1049  void love2TalkToMccoy();
1050  void love2TalkToRedshirt();
1051  void love2UseMTricorderAnywhere();
1052  void love2UseSTricorderAnywhere();
1053  void love2UseKirkOnCabinet();
1054  void love2UseSpockOnCabinet();
1055  void love2UseMccoyOnCabinet();
1056  void love2UseRedshirtOnCabinet();
1057  void love2CrewmanReachedCabinet();
1058  void love2CrewmanAccessedCabinet();
1059  void love2CrewmanOpenedOrClosedCabinet();
1060  void love2UseWrenchOnGasFeed();
1061  void love2ReachedGasFeed();
1062  void love2ChangedGasFeed();
1063  void love2UseO2GasOnCanisterSlot();
1064  void love2UseH2GasOnCanisterSlot();
1065  void love2UseN2GasOnCanisterSlot();
1066  void love2ReachedCanisterSlot();
1067  void love2PutCanisterInSlot1();
1068  void love2PutCanisterInSlot2();
1069  void love2UseAntigravOnCanister1();
1070  void love2ReachedCanisterSlot1ToGet();
1071  void love2TookCanister1();
1072  void love2UseAntigravOnCanister2();
1073  void love2ReachedCanisterSlot2ToGet();
1074  void love2TookCanister2();
1075  void love2UseKirkOnSynthesizer();
1076  void love2UseSpockOnSynthesizer();
1077  void love2UseMccoyOnSynthesizer();
1078  void love2UseRedshirtOnSynthesizer();
1079  void love2CrewmanReachedSynthesizer();
1080  void love2CrewmanUsedSynthesizer();
1081  void love2SpockReachedGasFeeds();
1082  void love2SpockEnabledGasFeeds();
1083  void love2UseSynthesizer();
1084  void love2SynthesizerDoorClosed();
1085  void love2SynthesizerFinished();
1086  void love2ClosedSynthesizerDoorMakingRLG();
1087  void love2ClosedSynthesizerDoorMakingCure();
1088  void love2CureStartedSynthesizing();
1089  void love2CureSynthesized();
1090  void love2UsePolyberylcarbonateOnSynthesizerDoor();
1091  void love2KirkReachedSynthesizerWithPolyberylcarbonate();
1092  void love2SynthesizerDoorOpenedWithPolyberylcarbonate();
1093  void love2PutPolyberylcarbonateInSynthesizer();
1094  void love2UseVirusSampleOnSynthesizerDoor();
1095  void love2KirkReachedSynthesizerWithVirusSample();
1096  void love2SynthesizerDoorOpenedWithVirusSample();
1097  void love2PutVirusSampleInSynthesizer();
1098  void love2UseCureSampleOnSynthesizerDoor();
1099  void love2KirkReachedSynthesizerWithCureSample();
1100  void love2SynthesizerDoorOpenedWithCureSample();
1101  void love2PutCureSampleInSynthesizer();
1102  void love2UseAnythingOnSynthesizerDoor();
1103  void love2UseAnythingOnSynthesizer();
1104  void love2GetCanister();
1105  void love2GetAntigrav();
1106  void love2ReachedAntigrav();
1107  void love2GotAntigrav();
1108  void love2GetPolyberylcarbonate();
1109  void love2ReachedPolyberylcarbonate();
1110  void love2GotPolyberylcarbonate();
1111  void love2GetDishes();
1112  void love2ReachedDishes();
1113  void love2GotDishes();
1114  void love2GetSample();
1115  void love2ReachedSample();
1116  void love2GotSample();
1117  void love2GetSynthesizerOutput();
1118  void love2ReachedSynthesizerOutput();
1119  void love2GotSynthesizerOutput();
1120  void love2GetCure();
1121  void love2ReachedCure();
1122  void love2GotCure();
1123 
1124  // LOVE3
1125  void love3Tick1();
1126  void love3Tick80();
1127  void love3TouchedWarp1();
1128  void love3Timer3Expired();
1129  void love3LookAtServicePanel();
1130  void love3LookAtMonitor();
1131  void love3LookAtWrench();
1132  void love3LookAtKirk();
1133  void love3LookAtMccoy();
1134  void love3LookAtSpock();
1135  void love3LookAtRedshirt();
1136  void love3LookAnywhere();
1137  void love3LookAtShaft();
1138  void love3LookAtGrate();
1139  void love3LookAtPanel();
1140  void love3LookAtGasTank();
1141  void love3LookAtTurbines();
1142  void love3TalkToKirk();
1143  void love3TalkToSpock();
1144  void love3TalkToMccoy();
1145  void love3TalkToRedshirt();
1146  void love3UseMTricorderAnywhere();
1147  void love3UseSTricorderOnTurbines();
1148  void love3UseSTricorderOnInsulation();
1149  void love3UseSTricorderAnywhere();
1150  void love3UseKirkOnServicePanel();
1151  void love3UseSpockOnServicePanel();
1152  void love3UseMccoyOnServicePanel();
1153  void love3UseRedshirtOnServicePanel();
1154  void love3CrewmanReachedServicePanel();
1155  void love3OpenedOrClosedServicePanel();
1156  void love3UseWrenchOnGasTank();
1157  void love3ReachedGasTankToUnscrew();
1158  void love3ScrewedOrUnscrewedGasTank();
1159  void love3UseWrenchOnO2OrH2Gas();
1160  void love3UseWrenchOnN2Gas();
1161  void love3ReachedGasTankToPutDown();
1162  void love3PutN2TankBack();
1163  void love3UseWrenchOnEngineeringPanel();
1164  void love3ReachedEngineeringPanel();
1165  void love3OpenedEngineeringPanel();
1166  void love3UseWrenchOnMonitor();
1167  void love3UseWaterOnMonitor();
1168  void love3ReachedMonitorToUseWater();
1169  void love3PouredWaterOnMonitor();
1170  void love3UseCrewmanOnEngineeringPanelOrGrate();
1171  void love3UseWrenchOnGrate();
1172  void love3ReachedGateWithWrench();
1173  void love3OpenedOrClosedGrate();
1174  void love3UseCrewmanOnShaft();
1175  void love3UseWaterOnShaft();
1176  void love3ReachedShaftUsingWater();
1177  void love3PouredWaterDownShaft();
1178  void love3UseNitrousOxideOnShaft();
1179  void love3ReachedShaftUsingNitrousOxide();
1180  void love3PouredNitrousOxideDownShaft();
1181  void love3UseAmmoniaOnShaft();
1182  void love3ReachedShaftUsingAmmonia();
1183  void love3PouredAmmoniaDownShaft();
1184  void love3UseRomulanLaughingGasOnShaft();
1185  void love3ReachedShaftUsingRomulanLaughingGas();
1186  void love3PouredRomulanLaughingGasDownShaft();
1187  void love3GetWrench();
1188  void love3ReachedWrenchToGet();
1189  void love3PickedUpWrench();
1190  void love3GetGasTank();
1191  void love3ReachedGasTankToGet();
1192  void love3UseAntigravOnGasTank();
1193  void love3ReachedGasTankUsingAntigrav();
1194  void love3PickedUpGasTank();
1195  void love3GetInsulation();
1196  void love3ReachedInsulationToGet();
1197  void love3PickedUpInsulation();
1198 
1199  // LOVE4
1200  void love4Tick1();
1201  void love4Tick10();
1202  void love4WalkToDoor();
1203  void love4TouchedHotspot0();
1204  void love4DoorOpenedOrReached();
1205  void love4UseKirkOnLadder();
1206  void love4ReachedLadder();
1207  void love4UseStunPhaserOnRomulan();
1208  void love4LookAnywhere();
1209  void love4LookAtLadder();
1210  void love4LookAtDoor();
1211  void love4LookAtKirk();
1212  void love4LookAtMccoy();
1213  void love4LookAtSpock();
1214  void love4LookAtRedshirt();
1215  void love4LookAtRomulan();
1216  void love4TalkToKirk();
1217  void love4TalkToMccoy();
1218  void love4TalkToRedshirt();
1219  void love4TalkToSpock();
1220  void love4TalkToRomulan();
1221  void love4UseMTricorderOnRomulan();
1222  void love4UseMTricorderAnywhere();
1223  void love4UseSTricorderAnywhere();
1224  void love4UseCureOnRomulan();
1225  void love4MccoyReachedRomulan4();
1226  void love4MccoyCuredRomulan4();
1227  void love4MccoyReachedRomulan3();
1228  void love4MccoyCuredRomulan3();
1229  void love4MccoyReachedRomulan2();
1230  void love4MccoyCuredRomulan2();
1231  void love4MccoyReachedRomulan1();
1232  void love4MccoyCuredRomulan1();
1233  void love4UseWaterOnRomulan();
1234  void love4UseMedkitOnRomulan();
1235  void love4UseCureSampleOnRomulan();
1236  void love4UseAnythingOnRomulan();
1237 
1238  // LOVE5
1239  void love5Tick1();
1240  void love5TouchedWarp1();
1241  void love5Timer4Expired();
1242  void love5UseStunPhaserOnPreax();
1243  void love5LookAtKirk();
1244  void love5LookAtSpock();
1245  void love5LookAtMccoy();
1246  void love5LookAtRedshirt();
1247  void love5LookAnywhere();
1248  void love5LookAtDevice();
1249  void love5LookAtConsole();
1250  void love5LookAtDrMarcus();
1251  void love5LookAtDrCheever();
1252  void love5LookAtPreax();
1253  void love5TalkToPreax();
1254  void love5MccoyReachedSpockToCure();
1255  void love5MccoyCuredSpock();
1256  void love5EndMission();
1257  void love5CrewmanReachedBeamoutPosition();
1258  void love5TalkToDrMarcus();
1259  void love5TalkToDrCheever();
1260  void love5TalkToKirk();
1261  void love5TalkToSpock();
1262  void love5TalkToMccoy();
1263  void love5TalkToRedshirt();
1264  void love5UseSTricorderAnywhere();
1265  void love5UseSTricorderOnDevice();
1266  void love5UseMTricorderOnMarcusOrCheever();
1267  void love5UseMTricorderOnPreax();
1268  void love5UseMedkitOnPreax();
1269  void love5UseWaterOnPreax();
1270  void love5UseCureSampleOnPreax();
1271  void love5UseCureOnPreax();
1272  void love5ReachedPreaxUsingCure();
1273  void love5CuredPreax();
1274  void love5UseAnythingOnPreax();
1275  void love5UseKirkOnMarcusOrCheever();
1276  void love5KirkReachedCheever();
1277  void love5KirkUntiedCheever();
1278  void love5KirkReachedMarcus();
1279  void love5KirkUntiedMarcus();
1280  void love5MarcusStoodUp();
1281 
1282  // LOVEA (common code)
1283  void loveaTimer0Expired();
1284  void loveaTimer1Expired();
1285  void loveaUseMedkitOnSpock();
1286  void loveaUseCureSampleOnSpock();
1287  void loveaUseCureOnSpock();
1288  void loveaSpockOrMccoyInPositionToUseCure();
1289  void loveaFinishedCuringSpock();
1290  void loveaTimer2Expired();
1291  void loveaUseMTricorderOnSpock();
1292  void loveaUseMTricorderOnHuman();
1293  void loveaUseRomulanLaughingGas();
1294  void loveaUseHumanLaughingGas();
1295  void loveaUseAmmonia();
1296  void loveaUseCommunicator();
1297 
1298 
1299  // MUDD0
1300  void mudd0Tick1();
1301  void mudd0Tick50();
1302  void mudd0Tick60();
1303  void mudd0UsePhaserOnMudd();
1304  void mudd0UseCommunicator();
1305  void mudd0LookAtFoodBox();
1306  void mudd0LookAtComponentBox();
1307  void mudd0LookAnywhere();
1308  void mudd0LookAtMemoryDiskBox();
1309  void mudd0LookAtDegrimerBox();
1310  void mudd0LookAtLense();
1311  void mudd0UseSTricorderAnywhere();
1312  void mudd0UseMTricorderAnywhere();
1313  void mudd0UseSTricorderOnMemoryDiskBox();
1314  void mudd0UseSTricorderOnDegrimerBox();
1315  void mudd0UseMTricorderOnLense();
1316  void mudd0GetLense();
1317  void mudd0GetMemoryDisk();
1318  void mudd0GetDegrimer();
1319  void mudd0PickedUpLense();
1320  void mudd0PickedUpItem();
1321  void mudd0WalkToSouthDoor();
1322  void mudd0TouchedHotspot1();
1323  void mudd0WalkToNorthDoor();
1324  void mudd0TouchedHotspot0();
1325  void mudd0UseMedkit();
1326  void mudd0LookAtKirk();
1327  void mudd0LookAtSpock();
1328  void mudd0LookAtMccoy();
1329  void mudd0LookAtRedshirt();
1330  void mudd0LookAtMudd();
1331  void mudd0TalkToKirk();
1332  void mudd0TalkToSpock();
1333  void mudd0TalkToMccoy();
1334  void mudd0TalkToRedshirt();
1335  void mudd0TalkToMudd();
1336 
1337  // MUDD1
1338  void mudd1Tick1();
1339  void mudd1Timer1Expired();
1340  void mudd1UseCommunicator();
1341  void mudd1UseSpockOnBlueButton();
1342  void mudd1SpockReachedBlueButton();
1343  void mudd1SpockPressedBlueButton();
1344  void mudd1CraneFinishedMoving();
1345  void mudd1UseSpockOnYellowButton();
1346  void mudd1SpockReachedYellowButton();
1347  void mudd1SpockPressedYellowButton();
1348  void mudd1UseSpockOnRedButton();
1349  void mudd1SpockReachedRedButton();
1350  void mudd1SpockPressedRedButton();
1351  void mudd1GetTorpedo();
1352  void mudd1UseSTricorderOnTorpedo();
1353  void mudd1UseSTricorderOnTorpedoLauncher();
1354  void mudd1UseSTricorderOnButton();
1355  void mudd1UseSTricorderOnCrane();
1356  void mudd1UseMedkitAnywhere();
1357  void mudd1LookAnywhere();
1358  void mudd1LookAtTorpedo();
1359  void mudd1LookAtFallenTorpedo();
1360  void mudd1LookAtTorpedoLauncher();
1361  void mudd1LookAtKirk();
1362  void mudd1LookAtSpock();
1363  void mudd1LookAtMccoy();
1364  void mudd1LookAtRedshirt();
1365  void mudd1LookAtCrane();
1366  void mudd1LookAtRedButton();
1367  void mudd1LookAtBlueButton();
1368  void mudd1LookAtYellowButton();
1369  void mudd1TalkToKirk();
1370  void mudd1TalkToSpock();
1371  void mudd1TalkToMccoy();
1372  void mudd1TalkToRedshirt();
1373  void mudd1WalkToSouthDoor();
1374  void mudd1TouchedHotspot2();
1375  void mudd1WalkToNorthDoor();
1376  void mudd1TouchedHotspot1();
1377  void mudd1WalkToWestDoor();
1378  void mudd1TouchedHotspot0();
1379 
1380  // MUDD2
1381  void mudd2WalkToNorthDoor();
1382  void mudd2TouchedHotspot0();
1383  void mudd2WalkToSouthDoor();
1384  void mudd2TouchedHotspot1();
1385  void mudd2Tick1();
1386  void mudd2Timer1Expired();
1387  void mudd2UseSTricorderAnywhere();
1388  void mudd2UseSpockOnCapsules();
1389  void mudd2GetCapsules();
1390  void mudd2MccoyReachedCapsules();
1391  void mudd2MccoyPickedUpCapsules();
1392  void mudd2UseCommunicator();
1393  void mudd2LookAtCapsules();
1394  void mudd2UseMTricorderOnCapsules();
1395  void mudd2UseCapsuleOnControlPanel();
1396  void mudd2MccoyReachedControlPanel();
1397  void mudd2MccoyPutCapsuleInControlPanel();
1398  void mudd2UseKirkOnBed();
1399  void mudd2KirkReachedBed();
1400  void mudd2MuddNoticedKirk();
1401  void mudd2MuddDroppedCapsule();
1402  void mudd2UsePhaserOnMudd();
1403  void mudd2UseSpockOnMudd();
1404  void mudd2SpockReachedMudd();
1405  void mudd2SpockPinchedMudd();
1406  void mudd2UseKirkOnMudd();
1407  void mudd2UseRedshirtOnMudd();
1408  void mudd2RedshirtReachedMudd();
1409  void mudd2Timer2Expired();
1410  void mudd2MuddFinishedPushingRedshirt();
1411  void mudd2RedshirtPushedAway();
1412  void mudd2UseMTricorderOnMudd();
1413  void mudd2UseMedkitOnMudd();
1414  void mudd2MccoyReachedMudd();
1415  void mudd2MccoyCuredMudd();
1416  void mudd2LookAtKirk();
1417  void mudd2LookAtSpock();
1418  void mudd2LookAtMccoy();
1419  void mudd2LookAtRedshirt();
1420  void mudd2LookAtMudd();
1421  void mudd2LookAtControlPanel();
1422  void mudd2LookAtBed();
1423  void mudd2TalkToKirk();
1424  void mudd2TalkToSpock();
1425  void mudd2TalkToMccoy();
1426  void mudd2TalkToRedshirt();
1427  void mudd2TalkToMudd();
1428 
1429  // MUDD3
1430  void mudd3Tick1();
1431  void mudd3UseCommunicator();
1432  void mudd3LookAtScreen();
1433  void mudd3UseSTricorderOnScreen();
1434  void mudd3UseKirkOnScreen();
1435  void mudd3UseSpockOnSphere();
1436  void mudd3Timer3Expired();
1437  void mudd3UseMccoyOnSphere();
1438  void mudd3UseRedshirtOnSphere();
1439  void mudd3UseMTricorderOnSphere();
1440  void mudd3UseSTricorderOnSphere();
1441  void mudd3ReadyToHookUpTricorders();
1442  void mudd3Timer1Expired();
1443  void mudd3Timer2Expired();
1444  void mudd3Timer4Expired();
1445  void mudd3UseMemoryDiskOnSphere();
1446  void mudd3GetRepairTool();
1447  void mudd3ReachedRepairTool();
1448  void mudd3PickedUpRepairTool();
1449  void mudd3LookAtSphere();
1450  void mudd3WalkToNorthDoor();
1451  void mudd3TouchedHotspot0();
1452  void mudd3WalkToEastDoor();
1453  void mudd3TouchedHotspot1();
1454  void mudd3LookAtKirk();
1455  void mudd3LookAtSpock();
1456  void mudd3LookAtMccoy();
1457  void mudd3LookAtRedshirt();
1458  void mudd3LookAtMudd();
1459  void mudd3TalkToKirk();
1460  void mudd3TalkToSpock();
1461  void mudd3TalkToMccoy();
1462  void mudd3TalkToRedshirt();
1463  void mudd3TalkToMudd();
1464  void mudd3UseMedkit();
1465 
1466  // MUDD4
1467  void mudd4Tick1();
1468  void mudd4UseCommunicator();
1469  void mudd4Timer2Expired();
1470  void mudd4Timer3Expired();
1471  void mudd4UseSpockOnLeftConsole();
1472  void mudd4UseSpockOnRightConsole();
1473  void mudd4UseSpockOnConsole();
1474  void mudd4SpockReachedChair();
1475  void mudd4SpockSatInChair();
1476  void mudd4ShowLeftConsoleMenu();
1477  void mudd4SpockUsedSensors();
1478  void mudd4SpockUsedEngineering();
1479  void mudd4SpockUsedNavigation();
1480  void mudd4FinishedWalking3();
1481  void mudd4UseKirkOnRightConsole();
1482  void mudd4UseKirkOnLeftConsole();
1483  void mudd4UseKirkOnConsole();
1484  void mudd4KirkReachedRightConsole();
1485  void mudd4KirkSatInChair();
1486  void mudd4ShowRightConsoleMenu();
1487  void mudd4KirkUsedViewScreen();
1488  void mudd4Timer1Expired();
1489  void mudd4KirkUsedCommunications();
1490  void mudd4TalkWithMuddAtMissionEnd();
1491  void mudd4KirkReachedPositionToTalkToMudd();
1492  void mudd4UseMccoyOnConsole();
1493  void mudd4UseRedshirtOnConsole();
1494  void mudd4UseSTricorderOnRepairTool();
1495  void mudd4UseSTricorderOnConsole();
1496  void mudd4UseSTricorderOnViewscreen();
1497  void mudd4UseMedkit();
1498  void mudd4GetRepairTool();
1499  void mudd4ReachedRepairTool();
1500  void mudd4PickedUpRepairTool();
1501  void mudd4LookAtConsole();
1502  void mudd4LookAtViewscreen();
1503  void mudd4LookAtKirk();
1504  void mudd4LookAtSpock();
1505  void mudd4LookAtMccoy();
1506  void mudd4LookAtRedshirt();
1507  void mudd4LookAtRepairTool();
1508  void mudd4TalkToKirk();
1509  void mudd4TalkToSpock();
1510  void mudd4TalkToMccoy();
1511  void mudd4TalkToRedshirt();
1512  void mudd4WalkToEastDoor();
1513  void mudd4WalkToWestDoor();
1514  void mudd4TouchedHotspot0();
1515 
1516  // MUDD5
1517  void mudd5Tick1();
1518  void mudd5Timer1Expired();
1519  void mudd5Timer2Expired();
1520  void mudd5UseCommunicator();
1521  void mudd5UseSTricorderAnywhere();
1522  void mudd5UseSTricorderOnEngine();
1523  void mudd5UseSTricorderOnCrane();
1524  void mudd5UseSTricorderOnHatch();
1525  void mudd5UseSTricorderOnLifeSupportGenerator();
1526  void mudd5UseStunPhaserOnHatch();
1527  void mudd5UseKillPhaserOnHatch();
1528  void mudd5UseAnythingOnLifeSupportGenerator();
1529  void mudd5UseDooverOnLifeSupportGenerator();
1530  void mudd5KirkReachedLifeSupportGenerator();
1531  void mudd5KirkTimer4Expired();
1532  void mudd5KirkRepairedLifeSupportGenerator();
1533  void mudd5KirkTimer3Expired();
1534  void mudd5LookAtHatch();
1535  void mudd5LookAtLifeSupportGenerator();
1536  void mudd5TouchedHotspot0();
1537  void mudd5WalkToDoor();
1538  void mudd5LookAtKirk();
1539  void mudd5LookAtSpock();
1540  void mudd5LookAtMccoy();
1541  void mudd5LookAtRedshirt();
1542  void mudd5LookAtDoor();
1543  void mudd5LookAtCrane();
1544  void mudd5LookAtEngine();
1545  void mudd5TalkToKirk();
1546  void mudd5TalkToSpock();
1547  void mudd5TalkToMccoy();
1548  void mudd5TalkToRedshirt();
1549  void mudd5UseMedkit();
1550 
1551  // MUDDA
1552  void muddaUseLenseOnDegrimer();
1553  void muddaUseAlienDevice();
1554  void muddaFiredAlienDevice();
1555  void muddaUseDegrimer();
1556  void muddaTick();
1557 
1558  // FEATHER0
1559  void feather0Tick1();
1560  void feather0Tick60();
1561  void feather0TalkToQuetzecoatl();
1562  void feather0Timer0Expired();
1563  void feather0Timer1Expired();
1564  void feather0UsePhaserOnQuetzecoatl();
1565  void feather0UsePhaserOnMccoy();
1566  void feather0UseMedkit();
1567  void feather0LookAtQuetzecoatl();
1568  void feather0LookAtMoon();
1569  void feather0LookAtLog();
1570  void feather0LookAtHut();
1571  void feather0LookAnywhere();
1572  void feather0LookAtEyes();
1573  void feather0LookAtTree();
1574  void feather0LookAtMccoy();
1575  void feather0LookAtSpock();
1576  void feather0LookAtRedshirt();
1577  void feather0TalkToMccoy();
1578  void feather0TalkToSpock();
1579  void feather0TalkToRedshirt();
1580  void feather0UseSTricorderOnQuetzecoatl();
1581  void feather0UseSTricorderAnywhere();
1582  void feather0UseMTricorderOnQuetzecoatl();
1583 
1584  // FEATHER1
1585  void feather1Tick1();
1586  void feather1Tick45();
1587  void feather1Tick85();
1588  void feather1Tick95();
1589  void feather1QuetzecoatlDisappeared();
1590  void feather1GetRightVine();
1591  void feather1GetLeftVine();
1592  void feather1GetRocks();
1593  void feather1ReachedRocks();
1594  void feather1PickedUpRocks();
1595  void feather1GetSnake();
1596  void feather1ReachedSnake();
1597  void feather1Timer1Expired();
1598  void feather1Timer2Expired();
1599  void feather1PickedUpSnake();
1600  void feather1Timer0Expired();
1601  void feather1UseCommunicator();
1602  void feather1UseRockOnHole();
1603  void feather1ReachedHole();
1604  void feather1Timer3Expired();
1605  void feather1PutRockInHole();
1606  void feather1UseSnakeOnLeftVine();
1607  void feather1UseSnakeOnSpock();
1608  void feather1UseSnakeOnKirk();
1609  void feather1UseSnakeOnMccoy();
1610  void feather1UseSnakeOnRedshirt();
1611  void feather1UseRockOnSnake();
1612  void feather1UseSpockOnSnake();
1613  void feather1UseMccoyOnSnake();
1614  void feather1UseRedshirtOnSnake();
1615  void feather1UseSpockOnHole();
1616  void feather1UseMccoyOnHole();
1617  void feather1UseRedshirtOnHole();
1618  void feather1UseRockOnMoss();
1619  void feather1UseRockOnSpock();
1620  void feather1UseRockOnMccoy();
1621  void feather1UseRockOnRedshirt();
1622  void feather1UseSpockOnMoss();
1623  void feather1UseMccoyOnMoss();
1624  void feather1UseRedshirtOnMoss();
1625  void feather1UseRockOnLeftVine();
1626  void feather1ReadyToThrowRock1();
1627  void feather1ThrewRock1();
1628  void feather1ReadyToThrowRock2();
1629  void feather1ThrewRock2();
1630  void feather1UseSpockOnVine();
1631  void feather1UseMccoyOnVine();
1632  void feather1UseRedshirtOnVine();
1633  void feather1UseKirkOnVine();
1634  void feather1CrewmanClimbVine();
1635  void feather1ReachedVineToClimbUp();
1636  void feather1ClimbedUpVine();
1637  void feather1ReachedVineToClimbDown();
1638  void feather1ClimbedDownVine();
1639  void feather1UsePhaser();
1640  void feather1UseSTricorderOnRightVine();
1641  void feather1UseSTricorderOnSnake();
1642  void feather1UseSTricorderOnMoss();
1643  void feather1UseSTricorderOnHole();
1644  void feather1UseSTricorderAnywhere();
1645  void feather1UseSTricorderOnRocks();
1646  void feather1UseMTricorderOnVine();
1647  void feather1UseMTricorderOnMoss();
1648  void feather1UseMTricorderOnHole();
1649  void feather1UseMTricorderOnSnake();
1650  void feather1UseMedkit();
1651  void feather1TalkToMccoy();
1652  void feather1TalkToSpock();
1653  void feather1TalkToRedshirt();
1654  void feather1WalkToExit();
1655  void feather1LookAnywhere();
1656  void feather1LookAtSnake();
1657  void feather1LookAtRightVine();
1658  void feather1LookAtHole();
1659  void feather1LookAtMoss();
1660  void feather1LookAtRocks();
1661  void feather1LookAtLight();
1662  void feather1LookAtEyes();
1663  void feather1LookAtKirk();
1664  void feather1LookAtSpock();
1665  void feather1LookAtMccoy();
1666  void feather1LookAtRedshirt();
1667  void feather1LookAtLeftVine();
1668 
1669  // FEATHER2
1670  void feather2Tick1();
1671  void feather2UseCommunicator();
1672  void feather2UsePhaser();
1673  void feather2UseSTricorderAnywhere();
1674  void feather2UseMTricorderAnywhere();
1675  void feather2TalkToMccoy();
1676  void feather2TalkToSpock();
1677  void feather2TalkToRedshirt();
1678  void feather2LookAtVines();
1679  void feather2UseMedkit();
1680  void feather2WalkToLeftExit();
1681  void feather2LookAtEyes();
1682  void feather2LookAtBigTree();
1683  void feather2LookAtTrees();
1684  void feather2LookAnywhere();
1685  void feather2LookAtKirk();
1686  void feather2LookAtSpock();
1687  void feather2LookAtMccoy();
1688  void feather2LookAtRedshirt();
1689 
1690  // FEATHER3
1691  void feather3Tick1();
1692  void feather3Tick40();
1693  void feather3TouchedHotspot0();
1694  void feather3UseSpockOnTlaoxac();
1695  void feather3UseMccoyOnTlaoxac();
1696  void feather3UseRedshirtOnTlaoxac();
1697  void feather3UseCrewmanOnLeftExit();
1698  void feather3UseCommunicator();
1699  void feather3UseSnakeOnKirk();
1700  void feather3UseSnakeOnSpock();
1701  void feather3UseSnakeOnRedshirt();
1702  void feather3KirkReachedRedshirtWithSnake();
1703  void feather3UseSnakeOnMccoy();
1704  void feather3UseSnakeOnTlaoxac();
1705  void feather3UseKnifeOnSpock();
1706  void feather3UseKnifeOnMccoy();
1707  void feather3UseKnifeOnRedshirt();
1708  void feather3UseRockOnTlaoxac();
1709  void feather3KirkReachedPositionToThrowRock();
1710  void feather3Timer4Expired();
1711  void feather3Timer2Expired();
1712  void feather3Timer3Expired();
1713  void feather3TlaoxacKnockedOutFromRockThrow();
1714  void feather3UsePhaser();
1715  void feather3TalkToMccoy();
1716  void feather3TalkToSpock();
1717  void feather3TalkToRedshirt();
1718  void feather3TalkToTlaoxac();
1719  void feather3TlaoxacKilledRedshirt();
1720  void feather3UseMTricorderOnTlaoxac();
1721  void feather3UseMedkitOnTlaoxac();
1722  void feather3UseMedkitOnRedshirt();
1723  void feather3UseMedkitAnywhere();
1724  void feather3UseMTricorderOnLight();
1725  void feather3UseSTricorderOnLight();
1726  void feather3UseSTricorderAnywhere();
1727  void feather3GetKnife();
1728  void feather3ReachedKnife();
1729  void feather3Timer1Expired();
1730  void feather3PickedUpKnife();
1731  void feather3LookAtSpock();
1732  void feather3LookAtRedshirt();
1733  void feather3LookAtTlaoxac();
1734  void feather3LookAtLight();
1735  void feather3LookAtMccoy();
1736  void feather3LookAtKnife();
1737 
1738  // FEATHER4
1739  void feather4Tick1();
1740  void feather4UseCommunicator();
1741  void feather4UsePhaser();
1742  void feather4UseSTricorderOnLight();
1743  void feather4UseSTricorderOnMushroom();
1744  void feather4UseSTricorderOnFern();
1745  void feather4UseSTricorderAnywhere();
1746  void feather4UseMTricorderOnLight();
1747  void feather4UseMTricorderOnMushroom();
1748  void feather4UseMTricorderAnywhere();
1749  void feather4UseMedkitAnywhere();
1750  void feather4TalkToMccoy();
1751  void feather4TalkToSpock();
1752  void feather4TalkToRedshirt();
1753  void feather4LookAtEyes();
1754  void feather4LookAnywhere();
1755  void feather4LookAtMushroom();
1756  void feather4LookAtFern();
1757  void feather4LookAtLight();
1758  void feather4LookAtKirk();
1759  void feather4LookAtSpock();
1760  void feather4LookAtMccoy();
1761  void feather4LookAtRedshirt();
1762 
1763  // FEATHER5
1764  void feather5Tick1();
1765  void feather5TouchedHotspot0();
1766  void feather5UseSpockOnFern();
1767  void feather5UseMccoyOnFern();
1768  void feather5UseRedshirtOnFern();
1769  void feather5UseRedshirtOnLeftExit();
1770  void feather5RedshirtReachedLog();
1771  void feather5RedshirtDeathFinished();
1772  void feather5UseSpockOnLeftExit();
1773  void feather5UseMccoyOnLeftExit();
1774  void feather5UseSnakeOnKirk();
1775  void feather5UseSnakeOnSpock();
1776  void feather5UseSnakeOnMccoy();
1777  void feather5UseSnakeOnRedshirt();
1778  void feather5UseSnakeOnWater();
1779  void feather5UseKnifeOnKirk();
1780  void feather5UseKnifeOnSpock();
1781  void feather5UseKnifeOnMccoy();
1782  void feather5UseKnifeOnRedshirt();
1783  void feather5UseKnifeOnWater();
1784  void feather5UseKnifeOnMonster();
1785  void feather5GetFern();
1786  void feather5UseKnifeOnFern();
1787  void feather5ReachedFern();
1788  void feather5PickedUpFern();
1789  void feather5UseFernOnMonster();
1790  void feather5ReachedPositionToUseFern();
1791  void feather5DoneThrowingFern();
1792  void feather5FernFellIntoWater();
1793  void feather5Timer1Expired();
1794  void feather5UseRockOnSpock();
1795  void feather5UseRockOnMccoy();
1796  void feather5UseRockOnRedshirt();
1797  void feather5UseCrewmanOnThrownFern();
1798  void feather5UseSpockOnMonster();
1799  void feather5UseMccoyOnMonster();
1800  void feather5UseRedshirtOnMonster();
1801  void feather5UsePhaser();
1802  void feather5LookAnywhere();
1803  void feather5LookAtLog();
1804  void feather5LookAtWater();
1805  void feather5LookAtFern();
1806  void feather5LookAtInsects();
1807  void feather5LookAtCave();
1808  void feather5LookAtMonster();
1809  void feather5LookAtSpock();
1810  void feather5LookAtKirk();
1811  void feather5LookAtMccoy();
1812  void feather5LookAtRedshirt();
1813  void feather5TalkToMccoy();
1814  void feather5TalkToSpock();
1815  void feather5TalkToRedshirt();
1816  void feather5UseMTricorderOnWater();
1817  void feather5UseMTricorderOnMonster();
1818  void feather5UseSTricorderOnMonster();
1819  void feather5UseSTricorderAnywhere();
1820  void feather5UseSTricorderOnWater();
1821  void feather5UseSTricorderOnFern();
1822  void feather5UseMedkitAnywhere();
1823 
1824  // FEATHER6
1825  void feather6Tick1();
1826  void feather6TouchedHotspot0();
1827  void feather6UseSpockOnCrystals();
1828  void feather6UseMccoyOnCrystals();
1829  void feather6UseRedshirtOnCrystals();
1830  void feather6UseRockOnStalactites();
1831  void feather6ReachedPositionToThrowRock();
1832  void feather6DoneThrowingRock();
1833  void feather6KirkDiedFromStalactites();
1834  void feather6UseRockOnCrystals();
1835  void feather6ReachedCrystalsWithRock();
1836  void feather6Tick();
1837  void feather6HitCrystalsWithRockFirstTime();
1838  void feather6HitCrystalsWithRockSecondTime();
1839  void feather6UseRockOnStalagmites();
1840  void feather6UseRockAnywhere();
1841  void feather6UseKnifeOnStalagmites();
1842  void feather6UseKnifeAnywhere();
1843  void feather6UseKnifeOnMccoy();
1844  void feather6UseKnifeOnSpock();
1845  void feather6UseKnifeOnRedshirt();
1846  void feather6UseCrystalAnywhere();
1847  void feather6UseSnakeAnywhere();
1848  void feather6UseMedkitAnywhere();
1849  void feather6UsePhaser();
1850  void feather6LookAtEastExit();
1851  void feather6LookAnywhere();
1852  void feather6LookAtRocks();
1853  void feather6LookAtStalagmites();
1854  void feather6LookAtCrystals();
1855  void feather6LookAtKirk();
1856  void feather6LookAtSpock();
1857  void feather6LookAtMccoy();
1858  void feather6LookAtRedshirt();
1859  void feather6LookAtStalactites();
1860  void feather6TalkToMccoy();
1861  void feather6TalkToRedshirt();
1862  void feather6TalkToSpock();
1863  void feather6UseMTricorderOnEastExit();
1864  void feather6UseMTricorderOnRocks();
1865  void feather6UseSTricorderOnEastExit();
1866  void feather6UseSTricorderAnywhere();
1867  void feather6UseSTricorderOnRocks();
1868  void feather6UseSTricorderOnCrystals();
1869  void feather6UseSTricorderOnStalactites();
1870  void feather6UseSTricorderOnStalagmites();
1871  void feather6GetCrystals();
1872  void feather6UseKnifeOnCrystals();
1873  void feather6ReachedCrystalsWithKnife();
1874  void feather6DoneCuttingCrystals();
1875  void feather6Timer4Expired();
1876 
1877  // FEATHER7
1878  void feather7Tick1();
1879  void feather7Tick40();
1880  void feather7KirkReachedSeat();
1881  void feather7SpockReachedSeat();
1882  void feather7MccoyReachedSeat();
1883  void feather7QuetzecoatlReachedSeat();
1884  void feather7KirkSatDown();
1885  void feather7ReadyToBeamOut();
1886 
1887 
1888  // TRIAL0
1889  void trial0Tick1();
1890  void trial0Tick40();
1891  void trial0Timer0Expired();
1892  void trial0WalkToRoomCenter();
1893  void trial0ReachedRoomCenter();
1894  void trial0LookAtWindow();
1895  void trial0LookAtVlict();
1896  void trial0LookAtGuard();
1897  void trial0LookAtBench();
1898  void trial0LookAtSeal();
1899  void trial0LookAtKirk();
1900  void trial0LookAtSpock();
1901  void trial0LookAtMccoy();
1902  void trial0LookAtRedshirt();
1903  void trial0LookAtQuetzecoatl();
1904  void trial0TalkToVlict();
1905  void trial0TalkToGuard();
1906  void trial0TalkToQuetzecoatl();
1907  void trial0TalkToMccoy();
1908  void trial0TalkToSpock();
1909  void trial0TalkToRedshirt();
1910  void trial0UsePhaserOrRock();
1911  void trial0UseSnakeOnVlict();
1912  void trial0UseSnakeOnGuard();
1913  void trial0UseMTricorderOnQuetzecoatl();
1914  void trial0UseMTricorderOnVlict();
1915  void trial0UseMTricorderAnywhere();
1916  void trial0UseSTricorderOnWindow();
1917  void trial0UseSTricorderAnywhere();
1918  void trial0UseCommunicator();
1919  void trial0UseCrewmanOnKlingon();
1920  void trial0UseMccoyOnVlict();
1921  void trial0UseMccoyOnGuard();
1922  void trial0UseMedkitAnywhere();
1923 
1924  // TRIAL1
1925  void trial1Tick1();
1926  void trial1Tick50();
1927  void trial1DoorOpened();
1928  void trial1TouchedHotspot0();
1929  void trial1KirkDied();
1930  void trial1TouchedHotspot1();
1931  void trial1GetRod();
1932  void trial1ReachedRod();
1933  void trial1PickedUpRod();
1934  void trial1LookAtKirk();
1935  void trial1LookAtSpock();
1936  void trial1LookAtMccoy();
1937  void trial1LookAtRedshirt();
1938  void trial1LookAtWall();
1939  void trial1LookAtFloor();
1940  void trial1LookAtRods();
1941  void trial1LookAtDoor();
1942  void trial1LookAtLock();
1943  void trial1LookAtEntity();
1944  void trial1LookAtMoltenRock();
1945  void trial1TalkToKirk();
1946  void trial1TalkToSpock();
1947  void trial1TalkToMccoy();
1948  void trial1TalkToRedshirt();
1949  void trial1TalkToEntity();
1950  void trial1UsePhaserOnCrewman();
1951  void trial1UsePhaserOnEntity();
1952  void trial1UsePhaserOnWall();
1953  void trial1UseStunPhaserOnFloor();
1954  void trial1ReachedFloorToUseStunPhaser();
1955  void trial1DoneShootingFloorWithStunPhaser();
1956  void trial1UseKillPhaserOnFloor();
1957  void trial1ReachedFloorToUseKillPhaser();
1958  void trial1DoneShootingFloorWithKillPhaser();
1959  void trial1UsePhaserOnRod();
1960  void trial1UsePhaserOnDoor();
1961  void trial1UsePhaserOnLock();
1962  void trial1UseMTricorderOnKirk();
1963  void trial1UseMTricorderOnSpock();
1964  void trial1UseMTricorderOnMccoy();
1965  void trial1UseMTricorderOnRedshirt();
1966  void trial1UseMTricorderOnEntity();
1967  void trial1UseSTricorderOnWall();
1968  void trial1UseSTricorderOnEntity();
1969  void trial1UseSTricorderOnRods();
1970  void trial1UseSTricorderOnFloor();
1971  void trial1UseSTricorderOnDoor();
1972  void trial1UseSTricorderOnLock();
1973  void trial1UseCommunicator();
1974  void trial1UseMccoyOnEntity();
1975  void trial1UseMccoyOnLock();
1976  void trial1UseMccoyOnFloor();
1977  void trial1UseSpockOnEntity();
1978  void trial1UseSpockOnLock();
1979  void trial1SpockReachedKeypad();
1980  void trial1SpockUsedKeypad();
1981  void trial1SpockReachedKeypadWithExtraProgram();
1982  void trial1SpockUsedKeypadWithExtraProgram();
1983  void trial1UseSpockOnFloor();
1984  void trial1UseRedshirtOnEntity();
1985  void trial1UseRedshirtOnLock();
1986  void trial1RedshirtReachedKeypad();
1987  void trial1RedshirtUsedKeypad();
1988  void trial1RedshirtReachedKeypadWithExtraProgram();
1989  void trial1RedshirtUsedKeypadWithExtraProgram();
1990  void trial1UseRedshirtOnFloor();
1991  void trial1UseRodOnMccoy();
1992  void trial1UseRodOnSpock();
1993  void trial1UseRodOnRedshirt();
1994  void trial1UseRodOnFloorOrWall();
1995  void trial1UseWoodRodOnEntity();
1996  void trial1ReachedPositionToThrowWoodRod();
1997  void trial1DoneThrowingWoodRod();
1998  void trial1UseWoodRodOnLock();
1999  void trial1UseWoodRodOnMoltenRock();
2000  void trial1ReachedMoltenRock();
2001  void trial1DoneCoatingWoodRod();
2002  void trial1UseIronRodOnEntity();
2003  void trial1ReachedPositionToThrowIronRod();
2004  void trial1DoneThrowingIronRod();
2005  void trial1UseIronRodOnLock();
2006  void trial1GetThrownIronRod();
2007  void trial1WalkToDoor();
2008  void trial1UseMedkit();
2009 
2010  // TRIAL2
2011  void trial2Tick1();
2012  void trial2Tick60();
2013  void trial2TouchedHotspot0();
2014  void trial2LookAtKirk();
2015  void trial2LookAtSpock();
2016  void trial2LookAtMccoy();
2017  void trial2LookAtRedshirt();
2018  void trial2LookAtInsignia();
2019  void trial2LookAtGlob();
2020  void trial2LookAtWall();
2021  void trial2LookAtDoor();
2022  void trial2TalkToKirk();
2023  void trial2TalkToSpock();
2024  void trial2TalkToMccoy();
2025  void trial2TalkToRedshirt();
2026  void trial2TalkToGlob();
2027  void trial2UsePhaserOnWall();
2028 
2029  void trial2UsePhaserOnGlob(int object, bool phaserOnKill);
2030  void trial2ReachedPositionToShootGlob();
2031  void trial2DrewPhaserToShootGlob();
2032  void trial2GlobDoneExploding();
2033  void trial2GlobDoneSplitting();
2034  void trial2KirkDied();
2035 
2036  void trial2UseStunPhaserOnGlob();
2037  void trial2UseKillPhaserOnGlob();
2038  void trial2UseStunPhaserOnSplitGlob1();
2039  void trial2UseKillPhaserOnSplitGlob1();
2040  void trial2UseStunPhaserOnSplitGlob2();
2041  void trial2UseKillPhaserOnSplitGlob2();
2042 
2043  void trial2UseMTricorderOnKirk();
2044  void trial2UseMTricorderOnSpock();
2045  void trial2UseMTricorderOnMccoy();
2046  void trial2UseMTricorderOnRedshirt();
2047  void trial2UseMTricorderOnGlob();
2048  void trial2UseSTricorderOnWall();
2049  void trial2UseSTricorderAnywhere();
2050  void trial2UseSTricorderOnGlob();
2051  void trial2UseCommunicator();
2052  void trial2UseMccoyOnGlob();
2053  void trial2UseMccoyOnWall();
2054  void trial2UseSpockOnGlob();
2055  void trial2UseSpockOnWall();
2056  void trial2UseRedshirtOnGlob();
2057  void trial2UseRedshirtOnWall();
2058  void trial2WalkToDoor();
2059  void trial2UseMedkitAnywhere();
2060 
2061  // TRIAL3
2062  void trial3Tick1();
2063  void trial3Tick30();
2064  void trial3Klingon1BeamedIn();
2065  void trial3Klingon2BeamedIn();
2066  void trial3Klingon3BeamedIn();
2067  void trial3KlingonShootsSomeone1();
2068  void trial3Klingon1DoneShooting();
2069  void trial3Klingon2DoneShooting();
2070  void trial3Klingon3DoneShooting();
2071  void trial3KlingonShootsSomeone2();
2072  void trial3RedshirtDoneDying();
2073  void trial3KirkDoneDying();
2074  void trial3Klingon1Shot();
2075  void trial3Klingon2Shot();
2076  void trial3Klingon3Shot();
2077  void trial3CheckShowUhuraText();
2078  void trial3CrewmanBeamedOut();
2079  void trial3Tick90();
2080  void trial3TouchedHotspot3();
2081  void trial3KirkExploded();
2082  void trial3LookAtKirk();
2083  void trial3LookAtSpock();
2084  void trial3LookAtMccoy();
2085  void trial3LookAtRedshirt();
2086  void trial3LookAtExit();
2087  void trial3LookAtWall();
2088  void trial3TalkToKirk();
2089  void trial3TalkToSpock();
2090  void trial3TalkToMccoy();
2091  void trial3TalkToRedshirt();
2092  void trial3UsePhaserOnWall();
2093  void trial3UseStunPhaserOnKlingon1();
2094  void trial3ReadyToShootKlingon1OnStun();
2095  void trial3UseKillPhaserOnKlingon1();
2096  void trial3ReadyToShootKlingon1OnKill();
2097  void trial3UsePhaserAnywhere();
2098  void trial3UseMTricorderOnKirk();
2099  void trial3UseMTricorderOnSpock();
2100  void trial3UseMTricorderOnMccoy();
2101  void trial3UseMTricorderOnRedshirt();
2102  void trial3UseMTricorderOnExit();
2103  void trial3UseSTricorderOnWall();
2104  void trial3UseSTricorderOnExit();
2105  void trial3UseMTricorderOnKlingon();
2106  void trial3UseCommunicator();
2107  void trial3BeamToVlict();
2108  void trial3UseMccoyOnWall();
2109  void trial3UseMccoyOnExit();
2110  void trial3UseSpockOnWall();
2111  void trial3UseSpockOnExit();
2112  void trial3UseRedshirtOnExit();
2113  void trial3UseRedshirtOnWall();
2114  void trial3WalkToExit();
2115  void trial3UseMedkitAnywhere();
2116 
2117  // TRIAL4
2118  void trial4Tick1();
2119  void trial4Tick60();
2120 
2121  // TRIAL5
2122  void trial5Tick1();
2123  void trial5Tick60();
2124  void trial5VlictAppeared();
2125  void trial5WalkToInterface();
2126  void trial5ReachedInterface();
2127  void trial5GetGem(int16 item, int16 object);
2128  void trial5ReachedGem();
2129  void trial5PickedUpGem();
2130  void trial5GetRedGem1();
2131  void trial5GetRedGem2();
2132  void trial5GetRedGem3();
2133  void trial5GetGreenGem1();
2134  void trial5GetGreenGem2();
2135  void trial5GetGreenGem3();
2136  void trial5GetBlueGem1();
2137  void trial5GetBlueGem2();
2138  void trial5GetBlueGem3();
2139  void trial5LookAtKirk();
2140  void trial5LookAtSpock();
2141  void trial5LookAtMccoy();
2142  void trial5LookAtRedshirt();
2143  void trial5LookAtBeam();
2144  void trial5LookAtInterface();
2145  void trial5UseSTricorderOnInterface();
2146  void trial5UseMTricorderOnInterface();
2147  void trial5LookAtRedGem1();
2148  void trial5LookAtRedGem2();
2149  void trial5LookAtRedGem3();
2150  void trial5LookAtGreenGem1();
2151  void trial5LookAtGreenGem2();
2152  void trial5LookAtGreenGem3();
2153  void trial5LookAtBlueGem1();
2154  void trial5LookAtBlueGem2();
2155  void trial5LookAtBlueGem3();
2156  void trial5LookAtHole();
2157  void trial5TalkToKirk();
2158  void trial5TalkToSpock();
2159  void trial5TalkToMccoy();
2160  void trial5TalkToRedshirt();
2161  void trial5UsePhaser();
2162  void trial5UseMTricorderAnywhere();
2163  void trial5UseSTricorderAnywhere();
2164  void trial5UseCommunicator();
2165  void trial5UseGemOnHole(int16 item, int16 object, int16 hole);
2166  void trial5ReachedHoleToPutGem();
2167  void trial5ActivateLightOfWar();
2168  void trial5ActivateLightOfKnowledge();
2169  void trial5ActivateLightOfTravel();
2170  void trial5RestrictedCombination1();
2171  void trial5RestrictedCombination2();
2172  void trial5DestinationNoLongerExists();
2173  void trial5CrewmanBeamedOut();
2174  void trial5UseRedGem1OnHole1();
2175  void trial5UseRedGem2OnHole1();
2176  void trial5UseRedGem3OnHole1();
2177  void trial5UseGreenGem1OnHole1();
2178  void trial5UseGreenGem2OnHole1();
2179  void trial5UseGreenGem3OnHole1();
2180  void trial5UseBlueGem1OnHole1();
2181  void trial5UseBlueGem2OnHole1();
2182  void trial5UseBlueGem3OnHole1();
2183  void trial5UseRedGem1OnHole2();
2184  void trial5UseRedGem2OnHole2();
2185  void trial5UseRedGem3OnHole2();
2186  void trial5UseGreenGem1OnHole2();
2187  void trial5UseGreenGem2OnHole2();
2188  void trial5UseGreenGem3OnHole2();
2189  void trial5UseBlueGem1OnHole2();
2190  void trial5UseBlueGem2OnHole2();
2191  void trial5UseBlueGem3OnHole2();
2192  void trial5UseRedGem1OnHole3();
2193  void trial5UseRedGem2OnHole3();
2194  void trial5UseRedGem3OnHole3();
2195  void trial5UseGreenGem1OnHole3();
2196  void trial5UseGreenGem2OnHole3();
2197  void trial5UseGreenGem3OnHole3();
2198  void trial5UseBlueGem1OnHole3();
2199  void trial5UseBlueGem2OnHole3();
2200  void trial5UseBlueGem3OnHole3();
2201  void trial5UseMedkitAnywhere();
2202 
2203 
2204  // SINS0
2205  void sins0Tick1();
2206  void sins0LookAnywhere();
2207  void sins0LookAtOpenDoor();
2208  void sins0LookAtClosedDoor();
2209  void sins0TalkToSpock();
2210  void sins0TalkToMccoy();
2211  void sins0TalkToRedshirt();
2212  void sins0LookAtGround();
2213  void sins0GetRock();
2214  void sins0PickedUpRock();
2215  void sins0UseSTricorderAnywhere();
2216  void sins0UseSTricorderOnGround();
2217  void sins0UseSTricorderOnPlanet();
2218  void sins0Tick40();
2219  void sins0LookAtStatue();
2220  void sins0LookAtPlanet();
2221  void sins0LookAtSky();
2222  void sins0LookAtKirk();
2223  void sins0LookAtSpock();
2224  void sins0LookAtMccoy();
2225  void sins0LookAtRedshirt();
2226  void sins0UseSTricorderOnClosedDoor();
2227  void sins0UseSTricorderOnStatue();
2228  void sins0UseMedkitOnCrewman();
2229  void sins0UseMTricorderOnCrewman();
2230  void sins0UseCommunicator();
2231  void sins0WalkToDoor();
2232 
2233  // SINS1
2234  void sins1Tick1();
2235  void sins1LookAnywhere();
2236  void sins1LookAtLock();
2237  void sins1LookAtDoor();
2238  void sins1LookAtPanel();
2239  void sins1LookAtKeypad();
2240  void sins1UseSTricorderOnPanel();
2241  void sins1UseSTricorderOnKeypad();
2242  void sins1UseSTricorderOnLock();
2243  void sins1UseSTricorderOnDoor();
2244  void sins1UseSTricorderAnywhere();
2245  void sins1UseSTricorderOnLens();
2246  void sins1UseRockOnDoor();
2247  void sins1UseRedshirtOnKeypad();
2248  void sins1UseMccoyOnKeypad();
2249  void sins1UseKirkOnKeypad();
2250  void sins1UseSpockOnKeypad();
2251  void sins1SpockReachedKeypad();
2252  void sins1EnteredCorrectCode();
2253  void sins1DoorDoneOpening();
2254  void sins1EnteredIncorrectCode();
2255  void sins1EnteredSacredSofNumber();
2256  void sins1UsePhaserOnDoor();
2257  void sins1DoorUsedLaser();
2258  void sins1Tick40();
2259  void sins1TalkToKirk();
2260  void sins1TalkToSpock();
2261  void sins1TalkToMccoy();
2262  void sins1TalkToRedshirt();
2263  void sins1LookAtKirk();
2264  void sins1LookAtSpock();
2265  void sins1LookAtMccoy();
2266  void sins1LookAtRedshirt();
2267  void sins1LookAtLens();
2268  void sins1UseCommunicator();
2269  void sins1UseMedkitOnCrewman();
2270  void sins1UseMTricorderOnCrewman();
2271  void sins1WalkToDoor();
2272 
2273  // SINS2
2274  void sins2Tick1();
2275  void sins2UsePhaserOnDoor();
2276  void sins2UseSTricorderAnywhere();
2277  void sins2UseKirkOnTerminal();
2278  void sins2UseSpockOnTerminal();
2279  void sins2SpockReachedTerminal();
2280  void sins2SpockUsedTerminal();
2281  void sins2UseMccoyOnTerminal();
2282  void sins2UseRedshirtOnTerminal();
2283  void sins2UseSTricorderOnTerminal();
2284  void sins2UseSTricorderOnKeypad();
2285  void sins2UseSTricorderOnDoor();
2286  void sins2UseKirkOnKeypad();
2287  void sins2UseSpockOnKeypad();
2288  void sins2SpockReachedKeypad();
2289  void sins2EnteredCorrectCode();
2290  void sins2EnteredIncorrectCode();
2291  void sins2DoorFinishedOpening();
2292  void sins2Tick40();
2293  void sins2LookAnywhere();
2294  void sins2LookAtOpenDoor();
2295  void sins2LookAtTerminal();
2296  void sins2LookAtKeypad();
2297  void sins2LookAtKirk();
2298  void sins2LookAtSpock();
2299  void sins2LookAtMccoy();
2300  void sins2LookAtRedshirt();
2301  void sins2TalkToKirk();
2302  void sins2TalkToSpock();
2303  void sins2TalkToMccoy();
2304  void sins2TalkToRedshirt();
2305  void sins2LookAtDoor();
2306  void sins2UseSpockOnDoor();
2307  void sins2UseCommunicator();
2308  void sins2UseMedkitOnCrewman();
2309  void sins2UseMTricorderOnCrewman();
2310  void sins2UseMccoyOnKeypad();
2311  void sins2UseRedshirtOnKeypad();
2312  void sins2WalkToDoor();
2313 
2314  // SINS3
2315  void sins3Tick1();
2316  void sins3UseSTricorderOnBox();
2317  void sins3UseSTricorderOnMonitor();
2318  void sins3UseSTricorderAnywhere();
2319  void sins3UseSTricorderOnDrill();
2320  void sins3UseSTricorderOnPanel();
2321  void sins3LookAtDrill();
2322  void sins3LookAtPanel();
2323  void sins3LookAtMonitor();
2324  void sins3LookAnywhere();
2325  void sins3UseSTricorderOnWall();
2326  void sins3LookAtBox();
2327  void sins3UseKirkOnBox();
2328  void sins3KirkReachedBox();
2329  void sins3Timer0Expired();
2330  void sins3UseSpockOnBox();
2331  void sins3SpockReachedBox();
2332  void sins3UseMccoyOnBox();
2333  void sins3MccoyReachedBox();
2334  void sins3UseRedshirtOnBox();
2335  void sins3RedshirtReachedBox();
2336  void sins3BoxOpened();
2337  void sins3GetBox();
2338  void sins3KirkReachedBoxToGet();
2339  void sins3KirkGotBoxContents();
2340  void sins3Tick30();
2341  void sins3Tick60();
2342  void sins3UseKirkOnPanel();
2343  void sins3UseSpockOnPanel();
2344  void sins3SpockReachedPanel();
2345  void sins3UseRockOnWall();
2346  void sins3KirkReachedWall();
2347  void sins3KirkPutRockOnWall();
2348  void sins3KirkBackedAwayFromWall();
2349  void sins3UsedLowPowerLaserOnRock();
2350  void sins3MadeHoleInRock();
2351  void sins3CreatedTemplateInRock();
2352  void sins3RockTurnedIntoIDCard();
2353  void sins3RockVaporized();
2354  void sins3UseDrillAnywhere();
2355  void sins3GetIDCard();
2356  void sins3ReachedIDCard();
2357  void sins3PickedUpIDCard();
2358  void sins3LookAtItemBeingDrilled();
2359  void sins3LookAtKirk();
2360  void sins3LookAtSpock();
2361  void sins3LookAtMccoy();
2362  void sins3LookAtRedshirt();
2363  void sins3TalkToKirk();
2364  void sins3TalkToSpock();
2365  void sins3TalkToMccoy();
2366  void sins3TalkToRedshirt();
2367  void sins3UseCommunicator();
2368  void sins3UseSpockOnDrill();
2369  void sins3UseMccoyOnDrill();
2370  void sins3UseRedshirtOnDrill();
2371  void sins3WalkToDoor();
2372  void sins3UseMedkitOnCrewman();
2373  void sins3UseMTricorderOnCrewman();
2374 
2375  // SINS4
2376  void sins4Tick1();
2377  void sins4UseSTricorderOnPanel();
2378  void sins4UseSpockOnPanel();
2379  void sins4UsePhaserOnNorthDoor();
2380  void sins4UsePhaserOnPanel();
2381  void sins4UseIDCardOnPanel();
2382  void sins4KirkReachedPanel();
2383  void sins4KirkPutCardInPanel();
2384  void sins4UseRockOnPanel();
2385  void sins4KirkReachedPanelWithRock();
2386  void sins4KirkUsedRockOnPanel();
2387  void sins4LookAtWestDoor();
2388  void sins4LookAtEastDoor();
2389  void sins4LookAnywhere();
2390  void sins4LookAtPanel();
2391  void sins4Tick40();
2392  void sins4LookAtKirk();
2393  void sins4LookAtSpock();
2394  void sins4LookAtMccoy();
2395  void sins4LookAtRedshirt();
2396  void sins4LookAtLight();
2397  void sins4LookAtBeam();
2398  void sins4LookAtOpenNorthDoor();
2399  void sins4LookAtClosedNorthDoor();
2400  void sins4TalkToKirk();
2401  void sins4TalkToSpock();
2402  void sins4TalkToMccoy();
2403  void sins4TalkToRedshirt();
2404  void sins4UseSTricorderOnNorthDoor();
2405  void sins4UseSTricorderAnywhere();
2406  void sins4UseCommunicator();
2407  void sins4UseMccoyOnNorthDoor();
2408  void sins4UseRedshirtOnNorthDoor();
2409  void sins4UseSpockOnNorthDoor();
2410  void sins4UseMccoyOnPanel();
2411  void sins4UseRedshirtOnPanel();
2412  void sins4WalkToNorthDoor();
2413  void sins4WalkToWestDoor();
2414  void sins4WalkToEastDoor();
2415  void sins4UseMedkitOnCrewman();
2416  void sins4UseMTricorderOnCrewman();
2417 
2418  // SINS5
2419  void sins5Tick1();
2420  void sins5UseSTricorderAnywhere();
2421  void sins5UseSTricorderOnRightComputer();
2422  void sins5UseSTricorderOnLeftComputer();
2423  void sins5UseSTricorderOnMiddleComputer();
2424  void sins5UseKirkOnRightComputer();
2425  void sins5UseKirkOnLeftComputer();
2426  void sins5UseKirkOnMiddleComputer();
2427  void sins5UseMccoyOnComputer();
2428  void sins5UseRedshirtOnComputer();
2429  void sins5UseSpockOnMiddleComputer();
2430  void sins5UseSpockOnRightComputer();
2431  void sins5SpockReachedRightComputer();
2432  void sins5SpockUsedRightComputer();
2433  void sins5UseSpockOnLeftComputer();
2434  void sins5SpockReachedLeftComputer();
2435  void sins5SpockUsedLeftComputer();
2436  void sins5CrewmanReadyToBeamOut();
2437  void sins5Tick20();
2438  void sins5CheckGatheredAllClues();
2439  void sins5UseWireOnComputer();
2440  void sins5KirkOrSpockInPositionToUseWire();
2441  void sins5WireConnected();
2442  void sins5UseStunPhaserOnComputer();
2443  void sins5UseKillPhaserOnLeftComputer();
2444  void sins5ReachedPositionToShootLeftComputer();
2445  void sins5DrewPhaserToShootLeftComputer();
2446  void sins5Timer0Expired();
2447  void sins5UseKillPhaserOnMiddleComputer();
2448  void sins5ReachedPositionToShootMiddleComputer();
2449  void sins5DrewPhaserToShootMiddleComputer();
2450  void sins5Timer1Expired();
2451  void sins5UseKillPhaserOnRightComputer();
2452  void sins5ReachedPositionToShootRightComputer();
2453  void sins5DrewPhaserToShootRightComputer();
2454  void sins5Timer2Expired();
2455  void sins5ComputerLaunchesMissiles();
2456  void sins5Timer3Expired();
2457  void sins5LookAnywhere();
2458  void sins5LookAtKirk();
2459  void sins5LookAtSpock();
2460  void sins5LookAtMccoy();
2461  void sins5LookAtRedshirt();
2462  void sins5LookAtLight();
2463  void sins5LookAtLeftComputer();
2464  void sins5LookAtMiddleComputer();
2465  void sins5LookAtRightComputer();
2466  void sins5LookAtMissile();
2467  void sins5LookAtNorthDoor();
2468  void sins5UseMedkitOnCrewman();
2469  void sins5UseMTricorderAnywhere();
2470  void sins5TalkToKirk();
2471  void sins5TalkToSpock();
2472  void sins5TalkToMccoy();
2473  void sins5TalkToRedshirt();
2474  void sins5UseSTricorderOnMissile();
2475  void sins5UseSTricorderOnNorthDoor();
2476  void sins5UseMTricorderOnCrewman();
2477 
2478  // VENG0
2479  void veng0Tick1();
2480  void veng0Tick10();
2481  void veng0Tick50();
2482  void veng0TouchedDoor();
2483  void veng0UseSTricorderOnComputerBank();
2484  void veng0UseSTricorderOnChair();
2485  void veng0UseSTricorderAnywhere();
2486  void veng0UseMccoyOnBeam();
2487  void veng0UseSTricorderOnBeam();
2488  void veng0UseRedshirtOnBeam();
2489  void veng0UseSpockOnConsole();
2490  void veng0UseRedshirtOnConsole();
2491  void veng0UsePhaserOnBeam();
2492  void veng0UseMccoyOnDeadCrewman();
2493  void veng0UseSawOnBeam();
2494  void veng0KirkReachedSaw();
2495  void veng0Timer0Expired();
2496  void veng0DoneCuttingBeam();
2497  void veng0GetBeam();
2498  void veng0TalkToKirk();
2499  void veng0TalkToMccoy();
2500  void veng0TalkToSpock();
2501  void veng0TalkToRedshirt();
2502  void veng0LookAtPatterson();
2503  void veng0LookAtDeadCrewman2();
2504  void veng0LookAtComputerBank();
2505  void veng0LookAtChair();
2506  void veng0LookAtKirk();
2507  void veng0LookAtSpock();
2508  void veng0LookAtMccoy();
2509  void veng0LookAtRedshirt();
2510  void veng0LookAtViewscreen();
2511  void veng0LookAtHelmConsole();
2512  void veng0LookAtNavConsole();
2513  void veng0LookAtBeam();
2514  void veng0LookAnywhere();
2515  void veng0LookAtDeadCrewman1();
2516  void veng0UseMccoyOnLivingCrewman();
2517  void veng0MccoyReachedCrewman();
2518  void veng0MccoyScannedCrewman();
2519 
2520  // VENG1
2521  void veng1Tick1();
2522  void veng1WalkToDoor();
2523  void veng1TouchedHotspot0();
2524  void veng1ReachedDoor();
2525  void veng1TouchedTurbolift();
2526  void veng1LookAtDeadGuy();
2527  void veng1UseSTricorderOnVent();
2528  void veng1LookAtPanel();
2529  void veng1LookAtDoor();
2530  void veng1LookAtSaw();
2531  void veng1LookAtDebris();
2532  void veng1LookAtKirk();
2533  void veng1LookAtMccoy();
2534  void veng1LookAtSpock();
2535  void veng1LookAtRedshirt();
2536  void veng1LookAnywhere();
2537  void veng1TalkToKirk();
2538  void veng1TalkToSpock();
2539  void veng1TalkToMccoy();
2540  void veng1TalkToRedshirt();
2541  void veng1UsePhaserOnDoor();
2542  void veng1UsePhaserOnPanel();
2543  void veng1UseSTricorderOnSaw();
2544  void veng1UseSTricorderOnDoor();
2545  void veng1UseSTricorderOnPanel();
2546  void veng1GetPanel();
2547  void veng1KirkReachedPanel();
2548  void veng1KirkAccessedPanel();
2549  void veng1UseSawOnPanel();
2550  void veng1UseSawOnDoor();
2551  void veng1UseDrillOnDebris();
2552  void veng1UseSawOnDebris();
2553  void veng1UseDrillOnPanel();
2554  void veng1KirkReachedPanelToDrill();
2555  void veng1KirkDoneDrillingPanel();
2556  void veng1UseHypoOnDebris();
2557  void veng1KirkReachedDebris();
2558  void veng1KirkUsedHypoOnDebris();
2559  void veng1GetSaw();
2560  void veng1ReachedSaw();
2561  void veng1PickedUpSaw();
2562  void veng1GetDebris();
2563  void veng1ReachedDebrisToGet();
2564  void veng1TriedToGetDebris();
2565 
2566  // VENG2
2567  void veng2Tick1();
2568  void veng2Timer0Expired();
2569  void veng2ElasiShipDecloaked();
2570  void veng2Timer2Expired();
2571  void veng2TouchedDoor();
2572  void veng2LookAtViewscreen();
2573  void veng2LookAtMiddleConsole();
2574  void veng2LookAtDamageDisplay();
2575  void veng2LookAtSTricorder();
2576  void veng2LookAtMTricorder();
2577  void veng2LookAtTorpedoButton();
2578  void veng2LookAtTorpedoControl();
2579  void veng2LookAtImpulseConsole();
2580  void veng2LookAtMainComputer();
2581  void veng2LookAtRecordDeck();
2582  void veng2LookAtDeckIOConsole();
2583  void veng2LookAtKirk();
2584  void veng2LookAtSpock();
2585  void veng2LookAtMccoy();
2586  void veng2LookAtRedshirt();
2587  void veng2LookAnywhere();
2588  void veng2TalkToKirk();
2589  void veng2TalkToSpock();
2590  void veng2TalkToMccoy();
2591  void veng2TalkToRedshirt();
2592  void veng2UseTechJournalOnDeckIOConsole();
2593  void veng2ReachedDeckIOWithTechJournal();
2594  void veng2DoneReadingTechJournal();
2595  void veng2UseLogOnDeckIOConsole();
2596  void veng2ReachedDeckIOWithLog();
2597  void veng2LoadedLog();
2598  void veng2UseCommunicator();
2599  void veng2UseKirkOnTorpedoButton();
2600  void veng2UseKirkReachedTorpedoButton();
2601  void veng2KirkFiredTorpedo();
2602  void veng2TorpedoStruckElasiShip();
2603  void veng2ElasiRetreated();
2604  void veng2CrewmanInPositionToBeamOut();
2605  void veng2UseSTricorderOnTorpedoButton();
2606  void veng2UseSTricorderOnMiddleConsole();
2607  void veng2UseSTricorderOnTorpedoControl();
2608  void veng2UseImpulseConsole();
2609  void veng2SpockReachedImpulseConsole();
2610  void veng2SpockUsedImpulseConsole();
2611  void veng2PowerWeapons();
2612  void veng2UseMainComputer();
2613  void veng2UseSTricorderOnMainComputer();
2614  void veng2SpockReachedMainComputerToPutTricorder();
2615  void veng2AttachedSTricorderToComputer();
2616  void veng2UseMTricorderOnMainComputer();
2617  void veng2MccoyReachedMainComputerToPutTricorder();
2618  void veng2AttachedMTricorderToComputer();
2619  void veng2BothTricordersPluggedIn();
2620  void veng2UseSTricorderOnDeckIOConsole();
2621  void veng2UseSTricorderOnImpulseConsole();
2622  void veng2UseFusionPackOnMainComputer();
2623  void veng2GetLogDeck();
2624  void veng2ReachedLogDeck();
2625  void veng2PickedUpLogDeck();
2626  void veng2GetSTricorder();
2627  void veng2ReachedSTricorderToGet();
2628  void veng2PickedUpSTricorder();
2629  void veng2GetMTricorder();
2630  void veng2ReachedMTricorderToGet();
2631  void veng2PickedUpMTricorder();
2632 
2633  // VENG3
2634  void veng3Tick1();
2635  void veng3Tick15();
2636  void veng3TouchedTurbolift2();
2637  void veng3TouchedTurbolift1();
2638  void veng3WalkToDoor();
2639  void veng3ReachedTurbolift2();
2640  void veng3Turbolift2Opened();
2641  void veng3WalkToSickbayDoor();
2642  void veng3ReachedSickbayDoor();
2643  void veng3SickbayDoorOpened();
2644  void veng3LookAtSupportBeam();
2645  void veng3LookAtDebris();
2646  void veng3LookAtTurbolift2Door();
2647  void veng3LookAtSickbayDoor();
2648  void veng3LookAtCable();
2649  void veng3LookAtDeadGuy();
2650  void veng3LookAtKirk();
2651  void veng3LookAtMccoy();
2652  void veng3LookAtSpock();
2653  void veng3LookAtRedshirt();
2654  void veng3LookAnywhere();
2655  void veng3UseStunPhaserOnDebris();
2656  void veng3UseKillPhaserOnDebris();
2657  void veng3ReachedPositionToShootDebris();
2658  void veng3DrewPhaserToShootDebris();
2659  void veng3DebrisVaporized();
2660  void veng3DebrisFellAgain();
2661  void veng3UseSpockOnDebris();
2662  void veng3UseRedshirtOnDebris();
2663  void veng3UseMccoyOnDebris();
2664  void veng3UseBeamOnDebris();
2665  void veng3ReachedPositionToPlaceBeam();
2666  void veng3PlacedBeam();
2667  void veng3UseSTricorderOnDebris();
2668  void veng3UseMolecularSawOnDebris();
2669  void veng3TalkToKirk();
2670  void veng3TalkToSpock();
2671  void veng3TalkToMccoy();
2672  void veng3TalkToRedshirt();
2673  void veng3GetDebris();
2674  void veng3GetCable();
2675  void veng3ReachedCable();
2676  void veng3PickedUpCable();
2677 
2678  // VENG4
2679  void veng4Tick1();
2680  void veng4TalkToKirk();
2681  void veng4TalkToMccoy();
2682  void veng4TalkToSpock();
2683  void veng4TalkToRedshirt();
2684  void veng4UseMccoyOnDeadGuy();
2685  void veng4UseHypoOnBrittany();
2686  void veng4UseMedkitOnBrittany();
2687  void veng4UseMTricorderOnBrittany();
2688  void veng4UseMccoyOnBrittany();
2689  void veng4MccoyReachedBrittany();
2690  void veng4UsedMedkitOnBrittany();
2691  void veng4MccoyScannedBrittany();
2692  void veng4TalkToBrittany();
2693  void veng4LookAtDeadGuy();
2694  void veng4LookAtRightBedReadings();
2695  void veng4LookAtDoorHotspot();
2696  void veng4LookAtKirk();
2697  void veng4LookAtSpock();
2698  void veng4LookAtMccoy();
2699  void veng4LookAtRedshirt();
2700  void veng4LookAtLeftBed();
2701  void veng4LookAtLeftBedReadings();
2702  void veng4LookAtBrittany();
2703  void veng4LookAtDrill();
2704  void veng4LookAtHypoOnTable();
2705  void veng4LookAtDoorObject();
2706  void veng4LookAnywhere();
2707  void veng4GetHypo();
2708  void veng4ReachedHypo();
2709  void veng4PickedUpHypo();
2710  void veng4GetDrill();
2711  void veng4ReachedDrill();
2712  void veng4PickedUpDrill();
2713  void veng4TouchedHotspot0();
2714  void veng4WalkToDoor();
2715 
2716  // VENG5
2717  void veng5Tick1();
2718  void veng5Tick45();
2719  void veng5WalkToDoor();
2720  void veng5ReachedDoor();
2721  void veng5DoorOpened();
2722  void veng5TouchedTurboliftDoor();
2723  void veng5LookAtDoor();
2724  void veng5LookAtLadder();
2725  void veng5LookAtDeadGuy();
2726  void veng5LookAtPowerPack();
2727  void veng5LookAtDebris();
2728  void veng5LookAtKirk();
2729  void veng5LookAtSpock();
2730  void veng5LookAtMccoy();
2731  void veng5LookAtRedshirt();
2732  void veng5LookAnywhere();
2733  void veng5UsePhaserOnPowerPack();
2734  void veng5UseStunPhaserOnDebris();
2735  void veng5UseKillPhaserOnDebris();
2736  void veng5ReachedPositionToShootDebris();
2737  void veng5DrewPhaser();
2738  void veng5VaporizedDebris();
2739  void veng5UseMTricorderOnDebris();
2740  void veng5UseSTricorderOnDebris();
2741  void veng5UseMTricorderOnPowerPack();
2742  void veng5UseSTricorderOnPowerPack();
2743  void veng5TalkToKirk();
2744  void veng5TalkToMccoy();
2745  void veng5TalkToSpock();
2746  void veng5TalkToRedshirt();
2747  void veng5TouchedHotspot0();
2748  void veng5GetPowerPack();
2749  void veng5ReachedPowerPack();
2750  void veng5PickedUpPowerPack();
2751 
2752  // VENG6
2753  void veng6Tick1();
2754  void veng6WalkToDoor();
2755  void veng6ReachedDoor();
2756  void veng6DoorOpened();
2757  void veng6LookAtLeftPort();
2758  void veng6LookAtRightPort();
2759  void veng6LookAtDoor();
2760  void veng6LookAtOilCanister();
2761  void veng6LookAtCabinet();
2762  void veng6LookAtCable();
2763  void veng6LookAtRightConsole();
2764  void veng6LookAtImpulseEngines();
2765  void veng6LookAtLeftConsole();
2766  void veng6LookAtJunctionBox();
2767  void veng6LookAtJournal();
2768  void veng6LookAtKirk();
2769  void veng6LookAtSpock();
2770  void veng6LookAtMccoy();
2771  void veng6LookAtRedshirt();
2772  void veng6LookAtDeadGuy();
2773  void veng6LookAnywhere();
2774  void veng6TalkToKirk();
2775  void veng6TalkToSpock();
2776  void veng6TalkToMccoy();
2777  void veng6TalkToRedshirt();
2778  void veng6UseCable1OnLeftPort();
2779  void veng6UseCable2OnLeftPort();
2780  void veng6UseCableOnLeftPort(byte cable);
2781  void veng6KirkOrSpockReachedLeftPort();
2782  void veng6AttachedLeftCable();
2783  void veng6UseCable1OnRightPort();
2784  void veng6UseCable2OnRightPort();
2785  void veng6UseCableOnRightPort(byte cable);
2786  void veng6KirkOrSpockReachedRightPort();
2787  void veng6AttachedRightCable();
2788  void veng6UseCrewmanOnJunctionBox();
2789  void veng6SpockReachedJunctionBox();
2790  void veng6SpockAdjustedJunctionBox();
2791  void veng6UseHypoOnOilCanister();
2792  void veng6ReachedOilCanister();
2793  void veng6FilledHypoWithOil();
2794  void veng6UseCabinet();
2795  void veng6ReachedCabinet();
2796  void veng6OpenedOrClosedCabinet();
2797  void veng6UseSTricorderOnImpulseEngines();
2798  void veng6UseSTricorderOnRightConsole();
2799  void veng6UseSTricorderOnJunctionBox();
2800  void veng6UsePowerPackOnLeftConsole();
2801  void veng6GetJunctionBox();
2802  void veng6GetOilCanister();
2803  void veng6GetEngineeringJournal();
2804  void veng6ReachedEngineeringJournal();
2805  void veng6TookEngineeringJournal();
2806 
2807  // VENG7
2808  void veng7Tick1();
2809  void veng7WalkToDoor();
2810  void veng7ReachedDoor();
2811  void veng7DoorOpened();
2812  void veng7TouchedTurboliftDoor();
2813  void veng7LookAtCollapsedSection();
2814  void veng7LookAtDeadGuy();
2815  void veng7LookAtDoor();
2816  void veng7LookAtCable();
2817  void veng7LookAtKirk();
2818  void veng7LookAtSpock();
2819  void veng7LookAtMccoy();
2820  void veng7LookAtRedshirt();
2821  void veng7LookAnywhere();
2822  void veng7TalkToKirk();
2823  void veng7TalkToSpock();
2824  void veng7TalkToMccoy();
2825  void veng7TalkToRedshirt();
2826  void veng7UseSTricorderOnCollapsedSection();
2827  void veng7TouchedHotspot0();
2828  void veng7GetCable();
2829  void veng7ReachedCable();
2830  void veng7PickedUpCable();
2831 
2832  // VENG8
2833  void veng8Tick1();
2834  void veng8WalkToDoor();
2835  void veng8ReachedDoor();
2836  void veng8DoorOpened();
2837  void veng8Timer0Expired();
2838  void veng8SparkAnim1Done();
2839  void veng8Timer1Expired();
2840  void veng8SparkAnim2Done();
2841  void veng8LookAtPowerPack();
2842  void veng8LookAtDoor();
2843  void veng8LookAtPowerCircuits();
2844  void veng8LookAtControls();
2845  void veng8LookAtDeadGuy();
2846  void veng8LookAtSlider();
2847  void veng8LookAtKirk();
2848  void veng8LookAtSpock();
2849  void veng8LookAtMccoy();
2850  void veng8LookAtRedshirt();
2851  void veng8LookAtTransporter();
2852  void veng8LookAnywhere();
2853  void veng8TalkToKirk();
2854  void veng8TalkToSpock();
2855  void veng8TalkToMccoy();
2856  void veng8TalkToRedshirt();
2857  void veng8UseKirkOnControls();
2858  void veng8UseSpockOnControls();
2859  void veng8SpockReachedControls();
2860  void veng8SpockUsedControls();
2861  void veng8UsePowerPackOnPowerCircuit();
2862  void veng8SpockReachedPowerCircuit();
2863  void veng8SpockConnectedPowerPack();
2864  void veng8TransporterPoweredUp();
2865  void veng8UseKirkOnSlider();
2866  void veng8UseSpockOnSlider();
2867  void veng8SpockReachedSlider();
2868  void veng8RedshirtReachedTransporter();
2869  void veng8SpockPulledSliderToBeamOut();
2870  void veng8RedshirtBeamedOut();
2871  void veng8SpockPulledSliderToBeamIn();
2872  void veng8RedshirtBeamedIn();
2873  void veng8UseSTricorderOnConsole();
2874 
2875  // VENGA (common code)
2876  void vengaTick();
2877  void vengaElasiBeamOver();
2878  void vengaUsePhaserAnywhere();
2879  void vengaLookAtHypo();
2880  void vengaUseCommunicator();
2881  void vengaUseMccoyOnDeadGuy();
2882 
2883 public:
2884  // Room-specific variables. This is memset'ed to 0 when the room is initialized.
2885  // NOTE: Any changes here must be reflected in the corresponding serializer functions.
2886  union {
2887  struct {
2888  // demon0
2889  byte bottomDoorCounter; // 0xca
2890  byte topDoorCounter; // 0xcb
2891  bool movingToTopDoor; // 0xcc
2892  bool movingToBottomDoor; // 0xcd
2893 
2894  // demon1
2895  byte klingonShot[3]; // 0xca
2896  int16 numKlingonsKilled;
2897  byte attackIndex;
2898  bool kirkShooting;
2899  char d6[10];
2900 
2901  // demon3
2902  bool shootingBoulder; // 0xca
2903  bool boulder1Shot; // 0xcb
2904  byte boulderBeingShot; // 0xcc
2905  bool kirkInPosition; // 0xcd
2906  bool redshirtInPosition; // 0xce
2907  bool spockInPosition; // 0xcf
2908  bool mccoyInPosition; // 0xd0
2909  bool inFiringPosition; // 0xd1
2910  bool kirkPhaserOut; // 0xd3
2911  char boulderAnim[10]; // 0xd4
2912  int16 usedPhaserOnDoor; // 0xd6
2913 
2914  // demon4
2915  bool triedToShootNauian; // 0xca
2916  bool nauianEmerged; // 0xcb
2917  bool disabledSecurity; // 0xcc
2918  bool cd; // 0xcd
2919  byte crewReadyToBeamOut; // 0xce
2920  int16 crewmanUsingPanel; // 0xcf
2921 
2922  // demon5
2923  bool scannedRoberts; // 0xca
2924  bool scannedChub; // 0xcb
2925  bool scannedGrisnash; // 0xcc
2926  bool scannedStephen; // 0xcd
2927  byte numScanned; // 0xce
2928  byte numTalkedTo; // 0xcf
2929  bool talkedToRoberts; // 0xd0
2930  bool talkedToChub; // 0xd1
2931  bool talkedToGrisnash; // 0xd2
2932  bool talkedToStephen; // 0xd3
2933 
2934  // demon6
2935  bool insultedStephenRecently; // 0xca
2936  bool stephenInRoom; // 0xcb
2937  bool caseOpened; // 0xcd
2938 
2939  // common
2940  bool movingToDoor;
2941  byte doorCounter;
2942 
2943  void saveLoadWithSerializer(Common::Serializer &ser) {
2944  // demon0
2945  ser.syncAsByte(bottomDoorCounter);
2946  ser.syncAsByte(topDoorCounter);
2947  ser.syncAsByte(movingToTopDoor);
2948  ser.syncAsByte(movingToBottomDoor);
2949 
2950  // demon1
2951  ser.syncBytes((byte *)klingonShot, 3);
2952  ser.syncAsSint16LE(numKlingonsKilled);
2953  ser.syncAsByte(attackIndex);
2954  ser.syncAsByte(kirkShooting);
2955  ser.syncBytes((byte *)d6, 10);
2956 
2957  // demon3
2958  ser.syncAsByte(shootingBoulder);
2959  ser.syncAsByte(boulder1Shot);
2960  ser.syncAsByte(boulderBeingShot);
2961  ser.syncAsByte(kirkInPosition);
2962  ser.syncAsByte(redshirtInPosition);
2963  ser.syncAsByte(spockInPosition);
2964  ser.syncAsByte(mccoyInPosition);
2965  ser.syncAsByte(inFiringPosition);
2966  ser.syncAsByte(kirkPhaserOut);
2967  ser.syncBytes((byte *)boulderAnim, 10);
2968  ser.syncAsSint16LE(usedPhaserOnDoor);
2969 
2970  // demon4
2971  ser.syncAsByte(triedToShootNauian);
2972  ser.syncAsByte(nauianEmerged);
2973  ser.syncAsByte(disabledSecurity);
2974  ser.syncAsByte(cd);
2975  ser.syncAsByte(crewReadyToBeamOut);
2976  ser.syncAsSint16LE(crewmanUsingPanel);
2977 
2978  // demon5
2979  ser.syncAsByte(scannedRoberts);
2980  ser.syncAsByte(scannedChub);
2981  ser.syncAsByte(scannedGrisnash);
2982  ser.syncAsByte(scannedStephen);
2983  ser.syncAsByte(numScanned);
2984  ser.syncAsByte(numTalkedTo);
2985  ser.syncAsByte(talkedToRoberts);
2986  ser.syncAsByte(talkedToChub);
2987  ser.syncAsByte(talkedToGrisnash);
2988  ser.syncAsByte(talkedToStephen);
2989 
2990  // demon6
2991  ser.syncAsByte(insultedStephenRecently);
2992  ser.syncAsByte(stephenInRoom);
2993  ser.syncAsByte(caseOpened);
2994 
2995  // common
2996  ser.syncAsByte(movingToDoor);
2997  ser.syncAsByte(doorCounter);
2998  }
2999  } demon;
3000 
3001  struct {
3002  // tug2
3003  byte shootingObject; // 0x1ec1
3004  byte shootingTarget;
3005  bool elasiPhaserOnKill;
3006  bool shootKirkOverride; // 0x1ec4
3007 
3008  void saveLoadWithSerializer(Common::Serializer &ser) {
3009  // tug2
3010  ser.syncAsByte(shootingObject);
3011  ser.syncAsByte(shootingTarget);
3012  ser.syncAsByte(elasiPhaserOnKill);
3013  ser.syncAsByte(shootKirkOverride);
3014  }
3015  } tug;
3016 
3017  struct {
3018  // love0
3019  bool heardSummaryOfVirus; // 0xda
3020 
3021  // love1
3022  TextRef dyingSpeaker; // 0xcf
3023  int16 crewmanUsingFreezerRetX; // 0xd1
3024  int16 crewmanUsingFreezerRetY; // 0xd3
3025  int16 crewmanUsingDevice; // 0xd9
3026  int16 itemInNozzle; // 0xdd
3027  char bottleAnimation[10]; // 0xdf
3028 
3029  // love2
3030  byte canisterType; // 0xca
3031  byte cb; // 0xcb
3032  int16 canisterItem; // 0xce
3033  char canisterAnim[10]; // 0xd0
3034  int16 chamberObject; // 0xd2
3035  char chamberInputAnim[10]; // 0xd6
3036  char chamberOutputAnim[10]; // 0xd8
3037 
3038  // love3
3039  byte activeCrewman;
3040 
3041  // love4
3042  bool gaveWaterToRomulans; // 0xca
3043 
3044  // love5
3045  byte numCrewmenReadyToBeamOut; // 0xcb
3046 
3047  // common
3048  byte walkingToDoor;
3049  byte doorOpenCounter;
3050  byte spockAndMccoyReadyToUseCure;
3051  byte cmnXPosToCureSpock;
3052  byte cmnYPosToCureSpock;
3053 
3054  void saveLoadWithSerializer(Common::Serializer &ser) {
3055  // love0
3056  ser.syncAsByte(heardSummaryOfVirus);
3057  uint16 tmp = 0;
3058  uint32 tmp2 = 0;
3059  byte tmp3[10];
3060  ser.syncAsSint16LE(tmp); // consoleCrewman
3061  ser.syncBytes((byte *)tmp3, 10); // consoleAnimation
3062  ser.syncAsSint32LE(tmp2); // consoleSpeaker
3063  ser.syncAsSint32LE(tmp2); // consoleText
3064 
3065  // love1
3066  ser.syncAsSint32LE(dyingSpeaker);
3067  ser.syncAsSint16LE(crewmanUsingFreezerRetX);
3068  ser.syncAsSint16LE(crewmanUsingFreezerRetY);
3069  ser.syncAsSint16LE(crewmanUsingDevice);
3070  ser.syncAsSint16LE(itemInNozzle);
3071  ser.syncBytes((byte *)bottleAnimation, 10);
3072 
3073  // love2
3074  ser.syncAsByte(canisterType);
3075  ser.syncAsByte(cb);
3076  ser.syncAsSint16LE(canisterItem);
3077  ser.syncBytes((byte *)canisterAnim, 10);
3078  ser.syncAsSint16LE(chamberObject);
3079  ser.syncBytes((byte *)chamberInputAnim, 10);
3080  ser.syncBytes((byte *)chamberOutputAnim, 10);
3081 
3082  // love3
3083  ser.syncAsByte(activeCrewman);
3084 
3085  // love4
3086  ser.syncAsByte(gaveWaterToRomulans);
3087 
3088  // love5
3089  ser.syncAsByte(numCrewmenReadyToBeamOut);
3090 
3091  // common
3092  ser.syncAsByte(walkingToDoor);
3093  ser.syncAsByte(doorOpenCounter);
3094  ser.syncAsByte(spockAndMccoyReadyToUseCure);
3095  ser.syncAsByte(cmnXPosToCureSpock);
3096  ser.syncAsByte(cmnYPosToCureSpock);
3097  }
3098  } love;
3099 
3100  struct {
3101  // mudd3
3102  bool suggestedUsingTricorders; // 0xca
3103  bool tricordersUnavailable; // 0xcb
3104 
3105  // mudd4
3106  bool usingLeftConsole; // 0xca
3107  bool kirkUsingRightConsole; // 0xcb
3108 
3109  // common
3110  byte walkingToDoor;
3111 
3112  void saveLoadWithSerializer(Common::Serializer &ser) {
3113  // mudd3
3114  ser.syncAsByte(suggestedUsingTricorders);
3115  ser.syncAsByte(tricordersUnavailable);
3116 
3117  // mudd4
3118  ser.syncAsByte(usingLeftConsole);
3119  ser.syncAsByte(kirkUsingRightConsole);
3120 
3121  // common
3122  ser.syncAsByte(walkingToDoor);
3123  }
3124  } mudd;
3125 
3126  struct {
3127  // feather1
3128  byte snakeInHole; // 0xca
3129  bool scannedSnake; // 0xcb
3130  byte crewEscaped[4]; // 0xcc
3131  byte crewmanClimbingVine;
3132 
3133  // feather2
3134  bool showedSnakeToTlaoxac; // 0xca
3135  bool tlaoxacUnconscious; // 0xcb
3136 
3137  // feather6
3138  bool usedRockOnCrystalsOnce;
3139 
3140  // feather7
3141  bool insultedQuetzecoatl;
3142 
3143  void saveLoadWithSerializer(Common::Serializer &ser) {
3144  // feather1
3145  ser.syncAsByte(snakeInHole);
3146  ser.syncAsByte(scannedSnake);
3147  ser.syncBytes(crewEscaped, 4);
3148  ser.syncAsByte(crewmanClimbingVine);
3149 
3150  // feather2
3151  ser.syncAsByte(showedSnakeToTlaoxac);
3152  ser.syncAsByte(tlaoxacUnconscious);
3153 
3154  // feather6
3155  ser.syncAsByte(usedRockOnCrystalsOnce);
3156 
3157  // feather7
3158  ser.syncAsByte(insultedQuetzecoatl);
3159  }
3160  } feather;
3161 
3162  struct {
3163  // trial2
3164  byte globBeingShot;
3165  bool phaserOnKill;
3166 
3167  // trial5
3168  int16 itemToUse; // 0x1386
3169  int16 objectToUse; // 0x1388
3170  int16 hole;
3171 
3172  void saveLoadWithSerializer(Common::Serializer &ser) {
3173  // trial2
3174  ser.syncAsByte(globBeingShot);
3175  ser.syncAsByte(phaserOnKill);
3176 
3177  // trial5
3178  ser.syncAsSint16LE(itemToUse);
3179  ser.syncAsSint16LE(objectToUse);
3180  ser.syncAsSint16LE(hole);
3181  }
3182  } trial;
3183 
3184  struct {
3185  // sins5
3186  byte numCrewmenInPositionForWire; // 0xca
3187  byte numCrewmenReadyToBeamOut; // 0xcb
3188 
3189  void saveLoadWithSerializer(Common::Serializer &ser) {
3190  ser.syncAsByte(numCrewmenInPositionForWire);
3191  ser.syncAsByte(numCrewmenReadyToBeamOut);
3192  }
3193  } sins;
3194 
3195  struct {
3196  // veng1
3197  byte doorOpenCounter; // 0xca
3198 
3199  // veng2
3200  byte numCrewmenReadyToBeamOut; // 0xca
3201 
3202  // veng4
3203  bool usingMedkitOnBrittany;
3204 
3205  // veng6
3206  byte kirkAndSpockReadyToAttachLeftCable; // 0xca
3207  byte kirkAndSpockReadyToAttachRightCable; // 0xcb
3208  byte cableInUse; // 0xcc
3209 
3210  // venga (common)
3211  bool walkingToDoor; // 0xcb (veng1), 0xca (veng4)
3212 
3213  void saveLoadWithSerializer(Common::Serializer &ser) {
3214  // veng1
3215  ser.syncAsByte(doorOpenCounter);
3216 
3217  // veng2
3218  ser.syncAsByte(numCrewmenReadyToBeamOut);
3219 
3220  // veng4
3221  ser.syncAsByte(usingMedkitOnBrittany);
3222 
3223  // veng6
3224  ser.syncAsByte(kirkAndSpockReadyToAttachLeftCable);
3225  ser.syncAsByte(kirkAndSpockReadyToAttachRightCable);
3226  ser.syncAsByte(cableInUse);
3227 
3228  // venga (common)
3229  ser.syncAsByte(walkingToDoor);
3230  }
3231  } veng;
3232 
3233  } _roomVar;
3234 };
3235 
3236 } // End of namespace StarTrek
3237 
3238 #endif
void syncBytes(byte *buf, uint32 size, Version minVersion=0, Version maxVersion=kLastVersion)
Definition: serializer.h:204
Definition: str.h:59
Definition: room.h:67
uint16 getMaxY()
Definition: room.h:81
Definition: console.h:31
Definition: serializer.h:79
Definition: memstream.h:103
Definition: sprite.h:44
Definition: action.h:57
Definition: rect.h:45
Definition: action.h:27
Definition: room.h:47
Definition: awaymission.h:27
Definition: ptr.h:159
Definition: text.h:71
Definition: startrek.h:239
Definition: text.h:79