diff options
-rw-r--r-- | engines/teenagent/callbacks.cpp | 6 | ||||
-rw-r--r-- | engines/teenagent/scene.cpp | 11 |
2 files changed, 9 insertions, 8 deletions
diff --git a/engines/teenagent/callbacks.cpp b/engines/teenagent/callbacks.cpp index ee31b53fdb..3ef25dc67f 100644 --- a/engines/teenagent/callbacks.cpp +++ b/engines/teenagent/callbacks.cpp @@ -1326,9 +1326,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) { inventory->add(10); disableObject(2); setOns(1, 10); - - byte * scene_15_ons = scene->getOns(15); //patch ons for the scene 15 - scene_15_ons[1] = 0; + setOns(1, 0, 15); byte f = GET_FLAG(0xDB98) + 1; SET_FLAG(0xDB98, f); if (f >= 2) { @@ -2373,11 +2371,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(20, 9); playActorAnimation(530); loadScene(16, 236, 95, 1); - setOns(0, 9); playActorAnimation(531); playSound(36, 4); playActorAnimation(532); playActorAnimation(533); + setOns(0, 9); moveTo(236, 95, 1, true); playMusic(9); return true; diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp index b1abd902e8..a7f3ae0919 100644 --- a/engines/teenagent/scene.cpp +++ b/engines/teenagent/scene.cpp @@ -383,6 +383,13 @@ bool Scene::render(OSystem *system) { Graphics::Surface *surface = system->lockScreen(); + //render on + if (on.pixels != NULL) { + if (_id != 16 || getOns(16)[0] != 0) { + on.render(surface); //do not render boat on isle. I double checked all callbacks, there's no code switching off the boat :( + } + } + if (ons != NULL) { for (uint32 i = 0; i < ons_count; ++i) { Surface *s = ons + i; @@ -488,10 +495,6 @@ bool Scene::render(OSystem *system) { } } - //render on - if (on.pixels != NULL) { - on.render(surface); - } if (!message.empty()) { bool visible = true; |