From 6a1e5c1d9347c1e609be25af7b3873bbc1db8d17 Mon Sep 17 00:00:00 2001 From: Evgeny Grechnikov Date: Sun, 2 Sep 2018 21:07:00 +0300 Subject: LASTEXPRESS: more fixes in NPC logic --- engines/lastexpress/entities/alexei.cpp | 2 +- engines/lastexpress/entities/anna.cpp | 2 +- engines/lastexpress/entities/august.cpp | 16 +++++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/engines/lastexpress/entities/alexei.cpp b/engines/lastexpress/entities/alexei.cpp index 89027c2d2f..45dd03aa32 100644 --- a/engines/lastexpress/entities/alexei.cpp +++ b/engines/lastexpress/entities/alexei.cpp @@ -1792,8 +1792,8 @@ IMPLEMENT_FUNCTION(44, Alexei, goToPlatform) if (getEntities()->isPlayerPosition(kCarGreenSleeping, 62)) getScenes()->loadSceneFromPosition(kCarGreenSleeping, 72); - setup_returnCompartment4(); } + setup_returnCompartment4(); } break; diff --git a/engines/lastexpress/entities/anna.cpp b/engines/lastexpress/entities/anna.cpp index 2b31c7b5c8..80ad1a2ae4 100644 --- a/engines/lastexpress/entities/anna.cpp +++ b/engines/lastexpress/entities/anna.cpp @@ -3864,7 +3864,7 @@ IMPLEMENT_FUNCTION(78, Anna, kidnapped) case 2: getAction()->playAnimation(kEventKronosHostageAnna); - getScenes()->loadSceneFromPosition(kCarRestaurant, 61); + getScenes()->loadSceneFromPosition(kCarRestaurant, 61, 1); getSound()->playSound(kEntityAnna, "Mus024", kFlagDefault); setup_waiting(); break; diff --git a/engines/lastexpress/entities/august.cpp b/engines/lastexpress/entities/august.cpp index 01dc0b76c9..cdcc85cca1 100644 --- a/engines/lastexpress/entities/august.cpp +++ b/engines/lastexpress/entities/august.cpp @@ -453,14 +453,14 @@ IMPLEMENT_FUNCTION_I(20, August, function20, bool) if (parameters->param1) { Common::String sequence = Common::String::format("%s%s", (char *)¶meters->seq1, "Gc"); - assert(sequence.size() <= 13); + assert(sequence.size() <= 12); // .size() does not count terminating zero strcpy((char *)¶meters->seq2, sequence.c_str()); getObjects()->update(kObjectCompartment3, kEntityPlayer, kObjectLocation1, kCursorKeepValue, kCursorKeepValue); } else { Common::String sequence = Common::String::format("%s%s", (char *)¶meters->seq1, "Ec"); - assert(sequence.size() <= 13); + assert(sequence.size() <= 12); strcpy((char *)¶meters->seq2, sequence.c_str()); } @@ -477,10 +477,12 @@ IMPLEMENT_FUNCTION_I(20, August, function20, bool) case 1: { getData()->location = kLocationOutsideCompartment; - Common::String sequence2 = Common::String::format("%s%s", (char *)¶meters->seq2, "Pc"); - strcpy((char *)¶meters->seq2, (char *)¶meters->seq1); + Common::String sequence2 = Common::String::format("%s%s", (char *)¶meters->seq1, "Pc"); + assert(sequence2.size() <= 12); + + strcpy((char *)¶meters->seq2, sequence2.c_str()); - getEntities()->drawSequenceLeft(kEntityAugust, sequence2.c_str()); + getEntities()->drawSequenceLeft(kEntityAugust, (char *)¶meters->seq2); getEntities()->enterCompartment(kEntityAugust, kObjectCompartment3, true); if (getProgress().chapter != kChapter3 || getState()->time >= kTime1998000) { @@ -885,7 +887,7 @@ label_callback_9: if (params->param8 >= 3) { getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand); callbackAction(); - break; + return; } params->param6 = 0; @@ -1014,7 +1016,7 @@ label_callback_9: case 6: case 7: getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, params->param4 ? kCursorNormal : kCursorTalk, kCursorHand); - ENTITY_PARAM(1, 2) = 0; + CURRENT_PARAM(1, 2) = 0; break; case 8: -- cgit v1.2.3