void NoradDelta::clickInHotspot(const Input &input, const Hotspot *clickedSpot) { switch (clickedSpot->getObjectID()) { case kDelta59RobotHeadSpotID: startExtraSequence(kN59RobotHeadOpens, kExtraCompletedFlag, kFilterNoInput); break; case kDelta60RobotHeadSpotID: startExtraSequence(kN60RobotHeadOpens, kExtraCompletedFlag, kFilterNoInput); break; default: Norad::clickInHotspot(input, clickedSpot); break; } }
void NoradDelta::arriveAt(const RoomID room, const DirectionConstant direction) { if (room != kNorad68) GameState.setNoradRetScanGood(false); Norad::arriveAt(room, direction); FaderMoveSpec loop1Spec, loop2Spec; ExtraTable::Entry entry; switch (room) { case kNorad41: if (direction == kEast && !GameState.getNoradArrivedFromSub()) { GameState.setNoradPlayedGlobeGame(false); GameState.setNoradBeatRobotWithClaw(false); GameState.setNoradBeatRobotWithDoor(false); GameState.setNoradRetScanGood(false); GameState.setScoringExitedSub(true); getExtraEntry(kArriveFromSubChase, entry); loop1Spec.makeTwoKnotFaderSpec(kNoradDeltaMovieScale, 0, 0, entry.movieEnd - entry.movieStart, kNoradWarningVolume); loop1Spec.insertFaderKnot(7320, 0); loop1Spec.insertFaderKnot(7880, kNoradWarningVolume); loop2Spec.makeTwoKnotFaderSpec(kNoradDeltaMovieScale, 0, 0, entry.movieEnd - entry.movieStart, kNoradSuckWindVolume); loop1Spec.insertFaderKnot(7320, 0); loop1Spec.insertFaderKnot(7880, kNoradSuckWindVolume); startExtraSequence(kArriveFromSubChase, kExtraCompletedFlag, kFilterNoInput); startLoop1Fader(loop1Spec); startLoop2Fader(loop2Spec); } break; case kNorad54North: GameState.setScoringSawRobotAt54North(true); break; case kNorad68: if (GameState.getNoradRetScanGood()) openDoor(); break; case kNorad68West: arriveAtNorad68West(); break; case kNorad79West: arriveAtNorad79West(); break; default: break; } }
void TinyTSA::arriveAt(const RoomID room, const DirectionConstant direction) { Neighborhood::arriveAt(room, direction); switch (GameState.getTSAState()) { case kPlayerOnWayToNorad: case kPlayerOnWayToMars: case kPlayerOnWayToWSC: startExtraSequence(kTinyTSA37TimeJumpToPegasus, kExtraCompletedFlag, kFilterNoInput); break; case kPlayerLockedInPegasus: showMainJumpMenu(); break; } }
void NoradDelta::pickedUpItem(Item *item) { switch (item->getObjectID()) { case kShieldBiochip: if (_privateFlags.getFlag(kNoradPrivateGotShieldChipFlag) && _privateFlags.getFlag(kNoradPrivateGotRetScanChipFlag) && _privateFlags.getFlag(kNoradPrivateGotOpticalChipFlag)) { GameState.setNoradFinished(true); if (GameState.getCurrentRoom() == kNorad59West) startExtraSequence(kN59RobotDisappears, kExtraCompletedFlag, kFilterNoInput); else startExtraSequence(kN60RobotDisappears, kExtraCompletedFlag, kFilterNoInput); } break; case kRetinalScanBiochip: if (_privateFlags.getFlag(kNoradPrivateGotShieldChipFlag) && _privateFlags.getFlag(kNoradPrivateGotRetScanChipFlag) && _privateFlags.getFlag(kNoradPrivateGotOpticalChipFlag)) { GameState.setNoradFinished(true); if (GameState.getCurrentRoom() == kNorad59West) startExtraSequence(kN59RobotDisappears, kExtraCompletedFlag, kFilterNoInput); else startExtraSequence(kN60RobotDisappears, kExtraCompletedFlag, kFilterNoInput); } break; case kOpticalBiochip: g_opticalChip->addPoseidon(); GameState.setScoringGotNoradOpMemChip(); if (_privateFlags.getFlag(kNoradPrivateGotShieldChipFlag) && _privateFlags.getFlag(kNoradPrivateGotRetScanChipFlag) && _privateFlags.getFlag(kNoradPrivateGotOpticalChipFlag)) { GameState.setNoradFinished(true); if (GameState.getCurrentRoom() == kNorad59West) startExtraSequence(kN59RobotDisappears, kExtraCompletedFlag, kFilterNoInput); else startExtraSequence(kN60RobotDisappears, kExtraCompletedFlag, kFilterNoInput); } break; } Norad::pickedUpItem(item); }
void NoradDelta::succeedRetinalScan() { startExtraSequence(kNoradDeltaRetinalScanGood, kExtraCompletedFlag, kFilterNoInput); GameState.setNoradRetScanGood(true); GameState.setScoringUsedRetinalChip(true); }
void NoradDelta::failRetinalScan() { startExtraSequence(kNoradDeltaRetinalScanBad, kExtraCompletedFlag, kFilterNoInput); }