aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devtools/create_titanic/create_titanic_dat.cpp10
-rw-r--r--engines/sci/engine/script_patches.cpp144
-rw-r--r--engines/titanic/game/cdrom_tray.cpp9
-rw-r--r--engines/titanic/game/computer_screen.cpp20
-rw-r--r--engines/titanic/game/credits.cpp9
-rw-r--r--engines/titanic/game/credits_button.cpp3
-rw-r--r--engines/titanic/game/transport/service_elevator.cpp30
-rw-r--r--engines/titanic/module.mk8
-rw-r--r--engines/titanic/npcs/doorbot.cpp35
-rw-r--r--engines/titanic/titanic.cpp2
-rw-r--r--engines/titanic/titanic.h2
-rw-r--r--engines/titanic/translation.h36
-rw-r--r--engines/titanic/true_talk/doorbot_script.cpp5
-rw-r--r--engines/titanic/true_talk/german/barbot_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/barbot_script.h41
-rw-r--r--engines/titanic/true_talk/german/bellbot_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/bellbot_script.h41
-rw-r--r--engines/titanic/true_talk/german/deskbot_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/deskbot_script.h41
-rw-r--r--engines/titanic/true_talk/german/doorbot_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/doorbot_script.h41
-rw-r--r--engines/titanic/true_talk/german/liftbot_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/liftbot_script.h41
-rw-r--r--engines/titanic/true_talk/german/maitred_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/maitred_script.h41
-rw-r--r--engines/titanic/true_talk/german/parrot_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/parrot_script.h41
-rw-r--r--engines/titanic/true_talk/german/succubus_script.cpp29
-rw-r--r--engines/titanic/true_talk/german/succubus_script.h41
-rw-r--r--engines/titanic/true_talk/tt_scripts.cpp36
30 files changed, 828 insertions, 81 deletions
diff --git a/devtools/create_titanic/create_titanic_dat.cpp b/devtools/create_titanic/create_titanic_dat.cpp
index cacc77fa24..88ff97fb20 100644
--- a/devtools/create_titanic/create_titanic_dat.cpp
+++ b/devtools/create_titanic/create_titanic_dat.cpp
@@ -57,7 +57,7 @@
*/
#define VERSION_NUMBER 3
-#define HEADER_SIZE 0x1380
+#define HEADER_SIZE 0x1480
Common::File inputFile, outputFile;
Common::PEResources resEng, resGer;
@@ -1713,7 +1713,15 @@ void writeGermanData() {
writeStringArray("TEXT/REPLACEMENTS3/DE", 0x2413B0 + GERMAN_DIFF, 608);
writeStringArray("TEXT/REPLACEMENTS4/DE", 0x241D38 + GERMAN_DIFF, 195);
writeStringArray("TEXT/PRONOUNS/DE", 0x248610 + GERMAN_DIFF, 15);
+
+ writeSentenceMappings("Mappings/Barbot/DE", 0x1BA388 + GERMAN_DIFF, 8);
+ writeSentenceMappings("Mappings/Bellbot/DE", 0x1E1D20 + GERMAN_DIFF, 1);
+ writeSentenceMappings("Mappings/Deskbot/DE", 0x1F5A18 + GERMAN_DIFF, 4);
writeSentenceMappings("Mappings/Doorbot/DE", 0x214E00 + GERMAN_DIFF, 4);
+ writeSentenceMappings("Mappings/Liftbot/DE", 0x224AE0 + GERMAN_DIFF, 4);
+ writeSentenceMappings("Mappings/MaitreD/DE", 0x232E30 + GERMAN_DIFF, 1);
+ writeSentenceMappings("Mappings/Parrot/DE", 0x235FA8 + GERMAN_DIFF, 1);
+ writeSentenceMappings("Mappings/SuccUBus/DE", 0x2399C8 + GERMAN_DIFF, 1);
const int SENTENCES_BARBOT[2] = { 0x5B00C0, 0x5C5AC8 };
const int SENTENCES_BELLBOT[20] = { 0x5CACF8, 0x5D1670 };
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 738f2acfd0..c2f041af72 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1054,6 +1054,64 @@ static const uint16 gk1Day5PhoneFreezePatch[] = {
PATCH_END
};
+// When Gabriel is grabbing a vine 'vineSwing::changeState(1)',
+// him saying "I can't believe I'm doing this..." is cut off.
+// We change it so the scripts wait for the audio.
+// This is not supposed to be applied to the Floppy version.
+//
+// Applies to at lesat: English PC-CD, German PC-CD, Spanish PC-CD
+static const uint16 gk1Day9VineSwingSignature[] = {
+ 0x38, SIG_UINT16(4), // pushi $4
+ 0x51, 0x17, // class CT
+ 0x36, // push
+ 0x39, 0x0b, // pushi $b
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x81, 0x00, // lag global[$0]
+ 0x4a, SIG_UINT16(0x20), // send $20
+ 0x38, SIG_SELECTOR16(setMotion), // pushi setMotion
+ 0x78, // push1
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x0412), // lofsa guard1
+ 0x4a, SIG_UINT16(0x06), // send $6
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x04), // pushi $4
+ SIG_MAGICDWORD,
+ 0x39, 0x07, // pushi $7
+ 0x39, 0x08, // pushi $8
+ 0x39, 0x10, // pushi $10
+ 0x78, // push1
+ 0x81, 0x5b, // lsg global[$5b]
+ 0x4a, SIG_UINT16(0x000c), // send $c
+ SIG_END
+};
+
+static const uint16 gk1Day9VineSwingPatch[] = {
+ 0x38, SIG_UINT16(3), // pushi $3
+ 0x51, 0x17, // class CT
+ 0x36, // push
+ 0x39, 0x0b, // pushi $b
+ 0x78, // push1
+ 0x81, 0x00, // lag global[$0]
+ 0x4a, SIG_UINT16(0x1e), // send $20
+ 0x38, SIG_SELECTOR16(setMotion), // pushi setMotion
+ 0x78, // push1
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x0412), // lofsa guard1
+ 0x4a, SIG_UINT16(0x06), // send $6
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x05), // pushi $5
+ 0x39, 0x07, // pushi $7
+ 0x39, 0x08, // pushi $8
+ 0x39, 0x10, // pushi $10
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x81, 0x5b, // lsg global[$5b]
+ 0x4a, SIG_UINT16(0x000e), // send $c
+ PATCH_END
+};
+
+
// In GK1, the `view` selector is used to store view numbers in some cases and
// object references to Views in other cases. `Interrogation::dispose` compares
// an object stored in the `view` selector with a number (which is not valid)
@@ -1120,6 +1178,7 @@ static const SciScriptPatcherEntry gk1Signatures[] = {
{ true, 230, "fix day 6 police beignet timer issue (1/2)", 1, gk1Day6PoliceBeignetSignature1, gk1Day6PoliceBeignetPatch1 },
{ true, 230, "fix day 6 police beignet timer issue (2/2)", 1, gk1Day6PoliceBeignetSignature2, gk1Day6PoliceBeignetPatch2 },
{ true, 230, "fix day 6 police sleep timer issue", 1, gk1Day6PoliceSleepSignature, gk1Day6PoliceSleepPatch },
+ { true, 710, "fix day 9 vine swing speech playing", 1, gk1Day9VineSwingSignature, gk1Day9VineSwingPatch },
{ true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
{ true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
{ true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
@@ -3993,25 +4052,74 @@ static const uint16 phant2InvOffsetPatch[] = {
PATCH_END
};
-// script, description, signature patch
+// The text placement of "File" and "Note" content inside DocuStore File
+// Retrieval System makes some letters especially "g" overlap the
+// corresponding box. Set by 'WynNetDoco::open'.
+// We fix this by changing the position of those 2 inside the heap of
+// subclass 'WynNetDoco' slightly.
+// Applies to at least: English CD, Japanese CD, German CD
+static const uint16 phant2DocuStoreFileNotePlacementSignature[] = {
+ SIG_MAGICDWORD,
+ SIG_UINT16(0x0046), // nameX
+ SIG_UINT16(0x000a), // nameY
+ SIG_ADDTOOFFSET(+10), // skip over nameMsg*
+ SIG_UINT16(0x0046), // noteX
+ SIG_UINT16(0x001e), // noteY
+ SIG_END
+};
+
+static const uint16 phant2DocuStoreFileNotePlacementPatch[] = {
+ PATCH_ADDTOOFFSET(+2),
+ PATCH_UINT16(0x0006), // new nameY
+ PATCH_ADDTOOFFSET(+12),
+ PATCH_UINT16(0x001b), // new noteY
+ PATCH_END
+};
+
+// The text placement of "From" and "Subject" content inside DocuStore.
+// We fix this by changing the position inside the heap of subclass
+// 'WynNetEmail' slightly.
+// For this one, we also fix the horizontal placement.
+static const uint16 phant2DocuStoreEmailPlacementSignature[] = {
+ SIG_MAGICDWORD,
+ SIG_UINT16(0x0049), // nameX
+ SIG_UINT16(0x0008), // nameY
+ SIG_ADDTOOFFSET(+10), // skip over nameMsg*
+ SIG_UINT16(0x0049), // noteX
+ SIG_UINT16(0x001c), // noteY
+ SIG_END
+};
+
+static const uint16 phant2DocuStoreEmailPlacementPatch[] = {
+ PATCH_UINT16(0x0050), // new nameX
+ PATCH_UINT16(0x0006), // new nameY
+ SIG_ADDTOOFFSET(+10),
+ PATCH_UINT16(0x0050), // new noteX
+ PATCH_UINT16(0x001b), // new noteY
+ PATCH_END
+};
+
+// script, description, signature patch
static const SciScriptPatcherEntry phantasmagoria2Signatures[] = {
- { true, 0, "speed up interface fades", 3, phant2SlowIFadeSignature, phant2SlowIFadePatch },
- { true, 0, "fix bad arguments to get game version", 1, phant2GetVersionSignature, phant2GetVersionPatch },
- { true, 3000, "replace spin loop in alien password window", 1, phant2WaitParam1Signature, phant2WaitParam1Patch },
- { true, 4081, "replace spin loop after ratboy puzzle", 1, phant2RatboySignature, phant2RatboyPatch },
- { true, 63001, "fix inventory left scroll delta", 1, phant2InvLeftDeltaSignature, phant2InvLeftDeltaPatch },
- { true, 63001, "fix inventory right scroll delta", 1, phant2InvRightDeltaSignature, phant2InvRightDeltaPatch },
- { true, 63001, "fix inventory wrong initial offset", 1, phant2InvOffsetSignature, phant2InvOffsetPatch },
- { true, 63004, "limit in-game audio volume", 1, phant2AudioVolumeSignature, phant2AudioVolumePatch },
- { true, 63016, "replace spin loop during music fades", 1, phant2Wait4FadeSignature, phant2Wait4FadePatch },
- { true, 63019, "replace spin loop during computer load", 1, phant2WaitParam1Signature, phant2WaitParam1Patch },
- { true, 63019, "replace spin loop during computer scrolling", 1, phant2SlowScrollSignature, phant2SlowScrollPatch },
- { true, 63019, "fix bad doc/email name & memo positioning", 2, phant2BadPositionSignature, phant2BadPositionPatch },
- { true, 63019, "fix bad folder/doc icon refresh", 2, phant2BadIconSignature, phant2BadIconPatch },
- { true, 64990, "remove save game name mangling (1/2)", 1, phant2SaveNameSignature1, phant2SaveNamePatch1 },
- { true, 64990, "increase number of save games (1/2)", 1, phant2NumSavesSignature1, phant2NumSavesPatch1 },
- { true, 64990, "increase number of save games (2/2)", 2, phant2NumSavesSignature2, phant2NumSavesPatch2 },
- { true, 64994, "remove save game name mangling (2/2)", 1, phant2SaveNameSignature2, phant2SaveNamePatch2 },
+ { true, 0, "speed up interface fades", 3, phant2SlowIFadeSignature, phant2SlowIFadePatch },
+ { true, 0, "fix bad arguments to get game version", 1, phant2GetVersionSignature, phant2GetVersionPatch },
+ { true, 3000, "replace spin loop in alien password window", 1, phant2WaitParam1Signature, phant2WaitParam1Patch },
+ { true, 4081, "replace spin loop after ratboy puzzle", 1, phant2RatboySignature, phant2RatboyPatch },
+ { true, 63001, "fix inventory left scroll delta", 1, phant2InvLeftDeltaSignature, phant2InvLeftDeltaPatch },
+ { true, 63001, "fix inventory right scroll delta", 1, phant2InvRightDeltaSignature, phant2InvRightDeltaPatch },
+ { true, 63001, "fix inventory wrong initial offset", 1, phant2InvOffsetSignature, phant2InvOffsetPatch },
+ { true, 63004, "limit in-game audio volume", 1, phant2AudioVolumeSignature, phant2AudioVolumePatch },
+ { true, 63016, "replace spin loop during music fades", 1, phant2Wait4FadeSignature, phant2Wait4FadePatch },
+ { true, 63019, "replace spin loop during computer load", 1, phant2WaitParam1Signature, phant2WaitParam1Patch },
+ { true, 63019, "replace spin loop during computer scrolling", 1, phant2SlowScrollSignature, phant2SlowScrollPatch },
+ { true, 63019, "fix bad doc/email name & memo positioning", 2, phant2BadPositionSignature, phant2BadPositionPatch },
+ { true, 63019, "fix bad folder/doc icon refresh", 2, phant2BadIconSignature, phant2BadIconPatch },
+ { true, 63019, "fix file and note content placement", 1, phant2DocuStoreFileNotePlacementSignature, phant2DocuStoreFileNotePlacementPatch },
+ { true, 63019, "fix email content placement", 1, phant2DocuStoreEmailPlacementSignature, phant2DocuStoreEmailPlacementPatch },
+ { true, 64990, "remove save game name mangling (1/2)", 1, phant2SaveNameSignature1, phant2SaveNamePatch1 },
+ { true, 64990, "increase number of save games (1/2)", 1, phant2NumSavesSignature1, phant2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 2, phant2NumSavesSignature2, phant2NumSavesPatch2 },
+ { true, 64994, "remove save game name mangling (2/2)", 1, phant2SaveNameSignature2, phant2SaveNamePatch2 },
SCI_SIGNATUREENTRY_TERMINATOR
};
diff --git a/engines/titanic/game/cdrom_tray.cpp b/engines/titanic/game/cdrom_tray.cpp
index d6aa32c702..0215b58f43 100644
--- a/engines/titanic/game/cdrom_tray.cpp
+++ b/engines/titanic/game/cdrom_tray.cpp
@@ -23,6 +23,7 @@
#include "titanic/core/room_item.h"
#include "titanic/game/cdrom_tray.h"
#include "titanic/messages/messages.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -59,7 +60,7 @@ bool CCDROMTray::ActMsg(CActMsg *msg) {
if (_insertedCD == "None") {
// No CD in tray
playMovie(55, 65, 0);
- playSound("a#35.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"), 50, 0, 0);
_isOpened = false;
} else {
// Ejecting tray with CD
@@ -85,19 +86,19 @@ bool CCDROMTray::ActMsg(CActMsg *msg) {
} else if (_insertedCD == "newSTCD") {
// Opening tray with Starship Titanic CD
playMovie(0, 10, 0);
- playSound("a#34.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#34.wav", "a#29.wav"), 50, 0, 0);
_isOpened = true;
}
} else if (_isOpened) {
if (msg->_action == "newCD1" || msg->_action == "newCD2") {
// Standard CD dropped on CDROM Tray
playMovie(33, 43, MOVIE_NOTIFY_OBJECT);
- playSound("a#35.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"), 50, 0, 0);
} else if (msg->_action == "newSTCD") {
// Starship Titanic CD dropped on CDROM Tray
disableMouse();
playMovie(11, 21, MOVIE_NOTIFY_OBJECT);
- playSound("a#35.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"), 50, 0, 0);
} else {
return true;
}
diff --git a/engines/titanic/game/computer_screen.cpp b/engines/titanic/game/computer_screen.cpp
index ad4c025136..dee469af1c 100644
--- a/engines/titanic/game/computer_screen.cpp
+++ b/engines/titanic/game/computer_screen.cpp
@@ -22,7 +22,7 @@
#include "titanic/game/computer_screen.h"
#include "titanic/messages/messages.h"
-#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -90,20 +90,20 @@ bool CComputerScreen::TimerMsg(CTimerMsg *msg) {
switch (msg->_actionVal) {
case 0:
- if (!g_vm->isGerman()) {
- loadSound("a#32.wav");
- loadSound("a#31.wav");
- loadSound("a#33.wav");
- loadSound("a#30.wav");
- loadSound("a#29.wav");
- playSound("a#25.wav");
- } else {
+ if (g_language == Common::DE_DEU) {
loadSound("a#27.wav");
loadSound("a#26.wav");
loadSound("a#28.wav");
loadSound("a#25.wav");
loadSound("a#24.wav");
playSound("a#20.wav");
+ } else {
+ loadSound("a#32.wav");
+ loadSound("a#31.wav");
+ loadSound("a#33.wav");
+ loadSound("a#30.wav");
+ loadSound("a#29.wav");
+ playSound("a#25.wav");
}
addTimer(1, 2000, 0);
break;
@@ -140,7 +140,7 @@ bool CComputerScreen::TimerMsg(CTimerMsg *msg) {
setSoundVolume(handle, 10, 2);
playClip(392, 450);
startTalking("Doorbot", 0x3611A);
- sleep(8000);
+ sleep(TRANSLATE(8000, 7000));
playClip(450, 492);
startTalking("Doorbot", 0x36121);
diff --git a/engines/titanic/game/credits.cpp b/engines/titanic/game/credits.cpp
index 8333343cde..ddb44f127c 100644
--- a/engines/titanic/game/credits.cpp
+++ b/engines/titanic/game/credits.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/credits.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -58,13 +59,13 @@ bool CCredits::SignalObject(CSignalObject *msg) {
bool CCredits::TimerMsg(CTimerMsg *msg) {
stopGlobalSound(true, -1);
setVisible(true);
- loadSound("a#16.wav");
- loadSound("a#24.wav");
+ loadSound(TRANSLATE("a#16.wav", "a#11.wav"));
+ loadSound(TRANSLATE("a#24.wav", "a#19.wav"));
if (playCutscene(0, 18)) {
- playGlobalSound("a#16.wav", VOL_NORMAL, false, false, 0);
+ playGlobalSound(TRANSLATE("a#16.wav", "a#11.wav"), VOL_NORMAL, false, false, 0);
if (playCutscene(19, 642)) {
- playSound("a#24.wav");
+ playSound(TRANSLATE("a#24.wav", "a#19.wav"));
playCutscene(643, 750);
}
}
diff --git a/engines/titanic/game/credits_button.cpp b/engines/titanic/game/credits_button.cpp
index ee8f7bb329..2296a4e1e8 100644
--- a/engines/titanic/game/credits_button.cpp
+++ b/engines/titanic/game/credits_button.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/credits_button.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -50,7 +51,7 @@ bool CCreditsButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
bool CCreditsButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_fieldE0) {
- playSound("a#20.wav");
+ playSound(TRANSLATE("a#20.wav", "a#15.wav"));
CSignalObject signalMsg;
signalMsg._numValue = 1;
signalMsg.execute("CreditsPlayer");
diff --git a/engines/titanic/game/transport/service_elevator.cpp b/engines/titanic/game/transport/service_elevator.cpp
index dbd4e5d74f..1e76c63e01 100644
--- a/engines/titanic/game/transport/service_elevator.cpp
+++ b/engines/titanic/game/transport/service_elevator.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/transport/service_elevator.h"
#include "titanic/core/room_item.h"
#include "titanic/npcs/doorbot.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -107,7 +108,7 @@ bool CServiceElevator::ServiceElevatorMsg(CServiceElevatorMsg *msg) {
if (!_string1.empty()) {
if (_string1 == "DeepSpace") {
disableMouse();
- _soundHandle1 = playSound("z#413.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#413.wav", "z#157.wav"), 50);
_timerId = addTimer(1, 1000, 500);
} else {
changeView(_string1);
@@ -119,9 +120,9 @@ bool CServiceElevator::ServiceElevatorMsg(CServiceElevatorMsg *msg) {
// Reaching destination floor
_fieldF8 = false;
_fieldDC = _v3;
- loadSound("z#423.wav");
+ loadSound(TRANSLATE("z#423.wav", "z#168.wav"));
stopSound(_soundHandle2);
- _soundHandle2 = playSound("z#423.wav", 80);
+ _soundHandle2 = playSound(TRANSLATE("z#423.wav", "z#168.wav"), 80);
switch (_fieldDC) {
case 0:
@@ -132,12 +133,12 @@ bool CServiceElevator::ServiceElevatorMsg(CServiceElevatorMsg *msg) {
case 1:
_string1 = _v2 ? "BilgeRoomWith.Node 2.N" : "BilgeRoom.Node 1.N";
- queueSound("z#421.wav", _soundHandle2, 50);
+ queueSound(TRANSLATE("z#421.wav", "z#165.wav"), _soundHandle2, 50);
break;
case 2:
_string1 = _v1 ? "MoonEmbLobby.Node 1.NE" : "EmbLobby.Node 1.NE";
- queueSound("z#411.wav", _soundHandle2, 50);
+ queueSound(TRANSLATE("z#411.wav", "z#155.wav"), _soundHandle2, 50);
break;
default:
@@ -169,7 +170,7 @@ bool CServiceElevator::TimerMsg(CTimerMsg *msg) {
_fieldF8 = true;
CServiceElevatorFloorChangeMsg changeMsg(_fieldDC, _v3);
changeMsg.execute(getRoom(), nullptr, MSGFLAG_SCAN);
- _soundHandle2 = playSound("z#424.wav");
+ _soundHandle2 = playSound(TRANSLATE("z#424.wav", "z#169.wav"));
if (doorbot) {
CActMsg actMsg("DoorbotPlayerPressedTopButton");
@@ -209,21 +210,21 @@ bool CServiceElevator::ServiceElevatorFloorRequestMsg(CServiceElevatorFloorReque
CDoorbot *doorbot = dynamic_cast<CDoorbot *>(findRoom()->findByName("Doorbot"));
if (doorbot && _v3 == 0) {
- _soundHandle1 = playSound("z#415.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#415.wav", "z#159.wav"), 50);
_timerId = addTimer(1, 1000, 500);
} else if (doorbot && _v3 == 1) {
- _soundHandle1 = playSound("z#417.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#417.wav", "z#161.wav"), 50);
_timerId = addTimer(1, 1000, 500);
} else if (_fieldDC == _v3) {
switch (_v3) {
case 0:
- _soundHandle1 = playSound("z#415.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#415.wav", "z#159.wav"), 50);
break;
case 1:
- _soundHandle1 = playSound("z#420.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#420.wav", "z#164.wav"), 50);
break;
case 2:
- _soundHandle1 = playSound("z#410.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#410.wav", "z#154.wav"), 50);
break;
default:
break;
@@ -233,13 +234,14 @@ bool CServiceElevator::ServiceElevatorFloorRequestMsg(CServiceElevatorFloorReque
} else {
switch (_v3) {
case 0:
- _soundHandle1 = playSound("z#414.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#414.wav", "z#158.wav"), 50);
break;
case 1:
- _soundHandle1 = playSound(_fieldDC ? "z#419.wav" : "z#418.wav", 50);
+ _soundHandle1 = playSound(_fieldDC ? TRANSLATE("z#419.wav", "z#163.wav")
+ : TRANSLATE("z#418.wav", "z#162.wav"), 50);
break;
case 2:
- _soundHandle1 = playSound("z#409.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#409.wav", "z#153.wav"), 50);
break;
default:
break;
diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk
index 617e262396..395805933d 100644
--- a/engines/titanic/module.mk
+++ b/engines/titanic/module.mk
@@ -484,6 +484,14 @@ MODULE_OBJS := \
support/text_cursor.o \
support/time_event_info.o \
support/video_surface.o \
+ true_talk/german/deskbot_script.o \
+ true_talk/german/bellbot_script.o \
+ true_talk/german/deskbot_script.o \
+ true_talk/german/doorbot_script.o \
+ true_talk/german/liftbot_script.o \
+ true_talk/german/maitred_script.o \
+ true_talk/german/parrot_script.o \
+ true_talk/german/succubus_script.o \
true_talk/barbot_script.o \
true_talk/bellbot_script.o \
true_talk/deskbot_script.o \
diff --git a/engines/titanic/npcs/doorbot.cpp b/engines/titanic/npcs/doorbot.cpp
index 8ee1e3220c..d1bf662189 100644
--- a/engines/titanic/npcs/doorbot.cpp
+++ b/engines/titanic/npcs/doorbot.cpp
@@ -24,6 +24,7 @@
#include "titanic/core/room_item.h"
#include "titanic/debugger.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -424,27 +425,27 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
if (_npcFlags & NPCFLAG_DOORBOT_INTRO) {
// Initial speech by Doorbot in
- switch (msg->_dialogueId) {
- case 10552:
+ switch (msg->_dialogueId - TRANSLATE(10552, 10563)) {
+ case 0:
playClip("SE Try Buttons", MOVIE_NOTIFY_OBJECT);
_introMovieNum = 9;
break;
- case 10553:
+ case 1:
enableMouse();
break;
- case 10557:
+ case 5:
playClip("SE Move To Right", MOVIE_NOTIFY_OBJECT);
_introMovieNum = 11;
break;
- case 10559:
+ case 7:
stopAnimTimer(_timerId);
_timerId = addTimer(0, 2500, 0);
break;
- case 10560:
+ case 8:
petShow();
petSetArea(PET_CONVERSATION);
petIncAreaLocks();
@@ -452,31 +453,31 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
_timerId = addTimer(1, 1000, 0);
break;
- case 10561:
+ case 9:
enableMouse();
_introMovieNum = 1;
stopAnimTimer(_timerId);
_timerId = addTimer(2, 10000, 0);
break;
- case 10562:
+ case 10:
if (_introMovieNum == 1) {
stopAnimTimer(_timerId);
_timerId = addTimer(2, getRandomNumber(5000) + 5000, 0);
}
break;
- case 10563:
- case 10564:
+ case 11:
+ case 12:
disableMouse();
startTalking(this, 221480);
break;
- case 10565:
+ case 13:
startTalking(this, 221481);
break;
- case 10566:
+ case 14:
stopAnimTimer(_timerId);
_timerId = 0;
if (_field110 == 2) {
@@ -487,7 +488,7 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
}
break;
- case 10567: {
+ case 15: {
CActMsg actMsg("BecomeGettable");
actMsg.execute("Photograph");
enableMouse();
@@ -496,26 +497,26 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
break;
}
- case 10568:
+ case 16:
// Start moving cursor to photograph
mouseDisableControl();
mouseSetPosition(Point(600, 250), 2500);
_timerId = addTimer(6, 2500, 0);
break;
- case 10569:
+ case 17:
if (_field110 != 2) {
stopAnimTimer(_timerId);
_timerId = addTimer(5, 3000, 0);
}
break;
- case 10570:
+ case 18:
mouseSetPosition(Point(200, 430), 2500);
_timerId = addTimer(7, 3000, 0);
break;
- case 10571:
+ case 19:
playClip("Cloak On", MOVIE_NOTIFY_OBJECT);
_introMovieNum = 6;
break;
diff --git a/engines/titanic/titanic.cpp b/engines/titanic/titanic.cpp
index 5af822a235..e0e4a07ce6 100644
--- a/engines/titanic/titanic.cpp
+++ b/engines/titanic/titanic.cpp
@@ -56,10 +56,12 @@
namespace Titanic {
TitanicEngine *g_vm;
+Common::Language g_language;
TitanicEngine::TitanicEngine(OSystem *syst, const TitanicGameDescription *gameDesc)
: _gameDescription(gameDesc), Engine(syst), _randomSource("Titanic") {
g_vm = this;
+ g_language = getLanguage();
_debugger = nullptr;
_events = nullptr;
_filesManager = nullptr;
diff --git a/engines/titanic/titanic.h b/engines/titanic/titanic.h
index 1708df7d78..5efefe41bd 100644
--- a/engines/titanic/titanic.h
+++ b/engines/titanic/titanic.h
@@ -63,8 +63,6 @@ namespace Titanic {
#define MAX_SAVES 99
-#define TRANSLATE(enVal, deVal) (g_vm->isGerman() ? deVal : enVal)
-
// If enabled, fixes an original bug where dispensed chickens weren't
// meant to be hot unless the Yellow fuse was left in the Fusebox.
// This is being left disabled for now, since most walkthroughs for
diff --git a/engines/titanic/translation.h b/engines/titanic/translation.h
new file mode 100644
index 0000000000..c34e557208
--- /dev/null
+++ b/engines/titanic/translation.h
@@ -0,0 +1,36 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_TRANSLATION_H
+#define TITANIC_TRANSLATION_H
+
+#include "common/language.h"
+
+namespace Titanic {
+
+#define TRANSLATE(enVal, deVal) (g_language == Common::DE_DEU ? deVal : enVal)
+
+extern Common::Language g_language;
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_TRANSLATION_H */
diff --git a/engines/titanic/true_talk/doorbot_script.cpp b/engines/titanic/true_talk/doorbot_script.cpp
index 84c0548871..ab50eca0c6 100644
--- a/engines/titanic/true_talk/doorbot_script.cpp
+++ b/engines/titanic/true_talk/doorbot_script.cpp
@@ -24,6 +24,7 @@
#include "titanic/true_talk/doorbot_script.h"
#include "titanic/true_talk/tt_room_script.h"
#include "titanic/true_talk/true_talk_manager.h"
+#include "titanic/translation.h"
#include "titanic/titanic.h"
namespace Titanic {
@@ -546,10 +547,10 @@ ScriptChangedResult DoorbotScript::scriptChanged(const TTroomScript *roomScript,
CTrueTalkManager::setFlags(39, 0);
}
- if (id >= 220000 && id <= TRANSLATE(222418, 222430)) {
+ if (id >= 220000 && id <= (uint)TRANSLATE(222418, 222430)) {
addResponse(getDialogueId(id));
applyResponse();
- } else if (id >= 10000 && id <= TRANSLATE(11986, 11999)) {
+ } else if (id >= 10000 && id <= (uint)TRANSLATE(11986, 11999)) {
addResponse(id);
applyResponse();
}
diff --git a/engines/titanic/true_talk/german/barbot_script.cpp b/engines/titanic/true_talk/german/barbot_script.cpp
new file mode 100644
index 0000000000..616653d9cb
--- /dev/null
+++ b/engines/titanic/true_talk/german/barbot_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/deskbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/barbot_script.h b/engines/titanic/true_talk/german/barbot_script.h
new file mode 100644
index 0000000000..2d1c25d6b2
--- /dev/null
+++ b/engines/titanic/true_talk/german/barbot_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_BARBOT_SCRIPT_DE_H
+#define TITANIC_BARBOT_SCRIPT_DE_H
+
+#include "titanic/true_talk/barbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+class BarbotScript : public ::Titanic::BarbotScript {
+public:
+ BarbotScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
+ ::Titanic::BarbotScript(val1, charClass, v2, charName, v3, val2, v4, v5, v6, v7) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_BARBOT_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/bellbot_script.cpp b/engines/titanic/true_talk/german/bellbot_script.cpp
new file mode 100644
index 0000000000..c6ff9f6a50
--- /dev/null
+++ b/engines/titanic/true_talk/german/bellbot_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/bellbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/bellbot_script.h b/engines/titanic/true_talk/german/bellbot_script.h
new file mode 100644
index 0000000000..42f6e5d7cf
--- /dev/null
+++ b/engines/titanic/true_talk/german/bellbot_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_BELLBOT_SCRIPT_DE_H
+#define TITANIC_BELLBOT_SCRIPT_DE_H
+
+#include "titanic/true_talk/bellbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+class BellbotScript : public ::Titanic::BellbotScript {
+public:
+ BellbotScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2) :
+ ::Titanic::BellbotScript(val1, charClass, v2, charName, v3, val2) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_BELLBOT_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/deskbot_script.cpp b/engines/titanic/true_talk/german/deskbot_script.cpp
new file mode 100644
index 0000000000..616653d9cb
--- /dev/null
+++ b/engines/titanic/true_talk/german/deskbot_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/deskbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/deskbot_script.h b/engines/titanic/true_talk/german/deskbot_script.h
new file mode 100644
index 0000000000..1987fb7302
--- /dev/null
+++ b/engines/titanic/true_talk/german/deskbot_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_DESKBOT_SCRIPT_DE_H
+#define TITANIC_DESKBOT_SCRIPT_DE_H
+
+#include "titanic/true_talk/deskbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+class DeskbotScript : public ::Titanic::DeskbotScript {
+public:
+ DeskbotScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2) :
+ ::Titanic::DeskbotScript(val1, charClass, v2, charName, v3, val2) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_DESKBOT_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/doorbot_script.cpp b/engines/titanic/true_talk/german/doorbot_script.cpp
new file mode 100644
index 0000000000..616653d9cb
--- /dev/null
+++ b/engines/titanic/true_talk/german/doorbot_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/deskbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/doorbot_script.h b/engines/titanic/true_talk/german/doorbot_script.h
new file mode 100644
index 0000000000..1653f42d40
--- /dev/null
+++ b/engines/titanic/true_talk/german/doorbot_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_DOORBOT_SCRIPT_DE_H
+#define TITANIC_DOORBOT_SCRIPT_DE_H
+
+#include "titanic/true_talk/doorbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+class DoorbotScript : public ::Titanic::DoorbotScript {
+public:
+ DoorbotScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
+ ::Titanic::DoorbotScript(val1, charClass, v2, charName, v3, val2, v4, v5, v6, v7) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_DOORBOT_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/liftbot_script.cpp b/engines/titanic/true_talk/german/liftbot_script.cpp
new file mode 100644
index 0000000000..fade9968c4
--- /dev/null
+++ b/engines/titanic/true_talk/german/liftbot_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/liftbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/liftbot_script.h b/engines/titanic/true_talk/german/liftbot_script.h
new file mode 100644
index 0000000000..650a45201d
--- /dev/null
+++ b/engines/titanic/true_talk/german/liftbot_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_LIFTBOT_SCRIPT_DE_H
+#define TITANIC_LIFTBOT_SCRIPT_DE_H
+
+#include "titanic/true_talk/liftbot_script.h"
+
+namespace Titanic {
+namespace German {
+
+class LiftbotScript : public ::Titanic::LiftbotScript {
+public:
+ LiftbotScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
+ ::Titanic::LiftbotScript(val1, charClass, v2, charName, v3, val2, v4, v5, v6, v7) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_LIFTBOT_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/maitred_script.cpp b/engines/titanic/true_talk/german/maitred_script.cpp
new file mode 100644
index 0000000000..f670cdf58b
--- /dev/null
+++ b/engines/titanic/true_talk/german/maitred_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/maitred_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/maitred_script.h b/engines/titanic/true_talk/german/maitred_script.h
new file mode 100644
index 0000000000..2bd2ce8e14
--- /dev/null
+++ b/engines/titanic/true_talk/german/maitred_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_MAITRED_SCRIPT_DE_H
+#define TITANIC_MAITRED_SCRIPT_DE_H
+
+#include "titanic/true_talk/maitred_script.h"
+
+namespace Titanic {
+namespace German {
+
+class MaitreDScript : public ::Titanic::MaitreDScript {
+public:
+ MaitreDScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2) :
+ ::Titanic::MaitreDScript(val1, charClass, v2, charName, v3, val2) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_MAITRED_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/parrot_script.cpp b/engines/titanic/true_talk/german/parrot_script.cpp
new file mode 100644
index 0000000000..3e241c8683
--- /dev/null
+++ b/engines/titanic/true_talk/german/parrot_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/parrot_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/parrot_script.h b/engines/titanic/true_talk/german/parrot_script.h
new file mode 100644
index 0000000000..b34e6b112f
--- /dev/null
+++ b/engines/titanic/true_talk/german/parrot_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_PARROT_SCRIPT_DE_H
+#define TITANIC_PARROT_SCRIPT_DE_H
+
+#include "titanic/true_talk/parrot_script.h"
+
+namespace Titanic {
+namespace German {
+
+class ParrotScript : public ::Titanic::ParrotScript {
+public:
+ ParrotScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
+ ::Titanic::ParrotScript(val1, charClass, v2, charName, v3, val2, v4, v5, v6, v7) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_PARROT_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/german/succubus_script.cpp b/engines/titanic/true_talk/german/succubus_script.cpp
new file mode 100644
index 0000000000..a4963a8a59
--- /dev/null
+++ b/engines/titanic/true_talk/german/succubus_script.cpp
@@ -0,0 +1,29 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "titanic/true_talk/german/succubus_script.h"
+
+namespace Titanic {
+namespace German {
+
+} // End of namespace German
+} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/german/succubus_script.h b/engines/titanic/true_talk/german/succubus_script.h
new file mode 100644
index 0000000000..f9ad25c36e
--- /dev/null
+++ b/engines/titanic/true_talk/german/succubus_script.h
@@ -0,0 +1,41 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_SUCCUBUS_SCRIPT_DE_H
+#define TITANIC_SUCCUBUS_SCRIPT_DE_H
+
+#include "titanic/true_talk/succubus_script.h"
+
+namespace Titanic {
+namespace German {
+
+class SuccUBusScript : public ::Titanic::SuccUBusScript {
+public:
+ SuccUBusScript(int val1, const char *charClass, int v2,
+ const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
+ ::Titanic::SuccUBusScript(val1, charClass, v2, charName, v3, val2, v4, v5, v6, v7) {}
+};
+
+} // End of namespace German
+} // End of namespace Titanic
+
+#endif /* TITANIC_SUCCUBUS_SCRIPT_DE_H */
diff --git a/engines/titanic/true_talk/tt_scripts.cpp b/engines/titanic/true_talk/tt_scripts.cpp
index b1f18771fe..4c103ed457 100644
--- a/engines/titanic/true_talk/tt_scripts.cpp
+++ b/engines/titanic/true_talk/tt_scripts.cpp
@@ -30,6 +30,15 @@
#include "titanic/true_talk/maitred_script.h"
#include "titanic/true_talk/parrot_script.h"
#include "titanic/true_talk/succubus_script.h"
+#include "titanic/true_talk/german/barbot_script.h"
+#include "titanic/true_talk/german/bellbot_script.h"
+#include "titanic/true_talk/german/deskbot_script.h"
+#include "titanic/true_talk/german/doorbot_script.h"
+#include "titanic/true_talk/german/liftbot_script.h"
+#include "titanic/true_talk/german/maitred_script.h"
+#include "titanic/true_talk/german/parrot_script.h"
+#include "titanic/true_talk/german/succubus_script.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -63,14 +72,25 @@ TTscripts::TTscripts() {
addScript(new TTroomScript(scriptNum));
// Load npc scripts
- addScript(new DoorbotScript(104, "Doorbot", 0, "Fentible", 11, 1, -1, -1, -1, 0), 100);
- addScript(new BellbotScript(101, "Bellbot", 0, "Krage", 8, 1), 110);
- addScript(new LiftbotScript(105, "LiftBot", 0, "Nobby", 11, 1, -1, -1, -1, 0), 103);
- addScript(new DeskbotScript(103, "DeskBot", 0, "Marsinta", 11, 2), 110);
- addScript(new BarbotScript(100, "Barbot", 0, "Fortillian", 9, 1, -1, -1, -1, 0), 112);
- addScript(new ParrotScript(107, "Parrot", 0, "The Parrot", 5, 1, -1, -1, -1, 0), 111);
- addScript(new MaitreDScript(112, "MaitreDBot", 0, "Dastrogaaar", 8, 1), 132);
- addScript(new SuccUBusScript(111, "Succubus", 0, "Shorbert", 9, 1, -1, -1, -1, 0), 110);
+ if (g_language == Common::DE_DEU) {
+ addScript(new German::BarbotScript(100, "Barbot", 0, "Fortillian", 9, 1, -1, -1, -1, 0), 112);
+ addScript(new German::BellbotScript(101, "Bellbot", 0, "Krage", 8, 1), 110);
+ addScript(new German::DeskbotScript(103, "DeskBot", 0, "Marsinta", 11, 2), 110);
+ addScript(new German::DoorbotScript(104, "Doorbot", 0, "Fentible", 11, 1, -1, -1, -1, 0), 100);
+ addScript(new German::LiftbotScript(105, "LiftBot", 0, "Nobby", 11, 1, -1, -1, -1, 0), 103);
+ addScript(new German::ParrotScript(107, "Parrot", 0, "The Parrot", 5, 1, -1, -1, -1, 0), 111);
+ addScript(new German::SuccUBusScript(111, "Succubus", 0, "Shorbert", 9, 1, -1, -1, -1, 0), 110);
+ addScript(new German::MaitreDScript(112, "MaitreDBot", 0, "Dastrogaaar", 8, 1), 132);
+ } else {
+ addScript(new BarbotScript(100, "Barbot", 0, "Fortillian", 9, 1, -1, -1, -1, 0), 112);
+ addScript(new BellbotScript(101, "Bellbot", 0, "Krage", 8, 1), 110);
+ addScript(new DeskbotScript(103, "DeskBot", 0, "Marsinta", 11, 2), 110);
+ addScript(new DoorbotScript(104, "Doorbot", 0, "Fentible", 11, 1, -1, -1, -1, 0), 100);
+ addScript(new LiftbotScript(105, "LiftBot", 0, "Nobby", 11, 1, -1, -1, -1, 0), 103);
+ addScript(new ParrotScript(107, "Parrot", 0, "The Parrot", 5, 1, -1, -1, -1, 0), 111);
+ addScript(new SuccUBusScript(111, "Succubus", 0, "Shorbert", 9, 1, -1, -1, -1, 0), 110);
+ addScript(new MaitreDScript(112, "MaitreDBot", 0, "Dastrogaaar", 8, 1), 132);
+ }
}
void TTscripts::addScript(TTnpcScript *script, int scriptId) {