[Scummvm-git-logs] scummvm master -> b41d3f4eea553744f167c97cb9af8e5121ad0cc0
AndywinXp
noreply at scummvm.org
Thu Sep 15 15:29:54 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b41d3f4eea SCUMM: Replicate the original clock tower behavior (COMI)
Commit: b41d3f4eea553744f167c97cb9af8e5121ad0cc0
https://github.com/scummvm/scummvm/commit/b41d3f4eea553744f167c97cb9af8e5121ad0cc0
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2022-09-15T17:29:50+02:00
Commit Message:
SCUMM: Replicate the original clock tower behavior (COMI)
Guybrush can read the clock of Puerto Pollo, but this was only enabled
in the English, Italian and (fan-made) Russian releases, probably
because the result was poor for the other languages.
The German, French, Spanish, Brazilian Portuguese and CJK releases
disabled this feature, but the check was done in the interpreter, not in
the scripts. This replicates this original behavior.
Findings and ScummEngine_v7::actorTalk() change by AndywinXp.
Changed paths:
engines/scumm/actor.cpp
engines/scumm/script_v6.cpp
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index ffbba935ac0..2fb0a7212fb 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -20,6 +20,7 @@
*/
#include "common/system.h" // for setFocusRectangle/clearFocusRectangle
+#include "common/scummsys.h"
#include "scumm/scumm.h"
#include "scumm/actor.h"
#include "scumm/actor_he.h"
@@ -628,7 +629,7 @@ int Actor_v3::actorWalkStep() {
// The next two lines fix bug #12278 for ZAK FM-TOWNS (SCUMM3). They are alse required for SCUMM 1/2 to prevent movement while
// turning, but only if the character has to make a turn. The correct behavior for v1/2 can be tested by letting Zak (only v1/2
// versions) walk in the starting room from the torn wallpaper to the desk drawer: Zak should first turn around clockwise by
- // 180�, then walk one step to the left, then turn clockwise 90�. For ZAK FM-TOWNS (SCUMM3) this part will look quite different
+ // 180°, then walk one step to the left, then turn clockwise 90°. For ZAK FM-TOWNS (SCUMM3) this part will look quite different
// (and a bit weird), but I have confirmed the correctness with the FM-Towns emulator, too.
if (_vm->_game.version == 3 || (_vm->_game.version <= 2 && (_moving & MF_TURN)))
return 1;
@@ -2891,6 +2892,20 @@ void ScummEngine_v7::actorTalk(const byte *msg) {
bool stringWrap = false;
bool usingOldSystem = (_game.id == GID_FT) || (_game.id == GID_DIG && _game.features & GF_DEMO);
+ // WORKAROUND bug #1493: In Puerto Pollo, if you have Guybrush examine
+ // the church clock, he'll read out the current time. However, this was
+ // disabled in some releases, possibly because of the poor results for
+ // some languages (e.g. German, French). The check was done inside the
+ // original interpreters, so we replicate their behavior.
+ if (_game.id == GID_CMI && _language != Common::EN_ANY && _language != Common::IT_ITA && _language != Common::RU_RUS) {
+ if (strncmp((const char *)msg, "/CKGT326/", 9) == 0)
+ msg = (const byte *)"/VDSO325/Whoa! Look at the time. Gotta scoot.";
+
+ // Reject every line which begins with the CKGT tag ("ClocK Guybrush Threepwood")
+ if (strncmp((const char *)msg, "/CKGT", 5) == 0)
+ return;
+ }
+
convertMessageToString(msg, _charsetBuffer, sizeof(_charsetBuffer));
// Play associated speech, if any
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index ad07a59c47e..8ba00069f2f 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -763,24 +763,6 @@ void ScummEngine_v6::o6_startScript() {
o6_breakHere();
}
- // WORKAROUND bug #1493: In Puerto Pollo, if you have Guybrush examine
- // the church clock, he'll read out the current time. Nice touch, only that
- // it sounds crap in the german version (and maybe others, too). It seems
- // the original engine of the german version played just a simple fixed
- // text in this spot, for the above reason. Since the data files are
- // unchanged, it must have been an engine hack job. No idea how they did
- // it exactly, but this here is how we do it :-)
- if (_game.id == GID_CMI && script == 204 &&
- _currentRoom == 15 && vm.slot[_currentScript].number == 421 &&
- _language == Common::DE_DEU) {
-
- _actorToPrintStrFor = 1;
- _string[0].loadDefault();
- actorTalk((const byte *)"/VDSO325/Whoa! Look at the time. Gotta scoot.");
-
- return;
- }
-
runScript(script, (flags & 1) != 0, (flags & 2) != 0, args);
}
More information about the Scummvm-git-logs
mailing list