aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2017-08-06 16:53:52 -0400
committerPaul Gilbert2017-08-06 16:53:52 -0400
commit97a39f6a58bea450cfa5312f16f2889ddba7c7aa (patch)
treeeb9a7e7e8bb5a8e6d1d9f93cbb9aa098204d3481
parent8b81bb2faabde88d6d00e938360f21f2c97ad774 (diff)
downloadscummvm-rg350-97a39f6a58bea450cfa5312f16f2889ddba7c7aa.tar.gz
scummvm-rg350-97a39f6a58bea450cfa5312f16f2889ddba7c7aa.tar.bz2
scummvm-rg350-97a39f6a58bea450cfa5312f16f2889ddba7c7aa.zip
TITANIC: Fix movement cursors in Lift 4 when eye is removed
-rw-r--r--engines/titanic/game/transport/lift.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/engines/titanic/game/transport/lift.cpp b/engines/titanic/game/transport/lift.cpp
index ca5b74467a..17f1783494 100644
--- a/engines/titanic/game/transport/lift.cpp
+++ b/engines/titanic/game/transport/lift.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/transport/lift.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/moves/multi_move.h"
#include "titanic/titanic.h"
namespace Titanic {
@@ -289,6 +290,17 @@ bool CLift::ActMsg(CActMsg *msg) {
actMsg1.execute("RPanInLiftW");
CActMsg actMsg2("Lift.Node 2.S");
actMsg2.execute("LPanInLiftW");
+
+ // WORKAROUND: In the original, when Lift 4's head is removed, the other
+ // view directions use Node 2. These "removed" views have links, but their
+ // movement cursors weren't correctly set. This fixes them
+ CNamedItem *node2 = findRoom()->findByName("Node 2");
+ static_cast<CMultiMove *>(node2->findByName("LMultiLiftPan"))->_cursorId = CURSOR_MOVE_LEFT;
+ static_cast<CLinkItem *>(node2->findByName("_PANR,2,N,E"))->_cursorId = CURSOR_MOVE_RIGHT;
+ static_cast<CLinkItem *>(node2->findByName("_PANL,2,E,N"))->_cursorId = CURSOR_MOVE_LEFT;
+ static_cast<CLinkItem *>(node2->findByName("_PANR,2,E,S"))->_cursorId = CURSOR_MOVE_RIGHT;
+ static_cast<CLinkItem *>(node2->findByName("_PANL,2,S,E"))->_cursorId = CURSOR_MOVE_LEFT;
+ static_cast<CMultiMove *>(node2->findByName("RMultiLiftPan"))->_cursorId = CURSOR_MOVE_RIGHT;
} else if (msg->_action == "AddWrongHead") {
_hasHead = true;
_hasCorrectHead = false;