[Scummvm-git-logs] scummvm master -> 8d577f491640d8c8589c4b73672c982a46d19089

dreammaster dreammaster at scummvm.org
Fri Apr 20 03:22:05 CEST 2018


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:
8d577f4916 XEEN: Alter quest flag handling to accomodate Swords


Commit: 8d577f491640d8c8589c4b73672c982a46d19089
    https://github.com/scummvm/scummvm/commit/8d577f491640d8c8589c4b73672c982a46d19089
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2018-04-19T21:21:59-04:00

Commit Message:
XEEN: Alter quest flag handling to accomodate Swords

Changed paths:
    engines/xeen/combat.cpp
    engines/xeen/dialogs/dialogs_quests.cpp
    engines/xeen/party.cpp
    engines/xeen/party.h
    engines/xeen/scripts.cpp


diff --git a/engines/xeen/combat.cpp b/engines/xeen/combat.cpp
index f3baca7..0e1dc9a 100644
--- a/engines/xeen/combat.cpp
+++ b/engines/xeen/combat.cpp
@@ -1474,7 +1474,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._questFlags[0][23] = false;
+				party._questFlags[23] = false;
 
 				for (uint idx = 0; idx < party._activeParty.size(); ++idx)
 					party._activeParty[idx].setAward(42, true);
diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index 84c3cd1..e0e9829 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -136,7 +136,7 @@ void Quests::execute() {
 			count = 0;
 			headerShown = false;
 			for (int idx = 0; idx < TOTAL_QUEST_FLAGS; ++idx) {
-				if (party._questFlags[(idx + 1) / 30][(idx + 1) % 30]) {
+				if (party._questFlags[idx + 1]) {
 					if (!count && !headerShown && (_vm->getGameID() == GType_Swords || idx < 29)) {
 						lines[count++] = title1;
 					}
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 321c59b..66d1313 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -245,8 +245,7 @@ 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(&_questFlags[0][0], &_questFlags[0][30], false);
-	Common::fill(&_questFlags[1][0], &_questFlags[1][30], false);
+	Common::fill(&_questFlags[0], &_questFlags[60], false);
 	Common::fill(&_questItems[0], &_questItems[85], 0);
 
 	for (int i = 0; i < TOTAL_CHARACTERS; ++i)
@@ -331,8 +330,7 @@ void Party::synchronize(Common::Serializer &s) {
 	File::syncBitFlags(s, &_gameFlags[0][0], &_gameFlags[0][256]);
 	File::syncBitFlags(s, &_gameFlags[1][0], &_gameFlags[1][256]);
 	File::syncBitFlags(s, &_worldFlags[0], &_worldFlags[128]);
-	File::syncBitFlags(s, &_questFlags[0][0], &_questFlags[0][30]);
-	File::syncBitFlags(s, &_questFlags[1][0], &_questFlags[1][30]);
+	File::syncBitFlags(s, &_questFlags[0], &_questFlags[60]);
 
 	for (int i = 0; i < 85; ++i)
 		s.syncAsByte(_questItems[i]);
@@ -1108,7 +1106,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
 		_worldFlags[takeVal] = false;
 		break;
 	case 104:
-		_questFlags[files._ccNum][takeVal] = false;
+		_questFlags[(_vm->getGameID() == GType_Swords ? 0 : files._ccNum * 30) + takeVal] = false;
 		break;
 	case 107:
 		_characterFlags[ps._rosterId][takeVal] = false;
@@ -1442,7 +1440,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
 		break;
 	case 104:
 		assert(giveVal < 30);
-		_questFlags[files._ccNum][giveVal] = true;
+		_questFlags[(_vm->getGameID() == GType_Swords ? 0 : files._ccNum * 30) + giveVal] = true;
 		break;
 	case 107:
 		assert(giveVal < 24);
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index 3d61424..fde6def 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -220,7 +220,7 @@ public:
 	bool _rested;
 	bool _gameFlags[2][256];
 	bool _worldFlags[128];
-	bool _questFlags[2][30];
+	bool _questFlags[60];
 	int _questItems[TOTAL_QUEST_ITEMS];
 	bool _characterFlags[30][24];
 public:
diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp
index f126a65..8c1f4a0 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -1834,7 +1834,7 @@ bool Scripts::ifProc(int action, uint32 val, int mode, int charIndex) {
 		break;
 	case 104:
 		// Get value of quest flag
-		v = party._questFlags[files._ccNum][val] ? val : 0xffffffff;
+		v = party._questFlags[(_vm->getGameID() == GType_Swords ? 0 : files._ccNum * 30) + val] ? val : 0xffffffff;
 		break;
 	case 105:
 		// Test number of Megacredits in party. Only used by King's Engineer in Castle Burlock





More information about the Scummvm-git-logs mailing list