예제 #1
0
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;
	}
}
예제 #2
0
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;
	}
}
예제 #3
0
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;
	}
}
예제 #4
0
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);
}
예제 #5
0
void NoradDelta::succeedRetinalScan() {
	startExtraSequence(kNoradDeltaRetinalScanGood, kExtraCompletedFlag, kFilterNoInput);
	GameState.setNoradRetScanGood(true);
	GameState.setScoringUsedRetinalChip(true);
}
예제 #6
0
void NoradDelta::failRetinalScan() {
	startExtraSequence(kNoradDeltaRetinalScanBad, kExtraCompletedFlag, kFilterNoInput);
}