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