aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agos/agos.h7
-rw-r--r--engines/agos/script_e1.cpp85
-rw-r--r--engines/agos/script_e2.cpp48
-rw-r--r--engines/agos/string.cpp97
4 files changed, 126 insertions, 111 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 984a3938e3..8264d8caa3 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -830,11 +830,6 @@ protected:
uint16 getBoxSize();
uint16 checkFit(char *Ptr, int width, int lines);
- void printMonsterDamage();
- void printPlayerDamage();
- void printMonsterHit();
- void printPlayerHit();
- void printStats();
void writeChar(WindowBlock *window, int x, int y, int offs, int val);
byte *allocBlock(uint32 size);
@@ -1145,7 +1140,7 @@ public:
void oe2_ifDoorOpen();
void oe2_ifDoorClosed();
void oe2_ifDoorLocked();
- void oe2_unk161();
+ void oe2_printStats();
void oe2_unk162();
void oe2_setSuperRoom();
void oe2_getSuperRoom();
diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp
index 76cacca453..b83e72ca7a 100644
--- a/engines/agos/script_e1.cpp
+++ b/engines/agos/script_e1.cpp
@@ -571,27 +571,102 @@ void AGOSEngine::oe1_zoneDisk() {
void AGOSEngine::oe1_printStats() {
// 270: print stats
- printStats();
+ WindowBlock *window = _dummyWindow;
+ int val;
+
+ window->flags = 1;
+
+ mouseOff();
+
+ // Strength
+ val = _variableArray[0];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 5, 133, 6, val);
+
+ // Resolution
+ val = _variableArray[1];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 11, 133, 6, val);
+
+ // Dexterity
+ val = _variableArray[2];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 18, 133, 0, val);
+
+ // Skill
+ val = _variableArray[3];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 24, 133, 0, val);
+
+ // Life
+ val = _variableArray[5];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 30, 133, 2, val);
+
+ // Experience
+ val = _variableArray[6];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 36, 133, 4, val);
+
+ mouseOn();
}
void AGOSEngine::oe1_printPlayerDamage() {
// 272: print player damage
- printStats();
+ WindowBlock *window = _dummyWindow;
+ window->flags = 1;
+
+ mouseOff();
+ writeChar(window, 36, 38, 2, _variableArray[441]);
+ mouseOn();
}
void AGOSEngine::oe1_printMonsterDamage() {
// 273: print monster damage
- printStats();
+ WindowBlock *window = _dummyWindow;
+ window->flags = 1;
+
+ mouseOff();
+ writeChar(window, 36, 88, 2, _variableArray[442]);
+ mouseOn();
}
void AGOSEngine::oe1_printPlayerHit() {
// 277: print player hit
- printStats();
+ WindowBlock *window = _dummyWindow;
+ window->flags = 1;
+
+ mouseOff();
+ writeChar(window, 3, 166, 0, _variableArray[414]);
+ mouseOn();
}
void AGOSEngine::oe1_printMonsterHit() {
// 278: print monster hit
- printStats();
+ WindowBlock *window = _dummyWindow;
+ window->flags = 1;
+
+ mouseOff();
+ writeChar(window, 35, 166, 4, _variableArray[415]);
+ mouseOn();
}
} // End of namespace AGOS
diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp
index 7f5975aabd..d75cfe75bd 100644
--- a/engines/agos/script_e2.cpp
+++ b/engines/agos/script_e2.cpp
@@ -62,7 +62,7 @@ void AGOSEngine::setupElvira2Opcodes(OpcodeProc *op) {
op[148] = &AGOSEngine::oe2_ifDoorOpen;
op[149] = &AGOSEngine::oe2_ifDoorClosed;
op[150] = &AGOSEngine::oe2_ifDoorLocked;
- op[161] = &AGOSEngine::oe2_unk161;
+ op[161] = &AGOSEngine::oe2_printStats;
op[162] = &AGOSEngine::oe2_unk162;
op[165] = &AGOSEngine::oe2_setSuperRoom;
op[166] = &AGOSEngine::oe2_getSuperRoom;
@@ -149,9 +149,49 @@ void AGOSEngine::oe2_ifDoorLocked() {
setScriptCondition(getDoorState(i, d) == 3);
}
-void AGOSEngine::oe2_unk161() {
- // 161:
- debug(0, "oe2_unk161: stub");
+void AGOSEngine::oe2_printStats() {
+ // 161: print stats
+ WindowBlock *window = _dummyWindow;
+ int val;
+
+ window->flags = 1;
+
+ mouseOff();
+
+ // Level
+ val = _variableArray[20];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 10, 134, 0, val);
+
+ // HP
+ val = _variableArray[22];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 16, 134, 6, val);
+
+ // PP
+ val = _variableArray[23];
+ if (val < -99)
+ val = -99;
+ if (val > 99)
+ val = 99;
+ writeChar(window, 23, 134, 4, val);
+
+ // Experience
+ val = _variableArray[21];
+ if (val < -99)
+ val = -99;
+ if (val > 9999)
+ val = 9999;
+ writeChar(window, 30, 134, 6, val / 100);
+ writeChar(window, 32, 134, 2, val);
+
+ mouseOn();
}
void AGOSEngine::oe2_unk162() {
diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp
index 44ed983bbb..c75948e216 100644
--- a/engines/agos/string.cpp
+++ b/engines/agos/string.cpp
@@ -742,102 +742,7 @@ void AGOSEngine::printBox() {
changeWindow(0);
}
-// String code for statistics in Elvira 1
-void AGOSEngine::printMonsterDamage() {
- WindowBlock *window = _dummyWindow;
- window->flags = 1;
-
- mouseOff();
- writeChar(window, 36, 88, 2, _variableArray[442]);
- mouseOn();
-}
-
-void AGOSEngine::printPlayerDamage() {
- WindowBlock *window = _dummyWindow;
- window->flags = 1;
-
- mouseOff();
- writeChar(window, 36, 38, 2, _variableArray[441]);
- mouseOn();
-}
-
-void AGOSEngine::printMonsterHit() {
- WindowBlock *window = _dummyWindow;
- window->flags = 1;
-
- mouseOff();
- writeChar(window, 35, 166, 4, _variableArray[415]);
- mouseOn();
-}
-
-void AGOSEngine::printPlayerHit() {
- WindowBlock *window = _dummyWindow;
- window->flags = 1;
-
- mouseOff();
- writeChar(window, 3, 166, 0, _variableArray[414]);
- mouseOn();
-}
-
-void AGOSEngine::printStats() {
- WindowBlock *window = _dummyWindow;
- int val;
-
- window->flags = 1;
-
- mouseOff();
-
- // Strength
- val = _variableArray[0];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 5, 133, 6, val);
-
- // Resolution
- val = _variableArray[1];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 11, 133, 6, val);
-
- // Dexterity
- val = _variableArray[2];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 18, 133, 0, val);
-
- // Skill
- val = _variableArray[3];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 24, 133, 0, val);
-
- // Life
- val = _variableArray[5];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 30, 133, 2, val);
-
- // Experience
- val = _variableArray[6];
- if (val < -99)
- val = -99;
- if (val > 99)
- val = 99;
- writeChar(window, 36, 133, 4, val);
-
- mouseOn();
-}
-
+// String code for statistics in Elvira 1/2
void AGOSEngine::writeChar(WindowBlock *window, int x, int y, int offs, int val) {
int chr;