void Stoneship::o_generatorStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generator stop", op); _batteryCharging = false; if (_state.generatorDuration) { // Clip battery power if (_state.generatorDuration > 600000) _state.generatorDuration = 600000; // Start depleting power _state.generatorDepletionTime = _vm->_system->getMillis() + _state.generatorDuration; _state.generatorPowerAvailable = 1; _batteryDepleting = true; _batteryNextTime = _vm->_system->getMillis() + 60000; } // Pause handle movie MystResourceType11 *handle = static_cast<MystResourceType11 *>(_invokingResource); MystResourceType6 *movie = static_cast<MystResourceType6 *>(handle->getSubResource(0)); movie->pauseMovie(true); uint16 soundId = handle->getList3(0); if (soundId) _vm->_sound->replaceSoundMyst(soundId); }
void Mechanical::o_birdCrankStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Mechanical bird crank stop", op); MystResourceType11 *crank = static_cast<MystResourceType11 *>(_invokingResource); MystResourceType6 *crankMovie = static_cast<MystResourceType6 *>(crank->getSubResource(0)); crankMovie->pauseMovie(true); uint16 crankSoundId = crank->getList2(1); _vm->_sound->replaceSoundMyst(crankSoundId); _birdSingEndTime = 2 * _vm->_system->getMillis() - _birdCrankStartTime; _birdSinging = true; _bird->playMovie(); }