diff options
-rw-r--r-- | engines/titanic/npcs/parrot.cpp | 12 | ||||
-rw-r--r-- | engines/titanic/npcs/parrot.h | 1 | ||||
-rw-r--r-- | engines/titanic/npcs/titania.cpp | 7 |
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; } |