5021 lines
174 KiB
C++
5021 lines
174 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#include "lastexpress/lastexpress.h"
|
|
|
|
namespace LastExpress {
|
|
|
|
void LogicManager::CONS_Anna(int chapter) {
|
|
switch (chapter) {
|
|
case 0:
|
|
_engine->getMessageManager()->setMessageHandle(
|
|
kCharacterAnna,
|
|
_functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]
|
|
);
|
|
|
|
break;
|
|
case 1:
|
|
CONS_Anna_Birth(0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
CONS_Anna_StartPart2(0, 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
CONS_Anna_StartPart3(0, 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
CONS_Anna_StartPart4(0, 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
CONS_Anna_StartPart5(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::AnnaCall(CALL_PARAMS) {
|
|
getCharacter(kCharacterAnna).currentCall++;
|
|
|
|
(this->*functionPointer)(param1, param2, param3, param4);
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DebugWalks(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DebugWalks);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 1;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DebugWalks(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (walk(kCharacterAnna, kCarGreenSleeping, getCharacterCurrentParams(kCharacterAnna)[0])) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] == 10000)
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
else
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 10000;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
getCharacter(kCharacterAnna).clothes++;
|
|
if (getCharacter(kCharacterAnna).clothes > 3)
|
|
getCharacter(kCharacterAnna).clothes = 0;
|
|
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 0;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarGreenSleeping;
|
|
getCharacter(kCharacterAnna).inventoryItem = 0x80;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 10000;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoSeqOtis(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoSeqOtis);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 2;
|
|
|
|
params->clear();
|
|
|
|
strncpy((char *)¶ms->parameters[0], param1.stringParam, 12);
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoSeqOtis(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[0]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoBlockSeqOtis(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoBlockSeqOtis);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 3;
|
|
|
|
params->clear();
|
|
|
|
strncpy((char *)¶ms->parameters[0], param1.stringParam, 12);
|
|
|
|
params->parameters[3] = param2.intParam;
|
|
params->parameters[4] = param3.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoBlockSeqOtis(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
releaseView(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[3], getCharacterCurrentParams(kCharacterAnna)[4]);
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[0]);
|
|
blockView(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[3], getCharacterCurrentParams(kCharacterAnna)[4]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoCorrOtis(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoCorrOtis);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 4;
|
|
|
|
params->clear();
|
|
|
|
strncpy((char *)¶ms->parameters[0], param1.stringParam, 12);
|
|
|
|
params->parameters[3] = param2.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoCorrOtis(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
releaseAtDoor(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[3]);
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[0]);
|
|
blockAtDoor(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[3]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_FinishSeqOtis(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_FinishSeqOtis);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 5;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_FinishSeqOtis(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacter(kCharacterAnna).direction != 4) {
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoJoinedSeqOtis(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoJoinedSeqOtis);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 6;
|
|
|
|
params->clear();
|
|
|
|
strncpy((char *)¶ms->parameters[0], param1.stringParam, 12);
|
|
|
|
params->parameters[3] = param2.intParam;
|
|
params->parameters[4] = param3.intParam;
|
|
|
|
strncpy((char *)¶ms->parameters[5], param4.stringParam, 12);
|
|
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoJoinedSeqOtis(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[8])
|
|
fedEx(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[3], getCharacterCurrentParams(kCharacterAnna)[4], (char *)&getCharacterCurrentParams(kCharacterAnna)[5]);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 10:
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[8]) {
|
|
fedEx(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[3], getCharacterCurrentParams(kCharacterAnna)[4], (char *)&getCharacterCurrentParams(kCharacterAnna)[5]);
|
|
getCharacterCurrentParams(kCharacterAnna)[8] = 1;
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[0]);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoDialog(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoDialog);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 7;
|
|
|
|
params->clear();
|
|
|
|
strncpy((char *)¶ms->parameters[0], param1.stringParam, 12);
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoDialog(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 2:
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
playDialog(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[0], -1, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WaitRCClear(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WaitRCClear);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 8;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WaitRCClear(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
case 12:
|
|
if (rcClear()) {
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_SaveGame(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_SaveGame);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 9;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
params->parameters[1] = param2.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_SaveGame(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
save(
|
|
kCharacterAnna,
|
|
getCharacterCurrentParams(kCharacterAnna)[0],
|
|
getCharacterCurrentParams(kCharacterAnna)[1]
|
|
);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoWalk(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoWalk);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 10;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
params->parameters[1] = param2.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoWalk(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
case 12:
|
|
if (walk(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[0], getCharacterCurrentParams(kCharacterAnna)[1])) {
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 5:
|
|
if (_doneNIS[kEventAugustPresentAnna] || _doneNIS[kEventAugustPresentAnnaFirstIntroduction] || _globals[kGlobalChapter] >= 2) {
|
|
playDialog(kCharacterCath, "CAT1001", -1, 0);
|
|
} else {
|
|
playCathExcuseMe();
|
|
}
|
|
|
|
break;
|
|
case 6:
|
|
playChrExcuseMe(kCharacterAnna, kCharacterCath, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoWait(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoWait);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 11;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoWait(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] ||
|
|
(getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + getCharacterCurrentParams(kCharacterAnna)[0], _gameTime + getCharacterCurrentParams(kCharacterAnna)[0] != 0)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] >= _gameTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_PracticeMusic(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_PracticeMusic);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 12;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_PracticeMusic(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[1] && getCharacterParams(kCharacterAnna, 8)[0])
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[5]) {
|
|
bool skip = false; // Horrible way to unroll a goto...
|
|
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[6]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = _realTime + 75;
|
|
if (_realTime == -75) {
|
|
skip = true;
|
|
send(kCharacterAnna, kCharacterAnna, 2, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
}
|
|
|
|
if (!skip && getCharacterCurrentParams(kCharacterAnna)[6] < _realTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0x7FFFFFFF;
|
|
send(kCharacterAnna, kCharacterAnna, 2, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[7] || (getCharacterCurrentParams(kCharacterAnna)[7] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[7] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[7] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 1;
|
|
setDoor(37, kCharacterAnna, 1, 0, 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[0]--;
|
|
send(kCharacterAnna, kCharacterAnna, 2, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[7] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[7] = 0;
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1]) {
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[0]++;
|
|
switch (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
case 1:
|
|
playDialog(kCharacterAnna, "ANN2135A", -1, 0);
|
|
break;
|
|
case 2:
|
|
playDialog(kCharacterAnna, "ANN2135B", -1, 0);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
playDialog(kCharacterAnna, "ANN2135C", -1, 0);
|
|
break;
|
|
case 5:
|
|
case 12:
|
|
playDialog(kCharacterAnna, "ANN2135L", -1, 0);
|
|
break;
|
|
case 6:
|
|
case 8:
|
|
playDialog(kCharacterAnna, "ANN2135K", -1, 0);
|
|
break;
|
|
case 7:
|
|
playDialog(kCharacterAnna, "ANN2135H", -1, 0);
|
|
break;
|
|
case 9:
|
|
playDialog(kCharacterAnna, "ANN2135I", -1, 0);
|
|
break;
|
|
case 10:
|
|
playDialog(kCharacterAnna, "ANN2135J", -1, 0);
|
|
break;
|
|
case 11:
|
|
playDialog(kCharacterAnna, "ANN2135M", -1, 0);
|
|
break;
|
|
case 13:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, 9);
|
|
|
|
if (msg->param.intParam == 53) {
|
|
playDialog(kCharacterCath, getCathWCDialog(), -1, 0);
|
|
} else if (cathHasItem(kItemPassengerList)) {
|
|
if (rnd(2)) {
|
|
playDialog(kCharacterCath, getCathSorryDialog(), -1, 0);
|
|
} else {
|
|
if (rnd(2) == 0) {
|
|
playDialog(kCharacterCath, "CAT1506A", -1, 0);
|
|
} else {
|
|
playDialog(kCharacterCath, "CAT1506", -1, 0);
|
|
}
|
|
}
|
|
} else {
|
|
playDialog(kCharacterCath, getCathSorryDialog(), -1, 0);
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 1;
|
|
} else {
|
|
endDialog(kCharacterAnna);
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 9:
|
|
endDialog(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
break;
|
|
case 12:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
setDoor(45, kCharacterCath, 0, 255, 255);
|
|
|
|
if (checkCathDir(kCarRedSleeping, 78))
|
|
bumpCath(kCarRedSleeping, 49, 255);
|
|
|
|
startCycOtis(kCharacterAnna, "418C");
|
|
|
|
if (whoRunningDialog(kCharacterAnna))
|
|
fadeDialog(kCharacterAnna);
|
|
|
|
playDialog(kCharacterAnna, "ANN2135A", -1, 0);
|
|
break;
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] || getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
}
|
|
|
|
if (checkCathDir(kCarRedSleeping, 60)) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2]++;
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] == 2) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "418B", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann1016", 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
setDoor(37, kCharacterAnna, 1, 14, 9);
|
|
setDoor(53, kCharacterAnna, 1, 14, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 1;
|
|
break;
|
|
case 3:
|
|
if (whoRunningDialog(kCharacterMax)) {
|
|
getCharacterCurrentParams(kCharacterAnna)[0]--;
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 1;
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "MAX1120", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 4:
|
|
getCharacterCurrentParams(kCharacterAnna)[0]--;
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 1;
|
|
break;
|
|
case 5:
|
|
startCycOtis(kCharacterAnna, "418A");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoComplexSeqOtis(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoComplexSeqOtis);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 13;
|
|
|
|
params->clear();
|
|
|
|
strncpy((char *)¶ms->parameters[0], param1.stringParam, 12);
|
|
strncpy((char *)¶ms->parameters[3], param2.stringParam, 12);
|
|
|
|
params->parameters[6] = param3.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoComplexSeqOtis(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[0]);
|
|
startSeqOtis(getCharacterCurrentParams(kCharacterAnna)[6], (char *)&getCharacterCurrentParams(kCharacterAnna)[3]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoWaitReal(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoWaitReal);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 14;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoWaitReal(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] ||
|
|
(getCharacterCurrentParams(kCharacterAnna)[1] = _realTime + getCharacterCurrentParams(kCharacterAnna)[0],
|
|
_realTime + getCharacterCurrentParams(kCharacterAnna)[0] != 0)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_CompLogic(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_CompLogic);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 15;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
|
|
strncpy((char *)¶ms->parameters[1], param2.stringParam, 12);
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_CompLogic(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] < _gameTime && !getCharacterCurrentParams(kCharacterAnna)[6]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 1;
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[7] || (getCharacterCurrentParams(kCharacterAnna)[7] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[7] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[7] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 1;
|
|
|
|
setDoor(37, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[7] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[7] = 0;
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (msg->action == 9 && inComp(kCharacterMax, kCarRedSleeping, 4070)) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
} else {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4]) {
|
|
setDoor(37, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
|
|
if (msg->param.intParam == 53) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathWCDialog(), 0, 0, 0);
|
|
} else if (cathHasItem(kItemPassengerList)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 7;
|
|
if (rnd(2)) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
} else {
|
|
if (rnd(2) == 0) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506A", 0, 0, 0);
|
|
} else {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506", 0, 0, 0);
|
|
}
|
|
}
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 8;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
}
|
|
} else {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
startCycOtis(kCharacterAnna, (char *)&getCharacterCurrentParams(kCharacterAnna)[1]);
|
|
break;
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[5] || getCharacterCurrentParams(kCharacterAnna)[4]) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
if (whoRunningDialog(kCharacterMax)) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "MAX1120", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1016", 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
setDoor(37, kCharacterAnna, 1, 14, 0);
|
|
setDoor(53, kCharacterAnna, 1, 14, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 1;
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Birth(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Birth);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 16;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Birth(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (_gameTime > 1062000 && !getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
CONS_Anna_FleeTyler(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
autoMessage(kCharacterAnna, 291662081, 0);
|
|
autoMessage(kCharacterAnna, 238936000, 1);
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
setDoor(45, kCharacterCath, 1, 255, 255);
|
|
getCharacter(kCharacterAnna).characterPosition.position = 8200;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarGreenSleeping;
|
|
getCharacter(kCharacterAnna).clothes = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoWalkP1(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoWalkP1);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 17;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
params->parameters[1] = param2.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoWalkP1(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] && nearChar(kCharacterAnna, kCharacterCath, 2000)) {
|
|
getCharacter(kCharacterAnna).inventoryItem = getCharacterCurrentParams(kCharacterAnna)[2];
|
|
} else {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
}
|
|
|
|
if (walk(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[0], getCharacterCurrentParams(kCharacterAnna)[1])) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
if (msg->param.intParam == 8) {
|
|
getCharacter(kCharacterAnna).inventoryItem &= ~8;
|
|
getCharacterCurrentParams(kCharacterAnna)[2] &= ~8;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaGiveScarf, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventGotALight, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 5:
|
|
if (_doneNIS[kEventAugustPresentAnna] || _doneNIS[kEventAugustPresentAnnaFirstIntroduction] || _globals[kGlobalChapter] >= 2) {
|
|
playDialog(kCharacterCath, "CAT1001", -1, 0);
|
|
} else {
|
|
playCathExcuseMe();
|
|
}
|
|
|
|
break;
|
|
case 6:
|
|
playChrExcuseMe(kCharacterAnna, kCharacterCath, 0);
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
if (_globals[kGlobalJacket] == 2 && !_doneNIS[kEventGotALight] && !_doneNIS[kEventGotALightD] && !_doneNIS[kEventAugustPresentAnna] && !_doneNIS[kEventAugustPresentAnnaFirstIntroduction]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 128;
|
|
}
|
|
|
|
if (_globals[kGlobalJacket] == 2 && !getCharacterCurrentParams(kCharacterAnna)[2] && !_doneNIS[kEventAnnaGiveScarfAsk] && !_doneNIS[kEventAnnaGiveScarfDinerAsk] && !_doneNIS[kEventAnnaGiveScarfSalonAsk]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 8;
|
|
}
|
|
|
|
if (walk(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[0], getCharacterCurrentParams(kCharacterAnna)[1])) {
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
if (_doneNIS[kEventAnnaGiveScarf] || _doneNIS[kEventAnnaGiveScarfDiner] || _doneNIS[kEventAnnaGiveScarfSalon] || _doneNIS[kEventAnnaGiveScarfMonogram] || _doneNIS[kEventAnnaGiveScarfDinerMonogram] || _doneNIS[kEventAnnaGiveScarfSalonMonogram]) {
|
|
playNIS(kEventAnnaGiveScarfAsk);
|
|
} else if (_doneNIS[kEventAugustPresentAnna] || _doneNIS[kEventAugustPresentAnnaFirstIntroduction]) {
|
|
playNIS(kEventAnnaGiveScarfMonogram);
|
|
} else {
|
|
playNIS(kEventAnnaGiveScarf);
|
|
}
|
|
|
|
if (getCharacter(kCharacterAnna).direction != 1) {
|
|
bumpCathRx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position + 750);
|
|
}
|
|
} else {
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] != 2)
|
|
break;
|
|
|
|
if (getCharacter(kCharacterAnna).direction == 1) {
|
|
playNIS(kEventGotALightD);
|
|
} else {
|
|
playNIS(kEventGotALight);
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).inventoryItem &= ~0x80;
|
|
|
|
int32 tmp = getCharacterCurrentParams(kCharacterAnna)[2] & 0xFFFFFF7F;
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = tmp;
|
|
if (_globals[kGlobalJacket] == 2 && !_doneNIS[kEventAnnaGiveScarfAsk] && !_doneNIS[kEventAnnaGiveScarfDinerAsk] && !_doneNIS[kEventAnnaGiveScarfSalonAsk])
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = tmp | 8;
|
|
|
|
if (getCharacter(kCharacterAnna).direction != 1) {
|
|
bumpCathRx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position + 750);
|
|
}
|
|
}
|
|
|
|
bumpCathFx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position - 750);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DiningLogic(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DiningLogic);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 18;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DiningLogic(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] && _gameTime > getCharacterCurrentParams(kCharacterAnna)[0] && rcClear()) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] && !getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[5] || (getCharacterCurrentParams(kCharacterAnna)[5] = _gameTime + 900, _gameTime != -900)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[5] >= _gameTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] || (getCharacterCurrentParams(kCharacterAnna)[6] = _realTime + 90, _realTime != -90)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bumpCath(kCarRestaurant, 61, 255);
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0x7FFFFFFF;
|
|
}
|
|
getCharacterCurrentParams(kCharacterAnna)[1] |= 8;
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] || (getCharacterCurrentParams(kCharacterAnna)[6] = _realTime + 90, _realTime != -90)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bumpCath(kCarRestaurant, 61, 255);
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
if (msg->param.intParam == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaGiveScarf, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventDinerMindJoin, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
if (_globals[kGlobalJacket] == 2 && !_doneNIS[kEventDinerMindJoin] && !_doneNIS[kEventAugustPresentAnna] && !_doneNIS[kEventAugustPresentAnnaFirstIntroduction]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] |= 0x80;
|
|
}
|
|
|
|
if (_globals[kGlobalJacket] == 2 && !getCharacterCurrentParams(kCharacterAnna)[1] && !_doneNIS[kEventAnnaGiveScarfAsk] && !_doneNIS[kEventAnnaGiveScarfDinerAsk] && !_doneNIS[kEventAnnaGiveScarfSalonAsk]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 8;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).inventoryItem = getCharacterCurrentParams(kCharacterAnna)[1];
|
|
break;
|
|
case 17:
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = checkCathDir(kCarRestaurant, 62);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
if (_doneNIS[kEventAnnaGiveScarf] || _doneNIS[kEventAnnaGiveScarfDiner] || _doneNIS[kEventAnnaGiveScarfSalon] || _doneNIS[kEventAnnaGiveScarfMonogram] || _doneNIS[kEventAnnaGiveScarfDinerMonogram] || _doneNIS[kEventAnnaGiveScarfSalonMonogram]) {
|
|
playNIS(kEventAnnaGiveScarfDinerAsk);
|
|
} else {
|
|
if (_doneNIS[kEventAugustPresentAnna] || _doneNIS[kEventAugustPresentAnnaFirstIntroduction])
|
|
playNIS(kEventAnnaGiveScarfDinerMonogram);
|
|
else
|
|
playNIS(kEventAnnaGiveScarfDiner);
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 1;
|
|
}
|
|
|
|
int32 tmp = getCharacterCurrentParams(kCharacterAnna)[1] & 0xFFFFFFF7;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = tmp;
|
|
getCharacter(kCharacterAnna).inventoryItem = tmp;
|
|
bumpCath(kCarRestaurant, 61, 255);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
playNIS(kEventDinerMindJoin);
|
|
int32 tmp = getCharacterCurrentParams(kCharacterAnna)[1] & 0xFFFFFF7F;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = tmp;
|
|
|
|
if (_globals[kGlobalJacket] == 2 && !_doneNIS[kEventAnnaGiveScarfAsk] && !_doneNIS[kEventAnnaGiveScarfDinerAsk] && !_doneNIS[kEventAnnaGiveScarfSalonAsk]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = tmp | 8;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).inventoryItem = getCharacterCurrentParams(kCharacterAnna)[1];
|
|
bumpCath(kCarRestaurant, 61, 255);
|
|
}
|
|
|
|
break;
|
|
case 168046720:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 1;
|
|
break;
|
|
case 168627977:
|
|
getCharacter(kCharacterAnna).inventoryItem = getCharacterCurrentParams(kCharacterAnna)[1];
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
break;
|
|
case 170016384:
|
|
case 259136835:
|
|
case 268773672:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_FleeTyler(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_FleeTyler);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 19;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_FleeTyler(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "618Ca", 1, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 8514;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 4, 4070, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "618Af", 37, 0, 0);
|
|
break;
|
|
case 3:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
CONS_Anna_WaitDinner(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WaitDinner(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WaitDinner);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 20;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WaitDinner(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 1093500, "NONE", 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "618Bf", 37, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
send(kCharacterAnna, kCharacterMax, 71277948, 0);
|
|
CONS_Anna_GoDinner(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoDinner(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoDinner);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 21;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoDinner(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalkP1, 5, 850, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 1540;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "801US", 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
startSeqOtis(kCharacterAnna, "001B");
|
|
|
|
if (inSalon(kCharacterCath))
|
|
advanceFrame(kCharacterAnna);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_FinishSeqOtis, 0, 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
CONS_Anna_WaitHW(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WaitHW(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WaitHW);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 22;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WaitHW(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
startCycOtis(kCharacterAnna, "001A");
|
|
send(kCharacterAnna, kCharacterHeadWait, 223262556, 0);
|
|
break;
|
|
case 157370960:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
CONS_Anna_WaitingDinner(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WaitingDinner(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WaitingDinner);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 23;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WaitingDinner(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
startCycOtis(kCharacterAnna, "001D");
|
|
send(kCharacterAnna, kCharacterWaiter1, 270410280, 0);
|
|
send(kCharacterAnna, kCharacterTableA, 136455232, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DiningLogic, 0, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
startCycOtis(kCharacterAnna, "001E");
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1048", 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "001F", 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
send(kCharacterAnna, kCharacterWaiter1, 203859488, 0);
|
|
CONS_Anna_WaitingDinner2(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WaitingDinner2(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WaitingDinner2);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 24;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WaitingDinner2(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
startCycOtis(kCharacterAnna, "001G");
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DiningLogic, 0, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
startCycOtis(kCharacterAnna, "001H");
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1049", 0, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
send(kCharacterAnna, kCharacterWaiter1, 136702400, 0);
|
|
CONS_Anna_EatingDinner(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_EatingDinner(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_EatingDinner);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 25;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_EatingDinner(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
startCycOtis(kCharacterAnna, "001J");
|
|
_globals[kGlobalAnnaIsEating] = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DiningLogic, 0, 0, 0, 0);
|
|
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 3) {
|
|
CONS_Anna_LeaveDinner(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 122358304:
|
|
startCycOtis(kCharacterAnna, "BLANK");
|
|
break;
|
|
case 201437056:
|
|
startCycOtis(kCharacterAnna, "001J");
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DiningLogic, 1138500, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_LeaveDinner(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LeaveDinner);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 26;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LeaveDinner(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
blockView(kCharacterAnna, kCarRestaurant, 62);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoJoinedSeqOtis, "001L", 33, 103798704, "001M");
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
releaseView(kCharacterAnna, kCarRestaurant, 62);
|
|
send(kCharacterAnna, kCharacterWaiter1, 237485916, 0);
|
|
startSeqOtis(kCharacterAnna, "801DS");
|
|
|
|
if (inDiningRoom(kCharacterCath))
|
|
advanceFrame(kCharacterAnna);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_FinishSeqOtis, 0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalkP1, 4, 4070, 0, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "618Af", 37, 0, 0);
|
|
break;
|
|
case 4:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
CONS_Anna_FreshenUp(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_FreshenUp(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_FreshenUp);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 27;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_FreshenUp(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterMax, 101687594, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 1156500, "NONE", 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1 ||
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
if (_globals[kGlobalCharacterSearchingForCath] == kCharacterPolice) {
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = _gameTime + 900;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, getCharacterCurrentParams(kCharacterAnna)[0], "NONE", 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "618Bf", 37, 0, 0);
|
|
}
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 3) {
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
send(kCharacterAnna, kCharacterMax, 71277948, 0);
|
|
CONS_Anna_GoSalon(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoSalon(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoSalon);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 28;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoSalon(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalkP1, 5, 850, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 1540;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
takeItem(kItem3);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoBlockSeqOtis, "104A", 5, 56, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
CONS_Anna_WaitAugust(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WaitAugust(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WaitAugust);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 29;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WaitAugust(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] || (getCharacterCurrentParams(kCharacterAnna)[2] = _gameTime + 900, _gameTime != -900)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] >= _gameTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] || (getCharacterCurrentParams(kCharacterAnna)[3] = _realTime + 90, _realTime != -90)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bumpCath(kCarRestaurant, 55, 255);
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).inventoryItem |= kItemScarf;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0;
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] || (getCharacterCurrentParams(kCharacterAnna)[3] = _realTime + 90, _realTime != -90)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bumpCath(kCarRestaurant, 55, 255);
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
if (msg->param.intParam == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaGiveScarf, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaIntroductionRejected, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
if (_globals[kGlobalJacket] == 2 && !_doneNIS[kEventAnnaConversationGoodNight] && !_doneNIS[kEventAnnaIntroductionRejected])
|
|
getCharacter(kCharacterAnna).inventoryItem = 0x80;
|
|
|
|
if (_globals[kGlobalJacket] == 2 && !getCharacter(kCharacterAnna).inventoryItem && !_doneNIS[kEventAnnaGiveScarfAsk] && !_doneNIS[kEventAnnaGiveScarfDinerAsk] && !_doneNIS[kEventAnnaGiveScarfSalonAsk]) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 8;
|
|
}
|
|
|
|
startCycOtis(kCharacterAnna, "104B");
|
|
break;
|
|
case 17:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = checkCathDir(kCarRestaurant, 56);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
if (_doneNIS[kEventAnnaGiveScarf] ||
|
|
_doneNIS[kEventAnnaGiveScarfDiner] ||
|
|
_doneNIS[kEventAnnaGiveScarfSalon] ||
|
|
_doneNIS[kEventAnnaGiveScarfMonogram] ||
|
|
_doneNIS[kEventAnnaGiveScarfDinerMonogram] ||
|
|
_doneNIS[kEventAnnaGiveScarfSalonMonogram]) {
|
|
playNIS(kEventAnnaGiveScarfSalonAsk);
|
|
} else {
|
|
if (_doneNIS[kEventAugustPresentAnna] || _doneNIS[kEventAugustPresentAnnaFirstIntroduction]) {
|
|
playNIS(kEventAnnaGiveScarfSalonMonogram);
|
|
} else {
|
|
playNIS(kEventAnnaGiveScarfSalon);
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).inventoryItem &= ~8;
|
|
bumpCath(kCarRestaurant, 51, 255);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
if (_doneNIS[kEventAugustPresentAnna] || _doneNIS[kEventAugustPresentAnnaFirstIntroduction]) {
|
|
playNIS(kEventAnnaConversationGoodNight);
|
|
} else {
|
|
playNIS(kEventAnnaIntroductionRejected);
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).inventoryItem &= ~0x80;
|
|
if (_globals[kGlobalJacket] == 2 &&
|
|
!_doneNIS[kEventAnnaGiveScarfAsk] &&
|
|
!_doneNIS[kEventAnnaGiveScarfDinerAsk] &&
|
|
!_doneNIS[kEventAnnaGiveScarfSalonAsk]) {
|
|
getCharacter(kCharacterAnna).inventoryItem |= kItemScarf;
|
|
}
|
|
|
|
bumpCath(kCarRestaurant, 51, 255);
|
|
}
|
|
|
|
break;
|
|
case 123712592:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
CONS_Anna_FlirtAugust(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_FlirtAugust(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_FlirtAugust);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 30;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_FlirtAugust(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] != 0x7FFFFFFF && _gameTime != 0) {
|
|
if (_gameTime <= 1188000) {
|
|
bool skip = false; // Horrible way to unroll a goto...
|
|
|
|
if (!inSalon(kCharacterCath) || !getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = _gameTime + 450;
|
|
if (_gameTime == -450) {
|
|
skip = true;
|
|
playDialog(kCharacterAnna, "AUG1004", -1, 0);
|
|
}
|
|
}
|
|
|
|
if (!skip && getCharacterCurrentParams(kCharacterAnna)[2] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
playDialog(kCharacterAnna, "AUG1004", -1, 0);
|
|
}
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
playDialog(kCharacterAnna, "AUG1004", -1, 0);
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] != 0 && getCharacterCurrentParams(kCharacterAnna)[3] != 0x7FFFFFFF && _gameTime > 1179000) {
|
|
if (_gameTime <= 1192500) {
|
|
if (!inSalon(kCharacterCath) || !getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = _gameTime + 150;
|
|
if (_gameTime == -150) {
|
|
CONS_Anna_LeaveAugust(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
CONS_Anna_LeaveAugust(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
CONS_Anna_LeaveAugust(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] || (getCharacterCurrentParams(kCharacterAnna)[4] = _realTime + 90, _realTime != -90)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bumpCath(kCarRestaurant, 55, 255);
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
break;
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterAugust, 122358304, 0);
|
|
startCycOtis(kCharacterAnna, "106B");
|
|
break;
|
|
case 17:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = checkCathDir(kCarRestaurant, 56);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_LeaveAugust(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LeaveAugust);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 31;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LeaveAugust(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
playDialog(kCharacterAnna, "AUG1005", -1, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWaitReal, 0x96, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
blockView(kCharacterAnna, kCarRestaurant, 56);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoComplexSeqOtis, "106C1", "106C2", 2, 0);
|
|
break;
|
|
case 3:
|
|
releaseView(kCharacterAnna, kCarRestaurant, 56);
|
|
dropItem(kItem3, 1);
|
|
send(kCharacterAnna, kCharacterAugust, 159332865, 0);
|
|
CONS_Anna_ReturnComp(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_ReturnComp(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_ReturnComp);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 32;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_ReturnComp(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalkP1, 4, 4070, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "618Af", 37, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
CONS_Anna_ReadyForBed(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_ReadyForBed(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_ReadyForBed);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 33;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_ReadyForBed(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterMax, 101687594, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = _gameTime + 4500;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, getCharacterCurrentParams(kCharacterAnna)[0], "NONE", 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
setModel(37, 1);
|
|
CONS_Anna_Asleep(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Asleep(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Asleep);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 34;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Asleep(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[0] && checkCathDir(kCarRedSleeping, 60)) {
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[1]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + 150;
|
|
if (_gameTime == -150) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "419B", 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0x7FFFFFFF;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "419B", 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (_gameTime > 1489500 && !getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 1;
|
|
CONS_Anna_WakeNight(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
setDoor(45, kCharacterCath, 0, 255, 255);
|
|
|
|
if (checkCathDir(kCarRedSleeping, 78))
|
|
bumpCath(kCarRedSleeping, 49, 255);
|
|
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
startCycOtis(kCharacterAnna, "419A");
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
startCycOtis(kCharacterAnna, "419C");
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
if (_gameTime > 1489500 && !getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 1;
|
|
CONS_Anna_WakeNight(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
if (whoRunningDialog(kCharacterMax)) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "MAX1120", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 4:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_WakeNight(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_WakeNight);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 35;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_WakeNight(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] || (getCharacterCurrentParams(kCharacterAnna)[2] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
}
|
|
|
|
switch (getCharacterCurrentParams(kCharacterAnna)[1]) {
|
|
case 0:
|
|
playDialog(kCharacterAnna, "ANN2135E", -1, 0);
|
|
break;
|
|
case 1:
|
|
playDialog(kCharacterAnna, "ANN2135F", -1, 0);
|
|
break;
|
|
case 2:
|
|
playDialog(kCharacterAnna, "ANN2135G", -1, 0);
|
|
break;
|
|
case 3:
|
|
playDialog(kCharacterAnna, "ANN2135D", -1, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
getCharacterCurrentParams(kCharacterAnna)[1]++;
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] > 3)
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (whoRunningDialog(kCharacterAnna))
|
|
fadeDialog(kCharacterAnna);
|
|
|
|
if (msg->action == 8)
|
|
playDialog(0, "LIB012", -1, 0);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaVisitToCompartmentGun, 0, 0);
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).clothes = 1;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventAnnaVisitToCompartmentGun);
|
|
playDialog(0, "LIB015", -1, 0);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4840;
|
|
walk(kCharacterAnna, kCarRedSleeping, 8200);
|
|
bumpCathFDoor(37);
|
|
send(kCharacterAnna, kCharacterVassili, 339669520, 0);
|
|
send(kCharacterAnna, kCharacterTrainM, 339669520, 0);
|
|
send(kCharacterAnna, kCharacterCond2, 339669520, 0);
|
|
send(kCharacterAnna, kCharacterMax, 71277948, 0);
|
|
CONS_Anna_GoVassili(0, 0, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
CONS_Anna_GoVassili(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 226031488:
|
|
if (whoRunningDialog(kCharacterAnna))
|
|
fadeDialog(kCharacterAnna);
|
|
|
|
send(kCharacterAnna, kCharacterMax, 71277948, 0);
|
|
break;
|
|
case 238358920:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Cf", 37, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoVassili(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoVassili);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 36;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoVassili(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 4, 8200, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
setDoor(32, kCharacterCath, 1, 255, 255);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Aa", 32, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
setDoor(32, kCharacterCath, 2, 255, 255);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
endGraphics(kCharacterAnna);
|
|
CONS_Anna_AtSeizure(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_AtSeizure(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_AtSeizure);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 37;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_AtSeizure(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 8200;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
break;
|
|
case 191477936:
|
|
CONS_Anna_SpeakTatiana(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_SpeakTatiana(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_SpeakTatiana);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 38;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_SpeakTatiana(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 7500;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1010", 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playDialog(0, "MUS043", -1, 0);
|
|
CONS_Anna_LeaveTatiana(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoWalk1019(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoWalk1019);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 39;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
params->parameters[1] = param2.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoWalk1019(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
case 12:
|
|
if (msg->action == 12) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
if (!_doneNIS[kEventAnnaGoodNight] && !_doneNIS[kEventAnnaGoodNightInverse])
|
|
getCharacter(kCharacterAnna).inventoryItem = 0x80;
|
|
}
|
|
|
|
if (walk(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[0], getCharacterCurrentParams(kCharacterAnna)[1])) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaGoodNight, 0, 0);
|
|
break;
|
|
case 6:
|
|
playDialog(kCharacterAnna, "ANN1107A", -1, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS((kEventAnnaGoodNightInverse - (getCharacter(kCharacterAnna).direction == 1)));
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
if (getCharacter(kCharacterAnna).direction == 1)
|
|
bumpCathFx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position - 750);
|
|
else
|
|
bumpCathRx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position + 750);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_LeaveTatiana(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LeaveTatiana);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 40;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LeaveTatiana(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Cb", 33, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk1019, 4, 4070, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Bf", 37, 0, 0);
|
|
break;
|
|
case 3:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 150, 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Cf", 37, 0, 0);
|
|
break;
|
|
case 5:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk1019, 4, 7500, 0, 0);
|
|
break;
|
|
case 6:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 7;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Bb", 33, 0, 0);
|
|
break;
|
|
case 7:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 8;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 150, 0, 0, 0);
|
|
break;
|
|
case 8:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 9;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Cb", 33, 0, 0);
|
|
break;
|
|
case 9:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 10;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk1019, 4, 4070, 0, 0);
|
|
break;
|
|
case 10:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 11;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "608Bf", 37, 0, 0);
|
|
break;
|
|
case 11:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
CONS_Anna_GoBackToSleep(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoBackToSleep(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoBackToSleep);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 41;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoBackToSleep(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] || (getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + 2700, _gameTime != -2700)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] >= _gameTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0]++;
|
|
switch (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
case 1:
|
|
startCycOtis(kCharacterAnna, "419A");
|
|
break;
|
|
case 2:
|
|
startCycOtis(kCharacterAnna, "419B");
|
|
break;
|
|
case 3:
|
|
startCycOtis(kCharacterAnna, "419C");
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterMax, 101687594, 0);
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
startCycOtis(kCharacterAnna, "419C");
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] <= 2) {
|
|
if (!whoRunningDialog(kCharacterMax)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "MAX1120", 0, 0, 0);
|
|
break;
|
|
}
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] != 3) {
|
|
break;
|
|
}
|
|
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_StartPart2(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_StartPart2);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 42;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_StartPart2(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
CONS_Anna_InPart2(0, 0, 0, 0);
|
|
break;
|
|
case 12:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).inventoryItem = kItemNone;
|
|
getCharacter(kCharacterAnna).clothes = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_InPart2(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_InPart2);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 43;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_InPart2(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
setDoor(45, kCharacterCath, 0, 255, 255);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_PracticeMusic, 0, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 1786500, "418C", 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_PracticeMusic, 0, 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 1818000, "418C", 0, 0);
|
|
break;
|
|
case 4:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_PracticeMusic, 0, 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 15803100, "418C", 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_StartPart3(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_StartPart3);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 44;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_StartPart3(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
CONS_Anna_Practicing(0, 0, 0, 0);
|
|
break;
|
|
case 12:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).clothes = 3;
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
setDoor(45, kCharacterCath, 0, 255, 255);
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_ExitComp(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_ExitComp);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 45;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_ExitComp(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "625Bf", 37, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
if (getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall].parameters[0])
|
|
send(kCharacterAnna, kCharacterCond2, 185737168, 0);
|
|
else
|
|
send(kCharacterAnna, kCharacterCond2, 185671840, 0);
|
|
|
|
playDialog(kCharacterAnna, "Ann3147", -1, 0);
|
|
startCycOtis(kCharacterAnna, "625EF");
|
|
softBlockAtDoor(kCharacterAnna, 37);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
softReleaseAtDoor(kCharacterAnna, 37);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 157894320:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 75, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Practicing(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Practicing);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 46;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Practicing(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
if (checkCathDir(kCarRedSleeping, 60))
|
|
bumpCath(kCarRedSleeping, 49, 255);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_PracticeMusic, 0, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1 ||
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
if (getCharacterParams(kCharacterAnna, 8)[0]) {
|
|
CONS_Anna_GoLunch(0, 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, _gameTime + 4500, "418C", 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoLunch(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoLunch);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 47;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoLunch(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "688Bf", 0x25, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
send(kCharacterAnna, kCharacterMax, 71277948, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 5, 850, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 1540;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "801VS", 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
if (!_doneNIS[kEventAugustLunch]) {
|
|
playDialog(kCharacterAnna, "Ann3136A", -1, 30);
|
|
} else {
|
|
playDialog(kCharacterAnna, "Ann3136", -1, 30);
|
|
}
|
|
|
|
send(kCharacterAnna, kCharacterAugust, 122358304, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoComplexSeqOtis, "026B1", "026B2", 2, 0);
|
|
break;
|
|
case 5:
|
|
startCycOtis(kCharacterAugust, "BLANK");
|
|
CONS_Anna_Lunch(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Lunch(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Lunch);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 48;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Lunch(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] != 0x7FFFFFFF && _gameTime > 1969200) {
|
|
if (_gameTime > 1983600) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3007A", 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
if (!inDiningRoom(kCharacterCath) || whoRunningDialog(kCharacterMonsieur) || !getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = _gameTime + 150;
|
|
if (_gameTime == -150) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3007A", 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3007A", 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterParams(kCharacterAnna, 8)[1]) {
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[1])
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + 4500;
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] != 0x7FFFFFFF && _gameTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] >= _gameTime) {
|
|
if (!inDiningRoom(kCharacterCath) || !getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = _gameTime + 450;
|
|
if (_gameTime == -450) {
|
|
CONS_Anna_LeaveLunch(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] >= _gameTime)
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
CONS_Anna_LeaveLunch(0, 0, 0, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
startCycOtis(kCharacterAnna, "026c");
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 450, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann3137B", 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
send(kCharacterAnna, kCharacterWaiter1, 218983616, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3006A", 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
if (getCharacterParams(kCharacterAnna, 8)[1]) {
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[1])
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + 4500;
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] != 0x7FFFFFFF && _gameTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] >= _gameTime) {
|
|
if (!inDiningRoom(kCharacterCath) || !getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = _gameTime + 450;
|
|
if (_gameTime == -450) {
|
|
CONS_Anna_LeaveLunch(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] >= _gameTime)
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
CONS_Anna_LeaveLunch(0, 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 5:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 900, 0, 0, 0);
|
|
break;
|
|
case 6:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 7;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3006", 0, 0, 0);
|
|
break;
|
|
case 7:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 8;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 2700, 0, 0, 0);
|
|
break;
|
|
case 8:
|
|
startCycOtis(kCharacterAnna, "026H");
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 122288808:
|
|
startCycOtis(kCharacterAnna, "026C");
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann3138A", 0, 0, 0);
|
|
break;
|
|
case 122358304:
|
|
startCycOtis(kCharacterAnna, "BLANK");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoOtis5026J(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoOtis5026J);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 49;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoOtis5026J(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
send(kCharacterAnna, kCharacterTableD, 103798704, "010M");
|
|
endGraphics(kCharacterAugust);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterTableD, "026J3");
|
|
startSeqOtis(kCharacterAugust, "026J2");
|
|
startSeqOtis(kCharacterAnna, "026J1");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_LeaveLunch(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LeaveLunch);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 50;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LeaveLunch(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann3141", 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoOtis5026J, 0, 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
CONS_Anna_AfterLunch(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_AfterLunch(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_AfterLunch);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 51;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_AfterLunch(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (rcClear()) {
|
|
playDialog(kCharacterAnna, "Aug3008", -1, 0);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoComplexSeqOtis, "112E1", "112E2", 2, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
playDialog(kCharacterAnna, "Ann3142", -1, 30);
|
|
blockView(kCharacterCath, kCarRestaurant, 57);
|
|
startSeqOtis(kCharacterAnna, "112A");
|
|
|
|
if (inDiningRoom(kCharacterCath))
|
|
advanceFrame(kCharacterAnna);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_FinishSeqOtis, 0, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
startCycOtis(kCharacterAnna, "112B");
|
|
releaseView(kCharacterAnna, kCarRestaurant, 57);
|
|
send(kCharacterAnna, kCharacterWaiter2, 219377792, 0);
|
|
break;
|
|
case 2:
|
|
send(kCharacterAnna, kCharacterAugust, 122288808, 0);
|
|
CONS_Anna_ReturnComp3(0, 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
startCycOtis(kCharacterAnna, "112D");
|
|
|
|
if (_gameTime >= 2047500) {
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann3142A", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 4:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 1800, 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3007", 0, 0, 0);
|
|
break;
|
|
case 6:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 101169422:
|
|
if (_doneNIS[kEventKronosVisit]) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoBlockSeqOtis, "112J", 5, 0x39, 0);
|
|
} else {
|
|
if (_gameTime >= 2047500) {
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann3142A", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 122288808:
|
|
startCycOtis(kCharacterAnna, "112D");
|
|
send(kCharacterAnna, kCharacterKronos, 157159392, 0);
|
|
break;
|
|
case 122358304:
|
|
startCycOtis(kCharacterAnna, "BLANK");
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_ReturnComp3(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_ReturnComp3);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 52;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_ReturnComp3(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
releaseAtDoor(kCharacterAnna, 37);
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
endGraphics(kCharacterAnna);
|
|
CONS_Anna_Dressing(0, 0, 0, 0);
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 4, 4070, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
startSeqOtis(kCharacterAnna, "688Af");
|
|
blockAtDoor(kCharacterAnna, 37);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
if (inComp(kCharacterCath, kCarRedSleeping, 4070) || inComp(kCharacterCath, kCarRedSleeping, 4455)) {
|
|
if (isNight()) {
|
|
playNIS(kEventCathTurningNight);
|
|
} else {
|
|
playNIS(kEventCathTurningDay);
|
|
}
|
|
|
|
playDialog(0, "BUMP", -1, 0);
|
|
bumpCathRDoor(37);
|
|
}
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Dressing(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Dressing);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 53;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Dressing(HAND_PARAMS) {
|
|
bool tmp;
|
|
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (_globals[kGlobalMaxHasToStayInBaggage] != 0 && getCharacterCurrentParams(kCharacterAnna)[4] != 0x7FFFFFFF && _gameTime != 0) {
|
|
if (_gameTime > 2065500) {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0x7FFFFFFF;
|
|
CONS_Anna_GiveMaxToCond2(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
if (!cathInCorridor(kCarRedSleeping) || !getCharacterCurrentParams(kCharacterAnna)[4]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = _gameTime + 150;
|
|
if (_gameTime == -150) {
|
|
CONS_Anna_GiveMaxToCond2(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0x7FFFFFFF;
|
|
CONS_Anna_GiveMaxToCond2(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] != 0) {
|
|
bool skip = false; // Horrible way to unroll a goto...
|
|
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[5]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = _gameTime + 9000;
|
|
if (_gameTime == -9000) {
|
|
skip = true;
|
|
tmp = getCharacterCurrentParams(kCharacterAnna)[3] == 0;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = tmp ? 1 : 0;
|
|
|
|
if (!tmp) {
|
|
startCycOtis(kCharacterAnna, "417B");
|
|
} else {
|
|
startCycOtis(kCharacterAnna, "417A");
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
}
|
|
}
|
|
|
|
if (!skip && getCharacterCurrentParams(kCharacterAnna)[5] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0x7FFFFFFF;
|
|
tmp = getCharacterCurrentParams(kCharacterAnna)[3] == 0;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = tmp ? 1 : 0;
|
|
|
|
if (!tmp) {
|
|
startCycOtis(kCharacterAnna, "417B");
|
|
} else {
|
|
startCycOtis(kCharacterAnna, "417A");
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] || (getCharacterCurrentParams(kCharacterAnna)[6] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
setDoor(37, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (msg->action == 9 && inComp(kCharacterMax, kCarRedSleeping, 4070)) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
} else {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
|
|
if (msg->param.intParam == 53) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathWCDialog(), 0, 0, 0);
|
|
} else if (cathHasItem(kItemPassengerList)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 7;
|
|
|
|
if (rnd(2)) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
} else {
|
|
if (rnd(2) == 0) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506A", 0, 0, 0);
|
|
} else {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 8;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
}
|
|
} else {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterMax, 101687594, 0);
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).clothes = 2;
|
|
break;
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] || getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
}
|
|
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[2] && (checkCathDir(kCarRedSleeping, 60) || _gameTime > 0x1F0950)) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 9;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "416", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
if (whoRunningDialog(kCharacterMax)) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "MAX1120", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1016", 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
setDoor(37, kCharacterAnna, 1, 14, 0);
|
|
setDoor(53, kCharacterAnna, 1, 14, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
if (inComp(kCharacterMax, kCarRedSleeping, 4070)) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, 9);
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
break;
|
|
case 9:
|
|
if (checkCathDir(kCarRedSleeping, 60))
|
|
bumpCath(kCarRedSleeping, 78, 255);
|
|
|
|
startCycOtis(kCharacterAnna, "417B");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GiveMaxToCond2(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GiveMaxToCond2);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 54;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GiveMaxToCond2(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] != 0) {
|
|
if (_gameTime > 2079000 && !getCharacterCurrentParams(kCharacterAnna)[4]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 1;
|
|
CONS_Anna_GoConcert(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[5] || (getCharacterCurrentParams(kCharacterAnna)[5] = _gameTime + 9000, _gameTime != -9000)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[5] >= _gameTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] || (getCharacterCurrentParams(kCharacterAnna)[6] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
setDoor(37, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bool tmp = getCharacterCurrentParams(kCharacterAnna)[3] == 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = tmp ? 1 : 0;
|
|
|
|
if (!tmp) {
|
|
startCycOtis(kCharacterAnna, "417B");
|
|
} else {
|
|
startCycOtis(kCharacterAnna, "417A");
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[5] = 0;
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] || (getCharacterCurrentParams(kCharacterAnna)[6] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[6] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
setDoor(37, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[6] = 0;
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (msg->action == 9 && inComp(kCharacterMax, kCarRedSleeping, 4070)) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
} else if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
if (msg->param.intParam == 53) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathWCDialog(), 0, 0, 0);
|
|
} else if (cathHasItem(kItemPassengerList)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 7;
|
|
if (rnd(2)) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
} else {
|
|
if (rnd(2) == 0) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506A", 0, 0, 0);
|
|
} else {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 8;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
}
|
|
} else {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
setDoor(45, kCharacterCath, 1, 255, 255);
|
|
if (checkCathDir(kCarRedSleeping, 60))
|
|
bumpCath(kCarRedSleeping, 78, 255);
|
|
|
|
send(kCharacterAnna, kCharacterCond2, 189750912, 0);
|
|
break;
|
|
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] || getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
if (whoRunningDialog(kCharacterMax)) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "MAX1120", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1016", 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
setDoor(37, kCharacterAnna, 1, 14, 0);
|
|
setDoor(53, kCharacterAnna, 1, 14, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
if (inComp(kCharacterMax, kCarRedSleeping, 4070)) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, 9);
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
break;
|
|
case 9:
|
|
softReleaseAtDoor(kCharacterAnna, 37);
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.location = kCharacterAnna;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = kCharacterAnna;
|
|
setDoor(45, kCharacterCath, 0, 255, 255);
|
|
setDoor(53, kCharacterAnna, kCharacterAnna, 10, 9);
|
|
|
|
if (checkCathDir(kCarRedSleeping, 78))
|
|
bumpCath(kCarRedSleeping, 49, 255);
|
|
|
|
startCycOtis(kCharacterAnna, "417B");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 123733488:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 9;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "629Ef", 37, 0, 0);
|
|
break;
|
|
case 156049968:
|
|
startCycOtis(kCharacterAnna, "629DF");
|
|
softBlockAtDoor(kCharacterAnna, 37);
|
|
break;
|
|
case 253868128:
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoConcert(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoConcert);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 55;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoConcert(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
setDoor(45, kCharacterCath, 2, 255, 255);
|
|
if (checkCathDir(kCarRedSleeping, 78))
|
|
bumpCath(kCarRedSleeping, 49, 255);
|
|
|
|
setDoor(37, kCharacterCath, 1, 0, 0);
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
dropItem(kItemKey, 1);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_ExitComp, 1, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 2, 9270, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
CONS_Anna_Concert(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Concert(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Concert);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 56;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Concert(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarKronos;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 6000;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
break;
|
|
case 191668032:
|
|
COND_Anna_LeaveConcert(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::COND_Anna_LeaveConcert(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LeaveConcert);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 57;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LeaveConcert(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarGreenSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 850;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 3, 5790, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
send(kCharacterAnna, kCharacterAugust, 191668032, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 4, 4070, 0, 0);
|
|
break;
|
|
case 2:
|
|
setDoor(37, kCharacterAlexei, 1, 0, 0);
|
|
send(kCharacterAnna, kCharacterCond2, 205033696, 0);
|
|
startCycOtis(kCharacterAnna, "625Ef");
|
|
softBlockAtDoor(kCharacterAnna, 37);
|
|
break;
|
|
case 3:
|
|
startCycOtis(kCharacterAnna, "625Gf");
|
|
softBlockAtDoor(kCharacterAnna, 37);
|
|
send(kCharacterAnna, kCharacterAugust, 169032608, 0);
|
|
break;
|
|
case 4:
|
|
if (whoRunningDialog(kCharacterAugust)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 75, 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3009", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 5:
|
|
playDialog(kCharacterAnna, "Aug3009A", -1, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "628Bf", 37, 0, 0);
|
|
break;
|
|
case 6:
|
|
softReleaseAtDoor(kCharacterAnna, 37);
|
|
send(kCharacterAnna, kCharacterAugust, 122288808, 0);
|
|
CONS_Anna_AfterConcert(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 123712592:
|
|
startCycOtis(kCharacterAnna, "628Af");
|
|
|
|
if (whoRunningDialog(kCharacterAugust)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWait, 75, 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Aug3009", 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 192063264:
|
|
if (inComp(kCharacterCath, kCarRedSleeping, 4070) || inComp(kCharacterCath, kCarRedSleeping, 4455)) {
|
|
softReleaseAtDoor(kCharacterAnna, 37);
|
|
CONS_Anna_LeaveConcertCathInComp(0, 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "625Ff", 37, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_LeaveConcertCathInComp(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LeaveConcertCathInComp);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 58;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LeaveConcertCathInComp(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaSearchingCompartment, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventAnnaSearchingCompartment);
|
|
endGraphics(kCharacterAnna);
|
|
bumpCath(kCarRedSleeping, 8, 255);
|
|
playDialog(kCharacterAnna, "lib015", -1, 0);
|
|
send(kCharacterAnna, kCharacterAugust, 122288808, 0);
|
|
CONS_Anna_AfterConcert(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_AfterConcert(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_AfterConcert);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 59;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_AfterConcert(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (cathHasItem(kItemKey) && getCharacterCurrentParams(kCharacterAnna)[3] != 0x7FFFFFFF && _gameTime > 2218500) {
|
|
if (_gameTime > 2248200) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
CONS_Anna_GoBagg(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[2] || (!cathInCorridor(kCarRedSleeping) && !inSalon(kCharacterCath) && !inDiningRoom(kCharacterCath)) || !getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = _gameTime;
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[3]) {
|
|
CONS_Anna_GoBagg(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
CONS_Anna_GoBagg(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] || (getCharacterCurrentParams(kCharacterAnna)[4] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
setDoor(37, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
|
|
if (msg->param.intParam == 53) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathWCDialog(), 0, 0, 0);
|
|
} else if (cathHasItem(kItemPassengerList)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
|
|
if (rnd(2)) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
} else {
|
|
if (rnd(2) == 0) {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506A", 0, 0, 0);
|
|
} else {
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "CAT1506", 0, 0, 0);
|
|
}
|
|
}
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathSorryDialog(), 0, 0, 0);
|
|
}
|
|
} else {
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
endGraphics(kCharacterAnna);
|
|
setDoor(107, kCharacterCath, 2, 255, 255);
|
|
setDoor(45, kCharacterCath, 1, 255, 255);
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
|
|
if (checkCathDir(kCarRedSleeping, 60))
|
|
bumpCath(kCarRedSleeping, 78, 255);
|
|
|
|
break;
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] || getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1016", 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
setDoor(37, kCharacterAnna, 1, 14, 0);
|
|
setDoor(53, kCharacterAnna, 1, 14, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
break;
|
|
case 7:
|
|
send(kCharacterAnna, kCharacterTatiana, 100906246, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 156622016:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 8;
|
|
AnnaCall(&LogicManager::CONS_Anna_GiveMaxBack, 0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 236241630:
|
|
setDoor(37, kCharacterAnna, 1, 0, 0);
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 7;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann1016A", 0, 0, 0);
|
|
break;
|
|
case 236517970:
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 1;
|
|
setDoor(37, kCharacterAnna, 1, 10, 9);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GiveMaxBack(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GiveMaxBack);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 60;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GiveMaxBack(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterMax, 122358304, 0);
|
|
|
|
if (rnd(2) == 0) {
|
|
playDialog(kCharacterAnna, "Ann3127", -1, 0);
|
|
} else {
|
|
playDialog(kCharacterAnna, "Ann3126", -1, 0);
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "630Cf", 37, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "630Df", 37, 0, 0);
|
|
break;
|
|
case 2:
|
|
endGraphics(kCharacterAnna);
|
|
send(kCharacterAnna, kCharacterCond2, 189026624, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
endGraphics(kCharacterAnna);
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 156049968:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoCorrOtis, "629EF", 37, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoBagg(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoBagg);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 61;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoBagg(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
_timeSpeed = 3;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 1, 0, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_ExitComp, 0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 5, 850, 0, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 1540;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoSeqOtis, "802US", 0, 0, 0);
|
|
break;
|
|
case 5:
|
|
startSeqOtis(kCharacterAnna, "802UD");
|
|
|
|
if (inSalon(kCharacterCath))
|
|
advanceFrame(kCharacterAnna);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 6;
|
|
AnnaCall(&LogicManager::CONS_Anna_FinishSeqOtis, 0, 0, 0, 0);
|
|
break;
|
|
case 6:
|
|
endGraphics(kCharacterAnna);
|
|
CONS_Anna_InBagg(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_InBagg(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_InBagg);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 62;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_InBagg(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] && _gameTime > 2259000 && !getCharacterCurrentParams(kCharacterAnna)[1]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
send(kCharacterAnna, kCharacterVesna, 189299008, 0);
|
|
CONS_Anna_DeadBagg(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarBaggage;
|
|
_globals[kGlobalAnnaIsInBaggageCar] = 1;
|
|
break;
|
|
case 235856512:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DeadBagg(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DeadBagg);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 63;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DeadBagg(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
send(kCharacterAnna, kCharacterMaster, 171843264, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventAnnaKilled);
|
|
endGame(1, 2250000, 58, true);
|
|
}
|
|
|
|
break;
|
|
case 272177921:
|
|
if (dialogRunning("MUS012"))
|
|
fadeDialog("MUS012");
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaKilled, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_BaggageFight(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_BaggageFight);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 64;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_BaggageFight(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaBaggageArgument, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
playNIS(kEventAnnaBaggageArgument);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 1, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = playFight(2002);
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
endGame(0, 0, 0, getCharacterCurrentParams(kCharacterAnna)[0] == 1);
|
|
} else {
|
|
_gameTime += 1800;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaBaggagePart2, 0, 0);
|
|
}
|
|
break;
|
|
case 3:
|
|
playNIS(kEventAnnaBaggagePart2);
|
|
bumpCath(kCarBaggage, 96, 255);
|
|
_globals[kGlobalAnnaIsInBaggageCar] = 0;
|
|
forceJump(kCharacterVesna, &LogicManager::CONS_Vesna_InComp);
|
|
_gameTime = 2266200;
|
|
CONS_Anna_PrepareVienna(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_PrepareVienna(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_PrepareVienna);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 65;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_PrepareVienna(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).clothes = 3;
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
setDoor(45, kCharacterCath, 1, 255, 255);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 15803100, "NONE", 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_StartPart4(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_StartPart4);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 66;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_StartPart4(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
CONS_Anna_Reading(0, 0, 0, 0);
|
|
break;
|
|
case 12:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).clothes = 2;
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Reading(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Reading);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 67;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Reading(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (checkCathDir(kCarRedSleeping, 46)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] || (getCharacterCurrentParams(kCharacterAnna)[3] = _realTime + 30, _realTime != -30)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[3] >= _realTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] || (getCharacterCurrentParams(kCharacterAnna)[4] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0x7FFFFFFF;
|
|
}
|
|
|
|
bumpCath(kCarRedSleeping, 8, 255);
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[3] = 0;
|
|
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] || (getCharacterCurrentParams(kCharacterAnna)[4] = _realTime + 75, _realTime != -75)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[4] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
|
|
setDoor(53, kCharacterAnna, 1, 0, !inComp(kCharacterMax, kCarRedSleeping, 4070) ? 0 : 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
} else {
|
|
getCharacterCurrentParams(kCharacterAnna)[4] = 0;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
getCharacter(kCharacterCath).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, 34, 0, 0);
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, getCathWCDialog(), 0, 0, 0);
|
|
} else {
|
|
setDoor(53, kCharacterAnna, 1, 0, 0);
|
|
|
|
if (msg->action == 8) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB013", 0, 0, 0);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
setDoor(37, kCharacterCath, 2, 0, 0);
|
|
setDoor(45, kCharacterCath, 1, 255, 255);
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
startCycOtis(kCharacterAnna, "511B");
|
|
break;
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] || getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
setDoor(53, kCharacterAnna, 1, 10, 9);
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
playNIS(kEventAnnaConversation_34);
|
|
playDialog(0, "LIB015", -1, 0);
|
|
bumpCath(kCarRedSleeping, 8, 255);
|
|
CONS_Anna_Sulking(0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "ANN1016", 0, 0, 0);
|
|
break;
|
|
case 4:
|
|
setDoor(53, kCharacterAnna, 1, 14, 0);
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 5:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 191001984:
|
|
setDoor(37, kCharacterCath, 0, 10, 9);
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
CONS_Anna_GoSalon4(0, 0, 0, 0);
|
|
break;
|
|
case 219971920:
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 1;
|
|
getCharacter(kCharacterAnna).inventoryItem = 0x80;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Sulking(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Sulking);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 68;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Sulking(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_CompLogic, 2511900, "NONE", 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
setDoor(37, kCharacterCath, 1, 10, 9);
|
|
setDoor(53, kCharacterCath, 1, 10, 9);
|
|
getCharacter(kCharacterAnna).characterPosition.car = 4;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
break;
|
|
case 191001984:
|
|
setDoor(37, kCharacterCath, 0, 10, 9);
|
|
CONS_Anna_GoSalon4(0, 0, 0, 0);
|
|
break;
|
|
case 201431954:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_GoSalon4(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_GoSalon4);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 69;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_GoSalon4(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0]) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] || (getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + 4500, _gameTime != -4500)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] >= _gameTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 0x7FFFFFFF;
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 9270;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
CONS_Anna_ReturnToComp4(0, 0, 0, 0);
|
|
} else if (_gameTime > 2535300 && !getCharacterCurrentParams(kCharacterAnna)[2]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 1;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 12:
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalk, 5, 850, 0, 0);
|
|
break;
|
|
case 17:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] && checkLoc(kCharacterCath, kCarRedSleeping)) {
|
|
getCharacter(kCharacterAnna).characterPosition.car = kCarRedSleeping;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 8200;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
CONS_Anna_ReturnToComp4(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_WaitRCClear, 0, 0, 0, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).characterPosition.position = 1540;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoBlockSeqOtis, "127A", 5, 56, 0);
|
|
break;
|
|
case 3:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
startCycOtis(kCharacterAnna, "127B");
|
|
send(kCharacterAnna, kCharacterWaiter2, 258136010, 0);
|
|
break;
|
|
case 4:
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 5;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoBlockSeqOtis, "127G", 5, 56, 0);
|
|
break;
|
|
case 5:
|
|
CONS_Anna_ReturnToComp4(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 100969180:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 122288808:
|
|
startCycOtis(kCharacterAnna, "127E");
|
|
send(kCharacterAnna, kCharacterAbbot, 203073664, 0);
|
|
break;
|
|
case 122358304:
|
|
startCycOtis(kCharacterAnna, "BLANK");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_ReturnToComp4(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_ReturnToComp4);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 70;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_ReturnToComp4(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 12:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoWalkCathFollowsAnna, 4, 4070, 0, 0);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_EnterCompCathFollowsAnna, 0, 0, 0, 0);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
getCharacter(kCharacterAnna).characterPosition.location = 0;
|
|
endGraphics(kCharacterAnna);
|
|
CONS_Anna_LetDownHair(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_EnterCompCathFollowsAnna(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_EnterCompCathFollowsAnna);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 71;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_EnterCompCathFollowsAnna(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 3:
|
|
releaseAtDoor(kCharacterAnna, 37);
|
|
getCharacter(kCharacterAnna).characterPosition.position = 4070;
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
break;
|
|
case 12:
|
|
startSeqOtis(kCharacterAnna, "625Af");
|
|
if (checkCathDir(kCarRedSleeping, 7) || checkCathDir(kCarRedSleeping, 28) || checkCathDir(kCarRedSleeping, 56)) {
|
|
smartBumpCath();
|
|
}
|
|
|
|
blockAtDoor(kCharacterAnna, 37);
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
|
|
if (inComp(kCharacterCath, kCarRedSleeping, 4070) || inComp(kCharacterCath, kCarRedSleeping, 4455)) {
|
|
if (isNight()) {
|
|
playNIS(kEventCathTurningNight);
|
|
} else {
|
|
playNIS(kEventCathTurningDay);
|
|
}
|
|
|
|
playDialog(0, "BUMP", -1, 0);
|
|
bumpCathFDoor(37);
|
|
}
|
|
|
|
break;
|
|
case 17:
|
|
if (!_doneNIS[kEventAnnaTiredKiss] && nearChar(kCharacterCath, kCharacterAnna, 2000) && whoOnScreen(kCharacterAnna) &&
|
|
getCharacter(kCharacterAnna).characterPosition.position < getCharacter(kCharacterCath).characterPosition.position) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaTiredKiss, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventAnnaTiredKiss);
|
|
bumpCath(kCarRestaurant, 29, 255);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_DoWalkCathFollowsAnna(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_DoWalkCathFollowsAnna);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 72;
|
|
|
|
params->clear();
|
|
|
|
params->parameters[0] = param1.intParam;
|
|
params->parameters[1] = param2.intParam;
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_DoWalkCathFollowsAnna(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (_doneNIS[kEventAnnaTired] || whoFacingCath(kCharacterAnna)) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
} else {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0x80;
|
|
}
|
|
|
|
if (walk(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[0], getCharacterCurrentParams(kCharacterAnna)[1])) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaTired, 0, 0);
|
|
break;
|
|
case 12:
|
|
if (walk(kCharacterAnna, getCharacterCurrentParams(kCharacterAnna)[0], getCharacterCurrentParams(kCharacterAnna)[1])) {
|
|
getCharacter(kCharacterAnna).currentCall--;
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, _functionsAnna[getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall]]);
|
|
fedEx(kCharacterAnna, kCharacterAnna, 18, 0);
|
|
} else if (!_doneNIS[kEventAnnaTired]) {
|
|
getCharacter(kCharacterAnna).inventoryItem = 0x80;
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventAnnaTired);
|
|
if (getCharacter(kCharacterAnna).direction == 1)
|
|
bumpCathFx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position - 750);
|
|
else
|
|
bumpCathRx(getCharacter(kCharacterAnna).characterPosition.car, getCharacter(kCharacterAnna).characterPosition.position + 750);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_LetDownHair(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_LetDownHair);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 73;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_LetDownHair(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] != 0x7FFFFFFF && getCharacterCurrentParams(kCharacterAnna)[0] < _gameTime) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[1] < _gameTime) {
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
} else if (((cathInCorridor(kCarGreenSleeping) || cathInCorridor(kCarRedSleeping)) && getCharacterCurrentParams(kCharacterAnna)[2]) || (getCharacterCurrentParams(kCharacterAnna)[2] = _gameTime, _gameTime != 0)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[2] >= _gameTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[2] = 0x7FFFFFFF;
|
|
}
|
|
|
|
if (!cathInCorridor(kCarGreenSleeping) && !cathInCorridor(kCarRedSleeping))
|
|
playDialog(0, "BUMP", -1, 0);
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventTrainHijacked, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
setDoor(37, kCharacterAnna, 0, 0, 0);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "LIB012", 0, 0, 0);
|
|
break;
|
|
case 9:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 4;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaKissTrainHijacked, 0, 0);
|
|
break;
|
|
case 12:
|
|
setDoor(37, kCharacterAnna, 0, 10, 9);
|
|
_timeSpeed = 1;
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = _gameTime + 4500;
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = _gameTime + 9000;
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
playNIS(kEventTrainHijacked);
|
|
send(kCharacterAnna, kCharacterMaster, 139254416, 0);
|
|
break;
|
|
case 2:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_DoDialog, "Ann4200", 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
setDoor(37, kCharacterAnna, 0, 10, 9);
|
|
break;
|
|
case 4:
|
|
playNIS(kEventAnnaKissTrainHijacked);
|
|
send(kCharacterAnna, kCharacterMaster, 139254416, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_StartPart5(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_StartPart5);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 74;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_StartPart5(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
CONS_Anna_TiedUp(0, 0, 0, 0);
|
|
break;
|
|
case 12:
|
|
endGraphics(kCharacterAnna);
|
|
getCharacter(kCharacterAnna).characterPosition.car = 1;
|
|
getCharacter(kCharacterAnna).characterPosition.position = 3969;
|
|
getCharacter(kCharacterAnna).characterPosition.location = 1;
|
|
getCharacter(kCharacterAnna).clothes = 3;
|
|
getCharacter(kCharacterAnna).inventoryItem = 0;
|
|
setDoor(45, kCharacterCath, 0, 255, 255);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_TiedUp(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_TiedUp);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 75;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_TiedUp(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
if (_globals[kGlobalReadLetterInAugustSuitcase]) {
|
|
if (_doneNIS[kEventAnnaKissTrainHijacked]) {
|
|
playNIS(kEventAnnaBaggageTies2);
|
|
} else {
|
|
playNIS(kEventAnnaBaggageTies);
|
|
}
|
|
} else if (_doneNIS[kEventAnnaKissTrainHijacked]) {
|
|
playNIS(kEventAnnaBaggageTies3);
|
|
} else {
|
|
playNIS(kEventAnnaBaggageTies4);
|
|
}
|
|
|
|
bumpCath(kCarBaggageRear, 88, 255);
|
|
CONS_Anna_Outside(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 272177921:
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaBaggageTies, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Outside(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Outside);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 76;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Outside(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 158480160:
|
|
CONS_Anna_ReadyToScore(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_ReadyToScore(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_ReadyToScore);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 77;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_ReadyToScore(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (_gameTime > 3645000 && !getCharacterCurrentParams(kCharacterAnna)[1]) {
|
|
getCharacterCurrentParams(kCharacterAnna)[1] = 1;
|
|
_timeSpeed = 0;
|
|
}
|
|
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (msg->action == 8) {
|
|
playDialog(0, "LIB012", -1, 0);
|
|
} else {
|
|
playDialog(0, "LIB014", -1, 0);
|
|
}
|
|
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventAnnaDialogGoToJerusalem, 0, 0);
|
|
break;
|
|
case 12:
|
|
setDoor(106, kCharacterAnna, 1, 10, 9);
|
|
break;
|
|
case 17:
|
|
if (!getCharacterCurrentParams(kCharacterAnna)[0] && checkLoc(kCharacterCath, kCarBaggage)) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 1, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 1;
|
|
break;
|
|
case 2:
|
|
setDoor(106, kCharacterCath, 0, 10, 9);
|
|
playNIS(kEventAnnaDialogGoToJerusalem);
|
|
_gameTime = 4914000;
|
|
_timeSpeed = 0;
|
|
send(kCharacterAnna, kCharacterTatiana, 236060709, 0);
|
|
bumpCath(kCarBaggage, 97, 1);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 1, 0, 0, 0);
|
|
break;
|
|
case 3:
|
|
CONS_Anna_Kidnapped(0, 0, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Kidnapped(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Kidnapped);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 78;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Kidnapped(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 17:
|
|
if (inDiningRoom(kCharacterCath) && cathHasItem(kItemFirebird)) {
|
|
CONS_Anna_FinalSequence(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
if (!inSalon(kCharacterCath))
|
|
break;
|
|
|
|
if (cathHasItem(kItemFirebird)) {
|
|
CONS_Anna_FinalSequence(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
_gameTime = 4920300;
|
|
|
|
if (_items[kItemFirebird].floating == 4) {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKronosHostageAnna, 0, 0);
|
|
} else {
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKronosHostageAnnaNoFirebird, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventKronosHostageAnnaNoFirebird);
|
|
endGame(3, 42, 0, 1);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
playNIS(kEventKronosHostageAnna);
|
|
bumpCath(kCarRestaurant, 61, 1);
|
|
playDialog(kCharacterAnna, "Mus024", 16, 0);
|
|
CONS_Anna_Waiting(0, 0, 0, 0);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_Waiting(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_Waiting);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 79;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_Waiting(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 2:
|
|
_gameTime = 4923000;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKahinaPunchBaggageCarEntrance, 0, 0);
|
|
break;
|
|
case 17:
|
|
if (inDiningRoom(kCharacterCath) && cathHasItem(kItemFirebird)) {
|
|
CONS_Anna_FinalSequence(0, 0, 0, 0);
|
|
} else if (inSalon(kCharacterCath) && !_doneNIS[kEventKahinaPunch]) {
|
|
_gameTime = 4923000;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKahinaPunch, 0, 0);
|
|
}
|
|
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
if (inSalon(kCharacterCath)) {
|
|
playNIS(kEventKahinaPunchSalon);
|
|
} else if (inDiningRoom(kCharacterCath)) {
|
|
playNIS(kEventKahinaPunchRestaurant);
|
|
} else if (inKitchen(kCharacterCath)) {
|
|
playNIS(kEventKahinaPunchKitchen);
|
|
} else if (inOffice(kCharacterCath)) {
|
|
playNIS(kEventKahinaPunchBaggageCarEntrance);
|
|
} else if (checkLoc(kCharacterCath, kCarBaggage)) {
|
|
playNIS(kEventKahinaPunchBaggageCar);
|
|
}
|
|
|
|
endGame(0, 1, 0, true);
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
playNIS(kEventKahinaPunch);
|
|
endGame(0, 1, 0, true);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_FinalSequence(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_FinalSequence);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 80;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_FinalSequence(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] || (getCharacterCurrentParams(kCharacterAnna)[0] = _realTime + 450, _realTime != -450)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0x7FFFFFFF;
|
|
}
|
|
|
|
playDialog(0, "Kro5001", 16, 0);
|
|
break;
|
|
case 2:
|
|
playDialog(0, "Kro5002", 16, 0);
|
|
_gameTime = 4929300;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKahinaPunch, 0, 0);
|
|
break;
|
|
case 12:
|
|
_gameTime = 4923000;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKronosBringFirebird, 0, 0);
|
|
break;
|
|
case 18:
|
|
switch (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8]) {
|
|
case 1:
|
|
if (whoRunningDialog(kCharacterAnna))
|
|
fadeDialog(kCharacterAnna);
|
|
|
|
playNIS(kEventKronosBringFirebird);
|
|
bumpCathCloseUp(kItemFirebird);
|
|
playDialog(1, "Mus025", 16, 0);
|
|
break;
|
|
case 2:
|
|
playNIS(kEventKahinaPunch);
|
|
endGame(0, 1, 0, true);
|
|
break;
|
|
case 3:
|
|
_globals[kGlobalEggIsOpen] = 1;
|
|
|
|
if (whoRunningDialog(kCharacterAnna))
|
|
fadeDialog(kCharacterAnna);
|
|
|
|
playNIS(kEventKronosOpenFirebird);
|
|
bumpCath(kCarRestaurant, 3, 255);
|
|
CONS_Anna_OpenFirebird(0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 205294778:
|
|
_gameTime = 4929300;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 3;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKronosOpenFirebird, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LogicManager::CONS_Anna_OpenFirebird(CONS_PARAMS) {
|
|
CharacterCallParams *params = &getCharacter(kCharacterAnna).callParams[getCharacter(kCharacterAnna).currentCall];
|
|
_engine->getMessageManager()->setMessageHandle(kCharacterAnna, &LogicManager::HAND_Anna_OpenFirebird);
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall] = 81;
|
|
|
|
params->clear();
|
|
|
|
fedEx(kCharacterAnna, kCharacterAnna, 12, 0);
|
|
}
|
|
|
|
void LogicManager::HAND_Anna_OpenFirebird(HAND_PARAMS) {
|
|
switch (msg->action) {
|
|
case 0:
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] || (getCharacterCurrentParams(kCharacterAnna)[0] = _realTime + 180, _realTime != -180)) {
|
|
if (getCharacterCurrentParams(kCharacterAnna)[0] >= _realTime)
|
|
break;
|
|
|
|
getCharacterCurrentParams(kCharacterAnna)[0] = 0x7FFFFFFF;
|
|
}
|
|
|
|
playDialog(kCharacterClerk, "LIB069", 16, 0);
|
|
endGame(0, 0, 0, true);
|
|
break;
|
|
case 18:
|
|
if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 1) {
|
|
playNIS(kEventCathCloseEggNoBackground);
|
|
playNIS(kEventKronosGiveFirebird);
|
|
if (cathHasItem(kItemWhistle)) {
|
|
endGame(0, 1, 53, true);
|
|
} else if (_items[kItemWhistle].floating == 1) {
|
|
endGame(3, 208, 0, true);
|
|
} else {
|
|
endGame(3, 42, 54, true);
|
|
}
|
|
} else if (getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] == 2) {
|
|
takeCathItem(kItemWhistle);
|
|
winGame();
|
|
}
|
|
|
|
break;
|
|
case 224309120:
|
|
_globals[kGlobalEggIsOpen] = 0;
|
|
_gameTime = 4941000;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 1;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventKronosGiveFirebird, 0, 0);
|
|
break;
|
|
case 270751616:
|
|
_globals[kGlobalEggIsOpen] = 0;
|
|
killGracePeriod();
|
|
_gameTime = 4941000;
|
|
getCharacter(kCharacterAnna).callbacks[getCharacter(kCharacterAnna).currentCall + 8] = 2;
|
|
AnnaCall(&LogicManager::CONS_Anna_SaveGame, 2, kEventFinalSequence, 0, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void (LogicManager::*LogicManager::_functionsAnna[])(HAND_PARAMS) = {
|
|
nullptr,
|
|
&LogicManager::HAND_Anna_DebugWalks,
|
|
&LogicManager::HAND_Anna_DoSeqOtis,
|
|
&LogicManager::HAND_Anna_DoBlockSeqOtis,
|
|
&LogicManager::HAND_Anna_DoCorrOtis,
|
|
&LogicManager::HAND_Anna_FinishSeqOtis,
|
|
&LogicManager::HAND_Anna_DoJoinedSeqOtis,
|
|
&LogicManager::HAND_Anna_DoDialog,
|
|
&LogicManager::HAND_Anna_WaitRCClear,
|
|
&LogicManager::HAND_Anna_SaveGame,
|
|
&LogicManager::HAND_Anna_DoWalk,
|
|
&LogicManager::HAND_Anna_DoWait,
|
|
&LogicManager::HAND_Anna_PracticeMusic,
|
|
&LogicManager::HAND_Anna_DoComplexSeqOtis,
|
|
&LogicManager::HAND_Anna_DoWaitReal,
|
|
&LogicManager::HAND_Anna_CompLogic,
|
|
&LogicManager::HAND_Anna_Birth,
|
|
&LogicManager::HAND_Anna_DoWalkP1,
|
|
&LogicManager::HAND_Anna_DiningLogic,
|
|
&LogicManager::HAND_Anna_FleeTyler,
|
|
&LogicManager::HAND_Anna_WaitDinner,
|
|
&LogicManager::HAND_Anna_GoDinner,
|
|
&LogicManager::HAND_Anna_WaitHW,
|
|
&LogicManager::HAND_Anna_WaitingDinner,
|
|
&LogicManager::HAND_Anna_WaitingDinner2,
|
|
&LogicManager::HAND_Anna_EatingDinner,
|
|
&LogicManager::HAND_Anna_LeaveDinner,
|
|
&LogicManager::HAND_Anna_FreshenUp,
|
|
&LogicManager::HAND_Anna_GoSalon,
|
|
&LogicManager::HAND_Anna_WaitAugust,
|
|
&LogicManager::HAND_Anna_FlirtAugust,
|
|
&LogicManager::HAND_Anna_LeaveAugust,
|
|
&LogicManager::HAND_Anna_ReturnComp,
|
|
&LogicManager::HAND_Anna_ReadyForBed,
|
|
&LogicManager::HAND_Anna_Asleep,
|
|
&LogicManager::HAND_Anna_WakeNight,
|
|
&LogicManager::HAND_Anna_GoVassili,
|
|
&LogicManager::HAND_Anna_AtSeizure,
|
|
&LogicManager::HAND_Anna_SpeakTatiana,
|
|
&LogicManager::HAND_Anna_DoWalk1019,
|
|
&LogicManager::HAND_Anna_LeaveTatiana,
|
|
&LogicManager::HAND_Anna_GoBackToSleep,
|
|
&LogicManager::HAND_Anna_StartPart2,
|
|
&LogicManager::HAND_Anna_InPart2,
|
|
&LogicManager::HAND_Anna_StartPart3,
|
|
&LogicManager::HAND_Anna_ExitComp,
|
|
&LogicManager::HAND_Anna_Practicing,
|
|
&LogicManager::HAND_Anna_GoLunch,
|
|
&LogicManager::HAND_Anna_Lunch,
|
|
&LogicManager::HAND_Anna_DoOtis5026J,
|
|
&LogicManager::HAND_Anna_LeaveLunch,
|
|
&LogicManager::HAND_Anna_AfterLunch,
|
|
&LogicManager::HAND_Anna_ReturnComp3,
|
|
&LogicManager::HAND_Anna_Dressing,
|
|
&LogicManager::HAND_Anna_GiveMaxToCond2,
|
|
&LogicManager::HAND_Anna_GoConcert,
|
|
&LogicManager::HAND_Anna_Concert,
|
|
&LogicManager::HAND_Anna_LeaveConcert,
|
|
&LogicManager::HAND_Anna_LeaveConcertCathInComp,
|
|
&LogicManager::HAND_Anna_AfterConcert,
|
|
&LogicManager::HAND_Anna_GiveMaxBack,
|
|
&LogicManager::HAND_Anna_GoBagg,
|
|
&LogicManager::HAND_Anna_InBagg,
|
|
&LogicManager::HAND_Anna_DeadBagg,
|
|
&LogicManager::HAND_Anna_BaggageFight,
|
|
&LogicManager::HAND_Anna_PrepareVienna,
|
|
&LogicManager::HAND_Anna_StartPart4,
|
|
&LogicManager::HAND_Anna_Reading,
|
|
&LogicManager::HAND_Anna_Sulking,
|
|
&LogicManager::HAND_Anna_GoSalon4,
|
|
&LogicManager::HAND_Anna_ReturnToComp4,
|
|
&LogicManager::HAND_Anna_EnterCompCathFollowsAnna,
|
|
&LogicManager::HAND_Anna_DoWalkCathFollowsAnna,
|
|
&LogicManager::HAND_Anna_LetDownHair,
|
|
&LogicManager::HAND_Anna_StartPart5,
|
|
&LogicManager::HAND_Anna_TiedUp,
|
|
&LogicManager::HAND_Anna_Outside,
|
|
&LogicManager::HAND_Anna_ReadyToScore,
|
|
&LogicManager::HAND_Anna_Kidnapped,
|
|
&LogicManager::HAND_Anna_Waiting,
|
|
&LogicManager::HAND_Anna_FinalSequence,
|
|
&LogicManager::HAND_Anna_OpenFirebird
|
|
};
|
|
|
|
} // End of namespace LastExpress
|