[Scummvm-git-logs] scummvm master -> 7a991216f66a7f722941903006f457ee3dd64677
neuromancer
noreply at scummvm.org
Sun Dec 19 18:49:49 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
7a991216f6 HYPNO: implemented fuse puzzle in hard mode and fixed more scenes in spider
Commit: 7a991216f66a7f722941903006f457ee3dd64677
https://github.com/scummvm/scummvm/commit/7a991216f66a7f722941903006f457ee3dd64677
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-12-19T19:49:18+01:00
Commit Message:
HYPNO: implemented fuse puzzle in hard mode and fixed more scenes in spider
Changed paths:
engines/hypno/hypno.h
engines/hypno/scene.cpp
engines/hypno/spider/hard.cpp
engines/hypno/spider/spider.cpp
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index f8ebf20ddc..013423aed5 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -300,6 +300,10 @@ private:
void runNote(Code *code);
void runFusePanel(Code *code);
void runRecept(Code *code);
+ void runOffice(Code *code);
+
+ bool isFuseRust = true;
+ bool isFuseUnreadable = false;
};
class BoyzEngine : public HypnoEngine {
diff --git a/engines/hypno/scene.cpp b/engines/hypno/scene.cpp
index f73f284f3b..b4b53bff28 100644
--- a/engines/hypno/scene.cpp
+++ b/engines/hypno/scene.cpp
@@ -90,6 +90,7 @@ void HypnoEngine::resetSceneState() {
_sceneState[sceneVariables[i]] = 0;
i++;
}
+ _intros.clear();
}
bool HypnoEngine::checkSceneCompleted() {
@@ -472,7 +473,6 @@ void HypnoEngine::runScene(Scene *scene) {
_nextParallelVideoToPlay.clear();
_nextSequentialVideoToPlay.clear();
_escapeSequentialVideoToPlay.clear();
- _intros.clear();
}
void HypnoEngine::showConversation() { error("Not implemented"); }
diff --git a/engines/hypno/spider/hard.cpp b/engines/hypno/spider/hard.cpp
index 3a739cadfe..a79600e3f5 100644
--- a/engines/hypno/spider/hard.cpp
+++ b/engines/hypno/spider/hard.cpp
@@ -35,6 +35,8 @@ void SpiderEngine::runCode(Code *code) {
runFusePanel(code);
else if (code->name == "<recept>")
runRecept(code);
+ else if (code->name == "<office>")
+ runOffice(code);
else if (code->name == "<credits>")
showCredits();
else
@@ -338,6 +340,17 @@ void SpiderEngine::runRecept(Code *code) {
_nextLevel = "recept.mi_";
}
+void SpiderEngine::runOffice(Code *code) {
+
+ if (!_sceneState["GS_SWITCH6"]) { // lights off
+ MVideo v("spider/cine/toodark.smk", Common::Point(0, 0), false, false, false);
+ runIntro(v);
+ _nextLevel = "recept.mi_";
+ return;
+ }
+ _nextLevel = "<alveroff_selector>";
+}
+
void SpiderEngine::runFusePanel(Code *code) {
changeScreenMode("640x480");
Common::Point mousePos;
@@ -347,10 +360,27 @@ void SpiderEngine::runFusePanel(Code *code) {
Common::Rect fuses(363, 52, 598, 408);
Common::Rect back(0, 446, 640, 480);
- //MVideo *v;
- loadImage("spider/int_alof/fuse.smk", 0, 0, false);
+ if (_sceneState["GS_PUZZLELEVEL"]) { // hard
+ if (isFuseRust) {
+ Common::String intro = "spider/cine/spv029s.smk";
+ if (!_intros.contains(intro)) {
+ MVideo v(intro, Common::Point(0, 0), false, false, false);
+ runIntro(v);
+ _intros[intro] = true;
+ }
+
+ loadImage("spider/int_alof/fuserust.smk", 0, 0, false);
+ } else if (isFuseUnreadable)
+ loadImage("spider/int_alof/fuseclea.smk", 0, 0, false);
+ else
+ loadImage("spider/int_alof/fuseread.smk", 0, 0, false);
+
+ } else {
+ isFuseRust = false;
+ isFuseUnreadable = false;
+ loadImage("spider/int_alof/fuse.smk", 0, 0, false);
+ }
- //playVideo(*v);
while (!shouldQuit()) {
while (g_system->getEventManager()->pollEvent(event)) {
@@ -363,6 +393,28 @@ void SpiderEngine::runFusePanel(Code *code) {
break;
case Common::EVENT_LBUTTONDOWN:
+ if (back.contains(mousePos)) {
+ _nextLevel = code->levelIfWin;
+ return;
+ }
+
+ if (isFuseRust && _sceneState["GS_SWITCH8"]) {
+ MVideo v("spider/cine/spv031s.smk", Common::Point(0, 0), false, false, false);
+ runIntro(v);
+ isFuseRust = false;
+ isFuseUnreadable = true;
+ loadImage("spider/int_alof/fuseclea.smk", 0, 0, false);
+ } else if (isFuseUnreadable && _sceneState["GS_SWITCH9"]) {
+ MVideo v("spider/cine/spv032s.smk", Common::Point(0, 0), false, false, false);
+ runIntro(v);
+ isFuseRust = false;
+ isFuseUnreadable = false;
+ loadImage("spider/int_alof/fuseread.smk", 0, 0, false);
+ }
+
+ if (isFuseRust || isFuseUnreadable)
+ break;
+
if (fuses.contains(mousePos)) {
int x = (mousePos.x - 364) / (235 / 2.);
int y = (mousePos.y - 54) / (355 / 10.);
@@ -372,15 +424,16 @@ void SpiderEngine::runFusePanel(Code *code) {
_sceneState["GS_SWITCH1"] = !_sceneState["GS_SWITCH1"];
} else if (s == 2) {
_sceneState["GS_SWITCH2"] = !_sceneState["GS_SWITCH2"];
+ } else if (s == 18) {
+ _sceneState["GS_SWITCH3"] = !_sceneState["GS_SWITCH3"];
} else if (s == 12) {
_sceneState["GS_SWITCH4"] = !_sceneState["GS_SWITCH4"];
} else if (s == 13) {
_sceneState["GS_SWITCH5"] = !_sceneState["GS_SWITCH5"];
+ } else if (s == 10) {
+ _sceneState["GS_SWITCH6"] = !_sceneState["GS_SWITCH6"];
}
- } else if (back.contains(mousePos)) {
- _nextLevel = code->levelIfWin;
- return;
}
break;
diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 4c6983db13..799c2e7d4c 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -156,12 +156,12 @@ void SpiderEngine::loadAssetsFullGame() {
sc = (Scene *) _levels["int_roof.mi_"];
cl = new ChangeLevel("<recept>");
sc->hots[1].actions.push_back(cl);
- cl = new ChangeLevel("<boil_selector>");
+ cl = new ChangeLevel("<boil_selector_1>");
sc->hots[2].actions.push_back(cl);
Overlay *over = (Overlay*) sc->hots[0].actions[2];
over->path = "int_alof\\ROOFB1.SMK"; // seems to be a bug?
- loadSceneLevel("alofintr.mi_", "<boil_selector>", prefix);
+ loadSceneLevel("alofintr.mi_", "<boil_selector_1>", prefix);
sc = (Scene *) _levels["alofintr.mi_"];
sc->intros.push_back("cine/swc002as.smk");
// This is necessary, for some reason
@@ -175,10 +175,15 @@ void SpiderEngine::loadAssetsFullGame() {
sc->hots[2].actions.push_back(gl);
gl = new Global("GS_SWITCH5", "TURNON"); // Side B door
sc->hots[2].actions.push_back(gl);
-
- Transition *boil_selector = new Transition("boiler.mi_", "boilhard.mi_");
- _levels["<boil_selector>"] = boil_selector;
- _levels["<boil_selector>"]->intros.push_back("spider/cine/leapdown.smk");
+ gl = new Global("GS_SWITCH6", "TURNON"); // Office light
+ sc->hots[2].actions.push_back(gl);
+
+ Transition *boil_selector_1 = new Transition("boiler.mi_", "boilhard.mi_");
+ _levels["<boil_selector_1>"] = boil_selector_1;
+ _levels["<boil_selector_1>"]->intros.push_back("spider/cine/leapdown.smk");
+
+ Transition *boil_selector_2 = new Transition("boiler.mi_", "boilhard.mi_");
+ _levels["<boil_selector_2>"] = boil_selector_2;
loadSceneLevel("boiler.mi_", "", prefix);
sc = (Scene *) _levels["boiler.mi_"];
@@ -187,8 +192,12 @@ void SpiderEngine::loadAssetsFullGame() {
Code *fuse_panel = new Code();
fuse_panel->name = "<fuse_panel>";
- fuse_panel->levelIfWin = "boiler.mi_";
+ fuse_panel->levelIfWin = "<boil_selector_2>";
_levels["<fuse_panel>"] = fuse_panel;
+
+ Code *office = new Code();
+ office->name = "<office>";
+ _levels["<office>"] = office;
cl = new ChangeLevel("<back_roof_1>");
sc->hots[2].actions.push_back(cl);
@@ -205,9 +214,12 @@ void SpiderEngine::loadAssetsFullGame() {
over = (Overlay*) sc->hots[0].actions[2];
over->path = "int_alof\\BOILB1.SMK"; // seems to be a bug?
- cl = new ChangeLevel("int_roof.mi_");
+ cl = new ChangeLevel("<back_roof_1>");
sc->hots[2].actions.push_back(cl);
+ cl = new ChangeLevel("<fuse_panel>");
+ sc->hots[3].actions.push_back(cl);
+
loadSceneLevel("alverofh.mi_", "", prefix);
loadSceneLevel("alveroff.mi_", "", prefix);
Transition *alveroff_selector = new Transition("alveroff.mi_", "alverofh.mi_");
@@ -226,6 +238,16 @@ void SpiderEngine::loadAssetsFullGame() {
cl = new ChangeLevel("<back_roof_2>");
sc->hots[2].actions.push_back(cl);
+ cl = new ChangeLevel("<door_a>");
+ sc->hots[3].actions.push_back(cl);
+
+ cl = new ChangeLevel("<office>");
+ sc->hots[4].actions.push_back(cl);
+
+ Transition *door_a = new Transition("<over_apt_5>");
+ door_a->intros.push_back("spider/cine/iobs002s.smk");
+ _levels["<door_a>"] = door_a;
+
Transition *back_roof_2 = new Transition("int_roof.mi_");
_levels["<back_roof_2>"] = back_roof_2;
_levels["<back_roof_2>"]->intros.push_back("spider/cine/recpout.smk");
@@ -261,16 +283,6 @@ void SpiderEngine::loadAssetsFullGame() {
loadArcadeLevel("c3h.mi_", "", prefix);
loadSceneLevel("movie2.mi_", "", prefix);
- //_levels["buspuz.mi_"]->intros.push_back("cine/ppv001s.smk");
-
- // Transition *bus_transition = new Transition("buspuz.mi_");
- // bankEasy->intros.push_back("spider/cine/dia002s.smk");
- // _levels["<bus_transition>"] = bankEasy;
-
- // Transition *bankHard = new Transition();
- // bankHard->level = "buspuz.mi_";
- // bankHard->intros.push_back("spider/cine/bals003s.smk");
- // _levels["<bank_hard>"] = bankHard;
// Easy arcade levels
@@ -376,8 +388,8 @@ void SpiderEngine::loadAssetsFullGame() {
Transition *over_apt_5 = new Transition("tryagain.mi_");
over_apt_5->intros.push_back("spider/cine/apts05as.smk");
_levels["<over_apt_5>"] = over_apt_5;
-
- _nextLevel = "decide3.mi_";
+
+ _nextLevel = "<start>";
}
void SpiderEngine::loadAssetsDemo() {
More information about the Scummvm-git-logs
mailing list