aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/npcs
diff options
context:
space:
mode:
authorPaul Gilbert2017-02-20 16:44:45 -0500
committerPaul Gilbert2017-02-20 16:44:45 -0500
commitbb5db9de27260c21c42442d55b4f8cae9b340bae (patch)
treefac6a4adaad64c6d03a971b682808224ff7e25a4 /engines/titanic/npcs
parentdeba34cc05c8bf00de72a5db68e288d4a3584b27 (diff)
downloadscummvm-rg350-bb5db9de27260c21c42442d55b4f8cae9b340bae.tar.gz
scummvm-rg350-bb5db9de27260c21c42442d55b4f8cae9b340bae.tar.bz2
scummvm-rg350-bb5db9de27260c21c42442d55b4f8cae9b340bae.zip
TITANIC: Wait for parrot speech to end before waking Titania
Diffstat (limited to 'engines/titanic/npcs')
-rw-r--r--engines/titanic/npcs/parrot.cpp12
-rw-r--r--engines/titanic/npcs/parrot.h1
-rw-r--r--engines/titanic/npcs/titania.cpp7
3 files changed, 18 insertions, 2 deletions
diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp
index 223f6b4cf2..6a48837d08 100644
--- a/engines/titanic/npcs/parrot.cpp
+++ b/engines/titanic/npcs/parrot.cpp
@@ -43,6 +43,7 @@ BEGIN_MESSAGE_MAP(CParrot, CTrueTalkNPC)
ON_MESSAGE(PreEnterViewMsg)
ON_MESSAGE(PanningAwayFromParrotMsg)
ON_MESSAGE(LeaveRoomMsg)
+ ON_MESSAGE(TrueTalkNotifySpeechEndedMsg)
END_MESSAGE_MAP()
bool CParrot::_eatingChicken;
@@ -729,4 +730,15 @@ bool CParrot::LeaveRoomMsg(CLeaveRoomMsg *msg) {
return true;
}
+bool CParrot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg) {
+ if (msg->_dialogueId == 80022) {
+ // WORKAROUND: End of parrot speech after having fixed Titania
+ unlockMouse();
+ changeView("Titania.Node 18.N", "");
+ }
+
+ return CTrueTalkNPC::TrueTalkNotifySpeechEndedMsg(msg);
+}
+
+
} // End of namespace Titanic
diff --git a/engines/titanic/npcs/parrot.h b/engines/titanic/npcs/parrot.h
index c178a2086a..d3558dfa3e 100644
--- a/engines/titanic/npcs/parrot.h
+++ b/engines/titanic/npcs/parrot.h
@@ -51,6 +51,7 @@ class CParrot : public CTrueTalkNPC {
bool PreEnterViewMsg(CPreEnterViewMsg *msg);
bool PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg);
bool LeaveRoomMsg(CLeaveRoomMsg *msg);
+ bool TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg);
public:
static bool _eatingChicken;
static bool _takeOff;
diff --git a/engines/titanic/npcs/titania.cpp b/engines/titanic/npcs/titania.cpp
index db0c85d5f5..b961e0d77c 100644
--- a/engines/titanic/npcs/titania.cpp
+++ b/engines/titanic/npcs/titania.cpp
@@ -99,7 +99,7 @@ bool CTitania::AddHeadPieceMsg(CAddHeadPieceMsg *msg) {
_eye2 = true;
} else if (msg->_value == "Ear1") {
_ear1 = true;
- } else if (msg->_value == "Ear2") {
+ } else if (msg->_value == "Ear 2") {
_ear2 = true;
} else if (msg->_value == "Mouth") {
_mouth = true;
@@ -216,8 +216,11 @@ bool CTitania::EnterViewMsg(CEnterViewMsg *msg) {
}
bool CTitania::TimerMsg(CTimerMsg *msg) {
- changeView("Titania.Node 18.N", "");
+ // WORKAROUND: The original uses the disc change dialog as a pause
+ // to allow the parrot speech to finish. I've rewritten it to instead
+ // use the standard TrueTalkNotifySpeechEndedMsg message instead
startTalking("PerchedParrot", 80022);
+ lockMouse();
return true;
}