HYPNO: fixed video sequence at the end of level c33 in boyz

This commit is contained in:
neuromancer 2022-06-19 23:03:47 +02:00
parent ea7a15a2c4
commit 427a093b85
3 changed files with 19 additions and 5 deletions

View File

@ -508,7 +508,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
} else if (!it->video && it->bodyFrames.size() > 0) {
uint32 frame = _background->decoder->getCurFrame();
uint32 bodyLastFrame = it->bodyFrames[it->bodyFrames.size() - 1].lastFrame();
if (frame > it->startFrame && frame - it->startFrame >= bodyLastFrame - 3)
if (frame > it->startFrame && frame - it->startFrame >= bodyLastFrame)
if (!it->destroyed) {
incTargetsMissed();
missedTarget(it, arc);

View File

@ -112,7 +112,12 @@ void BoyzEngine::runAfterArcade(ArcadeShooting *arc) {
}
return;
} else {
if (_levelId == 42) {
if (_levelId == 33 && checkArcadeObjectives()) {
MVideo video("c3/c33a02s.smk", Common::Point(0, 0), false, true, false);
runIntro(video);
defaultCursor();
waitForUserClick(1);
} else if (_levelId == 42) {
disableCursor();
MVideo video("c4/c4bro8s.smk", Common::Point(0, 0), false, true, false);
runIntro(video);
@ -589,6 +594,9 @@ bool BoyzEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, bool
return false;
}
// Not really killed, but counted as objective
_objKillsCount[_objIdx] = _objKillsCount[_objIdx] + _shoots[i].objKillsCount;
if (!_shoots[i].additionalVideo.empty()) {
incFriendliesEncountered();
incInfoReceived();
@ -627,8 +635,10 @@ bool BoyzEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, bool
incInfoReceived();
_background->decoder->forceSeekToFrame(_shoots[i].interactionFrame);
_masks->decoder->forceSeekToFrame(_shoots[i].interactionFrame);
_additionalVideo = new MVideo(arc->missBoss2Video, Common::Point(0, 0), true, false, false);
playVideo(*_additionalVideo);
if (!arc->missBoss2Video.empty()) {
_additionalVideo = new MVideo(arc->missBoss2Video, Common::Point(0, 0), true, false, false);
playVideo(*_additionalVideo);
}
//_shoots[i].lastFrame = _background->decoder->getFrameCount();
_shoots[i].destroyed = true;
_shootsDestroyed[_shoots[i].name] = true;

View File

@ -241,9 +241,13 @@ void BoyzEngine::loadAssets() {
loadArcadeLevel("c31.mi_", "<check_c3>", "<retry_menu>", "");
loadArcadeLevel("c32.mi_", "<check_c3>", "<retry_menu>", "");
loadArcadeLevel("c33.mi_", "<check_c3>", "<retry_menu>", "");
// This is manually implemented, if objectives are completed
ArcadeShooting *ar = (ArcadeShooting *) _levels["c33.mi_"];
ar->nextLevelVideo.clear();
loadArcadeLevel("c34.mi_", "<check_c3>", "<retry_menu>", "");
loadArcadeLevel("c35.mi_", "<check_ho>", "<select_c3>", "");
ArcadeShooting *ar = (ArcadeShooting *) _levels["c35.mi_"];
ar = (ArcadeShooting *) _levels["c35.mi_"];
ar->backgroundVideo = ""; // This will be manually populated
loadArcadeLevel("c351.mi_", "<check_ho>", "<retry_menu>", "");