aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/script_e2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agos/script_e2.cpp')
-rw-r--r--engines/agos/script_e2.cpp101
1 files changed, 58 insertions, 43 deletions
diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp
index 13cb15a8b9..00f0848ed9 100644
--- a/engines/agos/script_e2.cpp
+++ b/engines/agos/script_e2.cpp
@@ -145,7 +145,7 @@ void AGOSEngine_Elvira2::setupOpcodes() {
OPCODE(o_comment),
/* 88 */
OPCODE(o_invalid),
- OPCODE(oe1_loadGame),
+ OPCODE(oe2_loadGame),
OPCODE(o_getParent),
OPCODE(o_getNext),
/* 92 */
@@ -315,6 +315,17 @@ void AGOSEngine_Elvira2::oe2_pObj() {
showMessageFormat("%s\n", (const char *)getStringPtrByID(subObject->objectFlagValue[0])); // Difference
}
+void AGOSEngine_Elvira2::oe2_loadGame() {
+ // 89: load game
+ uint16 stringId = getNextStringID();
+
+ if (!scumm_stricmp(getFileName(GAME_RESTFILE), (const char *)getStringPtrByID(stringId))) {
+ loadGame(getFileName(GAME_RESTFILE), true);
+ } else {
+ loadGame((const char *)getStringPtrByID(stringId));
+ }
+}
+
void AGOSEngine_Elvira2::oe2_drawItem() {
// 113: draw item
Item *i = getNextItemPtr();
@@ -498,48 +509,7 @@ void AGOSEngine_Elvira2::oe2_ink() {
void AGOSEngine_Elvira2::oe2_printStats() {
// 161: print stats
- WindowBlock *window = _dummyWindow;
- int val;
- const uint8 y = (getPlatform() == Common::kPlatformAtariST) ? 131 : 134;
-
- window->flags = 1;
-
- mouseOff();
-
- // Level
- val = _variableArray[20];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 10, y, 0, val);
-
- // PP
- val = _variableArray[22];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 16, y, 6, val);
-
- // HP
- val = _variableArray[23];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 23, y, 4, val);
-
- // Experience
- val = _variableArray[21];
- if (val < -99)
- val = -99;
- if (val > 9999)
- val = 9999;
- writeChar(window, 30, y, 6, val / 100);
- writeChar(window, 32, y, 2, val / 10);
-
- mouseOn();
+ printStats();
}
void AGOSEngine_Elvira2::oe2_setSuperRoom() {
@@ -697,4 +667,49 @@ void AGOSEngine_Elvira2::oe2_b2NotZero() {
setScriptCondition((_bitArrayTwo[bit / 16] & (1 << (bit & 15))) != 0);
}
+void AGOSEngine_Elvira2::printStats() {
+ WindowBlock *window = _dummyWindow;
+ int val;
+ const uint8 y = (getPlatform() == Common::kPlatformAtariST) ? 131 : 134;
+
+ window->flags = 1;
+
+ mouseOff();
+
+ // Level
+ val = _variableArray[20];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 10, y, 0, val);
+
+ // PP
+ val = _variableArray[22];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 16, y, 6, val);
+
+ // HP
+ val = _variableArray[23];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 23, y, 4, val);
+
+ // Experience
+ val = _variableArray[21];
+ if (val < -99)
+ val = -99;
+ if (val > 9999)
+ val = 9999;
+ writeChar(window, 30, y, 6, val / 100);
+ writeChar(window, 32, y, 2, val / 10);
+
+ mouseOn();
+}
+
} // End of namespace AGOS