[Scummvm-cvs-logs] scummvm master -> dbbfca37a2e99ee350a1b70ce8ee9728988b0b85

athrxx athrxx at scummvm.org
Fri Nov 4 21:49:12 CET 2011


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
19458cf03f KYRA: rename script proc and fix some debug messages
99aaf24201 KYRA: fix monster hp in LoL
1527e7b1b4 KYRA: (LOL) minor fix, cleanup and renaming
4f948b3309 KYRA: replace invalid memset call and add a warning
dbbfca37a2 KYRA: add missing (maybe unused) case to LoLEngine::olol_getGlobalVar()


Commit: 19458cf03fdfcf6141da96d6efe9424bd394b39f
    https://github.com/scummvm/scummvm/commit/19458cf03fdfcf6141da96d6efe9424bd394b39f
Author: athrxx (athrxx at scummvm.org)
Date: 2011-11-04T13:46:29-07:00

Commit Message:
KYRA: rename script proc and fix some debug messages

Changed paths:
    engines/kyra/lol.h
    engines/kyra/script_lol.cpp



diff --git a/engines/kyra/lol.h b/engines/kyra/lol.h
index 164f030..b2039b3 100644
--- a/engines/kyra/lol.h
+++ b/engines/kyra/lol.h
@@ -759,7 +759,7 @@ private:
 	int olol_distanceAttack(EMCState *script);
 	int olol_removeCharacterEffects(EMCState *script);
 	int olol_checkInventoryFull(EMCState *script);
-	int olol_objectLeavesLevel(EMCState *script);
+	int olol_moveBlockObjects(EMCState *script);
 	int olol_addSpellToScroll(EMCState *script);
 	int olol_playDialogueText(EMCState *script);
 	int olol_playDialogueTalkText(EMCState *script);
diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp
index b4b8f00..c0a99f9 100644
--- a/engines/kyra/script_lol.cpp
+++ b/engines/kyra/script_lol.cpp
@@ -286,13 +286,13 @@ int LoLEngine::olol_makeItem(EMCState *script) {
 }
 
 int LoLEngine::olol_placeMoveLevelItem(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setItemProperty(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_placeMoveLevelItem(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
 	placeMoveLevelItem(stackPos(0), stackPos(1), stackPos(2), stackPos(3) & 0xff, stackPos(4) & 0xff, stackPos(5));
 	return 1;
 }
 
 int LoLEngine::olol_createLevelItem(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setItemProperty(%p) (%d, %d, %d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_createLevelItem(%p) (%d, %d, %d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
 	int item = makeItem(stackPos(0), stackPos(1), stackPos(2));
 	if (item == -1)
 		return item;
@@ -1538,12 +1538,12 @@ int LoLEngine::olol_checkInventoryFull(EMCState *script) {
 	return 1;
 }
 
-int LoLEngine::olol_objectLeavesLevel(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_objectLeavesLevel(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
+int LoLEngine::olol_moveBlockObjects(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_moveBlockObjects(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
 	int o = _levelBlockProperties[stackPos(0)].assignedObjects;
 	int res = 0;
 	int level = stackPos(2);
-	int block = stackPos(1);
+	int destBlock = stackPos(1);
 	int runScript = stackPos(4);
 	int includeMonsters = stackPos(3);
 	int includeItems = stackPos(5);
@@ -1551,9 +1551,9 @@ int LoLEngine::olol_objectLeavesLevel(EMCState *script) {
 	// WORKAROUND for script bug
 	// Items would vanish when thrown towards the stairs
 	// in white tower level 3.
-	if (_currentLevel == 21 && level == 21 && block == 0x3e0) {
+	if (_currentLevel == 21 && level == 21 && destBlock == 0x3e0) {
 		level = 20;
-		block = 0x0247;
+		destBlock = 0x0247;
 	}
 
 	while (o) {
@@ -1577,15 +1577,13 @@ int LoLEngine::olol_objectLeavesLevel(EMCState *script) {
 			if (!(_itemsInPlay[l].shpCurFrame_flg & 0x4000) || !includeItems)
 				continue;
 
-			placeMoveLevelItem(l, level, block, _itemsInPlay[l].x & 0xff, _itemsInPlay[l].y & 0xff, _itemsInPlay[l].flyingHeight);
+			placeMoveLevelItem(l, level, destBlock, _itemsInPlay[l].x & 0xff, _itemsInPlay[l].y & 0xff, _itemsInPlay[l].flyingHeight);
+			res = 1;
 
-			if (!runScript || level != _currentLevel) {
-				res = 1;
-				continue;
-			}
+			if (!runScript || level != _currentLevel)				
+				continue;			
 
-			runLevelScriptCustom(block, 0x80, -1, l, 0, 0);
-			res = 1;
+			runLevelScriptCustom(destBlock, 0x80, -1, l, 0, 0);
 		}
 	}
 
@@ -2881,7 +2879,7 @@ void LoLEngine::setupOpcodeTable() {
 
 	// 0x74
 	Opcode(olol_checkInventoryFull);
-	Opcode(olol_objectLeavesLevel);
+	Opcode(olol_moveBlockObjects);
 	OpcodeUnImpl();
 	OpcodeUnImpl();
 


Commit: 99aaf242016f02b2aa0f65469e3f79139424e4d4
    https://github.com/scummvm/scummvm/commit/99aaf242016f02b2aa0f65469e3f79139424e4d4
Author: athrxx (athrxx at scummvm.org)
Date: 2011-11-04T13:46:31-07:00

Commit Message:
KYRA: fix monster hp in LoL

Changed paths:
    engines/kyra/script_lol.cpp



diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp
index c0a99f9..91fada9 100644
--- a/engines/kyra/script_lol.cpp
+++ b/engines/kyra/script_lol.cpp
@@ -842,7 +842,7 @@ int LoLEngine::olol_initMonster(EMCState *script) {
 		l->direction = l->facing << 1;
 		l->hitPoints = (l->properties->hitPoints * _monsterModifiers[_monsterDifficulty]) >> 8;
 
-		if (_currentLevel == 12 && l->type == 2)
+		if (_currentLevel != 12 || l->type != 2)
 			l->hitPoints = (l->hitPoints * (rollDice(1, 128) + 192)) >> 8;
 
 		l->numDistAttacks = l->properties->numDistAttacks;
@@ -859,7 +859,7 @@ int LoLEngine::olol_initMonster(EMCState *script) {
 		l->destDirection = l->direction;
 
 		for (int ii = 0; ii < 4; ii++)
-			l->equipmentShapes[ii] = stackPos(7 + ii);
+			l->equipmentShapes[ii] = stackPos(7 + ii) & 0xff;
 
 		checkSceneUpdateNeed(l->block);
 		return i;


Commit: 1527e7b1b437792b15bd64f3dee0d5c31f55e1ad
    https://github.com/scummvm/scummvm/commit/1527e7b1b437792b15bd64f3dee0d5c31f55e1ad
Author: athrxx (athrxx at scummvm.org)
Date: 2011-11-04T13:46:32-07:00

Commit Message:
KYRA: (LOL) minor fix, cleanup and renaming

Changed paths:
    engines/kyra/items_lol.cpp
    engines/kyra/lol.h
    engines/kyra/script_lol.cpp



diff --git a/engines/kyra/items_lol.cpp b/engines/kyra/items_lol.cpp
index 7e9ae43..0d6e99a 100644
--- a/engines/kyra/items_lol.cpp
+++ b/engines/kyra/items_lol.cpp
@@ -127,14 +127,8 @@ Item LoLEngine::makeItem(int itemType, int curFrame, int flags) {
 			continue;
 
 		bool t = false;
-		Item ii = i;
-		while (ii && !t) {
-			t = testUnkItemFlags(ii);
-			if (t)
-				break;
-			else
-				ii = _itemsInPlay[ii - 1].nextAssignedObject;
-		}
+		for (Item ii = i; ii && !t; ii = _itemsInPlay[ii].nextAssignedObject)
+			t = isItemMoveable(ii);
 
 		if (t) {
 			cnt = diff;
@@ -144,24 +138,20 @@ Item LoLEngine::makeItem(int itemType, int curFrame, int flags) {
 
 	Item slot = i;
 	if (cnt) {
-		slot = r;
-		if (testUnkItemFlags(r)) {
+		slot = 0;
+		if (isItemMoveable(r)) {
 			if (_itemsInPlay[r].nextAssignedObject)
 				_itemsInPlay[_itemsInPlay[r].nextAssignedObject].level = _itemsInPlay[r].level;
 			deleteItem(r);
 			slot = r;
 		} else {
-			uint16 ii = _itemsInPlay[slot].nextAssignedObject;
-			while (ii) {
-				if (testUnkItemFlags(ii)) {
-					_itemsInPlay[slot].nextAssignedObject = _itemsInPlay[ii].nextAssignedObject;
-					deleteItem(ii);
-					slot = ii;
-					break;
-				} else {
-					slot = ii;
-				}
-				ii = _itemsInPlay[slot].nextAssignedObject;
+			for (uint16 ii = _itemsInPlay[r].nextAssignedObject; ii; ii = _itemsInPlay[ii].nextAssignedObject) {
+				if (!isItemMoveable(ii))
+					continue;
+				_itemsInPlay[r].nextAssignedObject = _itemsInPlay[ii].nextAssignedObject;
+				deleteItem(ii);
+				slot = ii;
+				break;
 			}
 		}
 	}
@@ -219,7 +209,7 @@ bool LoLEngine::addItemToInventory(Item itemIndex) {
 	return true;
 }
 
-bool LoLEngine::testUnkItemFlags(Item itemIndex) {
+bool LoLEngine::isItemMoveable(Item itemIndex) {
 	if (!(_itemsInPlay[itemIndex].shpCurFrame_flg & 0x4000))
 		return false;
 
@@ -304,7 +294,7 @@ bool LoLEngine::itemEquipped(int charNum, uint16 itemType) {
 	return false;
 }
 
-void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int b) {
+void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int moveable) {
 	if (!flyingHeight) {
 		x = (x & 0xffc0) | 0x40;
 		y = (y & 0xffc0) | 0x40;
@@ -316,7 +306,7 @@ void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight,
 	_itemsInPlay[item].block = block;
 	_itemsInPlay[item].flyingHeight = flyingHeight;
 
-	if (b)
+	if (moveable)
 		_itemsInPlay[item].shpCurFrame_flg |= 0x4000;
 	else
 		_itemsInPlay[item].shpCurFrame_flg &= 0xbfff;
@@ -325,7 +315,7 @@ void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight,
 	assignItemToBlock(&_levelBlockProperties[block].assignedObjects, item);
 	reassignDrawObjects(_currentDirection, item, &_levelBlockProperties[block], false);
 
-	if (b)
+	if (moveable)
 		runLevelScriptCustom(block, 0x80, -1, item, 0, 0);
 
 	checkSceneUpdateNeed(block);
diff --git a/engines/kyra/lol.h b/engines/kyra/lol.h
index b2039b3..5f6be61 100644
--- a/engines/kyra/lol.h
+++ b/engines/kyra/lol.h
@@ -1206,14 +1206,14 @@ private:
 	Item makeItem(int itemType, int curFrame, int flags);
 	void placeMoveLevelItem(Item itemIndex, int level, int block, int xOffs, int yOffs, int flyingHeight);
 	bool addItemToInventory(Item itemIndex);
-	bool testUnkItemFlags(Item itemIndex);
+	bool isItemMoveable(Item itemIndex);
 	void deleteItem(Item itemIndex);
 	ItemInPlay *findObject(uint16 index);
 	void runItemScript(int charNum, Item item, int flags, int next, int reg4);
 	void setHandItem(Item itemIndex);
 	bool itemEquipped(int charNum, uint16 itemType);
 
-	void setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int b);
+	void setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int moveable);
 	void removeLevelItem(Item item, int block);
 	bool launchObject(int objectType, Item item, int startX, int startY, int flyingHeight, int direction, int, int attackerId, int c);
 	void endObjectFlight(FlyingObject *t, int x, int y, int collisionObject);
diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp
index 91fada9..85fc3fd 100644
--- a/engines/kyra/script_lol.cpp
+++ b/engines/kyra/script_lol.cpp
@@ -2054,17 +2054,16 @@ int LoLEngine::olol_changeItemTypeOrFlag(EMCState *script) {
 		return 0;
 
 	ItemInPlay *i = &_itemsInPlay[stackPos(0)];
-	int r = stackPos(2) & 0x1fff;
+	int16 val = stackPos(2);
 
-	if (stackPos(1) == 4) {
-		i->itemPropertyIndex = r;
-		return r;
-	} else if (stackPos(1) == 15) {
-		i->shpCurFrame_flg = (i->shpCurFrame_flg & 0xe000) | r;
-		return r;
-	}
+	if (stackPos(1) == 4)
+		i->itemPropertyIndex = val;
+	else if (stackPos(1) == 15)
+		i->shpCurFrame_flg = (i->shpCurFrame_flg & 0xe000) | (val & 0x1fff);
+	else
+		val = -1;
 
-	return -1;
+	return val;
 }
 
 int LoLEngine::olol_placeInventoryItemInHand(EMCState *script) {


Commit: 4f948b3309225dfdda5f78ddffa684decdccb1f4
    https://github.com/scummvm/scummvm/commit/4f948b3309225dfdda5f78ddffa684decdccb1f4
Author: athrxx (athrxx at scummvm.org)
Date: 2011-11-04T13:46:34-07:00

Commit Message:
KYRA: replace invalid memset call and add a warning

Changed paths:
    engines/kyra/lol.cpp



diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp
index bba21bb..182b734 100644
--- a/engines/kyra/lol.cpp
+++ b/engines/kyra/lol.cpp
@@ -896,7 +896,7 @@ void LoLEngine::startupNew() {
 	_availableSpells[0] = 0;
 	setupScreenDims();
 
-	memset(_globalScriptVars2, 0x100, 8);
+	Common::set_to(_globalScriptVars2, ARRAYEND(_globalScriptVars2), 0x100);
 
 	static const int selectIds[] = { -9, -1, -8, -5 };
 	assert(_charSelection >= 0);
@@ -993,6 +993,10 @@ void LoLEngine::writeSettings() {
 
 void LoLEngine::readSettings() {
 	_monsterDifficulty = ConfMan.getInt("monster_difficulty");
+	if (_monsterDifficulty < 0 || _monsterDifficulty > 2) {
+		_monsterDifficulty = CLIP(_monsterDifficulty, 0, 2);
+		warning("LoLEngine: Config file contains invalid difficulty setting.");
+	}
 	_smoothScrollingEnabled = ConfMan.getBool("smooth_scrolling");
 	_floatingCursorsEnabled = ConfMan.getBool("floating_cursors");
 


Commit: dbbfca37a2e99ee350a1b70ce8ee9728988b0b85
    https://github.com/scummvm/scummvm/commit/dbbfca37a2e99ee350a1b70ce8ee9728988b0b85
Author: athrxx (athrxx at scummvm.org)
Date: 2011-11-04T13:46:35-07:00

Commit Message:
KYRA: add missing (maybe unused) case to LoLEngine::olol_getGlobalVar()

Changed paths:
    engines/kyra/script_lol.cpp



diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp
index 85fc3fd..6df92a4 100644
--- a/engines/kyra/script_lol.cpp
+++ b/engines/kyra/script_lol.cpp
@@ -676,6 +676,8 @@ int LoLEngine::olol_getGlobalVar(EMCState *script) {
 		return _drainMagic;
 	case 13:
 		return getVolume(kVolumeSpeech) - 2;
+	case 14:
+		return _tim->_abortFlag;
 	default:
 		break;
 	}






More information about the Scummvm-git-logs mailing list