TITANIC: Wait for parrot speech to end before waking Titania

This commit is contained in:
Paul Gilbert 2017-02-20 16:44:45 -05:00
parent deba34cc05
commit bb5db9de27
3 changed files with 18 additions and 2 deletions

View File

@ -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

View File

@ -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;

View File

@ -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;
}