[Scummvm-cvs-logs] SF.net SVN: scummvm:[53624] scummvm/trunk/engines/lastexpress/game/action. cpp

littleboy at users.sourceforge.net littleboy at users.sourceforge.net
Tue Oct 19 22:53:43 CEST 2010


Revision: 53624
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53624&view=rev
Author:   littleboy
Date:     2010-10-19 20:53:43 +0000 (Tue, 19 Oct 2010)

Log Message:
-----------
LASTEXPRESS: Fix corpse disappearing when hiding the body in the bed

The setItemLocation action had a typo that prevented it from setting the item location.
The "corpse moved" event was not set and it broke the scene progression.

Also clean up the pickCorpse code and add better comments.

Modified Paths:
--------------
    scummvm/trunk/engines/lastexpress/game/action.cpp

Modified: scummvm/trunk/engines/lastexpress/game/action.cpp
===================================================================
--- scummvm/trunk/engines/lastexpress/game/action.cpp	2010-10-19 20:52:47 UTC (rev 53623)
+++ scummvm/trunk/engines/lastexpress/game/action.cpp	2010-10-19 20:53:43 UTC (rev 53624)
@@ -638,18 +638,14 @@
 		return kSceneInvalid;
 
 	Inventory::InventoryEntry* entry = getInventory()->get(item);
-	if (!entry->isPresent)
+	if (entry->isPresent)
 		return kSceneInvalid;
 
 	entry->location = (ObjectLocation)hotspot.param2;
 
 	if (item == kItemCorpse) {
 		ObjectLocation corpseLocation = getInventory()->get(kItemCorpse)->location;
-
-		if (corpseLocation == kObjectLocation3 || corpseLocation == kObjectLocation4)
-			getProgress().eventCorpseMovedFromFloor = true;
-		else
-			getProgress().eventCorpseMovedFromFloor = false;
+		getProgress().eventCorpseMovedFromFloor = (corpseLocation == kObjectLocation3 || corpseLocation == kObjectLocation4);
 	}
 
 	return kSceneInvalid;
@@ -1514,20 +1510,20 @@
 
 	// Floor
 	case kObjectLocation1:
-		if (bedPosition != 4) {
-			playAnimation(getProgress().jacket == kJacketGreen ? kEventCorpsePickFloorGreen : kEventCorpsePickFloorOriginal);
+		// Bed is fully opened, move corpse directly there
+		if (bedPosition == 4) {
+			playAnimation(kEventCorpsePickFloorOpenedBedOriginal);
+
+			getInventory()->get(kItemCorpse)->location = kObjectLocation5;
 			break;
 		}
 
-		if (getProgress().jacket)
-			playAnimation(kEventCorpsePickFloorOpenedBedOriginal);
-
-		getInventory()->get(kItemCorpse)->location = kObjectLocation5;
+		playAnimation(getProgress().jacket == kJacketGreen ? kEventCorpsePickFloorGreen : kEventCorpsePickFloorOriginal);
 		break;
 
 	// Bed
 	case kObjectLocation2:
-		playAnimation(getProgress().jacket == kJacketGreen ? kEventCorpsePickFloorGreen : kEventCorpsePickBedOriginal);
+		playAnimation(getProgress().jacket == kJacketGreen ? kEventCorpsePickBedGreen : kEventCorpsePickBedOriginal);
 		break;
 	}
 
@@ -1535,7 +1531,7 @@
 		getScenes()->processScene();
 
 	// Add corpse to inventory
-	if (bedPosition != 4) { // bed position
+	if (bedPosition != 4) { // bed is not fully opened
 		getInventory()->addItem(kItemCorpse);
 		getInventory()->selectItem(kItemCorpse);
 		_engine->getCursor()->setStyle(kCursorCorpse);
@@ -1765,7 +1761,7 @@
 			return kCursorNormal;
 
 		if ((!getInventory()->getSelectedItem() || getInventory()->getSelectedEntry()->manualSelect)
-		 && (object != kObject21 || getProgress().eventCorpseMovedFromFloor == 1))
+		 && (object != kObject21 || getProgress().eventCorpseMovedFromFloor == true))
 			return kCursorHand;
 		else
 			return kCursorNormal;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list