aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2017-11-18 17:32:04 -0500
committerPaul Gilbert2017-11-18 17:32:04 -0500
commit62825c5cf8ca353e1210a9d49754501f9f313af9 (patch)
treedd332cd1600f46666e87b7bceb0049df3c89a898
parent33b76cf5d0e10756317cbd09cc0020b2f538a0d3 (diff)
downloadscummvm-rg350-62825c5cf8ca353e1210a9d49754501f9f313af9.tar.gz
scummvm-rg350-62825c5cf8ca353e1210a9d49754501f9f313af9.tar.bz2
scummvm-rg350-62825c5cf8ca353e1210a9d49754501f9f313af9.zip
XEEN: Fix size of quest flags, rename for clarity
-rw-r--r--engines/xeen/combat.cpp2
-rw-r--r--engines/xeen/dialogs_quests.cpp2
-rw-r--r--engines/xeen/party.cpp14
-rw-r--r--engines/xeen/party.h2
-rw-r--r--engines/xeen/scripts.cpp3
5 files changed, 11 insertions, 12 deletions
diff --git a/engines/xeen/combat.cpp b/engines/xeen/combat.cpp
index 38c994e3a3..1c28256778 100644
--- a/engines/xeen/combat.cpp
+++ b/engines/xeen/combat.cpp
@@ -1480,7 +1480,7 @@ void Combat::attack2(int damage, RangeType rangeType) {
party._gameFlags[0][11] = true;
if (_monster2Attack == 8 && party._mazeId == 78) {
party._gameFlags[0][60] = true;
- party._quests[0][23] = false;
+ party._questFlags[0][23] = false;
for (uint idx = 0; idx < party._activeParty.size(); ++idx)
party._activeParty[idx].setAward(42, true);
diff --git a/engines/xeen/dialogs_quests.cpp b/engines/xeen/dialogs_quests.cpp
index 51a5d523d8..0ca9f9d4b5 100644
--- a/engines/xeen/dialogs_quests.cpp
+++ b/engines/xeen/dialogs_quests.cpp
@@ -121,7 +121,7 @@ void Quests::execute() {
count = 0;
headerShown = false;
for (int idx = 0; idx < TOTAL_QUEST_FLAGS; ++idx) {
- if (party._quests[idx]) {
+ if (party._questFlags[(idx + 1) / 30][(idx + 1) % 30]) {
if (!count && !headerShown && idx < 29) {
lines[count++] = Res.CLOUDS_OF_XEEN_LINE;
}
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 25a7c51e94..15e7b5fda6 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -115,8 +115,8 @@ Party::Party(XeenEngine *vm) {
Common::fill(&_gameFlags[0][0], &_gameFlags[0][256], false);
Common::fill(&_gameFlags[1][0], &_gameFlags[1][256], false);
Common::fill(&_worldFlags[0], &_worldFlags[128], false);
- Common::fill(&_quests[0][0], &_quests[0][32], false);
- Common::fill(&_quests[1][0], &_quests[1][32], false);
+ Common::fill(&_questFlags[0][0], &_questFlags[0][30], false);
+ Common::fill(&_questFlags[1][0], &_questFlags[1][30], false);
Common::fill(&_questItems[0], &_questItems[85], 0);
for (int i = 0; i < TOTAL_CHARACTERS; ++i)
@@ -209,8 +209,8 @@ void Party::synchronize(Common::Serializer &s) {
SavesManager::syncBitFlags(s, &_gameFlags[0][0], &_gameFlags[0][256]);
SavesManager::syncBitFlags(s, &_gameFlags[1][0], &_gameFlags[1][256]);
SavesManager::syncBitFlags(s, &_worldFlags[0], &_worldFlags[128]);
- SavesManager::syncBitFlags(s, &_quests[0][0], &_quests[0][32]);
- SavesManager::syncBitFlags(s, &_quests[1][0], &_quests[1][32]);
+ SavesManager::syncBitFlags(s, &_questFlags[0][0], &_questFlags[0][30]);
+ SavesManager::syncBitFlags(s, &_questFlags[1][0], &_questFlags[1][30]);
for (int i = 0; i < 85; ++i)
s.syncAsByte(_questItems[i]);
@@ -1002,7 +1002,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
_worldFlags[takeVal] = false;
break;
case 104:
- _quests[files._isDarkCc][takeVal] = false;
+ _questFlags[files._isDarkCc][takeVal] = false;
break;
case 107:
_characterFlags[ps._rosterId][takeVal] = false;
@@ -1376,8 +1376,8 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
_worldFlags[takeVal] = true;
break;
case 104:
- assert(giveVal < 32);
- _quests[files._isDarkCc][giveVal] = true;
+ assert(giveVal < 30);
+ _questFlags[files._isDarkCc][giveVal] = true;
break;
case 107:
assert(takeVal < 24);
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index a8eeb09e9c..55e18fc256 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -145,7 +145,7 @@ public:
bool _rested;
bool _gameFlags[2][256];
bool _worldFlags[128];
- bool _quests[2][32];
+ bool _questFlags[2][30];
int _questItems[TOTAL_QUEST_ITEMS];
bool _characterFlags[30][24];
public:
diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp
index a5984e3373..48b58ddcad 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -1688,8 +1688,7 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
break;
case 104:
// Get value of quest flag
- v = (_vm->_files->_isDarkCc ? party._quests[1][mask - 2] :
- party._quests[0][mask]) ? mask : 0xffffffff;
+ v = party._questFlags[_vm->_files->_isDarkCc][mask] ? mask : 0xffffffff;
break;
case 105:
// Test number of Megacredits in party. Only used by King's Engineer in Castle Burlock