diff options
88 files changed, 2041 insertions, 1806 deletions
diff --git a/devtools/create_titanic/script_preresponses.cpp b/devtools/create_titanic/script_preresponses.cpp index a12210a53c..cb5beba90d 100644 --- a/devtools/create_titanic/script_preresponses.cpp +++ b/devtools/create_titanic/script_preresponses.cpp @@ -32,109 +32,213 @@ #include "file.h" #include "script_preresponses.h" -static const PreResponse BARBOT_PRERESPONSES[] = { - { 0x0000CA02, 0x0003D102 }, - { 0x0000CA68, 0x0003D102 }, - { 0x0000C9DA, 0x0003D102 }, - { 0x0000CA6A, 0x0003D103 }, - { 0x0000C922, 0x0003D099 }, - { 0x0000C97C, 0x0003D099 }, - { 0x0000CA0B, 0x0003D099 }, - { 0x0000CA72, 0x0003D099 }, - { 0x0000CA0E, 0x0003D107 }, - { 0x0000CA73, 0x0003D107 }, - { 0x0000CA12, 0x0003D108 }, - { 0x0000CA1C, 0x0003D10E }, - { 0x0000CA83, 0x0003D10E }, - { 0x0000CA1F, 0x0003D110 }, - { 0x0000CA86, 0x0003D110 }, - { 0x0000CA23, 0x0003D112 }, - { 0x0000CA8A, 0x0003D112 }, - { 0x0000CA92, 0x0003D122 }, - { 0x0000CA30, 0x0003D116 }, - { 0x0000CA96, 0x0003D116 }, - { 0x0000CA36, 0x0003D117 }, - { 0x0000C9FC, 0x0003D117 }, - { 0x0000CA9B, 0x0003D117 }, - { 0x0000CA63, 0x0003D117 }, - { 0x0000CA38, 0x0003D11B }, - { 0x0000CA15, 0x0003D109 }, - { 0x0000CA7B, 0x0003D109 }, - { 0x0000CA2E, 0x0003D115 }, - { 0x0000CA94, 0x0003D115 }, - { 0x0000CA5C, 0x0003D115 }, - { 0x0000CA21, 0x0003D111 }, - { 0x0000CA88, 0x0003D111 }, - { 0x0000CA2A, 0x0003D114 }, - { 0x0000CA28, 0x0003D119 }, - { 0x0000CA8E, 0x0003D119 }, - { 0x0000CA17, 0x0003D10B }, - { 0x0000CA7D, 0x0003D10B }, - { 0x0000CA4C, 0x0003D10B }, - { 0x0000CA06, 0x0003D105 }, - { 0x0000CA6C, 0x0003D105 }, - { 0x0000CA0A, 0x0003D106 }, - { 0x0000CA70, 0x0003D106 }, - { 0x0000CA19, 0x0003D10C }, - { 0x0000CA7F, 0x0003D10C }, - { 0x0000C9FF, 0x0003D101 }, - { 0x0000CA65, 0x0003D101 }, - { 0x00000000, 0x00000000 } +static const PreResponse BARBOT_PRERESPONSES_EN[] = { + { 0x0CA02, 0x3D102 }, + { 0x0CA68, 0x3D102 }, + { 0x0C9DA, 0x3D102 }, + { 0x0CA6A, 0x3D103 }, + { 0x0C922, 0x3D099 }, + { 0x0C97C, 0x3D099 }, + { 0x0CA0B, 0x3D099 }, + { 0x0CA72, 0x3D099 }, + { 0x0CA0E, 0x3D107 }, + { 0x0CA73, 0x3D107 }, + { 0x0CA12, 0x3D108 }, + { 0x0CA1C, 0x3D10E }, + { 0x0CA83, 0x3D10E }, + { 0x0CA1F, 0x3D110 }, + { 0x0CA86, 0x3D110 }, + { 0x0CA23, 0x3D112 }, + { 0x0CA8A, 0x3D112 }, + { 0x0CA92, 0x3D122 }, + { 0x0CA30, 0x3D116 }, + { 0x0CA96, 0x3D116 }, + { 0x0CA36, 0x3D117 }, + { 0x0C9FC, 0x3D117 }, + { 0x0CA9B, 0x3D117 }, + { 0x0CA63, 0x3D117 }, + { 0x0CA38, 0x3D11B }, + { 0x0CA15, 0x3D109 }, + { 0x0CA7B, 0x3D109 }, + { 0x0CA2E, 0x3D115 }, + { 0x0CA94, 0x3D115 }, + { 0x0CA5C, 0x3D115 }, + { 0x0CA21, 0x3D111 }, + { 0x0CA88, 0x3D111 }, + { 0x0CA2A, 0x3D114 }, + { 0x0CA28, 0x3D119 }, + { 0x0CA8E, 0x3D119 }, + { 0x0CA17, 0x3D10B }, + { 0x0CA7D, 0x3D10B }, + { 0x0CA4C, 0x3D10B }, + { 0x0CA06, 0x3D105 }, + { 0x0CA6C, 0x3D105 }, + { 0x0CA0A, 0x3D106 }, + { 0x0CA70, 0x3D106 }, + { 0x0CA19, 0x3D10C }, + { 0x0CA7F, 0x3D10C }, + { 0x0C9FF, 0x3D101 }, + { 0x0CA65, 0x3D101 }, + { 0x00000, 0x00000 } +}; +static const PreResponse BARBOT_PRERESPONSES_DE[] = { + { 0x0ca11, 0x3d102 }, + { 0x0ca77, 0x3d102 }, + { 0x0c9e9, 0x3d102 }, + { 0x0ca79, 0x3d103 }, + { 0x0c931, 0x3d099 }, + { 0x0c98b, 0x3d099 }, + { 0x0ca1a, 0x3d099 }, + { 0x0ca81, 0x3d099 }, + { 0x0ca1d, 0x3d107 }, + { 0x0ca82, 0x3d107 }, + { 0x0ca21, 0x3d108 }, + { 0x0ca2b, 0x3d10e }, + { 0x0ca92, 0x3d10e }, + { 0x0ca2e, 0x3d110 }, + { 0x0ca95, 0x3d110 }, + { 0x0ca32, 0x3d112 }, + { 0x0ca99, 0x3d112 }, + { 0x0caa1, 0x3d122 }, + { 0x0ca3f, 0x3d116 }, + { 0x0caa5, 0x3d116 }, + { 0x0ca45, 0x3d117 }, + { 0x0ca0b, 0x3d117 }, + { 0x0caaa, 0x3d117 }, + { 0x0ca72, 0x3d117 }, + { 0x0ca47, 0x3d11b }, + { 0x0ca24, 0x3d109 }, + { 0x0ca8a, 0x3d109 }, + { 0x0ca3d, 0x3d115 }, + { 0x0caa3, 0x3d115 }, + { 0x0ca6b, 0x3d115 }, + { 0x0ca30, 0x3d111 }, + { 0x0ca97, 0x3d111 }, + { 0x0ca39, 0x3d114 }, + { 0x0ca37, 0x3d119 }, + { 0x0ca9d, 0x3d119 }, + { 0x0ca26, 0x3d10b }, + { 0x0ca8c, 0x3d10b }, + { 0x0ca5b, 0x3d10b }, + { 0x0ca15, 0x3d105 }, + { 0x0ca7b, 0x3d105 }, + { 0x0ca19, 0x3d106 }, + { 0x0ca7f, 0x3d106 }, + { 0x0ca28, 0x3d10c }, + { 0x0ca8e, 0x3d10c }, + { 0x0ca0e, 0x3d101 }, + { 0x0ca74, 0x3d101 }, + { 0x00000, 0x00000 } +}; + +static const PreResponse BELLBOT_PRERESPONSES_EN[] = { + { 0x052DC, 0x30D40 }, + { 0x054E9, 0x30D40 }, + { 0x054EC, 0x30D40 }, + { 0x054F0, 0x30D40 }, + { 0x0532C, 0x31625 }, + { 0x05330, 0x31625 }, + { 0x05368, 0x31625 }, + { 0x05369, 0x31625 }, + { 0x0536A, 0x31625 }, + { 0x0536B, 0x31625 }, + { 0x0536C, 0x31625 }, + { 0x0536D, 0x31625 }, + { 0x053A4, 0x31625 }, + { 0x0558A, 0x31625 }, + { 0x05485, 0x31625 }, + { 0x04EE7, 0x31625 }, + { 0x04EE8, 0x31625 }, + { 0x0530A, 0x31625 }, + { 0x0530B, 0x31625 }, + { 0x053F6, 0x31625 }, + { 0x053F7, 0x31625 }, + { 0x053F8, 0x31625 }, + { 0x053F9, 0x31625 }, + { 0x053FA, 0x31625 }, + { 0x053FB, 0x31625 }, + { 0x053FC, 0x31625 }, + { 0x053FD, 0x31625 }, + { 0x0556B, 0x31041 }, + { 0x05499, 0x30D40 }, + { 0x053E9, 0x30E01 }, + { 0x053EB, 0x30E01 }, + { 0x053EC, 0x30E01 }, + { 0x053ED, 0x30E01 }, + { 0x053EE, 0x30E01 }, + { 0x053EF, 0x30E01 }, + { 0x053F0, 0x30E01 }, + { 0x053F1, 0x30E01 }, + { 0x053F2, 0x30E01 }, + { 0x053EA, 0x30E01 }, + { 0x05441, 0x30F00 }, + { 0x05444, 0x30F00 }, + { 0x05445, 0x30F00 }, + { 0x05443, 0x30F00 }, + { 0x05446, 0x30F00 }, + { 0x05447, 0x30F00 }, + { 0x05448, 0x30F00 }, + { 0x05449, 0x30F00 }, + { 0x0544A, 0x30F00 }, + { 0x0544B, 0x30F00 }, + { 0x05442, 0x30F00 }, + { 0x0527C, 0x315C8 }, + { 0x00000, 0x00000 } }; -static const PreResponse BELLBOT_PRERESPONSES[] = { - { 0x000052DC, 0x00030D40 }, - { 0x000054E9, 0x00030D40 }, - { 0x000054EC, 0x00030D40 }, - { 0x000054F0, 0x00030D40 }, - { 0x0000532C, 0x00031625 }, - { 0x00005330, 0x00031625 }, - { 0x00005368, 0x00031625 }, - { 0x00005369, 0x00031625 }, - { 0x0000536A, 0x00031625 }, - { 0x0000536B, 0x00031625 }, - { 0x0000536C, 0x00031625 }, - { 0x0000536D, 0x00031625 }, - { 0x000053A4, 0x00031625 }, - { 0x0000558A, 0x00031625 }, - { 0x00005485, 0x00031625 }, - { 0x00004EE7, 0x00031625 }, - { 0x00004EE8, 0x00031625 }, - { 0x0000530A, 0x00031625 }, - { 0x0000530B, 0x00031625 }, - { 0x000053F6, 0x00031625 }, - { 0x000053F7, 0x00031625 }, - { 0x000053F8, 0x00031625 }, - { 0x000053F9, 0x00031625 }, - { 0x000053FA, 0x00031625 }, - { 0x000053FB, 0x00031625 }, - { 0x000053FC, 0x00031625 }, - { 0x000053FD, 0x00031625 }, - { 0x0000556B, 0x00031041 }, - { 0x00005499, 0x00030D40 }, - { 0x000053E9, 0x00030E01 }, - { 0x000053EB, 0x00030E01 }, - { 0x000053EC, 0x00030E01 }, - { 0x000053ED, 0x00030E01 }, - { 0x000053EE, 0x00030E01 }, - { 0x000053EF, 0x00030E01 }, - { 0x000053F0, 0x00030E01 }, - { 0x000053F1, 0x00030E01 }, - { 0x000053F2, 0x00030E01 }, - { 0x000053EA, 0x00030E01 }, - { 0x00005441, 0x00030F00 }, - { 0x00005444, 0x00030F00 }, - { 0x00005445, 0x00030F00 }, - { 0x00005443, 0x00030F00 }, - { 0x00005446, 0x00030F00 }, - { 0x00005447, 0x00030F00 }, - { 0x00005448, 0x00030F00 }, - { 0x00005449, 0x00030F00 }, - { 0x0000544A, 0x00030F00 }, - { 0x0000544B, 0x00030F00 }, - { 0x00005442, 0x00030F00 }, - { 0x0000527C, 0x000315C8 }, - { 0x00000000, 0x00000000 } +static const PreResponse BELLBOT_PRERESPONSES_DE[] = { + { 0x052e2, 0x30d40 }, + { 0x054f1, 0x30d40 }, + { 0x054f4, 0x30d40 }, + { 0x054f8, 0x30d40 }, + { 0x05332, 0x31625 }, + { 0x05336, 0x31625 }, + { 0x0536e, 0x31625 }, + { 0x0536f, 0x31625 }, + { 0x05370, 0x31625 }, + { 0x05371, 0x31625 }, + { 0x05372, 0x31625 }, + { 0x05373, 0x31625 }, + { 0x053ab, 0x31625 }, + { 0x05592, 0x31625 }, + { 0x0548c, 0x31625 }, + { 0x04ee7, 0x31625 }, + { 0x04ee8, 0x31625 }, + { 0x05310, 0x31625 }, + { 0x05311, 0x31625 }, + { 0x053fd, 0x31625 }, + { 0x053fe, 0x31625 }, + { 0x053ff, 0x31625 }, + { 0x05400, 0x31625 }, + { 0x05401, 0x31625 }, + { 0x05402, 0x31625 }, + { 0x05403, 0x31625 }, + { 0x05404, 0x31625 }, + { 0x05573, 0x31041 }, + { 0x054a1, 0x30d40 }, + { 0x053f0, 0x30e01 }, + { 0x053f2, 0x30e01 }, + { 0x053f3, 0x30e01 }, + { 0x053f4, 0x30e01 }, + { 0x053f5, 0x30e01 }, + { 0x053f6, 0x30e01 }, + { 0x053f7, 0x30e01 }, + { 0x053f8, 0x30e01 }, + { 0x053f9, 0x30e01 }, + { 0x053f1, 0x30e01 }, + { 0x05448, 0x30f00 }, + { 0x0544b, 0x30f00 }, + { 0x0544c, 0x30f00 }, + { 0x0544a, 0x30f00 }, + { 0x0544d, 0x30f00 }, + { 0x0544e, 0x30f00 }, + { 0x0544f, 0x30f00 }, + { 0x05450, 0x30f00 }, + { 0x05451, 0x30f00 }, + { 0x05452, 0x30f00 }, + { 0x05449, 0x30f00 }, + { 0x05282, 0x315c8 }, + { 0x00000, 0x00000 } }; void writeScriptPreResponses(const char *name, const PreResponse *states) { @@ -151,6 +255,8 @@ void writeScriptPreResponses(const char *name, const PreResponse *states) { } void writeAllScriptPreResponses() { - writeScriptPreResponses("PreResponses/Barbot", BARBOT_PRERESPONSES); - writeScriptPreResponses("PreResponses/Bellbot", BELLBOT_PRERESPONSES); + writeScriptPreResponses("PreResponses/Barbot", BARBOT_PRERESPONSES_EN); + writeScriptPreResponses("PreResponses/Barbot/DE", BARBOT_PRERESPONSES_DE); + writeScriptPreResponses("PreResponses/Bellbot", BELLBOT_PRERESPONSES_EN); + writeScriptPreResponses("PreResponses/Bellbot/DE", BELLBOT_PRERESPONSES_DE); } diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index 9ebdfa9e7c..aa7a63d224 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -812,7 +812,7 @@ SaveStateList SciMetaEngine::listSaves(const char *target) const { Common::InSaveFile *in = saveFileMan->openForLoading(*file); if (in) { SavegameMetadata meta; - if (!get_savegame_metadata(in, &meta)) { + if (!get_savegame_metadata(in, meta)) { // invalid delete in; continue; @@ -861,7 +861,7 @@ SaveStateDescriptor SciMetaEngine::querySaveMetaInfos(const char *target, int sl if (in) { SavegameMetadata meta; - if (!get_savegame_metadata(in, &meta)) { + if (!get_savegame_metadata(in, meta)) { // invalid delete in; diff --git a/engines/sci/engine/file.cpp b/engines/sci/engine/file.cpp index 7e218bc81c..7f737036d2 100644 --- a/engines/sci/engine/file.cpp +++ b/engines/sci/engine/file.cpp @@ -34,28 +34,7 @@ namespace Sci { #ifdef ENABLE_SCI32 -/** - * A MemoryWriteStreamDynamic with additional read functionality. - * The read and write functions share a single stream position. - */ -class MemoryDynamicRWStream : public Common::MemoryWriteStreamDynamic, public Common::SeekableReadStream { -protected: - bool _eos; -public: - MemoryDynamicRWStream(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : MemoryWriteStreamDynamic(disposeMemory), _eos(false) { } - - uint32 read(void *dataPtr, uint32 dataSize); - - bool eos() const { return _eos; } - int32 pos() const { return _pos; } - int32 size() const { return _size; } - void clearErr() { _eos = false; Common::MemoryWriteStreamDynamic::clearErr(); } - bool seek(int32 offs, int whence = SEEK_SET) { return Common::MemoryWriteStreamDynamic::seek(offs, whence); } - -}; - -uint32 MemoryDynamicRWStream::read(void *dataPtr, uint32 dataSize) -{ +uint32 MemoryDynamicRWStream::read(void *dataPtr, uint32 dataSize) { // Read at most as many bytes as are still available... if (dataSize > _size - _pos) { dataSize = _size - _pos; @@ -69,40 +48,18 @@ uint32 MemoryDynamicRWStream::read(void *dataPtr, uint32 dataSize) return dataSize; } -/** - * A MemoryDynamicRWStream intended to re-write a file. - * It reads the contents of `inFile` in the constructor, and writes back - * the changes to `fileName` in the destructor (and when calling commit() ). - */ -class SaveFileRewriteStream : public MemoryDynamicRWStream { -public: - SaveFileRewriteStream(Common::String fileName, - Common::SeekableReadStream *inFile, - kFileOpenMode mode, bool compress); - virtual ~SaveFileRewriteStream(); - - virtual uint32 write(const void *dataPtr, uint32 dataSize) { _changed = true; return MemoryDynamicRWStream::write(dataPtr, dataSize); } - - void commit(); //< Save back to disk - -protected: - Common::String _fileName; - bool _compress; - bool _changed; -}; - -SaveFileRewriteStream::SaveFileRewriteStream(Common::String fileName, +SaveFileRewriteStream::SaveFileRewriteStream(const Common::String &fileName, Common::SeekableReadStream *inFile, kFileOpenMode mode, - bool compress) -: MemoryDynamicRWStream(DisposeAfterUse::YES), - _fileName(fileName), _compress(compress) -{ - const bool truncate = mode == _K_FILE_MODE_CREATE; - const bool seekToEnd = mode == _K_FILE_MODE_OPEN_OR_CREATE; + bool compress) : + MemoryDynamicRWStream(DisposeAfterUse::YES), + _fileName(fileName), + _compress(compress) { + const bool truncate = (mode == kFileOpenModeCreate); + const bool seekToEnd = (mode == kFileOpenModeOpenOrCreate); if (!truncate && inFile) { - unsigned int s = inFile->size(); + const uint s = inFile->size(); ensureCapacity(s); inFile->read(_data, s); if (seekToEnd) { @@ -119,16 +76,14 @@ SaveFileRewriteStream::~SaveFileRewriteStream() { } void SaveFileRewriteStream::commit() { - // Write contents of buffer back to file - - if (_changed) { - Common::WriteStream *outFile = g_sci->getSaveFileManager()->openForSaving(_fileName, _compress); - outFile->write(_data, _size); - delete outFile; - _changed = false; + if (!_changed) { + return; } -} + Common::ScopedPtr<Common::WriteStream> outFile(g_sci->getSaveFileManager()->openForSaving(_fileName, _compress)); + outFile->write(_data, _size); + _changed = false; +} #endif uint findFreeFileHandle(EngineState *s) { @@ -217,8 +172,19 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo } #ifdef ENABLE_SCI32 - if ((g_sci->getGameId() == GID_PHANTASMAGORIA && (filename == "phantsg.dir" || filename == "chase.dat" || filename == "tmp.dat")) || - (g_sci->getGameId() == GID_PQSWAT && filename == "swat.dat")) { + bool isRewritableFile; + switch (g_sci->getGameId()) { + case GID_PHANTASMAGORIA: + isRewritableFile = (filename == "phantsg.dir" || filename == "chase.dat" || filename == "tmp.dat"); + break; + case GID_PQSWAT: + isRewritableFile = (filename == "swat.dat"); + break; + default: + isRewritableFile = false; + } + + if (isRewritableFile) { debugC(kDebugLevelFile, " -> file_open opening %s for rewriting", wrappedName.c_str()); inFile = saveFileMan->openForLoading(wrappedName); @@ -227,8 +193,8 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo if (!inFile) inFile = SearchMan.createReadStreamForMember(englishName); - if (mode == _K_FILE_MODE_OPEN_OR_FAIL && !inFile) { - debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_OPEN_OR_FAIL): failed to open file '%s'", englishName.c_str()); + if (mode == kFileOpenModeOpenOrFail && !inFile) { + debugC(kDebugLevelFile, " -> file_open(kFileOpenModeOpenOrFail): failed to open file '%s'", englishName.c_str()); return SIGNAL_REG; } @@ -241,7 +207,7 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo outFile = stream; } else #endif - if (mode == _K_FILE_MODE_OPEN_OR_FAIL) { + if (mode == kFileOpenModeOpenOrFail) { // Try to open file, abort if not possible inFile = saveFileMan->openForLoading(wrappedName); // If no matching savestate exists: fall back to reading from a regular @@ -250,19 +216,19 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo inFile = SearchMan.createReadStreamForMember(englishName); if (!inFile) - debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_OPEN_OR_FAIL): failed to open file '%s'", englishName.c_str()); - } else if (mode == _K_FILE_MODE_CREATE) { + debugC(kDebugLevelFile, " -> file_open(kFileOpenModeOpenOrFail): failed to open file '%s'", englishName.c_str()); + } else if (mode == kFileOpenModeCreate) { // Create the file, destroying any content it might have had outFile = saveFileMan->openForSaving(wrappedName, isCompressed); if (!outFile) - debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_CREATE): failed to create file '%s'", englishName.c_str()); - } else if (mode == _K_FILE_MODE_OPEN_OR_CREATE) { + debugC(kDebugLevelFile, " -> file_open(kFileOpenModeCreate): failed to create file '%s'", englishName.c_str()); + } else if (mode == kFileOpenModeOpenOrCreate) { // Try to open file, create it if it doesn't exist outFile = saveFileMan->openForSaving(wrappedName, isCompressed); if (!outFile) - debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_CREATE): failed to create file '%s'", englishName.c_str()); + debugC(kDebugLevelFile, " -> file_open(kFileOpenModeCreate): failed to create file '%s'", englishName.c_str()); - // QfG1 opens the character export file with _K_FILE_MODE_CREATE first, + // QfG1 opens the character export file with kFileOpenModeCreate first, // closes it immediately and opens it again with this here. Perhaps // other games use this for read access as well. I guess changing this // whole code into using virtual files and writing them after close @@ -287,7 +253,7 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo } FileHandle *getFileFromHandle(EngineState *s, uint handle) { - if ((handle == 0) || ((handle >= VIRTUALFILE_HANDLE_START) && (handle <= VIRTUALFILE_HANDLE_END))) { + if ((handle == 0) || ((handle >= kVirtualFileHandleStart) && (handle <= kVirtualFileHandleEnd))) { error("Attempt to use invalid file handle (%d)", handle); return 0; } @@ -333,38 +299,34 @@ static bool _savegame_sort_byDate(const SavegameDesc &l, const SavegameDesc &r) return (l.time > r.time); } -bool fillSavegameDesc(const Common::String &filename, SavegameDesc *desc) { +bool fillSavegameDesc(const Common::String &filename, SavegameDesc &desc) { Common::SaveFileManager *saveFileMan = g_sci->getSaveFileManager(); - Common::SeekableReadStream *in; - if ((in = saveFileMan->openForLoading(filename)) == nullptr) { + Common::ScopedPtr<Common::SeekableReadStream> in(saveFileMan->openForLoading(filename)); + if (!in) { return false; } SavegameMetadata meta; - if (!get_savegame_metadata(in, &meta) || meta.name.empty()) { - // invalid - delete in; + if (!get_savegame_metadata(in.get(), meta) || meta.name.empty()) { return false; } - delete in; const int id = strtol(filename.end() - 3, NULL, 10); - desc->id = id; - desc->date = meta.saveDate; + desc.id = id; // We need to fix date in here, because we save DDMMYYYY instead of // YYYYMMDD, so sorting wouldn't work - desc->date = ((desc->date & 0xFFFF) << 16) | ((desc->date & 0xFF0000) >> 8) | ((desc->date & 0xFF000000) >> 24); - desc->time = meta.saveTime; - desc->version = meta.version; - desc->gameVersion = meta.gameVersion; - desc->script0Size = meta.script0Size; - desc->gameObjectOffset = meta.gameObjectOffset; + desc.date = ((meta.saveDate & 0xFFFF) << 16) | ((meta.saveDate & 0xFF0000) >> 8) | ((meta.saveDate & 0xFF000000) >> 24); + desc.time = meta.saveTime; + desc.version = meta.version; + desc.gameVersion = meta.gameVersion; + desc.script0Size = meta.script0Size; + desc.gameObjectOffset = meta.gameObjectOffset; #ifdef ENABLE_SCI32 if (g_sci->getGameId() == GID_SHIVERS) { - desc->lowScore = meta.lowScore; - desc->highScore = meta.highScore; + desc.lowScore = meta.lowScore; + desc.highScore = meta.highScore; } else if (g_sci->getGameId() == GID_MOTHERGOOSEHIRES) { - desc->avatarId = meta.avatarId; + desc.avatarId = meta.avatarId; } #endif @@ -372,10 +334,10 @@ bool fillSavegameDesc(const Common::String &filename, SavegameDesc *desc) { meta.name.deleteLastChar(); // At least Phant2 requires use of strncpy, since it creates save game - // names of exactly SCI_MAX_SAVENAME_LENGTH - strncpy(desc->name, meta.name.c_str(), SCI_MAX_SAVENAME_LENGTH); + // names of exactly kMaxSaveNameLength + strncpy(desc.name, meta.name.c_str(), kMaxSaveNameLength); - return desc; + return true; } // Create an array containing all found savedgames, sorted by creation date @@ -394,8 +356,9 @@ void listSavegames(Common::Array<SavegameDesc> &saves) { #endif SavegameDesc desc; - fillSavegameDesc(filename, &desc); - saves.push_back(desc); + if (fillSavegameDesc(filename, desc)) { + saves.push_back(desc); + } } // Sort the list by creation date of the saves @@ -411,6 +374,74 @@ int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId) { return -1; } +#ifdef ENABLE_SCI32 +Common::MemoryReadStream *makeCatalogue(const uint maxNumSaves, const uint gameNameSize, const Common::String &fileNamePattern, const bool ramaFormat) { + enum { + kGameIdSize = sizeof(int16), + kNumSavesSize = sizeof(int16), + kFreeSlotSize = sizeof(int16), + kTerminatorSize = kGameIdSize, + kTerminator = 0xFFFF + }; + + Common::Array<SavegameDesc> games; + listSavegames(games); + + const uint numSaves = MIN(games.size(), maxNumSaves); + const uint fileNameSize = fileNamePattern.empty() ? 0 : 12; + const uint entrySize = kGameIdSize + fileNameSize + gameNameSize; + uint dataSize = numSaves * entrySize + kTerminatorSize; + if (ramaFormat) { + dataSize += kNumSavesSize + kFreeSlotSize * maxNumSaves; + } + + byte *out = (byte *)malloc(dataSize); + const byte *const data = out; + + Common::Array<bool> usedSlots; + if (ramaFormat) { + WRITE_LE_UINT16(out, numSaves); + out += kNumSavesSize; + usedSlots.resize(maxNumSaves); + } + + for (uint i = 0; i < numSaves; ++i) { + const SavegameDesc &save = games[i]; + const uint16 id = save.id - kSaveIdShift; + if (!ramaFormat) { + WRITE_LE_UINT16(out, id); + out += kGameIdSize; + } + if (fileNameSize) { + const Common::String fileName = Common::String::format(fileNamePattern.c_str(), id); + strncpy(reinterpret_cast<char *>(out), fileName.c_str(), fileNameSize); + out += fileNameSize; + } + // Game names can be up to exactly gameNameSize + strncpy(reinterpret_cast<char *>(out), save.name, gameNameSize); + out += gameNameSize; + if (ramaFormat) { + WRITE_LE_UINT16(out, id); + out += kGameIdSize; + + assert(id >= 0 && id < maxNumSaves); + usedSlots[id] = true; + } + } + + if (ramaFormat) { + // A table indicating which save game slots are occupied + for (uint i = 0; i < usedSlots.size(); ++i) { + WRITE_LE_UINT16(out, !usedSlots[i]); + out += kFreeSlotSize; + } + } + + WRITE_LE_UINT16(out, kTerminator); + + return new Common::MemoryReadStream(data, dataSize, DisposeAfterUse::YES); +} +#endif FileHandle::FileHandle() : _in(0), _out(0) { } diff --git a/engines/sci/engine/file.h b/engines/sci/engine/file.h index 1657dd3c7c..b94caa039f 100644 --- a/engines/sci/engine/file.h +++ b/engines/sci/engine/file.h @@ -23,20 +23,21 @@ #ifndef SCI_ENGINE_FILE_H #define SCI_ENGINE_FILE_H +#include "common/memstream.h" #include "common/str-array.h" #include "common/stream.h" namespace Sci { enum kFileOpenMode { - _K_FILE_MODE_OPEN_OR_CREATE = 0, - _K_FILE_MODE_OPEN_OR_FAIL = 1, - _K_FILE_MODE_CREATE = 2 + kFileOpenModeOpenOrCreate = 0, + kFileOpenModeOpenOrFail = 1, + kFileOpenModeCreate = 2 }; enum { - SCI_MAX_SAVENAME_LENGTH = 36, ///< Maximum length of a savegame name (including optional terminator character). - MAX_SAVEGAME_NR = 20 ///< Maximum number of savegames + kMaxSaveNameLength = 36, ///< Maximum length of a savegame name (including optional terminator character). + kMaxNumSaveGames = 20 ///< Maximum number of savegames }; #ifdef ENABLE_SCI32 @@ -51,10 +52,12 @@ enum { }; #endif -#define VIRTUALFILE_HANDLE_START 32000 -#define VIRTUALFILE_HANDLE_SCI32SAVE 32100 -#define VIRTUALFILE_HANDLE_SCIAUDIO 32300 -#define VIRTUALFILE_HANDLE_END 32300 +enum { + kVirtualFileHandleStart = 32000, + kVirtualFileHandleSci32Save = 32100, + kVirtualFileHandleSciAudio = 32300, + kVirtualFileHandleEnd = 32300 +}; struct SavegameDesc { int16 id; @@ -62,7 +65,7 @@ struct SavegameDesc { int date; int time; int version; - char name[SCI_MAX_SAVENAME_LENGTH]; + char name[kMaxSaveNameLength]; Common::String gameVersion; uint32 script0Size; uint32 gameObjectOffset; @@ -112,7 +115,66 @@ private: void addAsVirtualFiles(Common::String title, Common::String fileMask); }; +#ifdef ENABLE_SCI32 +/** + * A MemoryWriteStreamDynamic with additional read functionality. + * The read and write functions share a single stream position. + */ +class MemoryDynamicRWStream : public Common::MemoryWriteStreamDynamic, public Common::SeekableReadStream { +public: + MemoryDynamicRWStream(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : MemoryWriteStreamDynamic(disposeMemory), _eos(false) { } + + uint32 read(void *dataPtr, uint32 dataSize); + + bool eos() const { return _eos; } + int32 pos() const { return _pos; } + int32 size() const { return _size; } + void clearErr() { _eos = false; Common::MemoryWriteStreamDynamic::clearErr(); } + bool seek(int32 offs, int whence = SEEK_SET) { return Common::MemoryWriteStreamDynamic::seek(offs, whence); } + +protected: + bool _eos; +}; + +/** + * A MemoryDynamicRWStream intended to re-write a file. + * It reads the contents of `inFile` in the constructor, and writes back + * the changes to `fileName` in the destructor (and when calling commit() ). + */ +class SaveFileRewriteStream : public MemoryDynamicRWStream { +public: + SaveFileRewriteStream(const Common::String &fileName, + Common::SeekableReadStream *inFile, + kFileOpenMode mode, bool compress); + virtual ~SaveFileRewriteStream(); + + virtual uint32 write(const void *dataPtr, uint32 dataSize) { _changed = true; return MemoryDynamicRWStream::write(dataPtr, dataSize); } + + void commit(); //< Save back to disk + +protected: + Common::String _fileName; + bool _compress; + bool _changed; +}; + +#endif + uint findFreeFileHandle(EngineState *s); +reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mode, bool unwrapFilename); +FileHandle *getFileFromHandle(EngineState *s, uint handle); +int fgets_wrapper(EngineState *s, char *dest, int maxsize, int handle); +void listSavegames(Common::Array<SavegameDesc> &saves); +int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId); +bool fillSavegameDesc(const Common::String &filename, SavegameDesc &desc); + +#ifdef ENABLE_SCI32 +/** + * Constructs an in-memory stream from the ScummVM save game list that is + * compatible with game scripts' game catalogue readers. + */ +Common::MemoryReadStream *makeCatalogue(const uint maxNumSaves, const uint gameNameSize, const Common::String &fileNamePattern, const bool ramaFormat); +#endif } // End of namespace Sci diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp index e74a5d6e3f..06cf0c9f66 100644 --- a/engines/sci/engine/guest_additions.cpp +++ b/engines/sci/engine/guest_additions.cpp @@ -243,7 +243,12 @@ void GuestAdditions::instantiateScriptHook(Script &script, const bool ignoreDela // segment table to change (versus save games that are not patched), // breaking persistent objects (like the control panel in SQ6) which // require reg_ts created during game startup to always be the same - patchGameSaveRestoreSCI32(script); + + if (g_sci->getGameId() == GID_RAMA) { + patchGameSaveRestoreRama(script); + } else { + patchGameSaveRestoreSCI32(script); + } } } @@ -392,25 +397,7 @@ static const byte SRDialogPatch[] = { }; void GuestAdditions::patchGameSaveRestoreSCI32(Script &script) const { - const ObjMap &objMap = script.getObjectMap(); - for (ObjMap::const_iterator it = objMap.begin(); it != objMap.end(); ++it) { - const Object &obj = it->_value; - if (strncmp(_segMan->getObjectName(obj.getPos()), "SRDialog", 8) != 0) { - continue; - } - - const uint16 methodCount = obj.getMethodCount(); - for (uint16 methodNr = 0; methodNr < methodCount; ++methodNr) { - const uint16 selectorId = obj.getFuncSelector(methodNr); - const Common::String methodName = _kernel->getSelectorName(selectorId); - if (methodName == "doit") { - const reg_t methodAddress = obj.getFunction(methodNr); - byte *patchPtr = const_cast<byte *>(script.getBuf(methodAddress.getOffset())); - memcpy(patchPtr, SRDialogPatch, sizeof(SRDialogPatch)); - break; - } - } - } + patchSRDialogDoit(script, "SRDialog", SRDialogPatch, sizeof(SRDialogPatch)); } static const byte SRTorinPatch[] = { @@ -446,7 +433,7 @@ void GuestAdditions::patchGameSaveRestorePhant2(Script &script) const { for (ObjMap::const_iterator it = objects.begin(); it != objects.end(); ++it) { const Object &obj = it->_value; - if (strncmp(_segMan->derefString(obj.getNameSelector()), "srGetGame", 9) != 0) { + if (strcmp(_segMan->derefString(obj.getNameSelector()), "srGetGame") != 0) { continue; } @@ -461,6 +448,50 @@ void GuestAdditions::patchGameSaveRestorePhant2(Script &script) const { } } +static const byte RamaSRDialogPatch[] = { + 0x78, // push1 + 0x7c, // pushSelf + 0x43, kScummVMSaveLoadId, 0x02, 0x00, // callk kScummVMSaveLoad, 0 + 0x48 // ret +}; + +static const int RamaSRDialogUint16Offsets[] = { 4 }; + +void GuestAdditions::patchGameSaveRestoreRama(Script &script) const { + patchSRDialogDoit(script, "Save", RamaSRDialogPatch, sizeof(RamaSRDialogPatch), RamaSRDialogUint16Offsets, ARRAYSIZE(RamaSRDialogUint16Offsets)); + patchSRDialogDoit(script, "Restore", RamaSRDialogPatch, sizeof(RamaSRDialogPatch), RamaSRDialogUint16Offsets, ARRAYSIZE(RamaSRDialogUint16Offsets)); +} + +void GuestAdditions::patchSRDialogDoit(Script &script, const char *const objectName, const byte *patchData, const int patchSize, const int *uint16Offsets, const uint numOffsets) const { + const ObjMap &objMap = script.getObjectMap(); + for (ObjMap::const_iterator it = objMap.begin(); it != objMap.end(); ++it) { + const Object &obj = it->_value; + if (strcmp(_segMan->getObjectName(obj.getPos()), objectName) != 0) { + continue; + } + + const uint16 methodCount = obj.getMethodCount(); + for (uint16 methodNr = 0; methodNr < methodCount; ++methodNr) { + const uint16 selectorId = obj.getFuncSelector(methodNr); + const Common::String methodName = _kernel->getSelectorName(selectorId); + if (methodName == "doit") { + const reg_t methodAddress = obj.getFunction(methodNr); + byte *patchPtr = const_cast<byte *>(script.getBuf(methodAddress.getOffset())); + memcpy(patchPtr, patchData, patchSize); + + if (g_sci->isBE()) { + for (uint i = 0; i < numOffsets; ++i) { + const int offset = uint16Offsets[i]; + SWAP(patchPtr[offset], patchPtr[offset + 1]); + } + } + + return; + } + } + } +} + reg_t GuestAdditions::kScummVMSaveLoad(EngineState *s, int argc, reg_t *argv) const { if (g_sci->getGameId() == GID_PHANTASMAGORIA2) { return promptSaveRestorePhant2(s, argc, argv); @@ -470,6 +501,10 @@ reg_t GuestAdditions::kScummVMSaveLoad(EngineState *s, int argc, reg_t *argv) co return promptSaveRestoreTorin(s, argc, argv); } + if (g_sci->getGameId() == GID_RAMA) { + return promptSaveRestoreRama(s, argc, argv); + } + return promptSaveRestoreDefault(s, argc, argv); } @@ -522,6 +557,92 @@ reg_t GuestAdditions::promptSaveRestorePhant2(EngineState *s, int argc, reg_t *a return make_reg(0, saveNo); } +reg_t GuestAdditions::promptSaveRestoreRama(EngineState *s, int argc, reg_t *argv) const { + assert(argc == 1); + const bool isSave = (strcmp(_segMan->getObjectName(argv[0]), "Save") == 0); + + const reg_t editor = _segMan->findObjectByName("editI"); + reg_t outDescription = readSelector(_segMan, editor, SELECTOR(text)); + if (!_segMan->isValidAddr(outDescription, SEG_TYPE_ARRAY)) { + _segMan->allocateArray(kArrayTypeString, 0, &outDescription); + writeSelector(_segMan, editor, SELECTOR(text), outDescription); + } + + int saveNo = runSaveRestore(isSave, outDescription, s->_delayedRestoreGameId); + int saveIndex = -1; + if (saveNo != -1) { + // The save number returned by runSaveRestore is a SCI save number + // because normally SRDialogs return the save ID, but RAMA returns the + // save game's index in the save game list instead, so we need to + // convert back to the ScummVM save number here to find the correct + // index + saveNo += kSaveIdShift; + + Common::Array<SavegameDesc> saves; + listSavegames(saves); + saveIndex = findSavegame(saves, saveNo); + + if (isSave) { + bool resetCatalogFile = false; + const Common::String saveGameName = _segMan->getString(outDescription); + + // The original game save/restore code returns index 0 when a game + // is created that does not already exist and then the scripts find + // the next hole and insert there, but the ScummVM GUI works + // differently and allows users to insert a game wherever they want, + // so we need to force the save game to exist in advance so RAMA's + // save code will successfully put it where we want it + if (saveIndex == -1) { + // We need to touch the save file just so it exists here, since + // otherwise the game will not let us save to the new save slot + // (it will try to come up with a brand new slot instead) + Common::OutSaveFile *out = g_sci->getSaveFileManager()->openForSaving(g_sci->getSavegameName(saveNo)); + set_savegame_metadata(out, saveGameName, ""); + + // Make sure the save file is fully written before we try to + // re-retrieve the list of saves, since otherwise it may not + // show up in the list + delete out; + + // We have to re-retrieve saves and find the index instead of + // assuming the newest save will be in index 0 because save game + // times are not guaranteed to be steady + saves.clear(); + listSavegames(saves); + saveIndex = findSavegame(saves, saveNo); + if (saveIndex == -1) { + warning("Stub save not found when trying to save a new game to slot %d", saveNo); + } else { + // Kick the CatalogFile into believing that this new save + // game exists already, otherwise it the game will not + // actually save into the new save + resetCatalogFile = true; + } + } else if (strncmp(saveGameName.c_str(), saves[saveIndex].name, kMaxSaveNameLength) != 0) { + // The game doesn't let the save game name change for the same + // slot, but ScummVM's GUI does, so force the new name into the + // save file metadata if it has changed so it actually makes it + // into the save game + Common::ScopedPtr<Common::OutSaveFile> out(g_sci->getSaveFileManager()->openForSaving(g_sci->getSavegameName(saveNo))); + set_savegame_metadata(out.get(), saveGameName, ""); + resetCatalogFile = true; + } + + if (resetCatalogFile) { + const reg_t catalogFileId = _state->variables[VAR_GLOBAL][kGlobalVarRamaCatalogFile]; + if (catalogFileId.isNull()) { + warning("Could not find CatalogFile when saving from launcher"); + } + reg_t args[] = { NULL_REG }; + invokeSelector(catalogFileId, SELECTOR(dispose)); + invokeSelector(catalogFileId, SELECTOR(init), ARRAYSIZE(args), args); + } + } + } + + return make_reg(0, saveIndex); +} + int GuestAdditions::runSaveRestore(const bool isSave, reg_t outDescription, const int forcedSaveNo) const { int saveNo; Common::String descriptionString; @@ -564,7 +685,7 @@ int GuestAdditions::runSaveRestore(const bool isSave, reg_t outDescription, cons // number here to match what would come from the normal SCI save/restore // dialog. There is additional special code for handling the autosave // game inside of kRestoreGame32. - --saveNo; + saveNo -= kSaveIdShift; } return saveNo; @@ -624,6 +745,14 @@ bool GuestAdditions::restoreFromLauncher() const { // which will automatically return the `_delayedRestoreGameId` instead // of prompting the user for a save game invokeSelector(g_sci->getGameObject(), SELECTOR(restore)); + + // The normal save game system resets _delayedRestoreGameId with a + // call to `EngineState::reset`, but RAMA uses a custom save game + // system which does not reset the engine, so we need to clear the + // ID here or the engine will just try to restore the game forever + if (g_sci->getGameId() == GID_RAMA) { + _state->_delayedRestoreGameId = -1; + } } _restoring = false; diff --git a/engines/sci/engine/guest_additions.h b/engines/sci/engine/guest_additions.h index 64bd667414..a1043a8402 100644 --- a/engines/sci/engine/guest_additions.h +++ b/engines/sci/engine/guest_additions.h @@ -220,6 +220,17 @@ private: void patchGameSaveRestorePhant2(Script &script) const; /** + * Patches the ScummVM save/load dialogue into RAMA. + */ + void patchGameSaveRestoreRama(Script &script) const; + + /** + * Patches the `doit` method of an SRDialog object with the given name + * using the given patch data. + */ + void patchSRDialogDoit(Script &script, const char *const objectName, const byte *patchData, const int patchSize, const int *uint16Offsets = nullptr, const uint numOffsets = 0) const; + + /** * Prompts for a save game and returns it to game scripts using default * SRDialog game class semantics. */ @@ -238,6 +249,12 @@ private: reg_t promptSaveRestorePhant2(EngineState *s, int argc, reg_t *argv) const; /** + * Prompts for a save game and returns it to game scripts using RAMA's + * custom SRDialog class semantics. + */ + reg_t promptSaveRestoreRama(EngineState *s, int argc, reg_t *argv) const; + + /** * Prompts the user to save or load a game. * * @param isSave If true, the prompt is for saving. diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index d7a83d9dbf..884a499542 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -67,6 +67,7 @@ struct SciKernelMapSubEntry { #define SIG_SINCE_SCI11 SCI_VERSION_1_1, SCI_VERSION_NONE #define SIG_SCI2 SCI_VERSION_2, SCI_VERSION_2 #define SIG_SCI21EARLY SCI_VERSION_2_1_EARLY, SCI_VERSION_2_1_EARLY +#define SIG_SCI21MID_LATE SCI_VERSION_2_1_MIDDLE, SCI_VERSION_2_1_LATE #define SIG_THRU_SCI21EARLY SCI_VERSION_2, SCI_VERSION_2_1_EARLY #define SIG_THRU_SCI21MID SCI_VERSION_2, SCI_VERSION_2_1_MIDDLE #define SIG_SINCE_SCI21 SCI_VERSION_2_1_EARLY, SCI_VERSION_3 @@ -324,7 +325,8 @@ static const SciKernelMapSubEntry kFileIO_subops[] = { { SIG_SINCE_SCI21MID, 13, MAP_CALL(FileIOReadByte), "i", NULL }, { SIG_SINCE_SCI21MID, 14, MAP_CALL(FileIOWriteByte), "ii", NULL }, { SIG_SINCE_SCI21MID, 15, MAP_CALL(FileIOReadWord), "i", NULL }, - { SIG_SINCE_SCI21MID, 16, MAP_CALL(FileIOWriteWord), "ii", NULL }, + { SIG_SCI21MID_LATE, 16, MAP_CALL(FileIOWriteWord), "ii", NULL }, + { SIG_SCI3, 16, MAP_CALL(FileIOWriteWord), "i.", NULL }, { SIG_SINCE_SCI21MID, 17, "FileIOCheckFreeSpace", kCheckFreeSpace, "i(r)", NULL }, { SIG_SINCE_SCI21MID, 18, MAP_CALL(FileIOGetCWD), "r", NULL }, { SIG_SINCE_SCI21MID, 19, MAP_CALL(FileIOIsValidDirectory), "[ro]", NULL }, diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 3b8420849a..db7bbce640 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -41,6 +41,7 @@ #include "sci/sound/audio.h" #include "sci/console.h" #ifdef ENABLE_SCI32 +#include "graphics/thumbnail.h" #include "sci/engine/guest_additions.h" #include "sci/engine/message.h" #include "sci/resource.h" @@ -48,13 +49,6 @@ namespace Sci { -extern reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mode, bool unwrapFilename); -extern FileHandle *getFileFromHandle(EngineState *s, uint handle); -extern int fgets_wrapper(EngineState *s, char *dest, int maxsize, int handle); -extern void listSavegames(Common::Array<SavegameDesc> &saves); -extern int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId); -extern bool fillSavegameDesc(const Common::String &filename, SavegameDesc *desc); - /** * Writes the cwd to the supplied address and returns the address in acc. */ @@ -269,6 +263,34 @@ static bool saveCatalogueExists(const Common::String &name) { return exists; } + +static Common::String getRamaSaveName(EngineState *s, const uint saveNo) { + const reg_t catalogId = s->variables[VAR_GLOBAL][kGlobalVarRamaCatalogFile]; + if (catalogId.isNull()) { + error("Could not find CatalogFile object to retrieve save game name"); + } + + const List *list = s->_segMan->lookupList(readSelector(s->_segMan, catalogId, SELECTOR(elements))); + if (!list) { + error("Could not read CatalogFile object list"); + } + + Node *node = s->_segMan->lookupNode(list->first); + while (node) { + const reg_t entryId = node->value; + if (readSelectorValue(s->_segMan, entryId, SELECTOR(fileNumber)) == saveNo) { + reg_t description = readSelector(s->_segMan, entryId, SELECTOR(description)); + if (s->_segMan->isObject(description)) { + description = readSelector(s->_segMan, description, SELECTOR(data)); + } + return s->_segMan->getString(description); + } + + node = s->_segMan->lookupNode(node->succ); + } + + error("Could not find a save name for save %u", saveNo); +} #endif reg_t kFileIO(EngineState *s, int argc, reg_t *argv) { @@ -319,11 +341,11 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { if (g_sci->getGameId() == GID_SHIVERS && name.hasSuffix(".SG")) { // Shivers stores the name and score of save games in separate %d.SG // files, which are used by the save/load screen - if (mode == _K_FILE_MODE_OPEN_OR_CREATE || mode == _K_FILE_MODE_CREATE) { + if (mode == kFileOpenModeOpenOrCreate || mode == kFileOpenModeCreate) { // Suppress creation of the SG file, since it is not necessary debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str()); return SIGNAL_REG; - } else if (mode == _K_FILE_MODE_OPEN_OR_FAIL) { + } else if (mode == kFileOpenModeOpenOrFail) { // Create a virtual file containing the save game description // and current score progress, as the game scripts expect. int saveNo; @@ -331,7 +353,9 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { saveNo += kSaveIdShift; SavegameDesc save; - fillSavegameDesc(g_sci->getSavegameName(saveNo), &save); + if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), save)) { + return SIGNAL_REG; + } Common::String score; if (!save.highScore) { @@ -340,9 +364,9 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { score = Common::String::format("%u%03u", save.highScore, save.lowScore); } - const uint nameLength = Common::strnlen(save.name, SCI_MAX_SAVENAME_LENGTH); + const uint nameLength = Common::strnlen(save.name, kMaxSaveNameLength); const uint size = nameLength + /* \r\n */ 2 + score.size(); - char *buffer = (char *)malloc(size); + byte *buffer = (byte *)malloc(size); memcpy(buffer, save.name, nameLength); buffer[nameLength] = '\r'; buffer[nameLength + 1] = '\n'; @@ -350,7 +374,7 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { const uint handle = findFreeFileHandle(s); - s->_fileHandles[handle]._in = new Common::MemoryReadStream((byte *)buffer, size, DisposeAfterUse::YES); + s->_fileHandles[handle]._in = new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES); s->_fileHandles[handle]._out = nullptr; s->_fileHandles[handle]._name = ""; @@ -359,11 +383,11 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { } else if (g_sci->getGameId() == GID_MOTHERGOOSEHIRES && name.hasSuffix(".DTA")) { // MGDX stores the name and avatar ID in separate %d.DTA files, which // are used by the save/load screen - if (mode == _K_FILE_MODE_OPEN_OR_CREATE || mode == _K_FILE_MODE_CREATE) { + if (mode == kFileOpenModeOpenOrCreate || mode == kFileOpenModeCreate) { // Suppress creation of the DTA file, since it is not necessary debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str()); return SIGNAL_REG; - } else if (mode == _K_FILE_MODE_OPEN_OR_FAIL) { + } else if (mode == kFileOpenModeOpenOrFail) { // Create a virtual file containing the save game description // and avatar ID, as the game scripts expect. int saveNo; @@ -380,10 +404,12 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { saveNo += kSaveIdShift; SavegameDesc save; - fillSavegameDesc(g_sci->getSavegameName(saveNo), &save); + if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), save)) { + return SIGNAL_REG; + } const Common::String avatarId = Common::String::format("%02d", save.avatarId); - const uint nameLength = Common::strnlen(save.name, SCI_MAX_SAVENAME_LENGTH); + const uint nameLength = Common::strnlen(save.name, kMaxSaveNameLength); const uint size = nameLength + /* \r\n */ 2 + avatarId.size() + 1; char *buffer = (char *)malloc(size); memcpy(buffer, save.name, nameLength); @@ -404,40 +430,7 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { // catalogue, but since we do not create catalogues for most SCI32 // games, ignore the write if (name == "temp.tmp") { - return make_reg(0, VIRTUALFILE_HANDLE_SCI32SAVE); - } - - // KQ7 tries to read out game information from catalogues directly - // instead of using the standard kSaveGetFiles function - if (name == "kq7cdsg.cat") { - if (mode == _K_FILE_MODE_OPEN_OR_CREATE || mode == _K_FILE_MODE_CREATE) { - // Suppress creation of the catalogue file, since it is not necessary - debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str()); - return SIGNAL_REG; - } else if (mode == _K_FILE_MODE_OPEN_OR_FAIL) { - Common::Array<SavegameDesc> saves; - listSavegames(saves); - - const uint recordSize = sizeof(int16) + SCI_MAX_SAVENAME_LENGTH; - const uint numSaves = MIN<uint>(saves.size(), 10); - const uint size = numSaves * recordSize + /* terminator */ 2; - byte *const buffer = (byte *)malloc(size); - - byte *out = buffer; - for (uint i = 0; i < numSaves; ++i) { - WRITE_UINT16(out, saves[i].id - kSaveIdShift); - strncpy((char *)out + sizeof(int16), saves[i].name, SCI_MAX_SAVENAME_LENGTH); - out += recordSize; - } - WRITE_UINT16(out, 0xFFFF); - - const uint handle = findFreeFileHandle(s); - s->_fileHandles[handle]._in = new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES); - s->_fileHandles[handle]._out = nullptr; - s->_fileHandles[handle]._name = ""; - - return make_reg(0, handle); - } + return make_reg(0, kVirtualFileHandleSci32Save); } } else if (g_sci->getGameId() == GID_PQSWAT) { // PQSWAT tries to create subdirectories for each game profile @@ -449,19 +442,86 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { } else if (g_sci->getGameId() == GID_PHANTASMAGORIA2 && name == "RESDUK.PAT") { // Ignore the censorship password file in lieu of our game option return SIGNAL_REG; + } else if (g_sci->getGameId() == GID_RAMA) { + int saveNo = -1; + if (name == "autorama.sg") { + saveNo = kAutoSaveId; + } else if (sscanf(name.c_str(), "ramasg.%i", &saveNo) == 1) { + saveNo += kSaveIdShift; + } + + if (saveNo != -1) { + Common::SaveFileManager *saveFileMan = g_sci->getSaveFileManager(); + const Common::String fileName = g_sci->getSavegameName(saveNo); + Common::SeekableReadStream *in = nullptr; + Common::OutSaveFile *out = nullptr; + bool valid = false; + + if (mode == kFileOpenModeOpenOrFail) { + in = saveFileMan->openForLoading(fileName); + if (in) { + SavegameMetadata meta; + if (get_savegame_metadata(in, meta)) { + Graphics::skipThumbnail(*in); + valid = true; + } + } + } else { + out = saveFileMan->openForSaving(fileName); + if (out) { + Common::String saveName; + if (saveNo != kAutoSaveId) { + saveName = getRamaSaveName(s, saveNo - kSaveIdShift); + } + Common::ScopedPtr<Common::SeekableReadStream> versionFile(SearchMan.createReadStreamForMember("VERSION")); + const Common::String gameVersion = versionFile->readLine(); + set_savegame_metadata(out, saveName, gameVersion); + valid = true; + } + } + + if (valid) { + uint handle = findFreeFileHandle(s); + s->_fileHandles[handle]._in = in; + s->_fileHandles[handle]._out = out; + s->_fileHandles[handle]._name = "-scummvm-save-"; + return make_reg(0, handle); + } + } } // See kMakeSaveCatName if (name == "fake.cat") { - return make_reg(0, VIRTUALFILE_HANDLE_SCI32SAVE); + return make_reg(0, kVirtualFileHandleSci32Save); } if (isSaveCatalogue(name)) { const bool exists = saveCatalogueExists(name); if (exists) { + // KQ7 & RAMA read out game information from catalogues directly + // instead of using the standard kSaveGetFiles function + if (name == "kq7cdsg.cat" || name == "ramasg.cat") { + if (mode == kFileOpenModeOpenOrCreate || mode == kFileOpenModeCreate) { + // Suppress creation of the catalogue file, since it is not necessary + debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str()); + return SIGNAL_REG; + } else if (mode == kFileOpenModeOpenOrFail) { + const uint handle = findFreeFileHandle(s); + + if (name == "kq7cdsg.cat") { + s->_fileHandles[handle]._in = makeCatalogue(10, kMaxSaveNameLength, "", false); + } else { + s->_fileHandles[handle]._in = makeCatalogue(100, 20, "ramasg.%d", true); + } + s->_fileHandles[handle]._out = nullptr; + s->_fileHandles[handle]._name = ""; + return make_reg(0, handle); + } + } + // Dummy handle is used to represent the catalogue and ignore any // direct game script writes - return make_reg(0, VIRTUALFILE_HANDLE_SCI32SAVE); + return make_reg(0, kVirtualFileHandleSci32Save); } else { return SIGNAL_REG; } @@ -472,7 +532,7 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) { if (name.hasPrefix("sciAudio\\")) { // fan-made sciAudio extension, don't create those files and instead return a virtual handle - return make_reg(0, VIRTUALFILE_HANDLE_SCIAUDIO); + return make_reg(0, kVirtualFileHandleSciAudio); } // QFG import rooms get a virtual filelisting instead of an actual one @@ -495,7 +555,7 @@ reg_t kFileIOClose(EngineState *s, int argc, reg_t *argv) { uint16 handle = argv[0].toUint16(); - if (handle >= VIRTUALFILE_HANDLE_START) { + if (handle >= kVirtualFileHandleStart) { // it's a virtual handle? ignore it return getSciVersion() >= SCI_VERSION_2 ? TRUE_REG : SIGNAL_REG; } @@ -539,7 +599,7 @@ reg_t kFileIOWriteRaw(EngineState *s, int argc, reg_t *argv) { uint16 size = argv[2].toUint16(); #ifdef ENABLE_SCI32 - if (handle == VIRTUALFILE_HANDLE_SCI32SAVE) { + if (handle == kVirtualFileHandleSci32Save) { return make_reg(0, size); } #endif @@ -673,7 +733,7 @@ reg_t kFileIOWriteString(EngineState *s, int argc, reg_t *argv) { // We skip creating these files, and instead handle the calls // directly. Since the sciAudio calls are only creating text files, // this is probably the most straightforward place to handle them. - if (handle == VIRTUALFILE_HANDLE_SCIAUDIO) { + if (handle == kVirtualFileHandleSciAudio) { Common::List<ExecStack>::const_iterator iter = s->_executionStack.reverse_begin(); iter--; // sciAudio iter--; // sciAudio child @@ -756,10 +816,24 @@ reg_t kFileIOExists(EngineState *s, int argc, reg_t *argv) { return saveCatalogueExists(name) ? TRUE_REG : NULL_REG; } - // LSL7 checks to see if the autosave save exists when deciding whether to - // go to the main menu or not on startup + int findSaveNo = -1; + if (g_sci->getGameId() == GID_LSL7 && name == "autosvsg.000") { - return g_sci->getSaveFileManager()->listSavefiles(g_sci->getSavegameName(0)).empty() ? NULL_REG : TRUE_REG; + // LSL7 checks to see if the autosave save exists when deciding whether + // to go to the main menu or not on startup + findSaveNo = kAutoSaveId; + } else if (g_sci->getGameId() == GID_RAMA) { + // RAMA checks to see if save game files exist before showing them in + // the native save/load dialogue + if (name == "autorama.sg") { + findSaveNo = kAutoSaveId; + } else if (sscanf(name.c_str(), "ramasg.%i", &findSaveNo) == 1) { + findSaveNo += kSaveIdShift; + } + } + + if (findSaveNo != -1) { + return g_sci->getSaveFileManager()->listSavefiles(g_sci->getSavegameName(findSaveNo)).empty() ? NULL_REG : TRUE_REG; } #endif @@ -862,24 +936,48 @@ reg_t kFileIOWriteByte(EngineState *s, int argc, reg_t *argv) { } reg_t kFileIOReadWord(EngineState *s, int argc, reg_t *argv) { - FileHandle *f = getFileFromHandle(s, argv[0].toUint16()); + const uint16 handle = argv[0].toUint16(); + FileHandle *f = getFileFromHandle(s, handle); if (!f) - return NULL_REG; - return make_reg(0, f->_in->readUint16LE()); + return s->r_acc; + + reg_t value; + if (s->_fileHandles[handle]._name == "-scummvm-save-") { + value._segment = f->_in->readUint16LE(); + value._offset = f->_in->readUint16LE(); + } else { + value = make_reg(0, f->_in->readUint16LE()); + } + + if (f->_in->err()) { + return s->r_acc; + } + + return value; } reg_t kFileIOWriteWord(EngineState *s, int argc, reg_t *argv) { - uint16 handle = argv[0].toUint16(); + const uint16 handle = argv[0].toUint16(); -#ifdef ENABLE_SCI32 - if (handle == VIRTUALFILE_HANDLE_SCI32SAVE) { + if (handle == kVirtualFileHandleSci32Save) { return s->r_acc; } -#endif FileHandle *f = getFileFromHandle(s, handle); - if (f) + if (!f) { + return s->r_acc; + } + + if (s->_fileHandles[handle]._name == "-scummvm-save-") { + f->_out->writeUint16LE(argv[1]._segment); + f->_out->writeUint16LE(argv[1]._offset); + } else { + if (argv[1].isPointer()) { + error("Attempt to write non-number %04x:%04x", PRINT_REG(argv[1])); + } f->_out->writeUint16LE(argv[1].toUint16()); + } + return s->r_acc; } @@ -1174,7 +1272,7 @@ reg_t kGetSaveFiles(EngineState *s, int argc, reg_t *argv) { Common::Array<SavegameDesc> saves; listSavegames(saves); - uint totalSaves = MIN<uint>(saves.size(), MAX_SAVEGAME_NR); + uint totalSaves = MIN<uint>(saves.size(), kMaxNumSaveGames); Common::String game_id = s->_segMan->getString(argv[0]); @@ -1187,14 +1285,14 @@ reg_t kGetSaveFiles(EngineState *s, int argc, reg_t *argv) { totalSaves = 0; } - const uint bufSize = (totalSaves * SCI_MAX_SAVENAME_LENGTH) + 1; + const uint bufSize = (totalSaves * kMaxSaveNameLength) + 1; char *saveNames = new char[bufSize]; char *saveNamePtr = saveNames; for (uint i = 0; i < totalSaves; i++) { *slot++ = make_reg(0, saves[i].id + SAVEGAMEID_OFFICIALRANGE_START); // Store the virtual savegame ID (see above) strcpy(saveNamePtr, saves[i].name); - saveNamePtr += SCI_MAX_SAVENAME_LENGTH; + saveNamePtr += kMaxSaveNameLength; } *saveNamePtr = 0; // Terminate list @@ -1239,7 +1337,7 @@ reg_t kSaveGame32(EngineState *s, int argc, reg_t *argv) { s->_msgState->getMessage(0, autoSaveNameTuple, autoSaveNameId); if (saveDescription == autoSaveName.toString()) { - saveNo = 0; + saveNo = kAutoSaveId; } s->_segMan->freeArray(autoSaveNameId); @@ -1321,7 +1419,7 @@ reg_t kCheckSaveGame32(EngineState *s, int argc, reg_t *argv) { } SavegameDesc save; - if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), &save)) { + if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), save)) { return NULL_REG; } @@ -1369,19 +1467,19 @@ reg_t kGetSaveFiles32(EngineState *s, int argc, reg_t *argv) { // Normally SSCI limits to 20 games per directory, but ScummVM allows more // than that with games that use the standard save-load dialogue - descriptions.resize(SCI_MAX_SAVENAME_LENGTH * saves.size() + 1, true); + descriptions.resize(kMaxSaveNameLength * saves.size() + 1, true); saveIds.resize(saves.size() + 1, true); for (uint i = 0; i < saves.size(); ++i) { const SavegameDesc &save = saves[i]; - char *target = &descriptions.charAt(SCI_MAX_SAVENAME_LENGTH * i); + char *target = &descriptions.charAt(kMaxSaveNameLength * i); // At least Phant2 requires use of strncpy, since it creates save game - // names of exactly SCI_MAX_SAVENAME_LENGTH - strncpy(target, save.name, SCI_MAX_SAVENAME_LENGTH); + // names of exactly kMaxSaveNameLength + strncpy(target, save.name, kMaxSaveNameLength); saveIds.setFromInt16(i, save.id - kSaveIdShift); } - descriptions.charAt(SCI_MAX_SAVENAME_LENGTH * saves.size()) = '\0'; + descriptions.charAt(kMaxSaveNameLength * saves.size()) = '\0'; saveIds.setFromInt16(saves.size(), 0); return make_reg(0, saves.size()); diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 28e054bea9..e5336b37bc 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -932,7 +932,7 @@ void _k_GenericDrawControl(EngineState *s, reg_t controlObject, bool hilite) { } } - debugC(kDebugLevelGraphics, "drawing list control %04x:%04x to %d,%d, diff %d", PRINT_REG(controlObject), x, y, SCI_MAX_SAVENAME_LENGTH); + debugC(kDebugLevelGraphics, "drawing list control %04x:%04x to %d,%d", PRINT_REG(controlObject), x, y); g_sci->_gfxControls16->kernelDrawList(rect, controlObject, maxChars, listCount, listStrings, fontId, style, upperPos, cursorPos, isAlias, hilite); delete[] listStrings; return; diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index 2f66e51a6e..2ca5a65fc0 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -859,19 +859,19 @@ reg_t kArrayFill(EngineState *s, int argc, reg_t *argv) { reg_t kArrayCopy(EngineState *s, int argc, reg_t *argv) { SciArray &target = *s->_segMan->lookupArray(argv[0]); const uint16 targetIndex = argv[1].toUint16(); + const uint16 sourceIndex = argv[3].toUint16(); + const int16 count = argv[4].toSint16(); - SciArray source; - // String copies may be made from static script data if (!s->_segMan->isArray(argv[2])) { + // String copies may be made from static script data + SciArray source; source.setType(kArrayTypeString); source.fromString(s->_segMan->getString(argv[2])); + target.copy(source, sourceIndex, targetIndex, count); } else { - source = *s->_segMan->lookupArray(argv[2]); + target.copy(*s->_segMan->lookupArray(argv[2]), sourceIndex, targetIndex, count); } - const uint16 sourceIndex = argv[3].toUint16(); - const uint16 count = argv[4].toUint16(); - target.copy(source, sourceIndex, targetIndex, count); return argv[0]; } diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index fd07e0c126..60ad497b84 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -1184,30 +1184,8 @@ void SegManager::reconstructClones() { bool gamestate_save(EngineState *s, Common::WriteStream *fh, const Common::String &savename, const Common::String &version) { - TimeDate curTime; - g_system->getTimeAndDate(curTime); - - SavegameMetadata meta; - meta.version = CURRENT_SAVEGAME_VERSION; - meta.name = savename; - meta.gameVersion = version; - meta.saveDate = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF); - meta.saveTime = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF); - - Resource *script0 = g_sci->getResMan()->findResource(ResourceId(kResourceTypeScript, 0), false); - meta.script0Size = script0->size(); - meta.gameObjectOffset = g_sci->getGameObject().getOffset(); - - // Checking here again -// TODO: This breaks Torin autosave, is there actually any reason for it? -// if (s->executionStackBase) { -// warning("Cannot save from below kernel function"); -// return false; -// } - - Common::Serializer ser(0, fh); - sync_SavegameMetadata(ser, meta); - Graphics::saveThumbnail(*fh); + set_savegame_metadata(fh, savename, version); + Common::Serializer ser(nullptr, fh); s->saveLoadWithSerializer(ser); // FIXME: Error handling? if (g_sci->_gfxPorts) g_sci->_gfxPorts->saveLoadWithSerializer(ser); @@ -1395,22 +1373,42 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) { s->gameIsRestarting = GAMEISRESTARTING_RESTORE; } -bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata *meta) { +void set_savegame_metadata(Common::WriteStream *fh, const Common::String &savename, const Common::String &version) { + TimeDate curTime; + g_system->getTimeAndDate(curTime); + + SavegameMetadata meta; + meta.version = CURRENT_SAVEGAME_VERSION; + meta.name = savename; + meta.gameVersion = version; + meta.saveDate = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF); + meta.saveTime = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF); + + Resource *script0 = g_sci->getResMan()->findResource(ResourceId(kResourceTypeScript, 0), false); + assert(script0); + meta.script0Size = script0->size(); + meta.gameObjectOffset = g_sci->getGameObject().getOffset(); + + Common::Serializer ser(nullptr, fh); + sync_SavegameMetadata(ser, meta); + Graphics::saveThumbnail(*fh); +} + +bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata &meta) { assert(stream); - assert(meta); - Common::Serializer ser(stream, 0); - sync_SavegameMetadata(ser, *meta); + Common::Serializer ser(stream, nullptr); + sync_SavegameMetadata(ser, meta); if (stream->eos()) return false; - if ((meta->version < MINIMUM_SAVEGAME_VERSION) || - (meta->version > CURRENT_SAVEGAME_VERSION)) { - if (meta->version < MINIMUM_SAVEGAME_VERSION) + if ((meta.version < MINIMUM_SAVEGAME_VERSION) || + (meta.version > CURRENT_SAVEGAME_VERSION)) { + if (meta.version < MINIMUM_SAVEGAME_VERSION) warning("Old savegame version detected- can't load"); else - warning("Savegame version is %d- maximum supported is %0d", meta->version, CURRENT_SAVEGAME_VERSION); + warning("Savegame version is %d- maximum supported is %0d", meta.version, CURRENT_SAVEGAME_VERSION); return false; } diff --git a/engines/sci/engine/savegame.h b/engines/sci/engine/savegame.h index 29930241b1..1ac25b26a9 100644 --- a/engines/sci/engine/savegame.h +++ b/engines/sci/engine/savegame.h @@ -118,8 +118,12 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *save); /** * Read the header from a savegame. */ -bool get_savegame_metadata(Common::SeekableReadStream* stream, SavegameMetadata* meta); +bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata &meta); +/** + * Write the header to a savegame. + */ +void set_savegame_metadata(Common::WriteStream *fh, const Common::String &savename, const Common::String &version); } // End of namespace Sci diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index a0243defa8..c1da3f25e0 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -698,9 +698,9 @@ int Script::relocateOffsetSci3(uint32 offset) const { } #endif -bool Script::relocateLocal(SegmentId segment, int location) { +bool Script::relocateLocal(SegmentId segment, int location, uint32 offset) { if (_localsBlock) - return relocateBlock(_localsBlock->_locals, _localsOffset, segment, location, getHeapOffset()); + return relocateBlock(_localsBlock->_locals, _localsOffset, segment, location, offset); else return false; } @@ -804,7 +804,7 @@ void Script::relocateSci0Sci21(const SegmentId segmentId) { // We only relocate locals and objects here, and ignore relocation of // code blocks. In SCI1.1 and newer versions, only locals and objects // are relocated. - if (!relocateLocal(segmentId, pos)) { + if (!relocateLocal(segmentId, pos, getHeapOffset())) { // Not a local? It's probably an object or code block. If it's an // object, relocate it. const ObjMap::iterator end = _objects.end(); @@ -817,19 +817,23 @@ void Script::relocateSci0Sci21(const SegmentId segmentId) { #ifdef ENABLE_SCI32 void Script::relocateSci3(const SegmentId segmentId) { - SciSpan<const byte> relocStart = _buf->subspan(_buf->getUint32SEAt(8)); + SciSpan<const byte> relocEntry = _buf->subspan(_buf->getUint32SEAt(8)); const uint relocCount = _buf->getUint16SEAt(18); - ObjMap::iterator it; - for (it = _objects.begin(); it != _objects.end(); ++it) { - SciSpan<const byte> seeker = relocStart; - for (uint i = 0; i < relocCount; ++i) { - it->_value.relocateSci3(segmentId, - seeker.getUint32SEAt(0), - seeker.getUint32SEAt(4), - _script.size()); - seeker += 10; + for (uint i = 0; i < relocCount; ++i) { + const uint location = relocEntry.getUint32SEAt(0); + const uint offset = relocEntry.getUint32SEAt(4); + + if (!relocateLocal(segmentId, location, offset)) { + const ObjMap::iterator end = _objects.end(); + for (ObjMap::iterator it = _objects.begin(); it != end; ++it) { + if (it->_value.relocateSci3(segmentId, location, offset, _script.size())) { + break; + } + } } + + relocEntry += 10; } } #endif @@ -973,7 +977,7 @@ void Script::initializeLocals(SegManager *segMan) { const SciSpan<const byte> base = _buf->subspan(getLocalsOffset()); for (uint16 i = 0; i < getLocalsCount(); i++) - locals->_locals[i] = make_reg(0, base.getUint16SEAt(i * 2)); + locals->_locals[i] = make_reg(0, base.getUint16SEAt(i * sizeof(uint16))); } else { // In SCI0 early, locals are set at run time, thus zero them all here for (uint16 i = 0; i < getLocalsCount(); i++) diff --git a/engines/sci/engine/script.h b/engines/sci/engine/script.h index 1befef1c8a..f4afca7681 100644 --- a/engines/sci/engine/script.h +++ b/engines/sci/engine/script.h @@ -318,7 +318,7 @@ private: void relocateSci3(const SegmentId segmentId); #endif - bool relocateLocal(SegmentId segment, int location); + bool relocateLocal(SegmentId segment, int location, uint32 offset); #ifdef ENABLE_SCI32 /** diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index a5d2a67b94..78b51c11f0 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -138,6 +138,10 @@ static const char *const selectorNameTable[] = { "readWord", // LSL7, Phant1, Torin "flag", // PQ4 "select", // PQ4 + "handle", // RAMA + "saveFilePtr", // RAMA + "priority", // RAMA + "plane", // RAMA #endif NULL }; @@ -199,7 +203,11 @@ enum ScriptPatcherSelectors { SELECTOR_setScaler, SELECTOR_readWord, SELECTOR_flag, - SELECTOR_select + SELECTOR_select, + SELECTOR_handle, + SELECTOR_saveFilePtr, + SELECTOR_priority, + SELECTOR_plane #endif }; @@ -6218,9 +6226,83 @@ static const uint16 ramaBenchmarkPatch[] = { PATCH_END }; -// script, description, signature patch +// RAMA initialises the font system with an incorrect text resolution (it uses +// the resolution from Phant1) which causes text to be scaled incorrectly. +static const uint16 ramaTextResolutionSignature[] = { + 0x39, 0x03, // pushi 3 + 0x78, // push1 + SIG_MAGICDWORD, + 0x38, SIG_UINT16(0x276), // pushi 630 + 0x38, SIG_UINT16(0x1c2), // pushi 450 + 0x43, 0x49, SIG_UINT16(0x06), // callk Font, 6 + SIG_END +}; + +static const uint16 ramaTextResolutionPatch[] = { + PATCH_ADDTOOFFSET(+3), // pushi 3, push1 + 0x38, PATCH_UINT16(0x280), // pushi 640 + 0x38, PATCH_UINT16(0x1e0), // pushi 480 + PATCH_END +}; + +// RAMA uses a custom save game format that game scripts read and write +// manually. The save game format serialises object references, which in the +// original engine could be done just by writing int16s (since object references +// were just 16-bit indexes), but in ScummVM we have to write the full 32-bit +// reg_t. We hijack kFileIOReadWord/kFileIOWriteWord to do this for us, but we +// need the game to agree to use those kFileIO calls instead of doing raw reads +// and creating its own numbers, as it tries to do here in +// `SaveManager::readWord`. +static const uint16 ramaSerializeRegTSignature1[] = { + SIG_MAGICDWORD, + 0x38, SIG_SELECTOR16(newWith), // pushi $10b (newWith) + 0x7a, // push2 + 0x7a, // push2 + 0x72, SIG_UINT16(0x00), // lofsa "" + 0x36, // push + 0x51, 0x0f, // class Str + SIG_END +}; + +static const uint16 ramaSerializeRegTPatch1[] = { + 0x38, PATCH_SELECTOR16(readWord), // pushi readWord + 0x76, // push0 + 0x62, PATCH_SELECTOR16(saveFilePtr), // pToa saveFilePtr + 0x4a, PATCH_UINT16(0x04), // send 4 + 0x48, // ret + PATCH_END +}; + +// When opening a datacube on the pocket computer, `DocReader::init` will try +// to perform arithmetic on a pointer to `thighComputer::plane` and then use the +// resulting value as the priority for the DocReader. This happened to work in +// SSCI because the plane pointer would just be a high numeric value, but +// ScummVM needs an actual number, not a pointer. +// Applies to at least: US English +static const uint16 ramaDocReaderInitSignature[] = { + 0x39, SIG_SELECTOR8(priority), // pushi $1a (priority) + 0x78, // push1 + 0x39, SIG_SELECTOR8(plane), // pushi $19 (plane) + 0x76, // push0 + 0x7a, // push2 + SIG_MAGICDWORD, + 0x39, 0x2c, // pushi 44 + 0x76, // push0 + 0x43, 0x02, SIG_UINT16(0x04), // callk ScriptID, 4 + SIG_END +}; + +static const uint16 ramaDocReaderInitPatch[] = { + PATCH_ADDTOOFFSET(+3), // pushi priority, push1 + 0x39, PATCH_SELECTOR8(priority), // pushi priority + PATCH_END +}; + static const SciScriptPatcherEntry ramaSignatures[] = { - { true, 64908, "disable video benchmarking", 1, ramaBenchmarkSignature, ramaBenchmarkPatch }, + { true, 0, "fix bad text resolution", 1, ramaTextResolutionSignature, ramaTextResolutionPatch }, + { true, 55, "fix bad DocReader::init priority calculation", 1, ramaDocReaderInitSignature, ramaDocReaderInitPatch }, + { true, 85, "fix SaveManager to use normal readWord calls", 1, ramaSerializeRegTSignature1, ramaSerializeRegTPatch1 }, + { true, 64908, "disable video benchmarking", 1, ramaBenchmarkSignature, ramaBenchmarkPatch }, SCI_SIGNATUREENTRY_TERMINATOR }; diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h index 8eca6713b3..d6e2dd3c24 100644 --- a/engines/sci/engine/segment.h +++ b/engines/sci/engine/segment.h @@ -436,7 +436,7 @@ public: _size(0), _data(nullptr) {} - SciArray(const SciArray &array) : Common::Serializable() { + SciArray(const SciArray &array) { _type = array._type; _size = array._size; _elementSize = array._elementSize; @@ -505,10 +505,14 @@ public: } /** - * Returns the size of the array, in bytes. + * Returns the maximum number of bytes that can be stored in the array. */ uint16 byteSize() const { - return _size * _elementSize; + uint16 size = _size; + if (_type == kArrayTypeID || _type == kArrayTypeInt16) { + size *= sizeof(uint16); + } + return size; } /** @@ -527,14 +531,6 @@ public: } /** - * Shrinks a string array to its optimal size. - */ - void snug() { - assert(_type == kArrayTypeString || _type == kArrayTypeByte); - resize(Common::strnlen((char *)_data, _size) + 1, true); - } - - /** * Returns a pointer to the array's raw data storage. */ void *getRawData() { return _data; } @@ -765,12 +761,12 @@ public: * Copies values from the source array. Both arrays will be grown if needed * to prevent out-of-bounds reads/writes. */ - void copy(SciArray &source, const uint16 sourceIndex, const uint16 targetIndex, uint16 count) { - if (count == 65535 /* -1 */) { + void copy(SciArray &source, const uint16 sourceIndex, const uint16 targetIndex, int16 count) { + if (count == -1) { count = source.size() - sourceIndex; } - if (!count) { + if (count < 1) { return; } @@ -892,7 +888,7 @@ public: break; } - return Common::String::format("type %s; %u entries; %u bytes", type, size(), byteSize()); + return Common::String::format("type %s; %u entries", type, size()); } protected: @@ -976,7 +972,7 @@ public: inline SciBitmap() : _data(nullptr), _dataSize(0), _gc(true) {} - inline SciBitmap(const SciBitmap &other) : Common::Serializable() { + inline SciBitmap(const SciBitmap &other) { _dataSize = other._dataSize; _data = (byte *)malloc(other._dataSize); memcpy(_data, other._data, other._dataSize); diff --git a/engines/sci/engine/selector.cpp b/engines/sci/engine/selector.cpp index d310b0fafd..1feb80844c 100644 --- a/engines/sci/engine/selector.cpp +++ b/engines/sci/engine/selector.cpp @@ -227,6 +227,9 @@ void Kernel::mapSelectors() { FIND_SELECTOR(num); FIND_SELECTOR(reallyRestore); FIND_SELECTOR(bookMark); + FIND_SELECTOR(fileNumber); + FIND_SELECTOR(description); + FIND_SELECTOR(dispose); #endif } diff --git a/engines/sci/engine/selector.h b/engines/sci/engine/selector.h index 977411429a..1603ca94f3 100644 --- a/engines/sci/engine/selector.h +++ b/engines/sci/engine/selector.h @@ -184,6 +184,9 @@ struct SelectorCache { Selector num; // for Phant2 restore from launcher Selector reallyRestore; // for Phant2 restore from launcher Selector bookMark; // for Phant2 auto-save + Selector fileNumber; // for RAMA save/load + Selector description; // for RAMA save/load + Selector dispose; // for RAMA save/load save from launcher #endif }; diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h index 792287ba53..83550f8aa6 100644 --- a/engines/sci/engine/vm.h +++ b/engines/sci/engine/vm.h @@ -155,6 +155,7 @@ enum GlobalVar { kGlobalVarTextSpeed = 94, // SCI32; 0 is fastest, 8 is slowest kGlobalVarGK1Music1 = 102, // 0 to 127 kGlobalVarGK1Music2 = 103, // 0 to 127 + kGlobalVarRamaCatalogFile = 130, kGlobalVarLSL6HiresGameFlags = 137, kGlobalVarGK1NarratorMode = 166, // 0 for text, 1 for speech kGlobalVarPhant1MusicVolume = 187, // 0 to 15 diff --git a/engines/titanic/game/cdrom_tray.cpp b/engines/titanic/game/cdrom_tray.cpp index 0215b58f43..f9daf17d00 100644 --- a/engines/titanic/game/cdrom_tray.cpp +++ b/engines/titanic/game/cdrom_tray.cpp @@ -76,12 +76,12 @@ bool CCDROMTray::ActMsg(CActMsg *msg) { } else if (_insertedCD == "None") { // Opening tray with no CD playMovie(44, 54, 0); - playSound("a#34.wav", 50, 0, 0); + playSound(TRANSLATE("a#34.wav", "a#29.wav"), 50, 0, 0); _isOpened = true; } else if (_insertedCD == "newCD1" || _insertedCD == "newCD2") { // Opening tray with standard CD playMovie(22, 32, 0); - playSound("a#34.wav", 50, 0, 0); + playSound(TRANSLATE("a#34.wav", "a#29.wav"), 50, 0, 0); _isOpened = true; } else if (_insertedCD == "newSTCD") { // Opening tray with Starship Titanic CD diff --git a/engines/titanic/game/computer.cpp b/engines/titanic/game/computer.cpp index 9aa5db252c..a9ff1ce9c0 100644 --- a/engines/titanic/game/computer.cpp +++ b/engines/titanic/game/computer.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/computer.h" +#include "titanic/translation.h" namespace Titanic { @@ -46,7 +47,7 @@ void CComputer::load(SimpleFile *file) { bool CComputer::ActMsg(CActMsg *msg) { if (_state) { - playSound("a#35.wav"); + playSound(TRANSLATE("a#35.wav", "a#30.wav")); playMovie(32, 42, 0); if (msg->_action == "CD1") @@ -66,11 +67,11 @@ bool CComputer::ActMsg(CActMsg *msg) { bool CComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { if (_currentCD == "None") { if (_state) { - playSound("a#35.wav"); + playSound(TRANSLATE("a#35.wav", "a#30.wav")); playMovie(11, 21, 0); _state = 0; } else { - playSound("a#34.wav"); + playSound(TRANSLATE("a#34.wav", "a#29.wav")); playMovie(0, 10, 0); _state = 1; } @@ -81,7 +82,7 @@ bool CComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { actMsg.execute(_currentCD); _currentCD = "None"; } else { - playSound("a#34.wav"); + playSound(TRANSLATE("a#34.wav", "a#29.wav")); playMovie(21, 31, 0); _state = 1; } @@ -92,10 +93,10 @@ bool CComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { bool CComputer::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == 90) { - playSound("a#32.wav"); - playSound("a#33.wav"); - playSound("a#31.wav"); - playSound("a#0.wav"); + playSound(TRANSLATE("a#32.wav", "a#27.wav")); + playSound(TRANSLATE("a#33.wav", "a#28.wav")); + playSound(TRANSLATE("a#31.wav", "a#26.wav")); + playSound(TRANSLATE("a#0.wav", "a#52.wav")); gotoView("Home.Node 4.E", "_TRACK,3,e-cu,4,E"); } diff --git a/engines/titanic/game/nose_holder.cpp b/engines/titanic/game/nose_holder.cpp index d00c7b372e..be17d536b0 100644 --- a/engines/titanic/game/nose_holder.cpp +++ b/engines/titanic/game/nose_holder.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/nose_holder.h" +#include "titanic/translation.h" namespace Titanic { @@ -54,7 +55,7 @@ bool CNoseHolder::ActMsg(CActMsg *msg) { if (msg->_action == "Sneeze" && !_itemName.empty() && _dropEnabled) { CProximity prox; prox._positioningMode = POSMODE_VECTOR; - playSound("z#35.wav", prox); + playSound(TRANSLATE("z#35.wav", "z#567.wav"), prox); if (getView() == findView()) { setVisible(true); diff --git a/engines/titanic/game/sauce_dispensor.cpp b/engines/titanic/game/sauce_dispensor.cpp index 7b395e5b11..993a577fd7 100644 --- a/engines/titanic/game/sauce_dispensor.cpp +++ b/engines/titanic/game/sauce_dispensor.cpp @@ -23,6 +23,7 @@ #include "titanic/game/sauce_dispensor.h" #include "titanic/carry/chicken.h" #include "titanic/carry/glass.h" +#include "titanic/translation.h" namespace Titanic { @@ -73,7 +74,7 @@ bool CSauceDispensor::Use(CUse *msg) { CChicken *chicken = static_cast<CChicken *>(msg->_item); _field104 = true; if (_starlingsDead) { - playSound("b#15.wav", 50); + playSound(TRANSLATE("b#15.wav", "z#562.wav"), 50); if (chicken->_condiment != "None") { petDisplayMessage(1, FOODSTUFF_ALREADY_GARNISHED); @@ -96,7 +97,7 @@ bool CSauceDispensor::Use(CUse *msg) { CMovieEndMsg endMsg(0, 0); endMsg.execute(this); - playSound("z#120.wav"); + playSound(TRANSLATE("z#120.wav", "z#651.wav")); petDisplayMessage(1, DISPENSOR_IS_EMPTY); } else if (msg->_item->isEquals("BeerGlass")) { diff --git a/engines/titanic/game/search_point.cpp b/engines/titanic/game/search_point.cpp index bbe923267a..da5c4e5d55 100644 --- a/engines/titanic/game/search_point.cpp +++ b/engines/titanic/game/search_point.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/search_point.h" +#include "titanic/translation.h" namespace Titanic { @@ -47,7 +48,7 @@ bool CSearchPoint::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { child->petAddToInventory(); CVisibleMsg visibleMsg(true); visibleMsg.execute(child->getName()); - playSound("z#47.wav"); + playSound(TRANSLATE("z#47.wav", "z#578.wav")); } if (--_value == 0) diff --git a/engines/titanic/game/seasonal_adjustment.cpp b/engines/titanic/game/seasonal_adjustment.cpp index 7a729c9d90..f9f834eed4 100644 --- a/engines/titanic/game/seasonal_adjustment.cpp +++ b/engines/titanic/game/seasonal_adjustment.cpp @@ -22,6 +22,7 @@ #include "titanic/game/seasonal_adjustment.h" #include "titanic/core/project_item.h" +#include "titanic/translation.h" namespace Titanic { @@ -79,7 +80,7 @@ bool CSeasonalAdjustment::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { } bool CSeasonalAdjustment::MouseButtonUpMsg(CMouseButtonUpMsg *msg) { - playSound("z#42.wav"); + playSound(TRANSLATE("z#42.wav", "z#743.wav")); if (!_enabled) { petDisplayMessage(1, SEASONAL_SWITCH_NOT_WORKING); } else if (!_switching) { diff --git a/engines/titanic/game/sgt/sgt_state_room.cpp b/engines/titanic/game/sgt/sgt_state_room.cpp index 3ddfcfef5f..ca6acaef16 100644 --- a/engines/titanic/game/sgt/sgt_state_room.cpp +++ b/engines/titanic/game/sgt/sgt_state_room.cpp @@ -22,6 +22,7 @@ #include "titanic/game/sgt/sgt_state_room.h" #include "titanic/pet_control/pet_control.h" +#include "titanic/translation.h" namespace Titanic { @@ -141,7 +142,7 @@ bool CSGTStateRoom::EnterRoomMsg(CEnterRoomMsg *msg) { if (roomFlags == assignedRoom && getPassengerClass() == 3 && _statics->_announcementFlag) { // Congratulations, you may have won an upgrade - playSound("b#21.wav"); + playSound(TRANSLATE("b#21.wav", "b#2.wav")); _statics->_announcementFlag = false; } diff --git a/engines/titanic/game/sgt/toilet.cpp b/engines/titanic/game/sgt/toilet.cpp index 0bcb08fe38..a4541bf377 100644 --- a/engines/titanic/game/sgt/toilet.cpp +++ b/engines/titanic/game/sgt/toilet.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/sgt/toilet.h" +#include "titanic/translation.h" namespace Titanic { @@ -51,7 +52,7 @@ bool CToilet::TurnOn(CTurnOn *msg) { _startFrame = 0; _endFrame = 11; playMovie(0, 11, MOVIE_WAIT_FOR_FINISH); - playSound("b#1.wav"); + playSound(TRANSLATE("b#1.wav", "b#86.wav")); } return true; @@ -65,7 +66,7 @@ bool CToilet::TurnOff(CTurnOff *msg) { _startFrame = 11; _endFrame = 18; playMovie(11, 18, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); - playSound("b#1.wav"); + playSound(TRANSLATE("b#1.wav", "b#86.wav")); } return true; diff --git a/engines/titanic/game/sgt/washstand.cpp b/engines/titanic/game/sgt/washstand.cpp index 217e36c1e9..a087969dba 100644 --- a/engines/titanic/game/sgt/washstand.cpp +++ b/engines/titanic/game/sgt/washstand.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/sgt/washstand.h" +#include "titanic/translation.h" namespace Titanic { @@ -48,7 +49,7 @@ bool CWashstand::TurnOn(CTurnOn *msg) { _startFrame = 0; _endFrame = 14; playMovie(0, 14, MOVIE_WAIT_FOR_FINISH); - playSound("b#14.wav"); + playSound(TRANSLATE("b#14.wav", "b#99.wav")); } return true; @@ -62,7 +63,7 @@ bool CWashstand::TurnOff(CTurnOff *msg) { _startFrame = 14; _endFrame = 28; playMovie(14, 28, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); - playSound("b#14.wav"); + playSound(TRANSLATE("b#14.wav", "b#99.wav")); } return true; diff --git a/engines/titanic/game/speech_dispensor.cpp b/engines/titanic/game/speech_dispensor.cpp index 7f5580abb5..460cf0fdc1 100644 --- a/engines/titanic/game/speech_dispensor.cpp +++ b/engines/titanic/game/speech_dispensor.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/speech_dispensor.h" +#include "titanic/translation.h" namespace Titanic { @@ -85,7 +86,7 @@ bool CSpeechDispensor::FrameMsg(CFrameMsg *msg) { switch (_state) { case 0: - playSound("z#93.wav"); + playSound(TRANSLATE("z#93.wav", "z#624.wav")); if (_seasonNum == SEASON_WINTER) { petDisplayMessage(1, FROZEN_TO_BRANCH); _hitCounter = 0; @@ -120,7 +121,7 @@ bool CSpeechDispensor::FrameMsg(CFrameMsg *msg) { bool CSpeechDispensor::MouseButtonUpMsg(CMouseButtonUpMsg *msg) { if (!_speechFallen) { - playSound("z#93.wav"); + playSound(TRANSLATE("z#93.wav", "z#624.wav")); if (_failureType) { petDisplayMessage(1, OUT_OF_REACH); } else { diff --git a/engines/titanic/game/sub_glass.cpp b/engines/titanic/game/sub_glass.cpp index 48cc84815a..ced6f662e9 100644 --- a/engines/titanic/game/sub_glass.cpp +++ b/engines/titanic/game/sub_glass.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/sub_glass.h" +#include "titanic/translation.h" namespace Titanic { @@ -67,7 +68,7 @@ bool CSUBGlass::MouseButtonUpMsg(CMouseButtonUpMsg *msg) { if (!_fieldBC && _startFrame >= 0) { _fieldBC = true; playMovie(_startFrame, _endFrame, MOVIE_NOTIFY_OBJECT); - playSound("z#30.wav"); + playSound(TRANSLATE("z#30.wav", "z#561.wav")); } return true; @@ -89,7 +90,7 @@ bool CSUBGlass::SignalObject(CSignalObject *msg) { if (_signalStartFrame >= 0) { playMovie(_signalStartFrame, _signalEndFrame, MOVIE_WAIT_FOR_FINISH); - playSound("z#30.wav"); + playSound(TRANSLATE("z#30.wav", "z#561.wav")); _fieldBC = false; } } diff --git a/engines/titanic/game/television.cpp b/engines/titanic/game/television.cpp index 7c1e33cce4..be5d1ae40e 100644 --- a/engines/titanic/game/television.cpp +++ b/engines/titanic/game/television.cpp @@ -26,6 +26,7 @@ #include "titanic/debugger.h" #include "titanic/game/get_lift_eye2.h" #include "titanic/pet_control/pet_control.h" +#include "titanic/translation.h" namespace Titanic { @@ -245,8 +246,8 @@ bool CTelevision::MovieEndMsg(CMovieEndMsg *msg) { // You may be a winner CProximity prox1, prox2; prox1._soundType = prox2._soundType = Audio::Mixer::kSpeechSoundType; - playSound("z#47.wav", prox1); - _soundHandle = playSound("b#20.wav", prox2); + playSound(TRANSLATE("z#47.wav", "z#578.wav"), prox1); + _soundHandle = playSound(TRANSLATE("b#20.wav", "b#1.wav"), prox2); // Get the room flags for the SGT floor we're on CPetControl *pet = getPetControl(); diff --git a/engines/titanic/game/throw_tv_down_well.cpp b/engines/titanic/game/throw_tv_down_well.cpp index 680fc7e29f..ba01b32620 100644 --- a/engines/titanic/game/throw_tv_down_well.cpp +++ b/engines/titanic/game/throw_tv_down_well.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/throw_tv_down_well.h" +#include "titanic/translation.h" namespace Titanic { @@ -68,7 +69,7 @@ bool CThrowTVDownWell::EnterViewMsg(CEnterViewMsg *msg) { bool CThrowTVDownWell::MovieEndMsg(CMovieEndMsg *msg) { sleep(2000); changeView("ParrotLobby.Node 11.N"); - playSound("z#471.wav"); + playSound(TRANSLATE("z#471.wav", "z#208.wav")); addTimer(2, 7000, 0); return true; } @@ -77,19 +78,19 @@ bool CThrowTVDownWell::TimerMsg(CTimerMsg *msg) { if (msg->_actionVal == 1) { changeView("ParrotLobby.Node 10.N"); } else if (msg->_actionVal == 2) { - playSound("z#468.wav", 50); + playSound(TRANSLATE("z#468.wav", "z#205.wav"), 50); sleep(1500); changeView(_viewName); _viewName = "NULL"; unlockMouse(); - playSound("z#47.wav"); + playSound(TRANSLATE("z#47.wav", "z#578.wav")); } return true; } bool CThrowTVDownWell::MovieFrameMsg(CMovieFrameMsg *msg) { - playSound("z#470.wav"); + playSound(TRANSLATE("z#470.wav", "z#207.wav")); return true; } diff --git a/engines/titanic/game/up_lighter.cpp b/engines/titanic/game/up_lighter.cpp index b19d899603..115cd097f6 100644 --- a/engines/titanic/game/up_lighter.cpp +++ b/engines/titanic/game/up_lighter.cpp @@ -23,6 +23,7 @@ #include "titanic/game/up_lighter.h" #include "titanic/core/project_item.h" #include "titanic/npcs/parrot.h" +#include "titanic/translation.h" namespace Titanic { @@ -62,7 +63,7 @@ void CUpLighter::load(SimpleFile *file) { bool CUpLighter::MovieEndMsg(CMovieEndMsg *msg) { if (_hosePumping) { - playSound("z#47.wav"); + playSound(TRANSLATE("z#47.wav", "z#578.wav")); _noseDispensed = true; CVisibleMsg visibleMsg(true); diff --git a/engines/titanic/game/useless_lever.cpp b/engines/titanic/game/useless_lever.cpp index 82d8983710..74b6371c06 100644 --- a/engines/titanic/game/useless_lever.cpp +++ b/engines/titanic/game/useless_lever.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/useless_lever.h" +#include "titanic/translation.h" namespace Titanic { @@ -42,11 +43,11 @@ void CUselessLever::load(SimpleFile *file) { bool CUselessLever::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { if (_fieldE0) { playMovie(15, 30, 0); - playSound("z#56.wav"); + playSound(TRANSLATE("z#56.wav", "z#587.wav")); _fieldE0 = false; } else { playMovie(0, 14, 0); - playSound("z#56.wav"); + playSound(TRANSLATE("z#56.wav", "z#587.wav")); _fieldE0 = true; } diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk index 8c5cdd6446..617e262396 100644 --- a/engines/titanic/module.mk +++ b/engines/titanic/module.mk @@ -484,14 +484,6 @@ MODULE_OBJS := \ support/text_cursor.o \ support/time_event_info.o \ support/video_surface.o \ - true_talk/german/barbot_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/moves/restricted_move.cpp b/engines/titanic/moves/restricted_move.cpp index 52ff280437..279380a93c 100644 --- a/engines/titanic/moves/restricted_move.cpp +++ b/engines/titanic/moves/restricted_move.cpp @@ -21,6 +21,7 @@ */ #include "titanic/moves/restricted_move.h" +#include "titanic/translation.h" namespace Titanic { @@ -54,11 +55,12 @@ bool CRestrictedMove::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { } else if (classNum != UNCHECKED) { petDisplayMessage(1, CLASS_NOT_ALLOWED_AT_DEST); } else if (compareRoomNameTo("EmbLobby")) { - playSound("a#17.wav"); + if (g_language != Common::DE_DEU) + playSound("a#17.wav"); petDisplayMessage(1, CHECK_IN_AT_RECEPTION); } else if (compareViewNameTo("Titania.Node 1.S")) { CProximity prox(Audio::Mixer::kSpeechSoundType); - playSound("z#226.wav", prox); + playSound(TRANSLATE("z#226.wav", "z#132.wav"), prox); changeView(_destination); } diff --git a/engines/titanic/npcs/succubus.cpp b/engines/titanic/npcs/succubus.cpp index 6eeccd345a..b8fddf2079 100644 --- a/engines/titanic/npcs/succubus.cpp +++ b/engines/titanic/npcs/succubus.cpp @@ -25,6 +25,7 @@ #include "titanic/carry/chicken.h" #include "titanic/core/view_item.h" #include "titanic/pet_control/pet_control.h" +#include "titanic/translation.h" namespace Titanic { @@ -289,7 +290,7 @@ bool CSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) { item->setVisible(false); if (_startFrame1 >= 0) { - playSound("z#23.wav"); + playSound(TRANSLATE("z#23.wav", "z#554.wav")); playMovie(_startFrame1, _endFrame1, 0); } @@ -366,7 +367,7 @@ bool CSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) { if (_isOn) { _isOn = false; if (_offStartFrame >= 0) - playSound("z#27.wav", 100); + playSound(TRANSLATE("z#27.wav", "z#558.wav"), 100); if (_signalFlag) setVisible(false); @@ -535,7 +536,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == _offEndFrame) { if (_endingStartFrame >= 0) - playSound("z#30.wav", 100); + playSound(TRANSLATE("z#30.wav", "z#561.wav"), 100); if (_signalFlag) { _signalFlag = false; @@ -680,12 +681,12 @@ bool CSuccUBus::TurnOn(CTurnOn *msg) { if (pet) { if (!_signalFlag && _initialStartFrame >= 0) { playMovie(_initialStartFrame, _initialEndFrame, 0); - playSound("z#30.wav", 100); + playSound(TRANSLATE("z#30.wav", "z#561.wav"), 100); } if (_onStartFrame >= 0) { playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT); - playSound("z#26.wav", 100); + playSound(TRANSLATE("z#26.wav", "z#557.wav"), 100); } uint petRoomFlags = pet->getRoomFlags(); @@ -712,7 +713,7 @@ bool CSuccUBus::TurnOff(CTurnOff *msg) { } if (_offStartFrame >= 0) { - playSound("z#27.wav", 100); + playSound(TRANSLATE("z#27.wav", "z#558.wav"), 100); playMovie(_offStartFrame, _offEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); } @@ -753,7 +754,7 @@ bool CSuccUBus::SUBTransition(CSUBTransition *msg) { bool CSuccUBus::SetChevRoomBits(CSetChevRoomBits *msg) { if (_isOn) { _destRoomFlags = msg->_roomFlags; - playSound("z#98.wav", 100); + playSound(TRANSLATE("z#98.wav", "z#629.wav"), 100); } return true; diff --git a/engines/titanic/npcs/titania.cpp b/engines/titanic/npcs/titania.cpp index d3e3395fc8..bfc0ba1bfd 100644 --- a/engines/titanic/npcs/titania.cpp +++ b/engines/titanic/npcs/titania.cpp @@ -21,6 +21,7 @@ */ #include "titanic/npcs/titania.h" +#include "titanic/translation.h" namespace Titanic { @@ -146,7 +147,7 @@ bool CTitania::ActMsg(CActMsg *msg) { if (msg->_action == "SleepTitania") { setVisible(true); playCutscene(52, 104); - playSound("z#47.wav", 100); + playSound(TRANSLATE("z#47.wav", "z#578.wav"), 100); changeView("Titania.Node 7.S", ""); // Re-enable control, and reset bomb's volume back to normal 60% @@ -178,7 +179,7 @@ bool CTitania::ActMsg(CActMsg *msg) { && _mouth && _visionCentre && _speechCentre && _olfactoryCentre && _auditoryCentre) { CProximity prox(Audio::Mixer::kSpeechSoundType); - playSound("z#47.wav", prox); + playSound(TRANSLATE("z#47.wav", "z#578.wav"), prox); CActMsg actMsg("Woken"); actMsg.execute("MouthSlot"); diff --git a/engines/titanic/sound/titania_speech.cpp b/engines/titanic/sound/titania_speech.cpp index c6365a828b..30446fd992 100644 --- a/engines/titanic/sound/titania_speech.cpp +++ b/engines/titanic/sound/titania_speech.cpp @@ -21,6 +21,7 @@ */ #include "titanic/sound/titania_speech.h" +#include "titanic/translation.h" namespace Titanic { @@ -57,7 +58,7 @@ bool CTitaniaSpeech::ActMsg(CActMsg *msg) { CProximity prox(Audio::Mixer::kSpeechSoundType); switch (_actionNum) { case 1: - loadSound("a#12.wav"); + loadSound(TRANSLATE("a#12.wav", "a#0.wav")); sleep(1000); playMovie(0, 187, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); movieSetPlaying(true); @@ -65,7 +66,7 @@ bool CTitaniaSpeech::ActMsg(CActMsg *msg) { break; case 2: - loadSound("a#11.wav"); + loadSound(TRANSLATE("a#11.wav", "a#4.wav")); addTimer(0); startAnimTimer("Para2", 300); addTimer(6000); @@ -78,25 +79,25 @@ bool CTitaniaSpeech::ActMsg(CActMsg *msg) { case 3: visibleMsg._visible = false; visibleMsg.execute("TitaniaStillControl"); - loadSound("a#10.wav"); + loadSound(TRANSLATE("a#10.wav", "a#2.wav")); playMovie(585, 706, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); - playSound("a#10.wav", prox); + playSound(TRANSLATE("a#10.wav", "a#2.wav"), prox); break; case 4: visibleMsg._visible = false; visibleMsg.execute("TitaniaStillControl"); - loadSound("a#9.wav"); + loadSound(TRANSLATE("a#9.wav", "a#3.wav")); playMovie(707, 905, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); - playSound("a#9.wav", prox); + playSound(TRANSLATE("a#9.wav", "a#3.wav"), prox); break; case 5: visibleMsg._visible = false; visibleMsg.execute("TitaniaStillControl"); - loadSound("a#8.wav"); + loadSound(TRANSLATE("a#8.wav", "a#1.wav")); playMovie(906, 938, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); - playSound("a#8.wav", prox); + playSound(TRANSLATE("a#8.wav", "a#1.wav"), prox); break; default: @@ -125,7 +126,7 @@ bool CTitaniaSpeech::MovieFrameMsg(CMovieFrameMsg *msg) { int frame = getMovieFrame(); if (frame == 0) { CProximity prox(Audio::Mixer::kSpeechSoundType); - playSound("a#12.wav", prox); + playSound(TRANSLATE("a#12.wav", "a#0.wav"), prox); } return true; @@ -142,7 +143,7 @@ bool CTitaniaSpeech::TimerMsg(CTimerMsg *msg) { actMsg.execute(this); } else if (msg->_action == "Para2") { CProximity prox(Audio::Mixer::kSpeechSoundType); - playSound("a#11.wav", prox); + playSound(TRANSLATE("a#11.wav", "a#4.wav"), prox); } else { frameMsg._frameNumber = _backgroundFrame++; frameMsg.execute("TitaniaStillControl"); diff --git a/engines/titanic/true_talk/barbot_script.cpp b/engines/titanic/true_talk/barbot_script.cpp index be1c73b1e9..430330a35a 100644 --- a/engines/titanic/true_talk/barbot_script.cpp +++ b/engines/titanic/true_talk/barbot_script.cpp @@ -24,22 +24,34 @@ #include "titanic/true_talk/barbot_script.h" #include "titanic/true_talk/true_talk_manager.h" #include "titanic/titanic.h" +#include "titanic/translation.h" namespace Titanic { -static const int STATE_ARRAY[7] = { - 0xCAB0, 0xCAB2, 0xCAB3, 0xCAB4, 0xCAB5, 0xCAB6, 0xCAB7 +static const int STATE_ARRAY_EN[7] = { + 51888, 51890, 51891, 51892, 51893, 51894, 51895 +}; +static const int STATE_ARRAY_DE[7] = { + 51903, 51905, 51906, 51907, 51908, 51909, 51910 }; -static const uint ARRAY1[] = { +static const uint ARRAY1_EN[23] = { 0, 50033, 50044, 50045, 50046, 50047, 50048, 50049, 50050, 50051, 50034, 50035, 50036, 50037, 50038, 50039, 50040, 50041, 50042, 50043, 50411, 0 }; +static const uint ARRAY1_DE[23] = { + 0, 50033, 50044, 50045, 50046, 50047, 50048, 50049, 50050, + 50051, 50034, 50035, 50036, 50037, 50038, 50039, 50040, + 50041, 50042, 50043, 50421, 0, 0 +}; -static const uint ARRAY2[] = { +static const uint ARRAY2_EN[10] = { 51899, 51900, 51901, 51902, 51903, 51904, 51905, 51906, 51907, 0 }; +static const uint ARRAY2_DE[10] = { + 51914, 51915, 51916, 51917, 51918, 51919, 51920, 51921, 51922, 0 +}; BarbotScript::BarbotScript(int val1, const char *charClass, int v2, const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) : @@ -74,9 +86,9 @@ int BarbotScript::chooseResponse(const TTroomScript *roomScript, const TTsentenc if (tag == MKTAG('D', 'N', 'A', '1') || tag == MKTAG('H', 'H', 'G', 'Q') || tag == MKTAG('A', 'N', 'S', 'W') || tag == MKTAG('S', 'U', 'M', 'S')) { if (_state < 7) { - addResponse(STATE_ARRAY[_state++]); + addResponse(TRANSLATE(STATE_ARRAY_EN[_state++], STATE_ARRAY_DE[_state++])); } else { - selectResponse(51896); + selectResponse(TRANSLATE(51896, 51911)); setState(1); _state = 0; } @@ -142,7 +154,11 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent if (isState9()) { if (sentence->localWord("visioncenter") || sentence->localWord("brain") || sentence->contains("vision") || sentence->contains("visual") || - sentence->contains("brain") || sentence->contains("crystal")) { + sentence->contains("brain") || sentence->contains("crystal") || + sentence->contains("gesichtsmodul") || sentence->contains("sehmodul") || + sentence->contains("gesichtszentrum") || sentence->contains("hirn") || + sentence->contains("hirnstueck") + ) { if (CTrueTalkManager::getStateValue(2)) { addResponse(getDialogueId(251003)); applyResponse(); @@ -151,40 +167,40 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent } } - if (sentence->contains("goldfish")) { + if (sentence->contains("goldfish") || sentence->contains("goldfisch")) { addResponse(getDialogueId(250184)); applyResponse(); return 2; } - dialogueId = ARRAY1[getRandomNumber(20)]; - if (!ARRAY2[_arrIndex]) + dialogueId = TRANSLATE(ARRAY1_EN[getRandomNumber(20)], ARRAY1_DE[getRandomNumber(20)]); + if (!TRANSLATE(ARRAY2_EN[_arrIndex], ARRAY2_DE[_arrIndex])) _arrIndex = 0; if (_arrIndex) { - dialogueId = ARRAY2[_arrIndex++]; + dialogueId = TRANSLATE(ARRAY2_EN[_arrIndex++], ARRAY2_DE[_arrIndex++]); } else if (getRandomNumber(100) > 35) { - dialogueId = ARRAY2[0]; + dialogueId = TRANSLATE(ARRAY2_EN[0], ARRAY2_DE[0]); _arrIndex = 1; } else if (getRandomNumber(100) > 60) { switch (sentence->_category) { case 2: - dialogueId = 51914; + dialogueId = TRANSLATE(51914, 51929); break; case 3: - dialogueId = 51911; + dialogueId = TRANSLATE(51911, 51926); break; case 4: - dialogueId = 51913; + dialogueId = TRANSLATE(51913, 51928); break; case 5: - dialogueId = 51912; + dialogueId = TRANSLATE(51912, 51927); break; case 6: - dialogueId = 51915; + dialogueId = TRANSLATE(51915, 51930); break; case 7: - dialogueId = 51909; + dialogueId = TRANSLATE(51909, 51924); break; default: break; @@ -215,56 +231,60 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent if (!val34) { goto done; - } else if (val34 > 50357) { + } else if (val34 > TRANSLATE(50357, 50366)) { goto done; - } else if (val34 == 50357) { - return applySentenceIds(50358, -1); + } else if (val34 == TRANSLATE(50357, 50366)) { + return applySentenceIds(TRANSLATE(50358, 50367), -1); } switch (val34) { case 1: if (flag) - return applySentenceIds(51898, 2); + return applySentenceIds(TRANSLATE(51898, 51913), 2); if (flag2) - return applySentenceIds(51897); + return applySentenceIds(TRANSLATE(51897, 51912)); break; case 2: if (flag) - return applySentenceIds(51897); + return applySentenceIds(TRANSLATE(51897, 51912)); break; case 3: - if (sentence->localWord("useless") || sentence->contains("useless")) - return applySentenceIds(50824); + if (sentence->localWord("useless") || sentence->contains("useless") || + sentence->contains("hoffnungsloser fall")) + return applySentenceIds(TRANSLATE(50824, 50837)); break; case 4: if (flag) - return applySentenceIds(getRandomBit() ? 50512 : 51642); + return applySentenceIds(getRandomBit() ? + TRANSLATE(50512, 50522) : TRANSLATE(51642, 51657)); else if (flag2) - return applySentenceIds(getRandomBit() ? 50511 : 51643); + return applySentenceIds(getRandomBit() ? + TRANSLATE(50511, 50521) : TRANSLATE(51643, 51658)); break; case 5: if (flag) - return applySentenceIds(50829, 6); + return applySentenceIds(TRANSLATE(50829, 50842), 6); if (flag2) - return applySentenceIds(50828); + return applySentenceIds(TRANSLATE(50828, 50841)); break; case 6: if (flag) - return applySentenceIds(50831); + return applySentenceIds(TRANSLATE(50831, 50844)); if (flag2) - return applySentenceIds(50830); + return applySentenceIds(TRANSLATE(50830, 50843)); break; case 7: - if (flag2 || sentence->contains("never")) - return applySentenceIds(51553); - if (flag || sentence->contains("nicest")) - return applySentenceIds(51554); + if (flag2 || sentence->contains("never") || sentence->contains("niemals") || + sentence->contains("nie")) + return applySentenceIds(TRANSLATE(51553, 51568)); + if (flag || sentence->contains("nicest") || sentence->contains("schoenste")) + return applySentenceIds(TRANSLATE(51554, 51569)); break; case 8: if (flag) - return applySentenceIds(50961); + return applySentenceIds(TRANSLATE(50961, 50974)); if (flag2) - return applySentenceIds(50960); + return applySentenceIds(TRANSLATE(50960, 50973)); break; case 9: if (flag) @@ -299,7 +319,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent return applySentenceIds(getDialogueId(250946)); break; case 15: - if (flag || sentence->contains("or")) { + if (flag || sentence->contains("or") || sentence->contains("oder")) { return applySentenceIds(getDialogueId(250526), 16); } else { if (g_vm->_trueTalkManager->_quotesTree.search( @@ -311,9 +331,9 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent break; case 17: if (flag) { - return applySentenceIds(50382); + return applySentenceIds(TRANSLATE(50382, 50391)); } else if (flag2) { - return applySentenceIds(51423); + return applySentenceIds(TRANSLATE(51423, 51438)); } // Intentional fall-through @@ -327,15 +347,15 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent return applySentenceIds(getDialogueId(250565), 20); case 20: if (flag) - return applySentenceIds(50307); + return applySentenceIds(TRANSLATE(50307, 50315)); if (flag2) - return applySentenceIds(50306); + return applySentenceIds(TRANSLATE(50306, 50314)); break; case 21: if (flag) - return applySentenceIds(50359); + return applySentenceIds(TRANSLATE(50359, 50368)); if (flag2) - return applySentenceIds(50357); + return applySentenceIds(TRANSLATE(50357, 50366)); break; case 23: if (val2C == 6 || val2C == 10) @@ -344,7 +364,10 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent case 24: if (sentence->contains("do not know") || sentence->contains("no idea") - || sentence->contains("a clue")) { + || sentence->contains("a clue") + || sentence->contains("keine ahnung") + || sentence->contains("weiss nicht") + || sentence->contains("keinen schimmer")) { return applySentenceIds(getDialogueId(250553)); } else { return applySentenceIds(getDialogueId(250552)); @@ -354,7 +377,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent if (flag || val2C == 10) applySentenceIds(getDialogueId(251899), 26); else if (flag2) - return applySentenceIds(50215); + return applySentenceIds(TRANSLATE(50215, 50223)); break; case 26: if (g_vm->_trueTalkManager->_quotesTree.search( @@ -387,7 +410,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent return applySentenceIds(getDialogueId(250642)); break; case 33: - return applySentenceIds(50763); + return applySentenceIds(TRANSLATE(50763, 50776)); case 34: if (flag) return applySentenceIds(getDialogueId(251622)); @@ -400,15 +423,15 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent break; case 36: if (flag) - return applySentenceIds(50335); + return applySentenceIds(TRANSLATE(50335, 50344)); if (flag2) - return applySentenceIds(50334); + return applySentenceIds(TRANSLATE(50334, 50343)); break; case 37: if (flag) - return applySentenceIds(50217); + return applySentenceIds(TRANSLATE(50217, 50225)); if (flag2) - return applySentenceIds(50153); + return applySentenceIds(TRANSLATE(50153, 50157)); break; case 38: return applySentenceIds(getDialogueId(250637)); @@ -426,9 +449,9 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent break; case 43: if (flag) - return applySentenceIds(50416, -1); + return applySentenceIds(TRANSLATE(50416, 50426), -1); if (flag2) - return applySentenceIds(50415, -1); + return applySentenceIds(TRANSLATE(50415, 50425), -1); break; case 44: if (flag) @@ -443,91 +466,99 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent if (sentence->localWord("summer") || sentence->contains("summer") || sentence->localWord("autumn") - || sentence->contains("autumn")) { - return applySentenceIds(50743); + || sentence->contains("autumn") + || sentence->contains("herbst")) { + return applySentenceIds(TRANSLATE(50743, 50755)); } else if (sentence->localWord("winter") || sentence->contains("winter")) { - return applySentenceIds(50696); + return applySentenceIds(TRANSLATE(50696, 50708)); } else { - return applySentenceIds(50225); + return applySentenceIds(TRANSLATE(50225, 50233)); } break; case 46: if (val2C == 7 || val2C == 10) - return applySentenceIds(50698); + return applySentenceIds(TRANSLATE(50698, 50710)); break; case 47: if (flag || flag2 || val2C == 6) - return applySentenceIds(50717); + return applySentenceIds(TRANSLATE(50717, 50729)); break; case 48: if (flag) - return applySentenceIds(50710); + return applySentenceIds(TRANSLATE(50710, 50722)); if (flag2) - return applySentenceIds(50225); + return applySentenceIds(TRANSLATE(50225, 50233)); break; case 49: - if (sentence->localWord("scraliontis") || sentence->contains("scraliontis")) - return applySentenceIds(50711); + if (sentence->localWord("scraliontis") || sentence->contains("scraliontis") || + sentence->contains("skraliontis")) + return applySentenceIds(TRANSLATE(50711, 50723)); if (sentence->localWord("brobostigon") || sentence->contains("brobostigon")) - return applySentenceIds(50712); + return applySentenceIds(TRANSLATE(50712, 50724)); break; case 50: - return applySentenceIds(50713); + return applySentenceIds(TRANSLATE(50713, 50725)); case 51: if (flag) - return applySentenceIds(50715); + return applySentenceIds(TRANSLATE(50715, 50727)); if (flag2) - return applySentenceIds(50714); + return applySentenceIds(TRANSLATE(50714, 50726)); break; case 52: if (sentence->localWord("note") || sentence->contains("note")) - return applySentenceIds(50716); - return applySentenceIds(50210); + return applySentenceIds(TRANSLATE(50716, 50728)); + return applySentenceIds(TRANSLATE(50210, 50218)); case 53: - return applySentenceIds(50210); + return applySentenceIds(TRANSLATE(50210, 50218)); case 54: if (getDialRegion(0) != 0) { - if (val2C == 12) - return applySentenceIds(50174); + if (val2C) + return applySentenceIds(TRANSLATE(50174, 50178)); else - return applySentenceIds(50300); + return applySentenceIds(TRANSLATE(50300, 50308)); } else if (val2C == 7 || val2C == 10) { - return applySentenceIds(50871); + return applySentenceIds(TRANSLATE(50871, 50884)); } break; case 55: if (flag) - return applySentenceIds(50302); + return applySentenceIds(TRANSLATE(50302, 50310)); if (flag2) - return applySentenceIds(50301); + return applySentenceIds(TRANSLATE(50301, 50309)); break; case 56: if (flag) - return applySentenceIds(50304); + return applySentenceIds(TRANSLATE(50304, 50312)); if (flag2) - return applySentenceIds(50303); + return applySentenceIds(TRANSLATE(50303, 50311)); break; case 57: if (sentence->localWord("mustard") || sentence->contains("mustard") || sentence->localWord("tomato") - || sentence->contains("tomato")) - return applySentenceIds(50320); + || sentence->contains("tomato") + || sentence->contains("senf") + || sentence->contains("tomate")) + return applySentenceIds(TRANSLATE(50320, 50329)); if (sentence->localWord("sauce") || sentence->localWord("puree") || sentence->contains("sauce") || sentence->contains("puree") || sentence->contains("bird") - || sentence->contains("starling")) { - applySentenceIds(50321); + || sentence->contains("starling") + || sentence->contains("sosse") + || sentence->contains("pueree") + || sentence->contains("vogel") + || sentence->contains("staren")) { + applySentenceIds(TRANSLATE(50321, 50330)); CTrueTalkManager::triggerAction(30, 0); return 2; } - return applySentenceIds(50320); + return applySentenceIds(TRANSLATE(50320, 50329)); case 58: if (val2C == 6 || val2C == 10) - return applySentenceIds(50880); + return applySentenceIds(TRANSLATE(50880, 50893)); break; case 59: if (flag) { @@ -581,7 +612,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent return applySentenceIds(getDialogueId(250631)); break; case 65: - if (sentence->localWord("now") || sentence->localWord("soonh")) + if (sentence->localWord("now") || sentence->localWord("soon")) return applySentenceIds(getDialogueId(250424)); return applySentenceIds(getDialogueId(250506)); case 66: @@ -623,7 +654,7 @@ done: updateCurrentDial(true); - if (sentence->contains("goldfish")) { + if (sentence->contains("goldfish") || sentence->contains("goldfisch")) { addResponse(250184); } else if ((sentence->localWord("puree") || sentence->localWord("pureed")) && sentence->localWord("parrot")) { diff --git a/engines/titanic/true_talk/bellbot_script.cpp b/engines/titanic/true_talk/bellbot_script.cpp index ec15c5dfbf..84d5c59713 100644 --- a/engines/titanic/true_talk/bellbot_script.cpp +++ b/engines/titanic/true_talk/bellbot_script.cpp @@ -26,6 +26,7 @@ #include "titanic/pet_control/pet_control.h" #include "titanic/core/node_item.h" #include "titanic/titanic.h" +#include "titanic/translation.h" namespace Titanic { @@ -41,6 +42,10 @@ static const RoomDialogueId ROOM_DIALOGUE_IDS[] = { { 0, 0 } }; +static const uint PRERESPONSE_IDS_DE[] = { + 0 +}; + BellbotScript::BellbotScript(int val1, const char *charClass, int v2, const char *charName, int v3, int val2) : TTnpcScript(val1, charClass, v2, charName, v3, val2, -1, -1, -1, 0), @@ -89,75 +94,78 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen if (getValue(1) <= 2) updateCurrentDial(1); - // Handle room specific sentences - switch (roomScript->_scriptId) { - case 101: - if (getValue(2) == 1) { - result = processEntries(&_sentences[11], 0, roomScript, sentence); - } - break; + if (g_language != Common::DE_DEU) { + // Handle room specific sentences + switch (roomScript->_scriptId) { + case 101: + if (getValue(2) == 1) { + result = processEntries(&_sentences[11], 0, roomScript, sentence); + } + break; - case 107: - result = processEntries(&_sentences[5], 0, roomScript, sentence); - break; + case 107: + result = processEntries(&_sentences[5], 0, roomScript, sentence); + break; - case 108: - result = processEntries(&_sentences[7], 0, roomScript, sentence); - break; + case 108: + result = processEntries(&_sentences[7], 0, roomScript, sentence); + break; - case 109: - result = processEntries(&_sentences[13], 0, roomScript, sentence); - break; + case 109: + result = processEntries(&_sentences[13], 0, roomScript, sentence); + break; - case 110: - result = processEntries(&_sentences[16], 0, roomScript, sentence); - break; + case 110: + result = processEntries(&_sentences[16], 0, roomScript, sentence); + break; - case 111: - result = processEntries(&_sentences[10], 0, roomScript, sentence); - break; + case 111: + result = processEntries(&_sentences[10], 0, roomScript, sentence); + break; - case 112: - result = processEntries(&_sentences[15], 0, roomScript, sentence); - break; + case 112: + result = processEntries(&_sentences[15], 0, roomScript, sentence); + break; - case 113: - result = processEntries(&_sentences[9], 0, roomScript, sentence); - break; + case 113: + result = processEntries(&_sentences[9], 0, roomScript, sentence); + break; - case 114: - result = processEntries(&_sentences[18], 0, roomScript, sentence); - break; + case 114: + result = processEntries(&_sentences[18], 0, roomScript, sentence); + break; - case 115: - result = processEntries(&_sentences[12], 0, roomScript, sentence); - break; + case 115: + result = processEntries(&_sentences[12], 0, roomScript, sentence); + break; - case 116: - result = processEntries(&_sentences[8], 0, roomScript, sentence); - break; + case 116: + result = processEntries(&_sentences[8], 0, roomScript, sentence); + break; - case 117: - result = processEntries(&_sentences[6], 0, roomScript, sentence); - break; + case 117: + result = processEntries(&_sentences[6], 0, roomScript, sentence); + break; - case 123: - result = processEntries(&_sentences[17], 0, roomScript, sentence); - break; + case 123: + result = processEntries(&_sentences[17], 0, roomScript, sentence); + break; - case 125: - result = processEntries(&_sentences[14], 0, roomScript, sentence); - break; + case 125: + result = processEntries(&_sentences[14], 0, roomScript, sentence); + break; - case 131: - if (getValue(26) == 0) { - result = processEntries(&_sentences[getValue(6) ? 5 : 4], 0, roomScript, sentence); + case 131: + if (getValue(26) == 0) { + result = processEntries(&_sentences[getValue(6) ? 5 : 4], 0, roomScript, sentence); + } + break; } - break; + + if (result == 2) + return 2; } - if (result == 2) - return 2; if (sentence->contains("pretend you summoned yourself") || sentence->contains("pretend you just summoned yourself")) { if (scriptChanged(roomScript, 157) == 2) @@ -193,20 +201,38 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen } if (sentence->contains("what should i do here") - || sentence->contains("what do i do here") - || sentence->contains("what shall i do in here") - || sentence->contains("what shall i do in this room") - || sentence->contains("what should i do in this room") - || sentence->contains("what am i supposed to do in here") - || sentence->contains("what should i do in here") - || sentence->contains("what do i do in this room")) { + || sentence->contains("what do i do here") + || sentence->contains("what shall i do in here") + || sentence->contains("what shall i do in this room") + || sentence->contains("what should i do in this room") + || sentence->contains("what am i supposed to do in here") + || sentence->contains("what should i do in here") + || sentence->contains("what do i do in this room") + || sentence->localWord("doidohere") + || sentence->contains("was soll ich denn hier tun") + || sentence->contains("was soll ich hier tun") + || sentence->contains("was gibt es hier zu tun") + || sentence->contains("was kann man denn hier machen") + || sentence->contains("was kann man denn hier tun") + || sentence->contains("was soll ich hier drin tun") + || sentence->contains("was soll ich hier") + || sentence->contains("wohin soll ich jetzt") + || sentence->contains("was ist das hier fuer ein raum") + || sentence->contains("was ist denn hier zu tun") + || sentence->contains("was kann man hier machen") + || sentence->contains("was soll ich jetzt machen") + || sentence->contains("was kommt jetzt") + || sentence->contains("was kommt nun") + || sentence->contains("wozu bin ich eigentlich hier") + || sentence->contains("wozu bin ich denn hier")) { if (addRoomDescription(roomScript)) { applyResponse(); return 2; } } - if (sentence->contains("help") + if (sentence->localWord("help") + || (g_language == Common::DE_DEU && sentence->contains("help")) || sentence->contains("what now") || sentence->contains("what next") || sentence->contains("give me a hint") @@ -216,7 +242,20 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen || sentence->contains("what shall i do") || sentence->contains("what would you do") || sentence->contains("what should i do") - || sentence->contains("what do i do")) { + || sentence->contains("what do i do") + || sentence->contains("was nun") + || sentence->contains("so und was kommt jetzt") + || sentence->contains("und jetzt") + || sentence->contains("einen hinweis") + || sentence->contains("einen tip") + || sentence->contains("ich bin verzweifelt") + || sentence->contains("bin ich auf der richtigen spur") + || sentence->contains("was soll ich jetzt anfangen") + || sentence->contains("wozu raetst du mir") + || sentence->contains("was muss ich jetzt") + || sentence->contains("was wuerdest du an meiner stelle") + || sentence->contains("was soll ich als naechstes tun") + || sentence->contains("was soll ich hier")) { if (getDialRegion(0) == 1) { randomResponse4(roomScript, getValue(1)); applyResponse(); @@ -241,37 +280,48 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen if (processEntries(&_entries, _entryCount, roomScript, sentence) == 2) return 2; - if ((sentence->_category == 4 && sentence->localWord("am") && sentence->localWord("i")) - || (sentence->localWord("are") && sentence->localWord("we")) - || (sentence->_category == 3 && sentence->localWord("room") - && sentence->localWord("we") && sentence->localWord("in")) - || (sentence->_category == 3 && sentence->localWord("rom") - && sentence->localWord("is") && sentence->localWord("this")) - ) { - uint id = getRangeValue(getRoomDialogueId(roomScript)); - addResponse(getDialogueId(id ? id : 201384)); - applyResponse(); - return 2; - } + if (g_language != Common::DE_DEU) { + if ((sentence->_category == 4 && sentence->localWord("am") && sentence->localWord("i")) + || (sentence->localWord("are") && sentence->localWord("we")) + || (sentence->_category == 3 && sentence->localWord("room") + && sentence->localWord("we") && sentence->localWord("in")) + || (sentence->_category == 3 && sentence->localWord("rom") + && sentence->localWord("is") && sentence->localWord("this")) + ) { + uint id = getRangeValue(getRoomDialogueId(roomScript)); + addResponse(getDialogueId(id ? id : 201384)); + applyResponse(); + return 2; + } - if (getValue(1) >= 3) { - result = processEntries(&_sentences[1], 0, roomScript, sentence); - } else if (getValue(1) == 2) { - result = processEntries(&_sentences[2], 0, roomScript, sentence); - } else if (getValue(1) == 1) { - result = processEntries(&_sentences[3], 0, roomScript, sentence); + if (getValue(1) >= 3) { + result = processEntries(&_sentences[1], 0, roomScript, sentence); + } else if (getValue(1) == 2) { + result = processEntries(&_sentences[2], 0, roomScript, sentence); + } else if (getValue(1) == 1) { + result = processEntries(&_sentences[3], 0, roomScript, sentence); - if (sentence->contains("shrinkbot")) { + if (sentence->contains("shrinkbot")) { + addResponse(getDialogueId(200583)); + applyResponse(); + return 2; + } + } + if (result == 2) + return 2; + } else { + if (getValue(1) == 1 && (sentence->localWord("shrinkbot") || + sentence->contains("psychobot"))) { addResponse(getDialogueId(200583)); applyResponse(); return 2; } } - if (result == 2) - return 2; - if (sentence->localWord("television") || sentence->localWord("tv") - || sentence->localWord("crush") || sentence->localWord("crushed")) { + if ((g_language != Common::DE_DEU || getValue(40) == 0) && + (sentence->localWord("television") || sentence->localWord("tv") + || sentence->localWord("crush") || sentence->localWord("crushed") + || sentence->localWord("crushedtv"))) { if (roomScript->_scriptId == 111 || getRandomBit()) { addResponse(getDialogueId(getRandomBit() ? 200912 : 200913)); } else { @@ -289,7 +339,8 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen return 2; } - if (sentence->contains("my") && (sentence->contains("where can i find") + if ((sentence->contains("my") || sentence->contains("mein")) + && (sentence->contains("where can i find") || sentence->contains("where is") || sentence->contains("wheres") || sentence->contains("help me find") @@ -298,13 +349,26 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen || sentence->contains("id like") || sentence->contains("i would like") || sentence->contains("have you seen") + || sentence->contains("gibt es hier") + || sentence->contains("wo finde ich") + || sentence->contains("sind hier") + || sentence->contains("habt ihr") + || sentence->contains("gibt es") + || sentence->contains("wo sind") + || sentence->contains("wo ist") + || sentence->contains("wie komme ich") + || sentence->contains("wie erreicht man") + || sentence->contains("hast du") + || sentence->contains("ich moechte") + || sentence->contains("gib mir") + || sentence->contains("haettest du vielleicht") + || sentence->contains("ich haette gern") )) { addResponse(getDialogueId(200799)); applyResponse(); return 2; } - setupSentences(); uint tagId = g_vm->_trueTalkManager->_quotes.find(sentence->_normalizedLine); if (tagId && chooseResponse(roomScript, sentence, tagId) == 2) return 2; @@ -642,104 +706,183 @@ int BellbotScript::updateState(uint oldId, uint newId, int index) { } int BellbotScript::preResponse(uint id) { + if (g_language == Common::DE_DEU && getDialRegion(0) == 0 + && getRandomNumber(100) > 80) + return 251250; + int newId = _preResponses.find(id); - if (newId == 202277) { - applyResponse(); - CTrueTalkManager::triggerAction(1, 0); - } - if (newId == 200769) { - applyResponse(); - CTrueTalkManager::triggerAction(18, 0); - } + if (g_language != Common::DE_DEU) { + if (newId == 202277) { + applyResponse(); + CTrueTalkManager::triggerAction(1, 0); + } + if (newId == 200769) { + applyResponse(); + CTrueTalkManager::triggerAction(18, 0); + } - if (id == 21790) - CTrueTalkManager::triggerAction(13, 0); + if (id == 21790) + CTrueTalkManager::triggerAction(13, 0); + } return newId; } int BellbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) { - switch (val1) { - case 1: - addResponse(getDialogueId(*srcIdP)); - applyResponse(); - return 2; - - case 2: - addResponse(getDialogueId(*srcIdP)); - addResponse(getDialogueId(getRandomNumber(2) == 1 ? 200192 : 200157)); - addResponse(getDialogueId(200176)); - applyResponse(); - return 2; + if (g_language == Common::EN_ANY) { + switch (val1) { + case 1: + addResponse(getDialogueId(*srcIdP)); + applyResponse(); + return 2; - case 21: - if (CTrueTalkManager::getStateValue(7) == 0) { - selectResponse(21372); + case 2: + addResponse(getDialogueId(*srcIdP)); + addResponse(getDialogueId(getRandomNumber(2) == 1 ? 200192 : 200157)); + addResponse(getDialogueId(200176)); applyResponse(); return 2; - } - if (!sentence->localWord("broken") && !sentence->contains("broken") && + case 21: + if (CTrueTalkManager::getStateValue(7) == 0) { + selectResponse(21372); + applyResponse(); + return 2; + } + + if (!sentence->localWord("broken") && !sentence->contains("broken") && CTrueTalkManager::_currentNPC) { - CNodeItem *node = CTrueTalkManager::_currentNPC->getNode(); - if (node) { - CString nodeName = node->getName(); - if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6") + CNodeItem *node = CTrueTalkManager::_currentNPC->getNode(); + if (node) { + CString nodeName = node->getName(); + if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6") || nodeName.containsIgnoreCase("7")) { - CTrueTalkManager::triggerAction(29, 2); - selectResponse(201571); - applyResponse(); - return 2; + CTrueTalkManager::triggerAction(29, 2); + selectResponse(201571); + applyResponse(); + return 2; + } } } - } - CTrueTalkManager::triggerAction(29, 1); - selectResponse(201771); - applyResponse(); - return 2; + CTrueTalkManager::triggerAction(29, 1); + selectResponse(201771); + applyResponse(); + return 2; - case 22: - if (CTrueTalkManager::getStateValue(7) == 0) { - selectResponse(21372); + case 22: + if (CTrueTalkManager::getStateValue(7) == 0) { + selectResponse(21372); + applyResponse(); + return 2; + } + + if (!sentence->localWord("broken") && !sentence->contains("broken") && + CTrueTalkManager::_currentNPC) { + CNodeItem *node = CTrueTalkManager::_currentNPC->getNode(); + if (node) { + CString nodeName = node->getName(); + if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6") + || nodeName.containsIgnoreCase("7")) { + CTrueTalkManager::triggerAction(29, 2); + selectResponse(201571); + applyResponse(); + return 2; + } + } + } + + CTrueTalkManager::triggerAction(29, 1); + selectResponse(201771); applyResponse(); return 2; + + case 23: + case 24: + if (CTrueTalkManager::getStateValue(7) == 0) { + selectResponse(21372); + applyResponse(); + return 2; + } + + CTrueTalkManager::triggerAction(29, val1 == 23 ? 3 : 4); + break; + + default: + break; } + } else { + switch (val1) { + case 5001: + case 5021: + return 0; + + case 5002: + addResponse(getDialogueId(*srcIdP)); + addResponse(getDialogueId(200000)); + applyResponse(); + return 2; - if (!sentence->localWord("broken") && !sentence->contains("broken") && - CTrueTalkManager::_currentNPC) { - CNodeItem *node = CTrueTalkManager::_currentNPC->getNode(); - if (node) { - CString nodeName = node->getName(); - if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6") - || nodeName.containsIgnoreCase("7")) { + case 5003: + addResponse(getDialogueId(*srcIdP)); + return 2; + + case 5022: + case 5023: + if (CTrueTalkManager::getStateValue(7)) { + bool flag = true; + + if (!sentence->localWord("broken") && !sentence->contains("kaputt") && + !sentence->contains("im eimer") && !sentence->contains("funktioniert nicht") && + CTrueTalkManager::_currentNPC) { + CNodeItem *node = CTrueTalkManager::_currentNPC->getNode(); + if (node) { + CString nodeName = node->getName(); + if (nodeName.contains("5") || nodeName.contains("6") || nodeName.contains("7")) + flag = false; + } + } + + if (flag) { + CTrueTalkManager::triggerAction(29, 1); + selectResponse(201771); + } + else { CTrueTalkManager::triggerAction(29, 2); - selectResponse(201571); - applyResponse(); - return 2; + selectResponse(201554); } } - } + else { + selectResponse(21378); + } - CTrueTalkManager::triggerAction(29, 1); - selectResponse(201771); - applyResponse(); - return 2; + applyResponse(); + return 2; - case 23: - case 24: - if (CTrueTalkManager::getStateValue(7) == 0) { - selectResponse(21372); + case 5024: + if (CTrueTalkManager::getStateValue(7)) { + CTrueTalkManager::triggerAction(29, 3); + return 0; + } + + selectResponse(21378); applyResponse(); return 2; - } - CTrueTalkManager::triggerAction(29, val1 == 23 ? 3 : 4); - break; + case 5025: + if (CTrueTalkManager::getStateValue(7)) { + CTrueTalkManager::triggerAction(29, 4); + return 0; + } - default: - break; + selectResponse(21378); + applyResponse(); + return 2; + + default: + return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence); + } } return 0; @@ -976,14 +1119,15 @@ int BellbotScript::preprocess(const TTroomScript *roomScript, const TTsentence * break; case 21: - if (sentence->contains("hiker") || sentence->contains("hug")) { + if (sentence->localWord("hiker") && (sentence->contains("hug") || + sentence->contains("anhalter"))) { addResponse(getDialogueId(200379)); applyFlag = true; } break; case 22: - if (sentence->localWord("get") || sentence->localWord("it")) { + if (sentence->localWord("get") && sentence->localWord("it")) { addResponse(getDialogueId(200474)); applyFlag = true; } @@ -1039,9 +1183,9 @@ int BellbotScript::preprocess(const TTroomScript *roomScript, const TTsentence * break; case 30: - if ((sentence->localWord("did") || sentence->localWord("not")) - || (sentence->localWord("would") || sentence->localWord("not")) - || (sentence->localWord("could") || sentence->localWord("not")) + if ((sentence->localWord("did") && sentence->localWord("not")) + || (sentence->localWord("would") && sentence->localWord("not")) + || (sentence->localWord("could") && sentence->localWord("not")) || sentence->localWord("tried")) { addResponse(getDialogueId(200416)); applyFlag = true; @@ -1202,8 +1346,8 @@ case44: break; case 51: - if (sentence->localWord("no") || sentence->localWord("it") - || sentence->localWord("is") || sentence->localWord("not") + if ((sentence->localWord("no") && sentence->localWord("it") + && sentence->localWord("is") && sentence->localWord("not")) || sentence->contains("yeah right")) { addResponse(getDialogueId(200636)); applyFlag = true; @@ -1309,7 +1453,7 @@ stateFlag = false; break; case 64: - if (sentence->localWord("rowboat")) { + if (sentence->localWord("rowbot")) { addResponse(getDialogueId(200052)); applyFlag = true; } @@ -1340,9 +1484,9 @@ stateFlag = false; break; case 68: - if ((sentence->localWord("i") && sentence->localWord("care")) - || sentence->localWord("do") - || sentence->localWord("me")) { + if ((sentence->localWord("i") && (sentence->localWord("care") || + sentence->localWord("do"))) + || sentence->localWord("me")) { addResponse(getDialogueId(201006)); applyFlag = true; } @@ -1383,10 +1527,13 @@ stateFlag = false; break; case 73: - if (sentence->localWord("mood") && (charId() == 7 || charId() == 5)) { - addResponse(getDialogueId(201021)); - applyFlag = true; - stateFlag = false; + if (sentence->localWord("mood") || sentence->contains("stimmung") || + sentence->contains("laune") || sentence->contains("verfassung")) { + if (charId() == 7 || charId() == 5) { + addResponse(getDialogueId(201021)); + applyFlag = true; + stateFlag = false; + } } break; @@ -1555,7 +1702,8 @@ stateFlag = false; break; case 88: - if (sentence->_category == 6 || sentence->contains("upside down")) { + if (sentence->_category == 6 || + (g_language != Common::DE_DEU && sentence->contains("upside down"))) { addResponse(getDialogueId(202142)); applyFlag = true; } @@ -1836,7 +1984,7 @@ bool BellbotScript::addRoomDescription(const TTroomScript *roomScript) { switch (roomScript->_scriptId) { case 101: - addResponse(getDialogueId(getValue(2) == 1 ? 20185 : 201832)); + addResponse(getDialogueId(getValue(2) == 1 ? 201835 : 201832)); break; case 107: if (_room107First) { @@ -1907,5 +2055,4 @@ bool BellbotScript::addRoomDescription(const TTroomScript *roomScript) { return true; } - } // End of namespace Titanic diff --git a/engines/titanic/true_talk/deskbot_script.cpp b/engines/titanic/true_talk/deskbot_script.cpp index eb782165d2..cd3db1e1f1 100644 --- a/engines/titanic/true_talk/deskbot_script.cpp +++ b/engines/titanic/true_talk/deskbot_script.cpp @@ -364,10 +364,15 @@ exit: int DeskbotScript::preResponse(uint id) { int newId = 0; - if (getValue(1) >= 3 && (id == 41176 || id == 41738 || id == 41413 || id == 41740)) + if (getValue(1) >= 3 && ( + id == TRANSLATE(41176, 41190) || + id == TRANSLATE(41738, 41429) || + id == TRANSLATE(41413, 41755) || + id == TRANSLATE(41740, 41757) + )) { newId = 241601; - - if (id == 42114) + } + if (id == TRANSLATE(42114, 42132)) CTrueTalkManager::triggerAction(20, 0); return newId; @@ -383,6 +388,9 @@ uint DeskbotScript::getDialsBitset() const { int DeskbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) { uint id; + if (g_language == Common::DE_DEU && val1 != 4501) + return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence); + switch (val1) { case 1: id = *srcIdP; diff --git a/engines/titanic/true_talk/doorbot_script.cpp b/engines/titanic/true_talk/doorbot_script.cpp index ac0b1aff21..9493af6fe2 100644 --- a/engines/titanic/true_talk/doorbot_script.cpp +++ b/engines/titanic/true_talk/doorbot_script.cpp @@ -29,11 +29,14 @@ namespace Titanic { -static const int STATE_ARRAY[9] = { - 0x2E2A, 0x2E2B, 0x2E2C, 0x2E2D, 0x2E2E, 0x2E2F, 0x2E30, 0x2E31, 0x2E32 +static const int STATE_ARRAY_EN[9] = { + 11818, 11819, 11820, 11821, 11822, 11823, 11824, 11825, 11826 +}; +static const int STATE_ARRAY_DE[9] = { + 11831, 11832, 11833, 11834, 11835, 11836, 11837, 11838, 11839 }; -static const RoomDialogueId ROOM_DIALOGUES1[] = { +static const RoomDialogueId ROOM_DIALOGUES1_EN[] = { { 100, 10523 }, { 101, 10499 }, { 107, 10516 }, { 108, 10500 }, { 109, 10490 }, { 110, 10504 }, { 111, 10506 }, { 112, 10498 }, { 113, 10502 }, { 114, 10507 }, { 115, 10497 }, { 116, 10508 }, @@ -42,12 +45,28 @@ static const RoomDialogueId ROOM_DIALOGUES1[] = { { 128, 10495 }, { 129, 10496 }, { 130, 10491 }, { 131, 10493 }, { 132, 10492 }, { 0, 0 } }; -static const RoomDialogueId ROOM_DIALOGUES2[] = { +static const RoomDialogueId ROOM_DIALOGUES1_DE[] = { + { 101, 10375 }, { 107, 10379 }, { 108, 10378 }, { 109, 10364 }, + { 110, 10377 }, { 111, 10383 }, { 112, 10374 }, { 113, 10376 }, + { 114, 10384 }, { 115, 10373 }, { 116, 10385 }, { 117, 10380 }, + { 118, 10380 }, { 122, 10392 }, { 123, 10390 }, { 124, 10386 }, + { 125, 10387 }, { 126, 10389 }, { 127, 10388 }, { 128, 10371 }, + { 129, 10372 }, { 130, 10366 }, { 131, 10368 }, { 132, 10367 }, + { 0, 0 } +}; + +static const RoomDialogueId ROOM_DIALOGUES2_EN[] = { { 102, 221981 }, { 110, 221948 }, { 111, 221968 }, { 107, 222000 }, { 101, 221935 }, { 112, 221924 }, { 113, 221942 }, { 116, 221977 }, { 124, 221987 }, { 125, 221984 }, { 127, 221991 }, { 128, 221916 }, { 129, 221919 }, { 131, 221912 }, { 132, 221908 }, { 0, 0 } }; +static const RoomDialogueId ROOM_DIALOGUES2_DE[] = { + { 102, 221981 }, { 110, 221948 }, { 111, 221968 }, { 107, 222000 }, + { 101, 221935 }, { 112, 221924 }, { 113, 221942 }, { 116, 221977 }, + { 124, 221987 }, { 125, 221984 }, { 127, 221991 }, { 128, 221916 }, + { 129, 221919 }, { 131, 221912 }, { 132, 221909 }, { 0, 0 } +}; DoorbotScript::DoorbotScript(int val1, const char *charClass, int v2, const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) : @@ -91,10 +110,10 @@ int DoorbotScript::chooseResponse(const TTroomScript *roomScript, const TTsenten tag == MKTAG('A', 'N', 'S', 'W') || tag == MKTAG('S', 'U', 'M', 'S')) { if (_stateIndex > 9) _stateIndex = 0; - addResponse(STATE_ARRAY[_stateIndex]); + addResponse(TRANSLATE(STATE_ARRAY_EN[_stateIndex], STATE_ARRAY_DE[_stateIndex])); applyResponse(); - if (STATE_ARRAY[_stateIndex] == 11826) + if (_stateIndex == 8) setState(1); ++_stateIndex; return 2; @@ -202,7 +221,8 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen return setResponse(getDialogueId(220113)); } - if (sentence->_category == 6 && sentence->contains("why not")) { + if (sentence->_category == 6 && (sentence->contains("why not") || + sentence->contains("warum nicht"))) { return setResponse(11871, 8); } @@ -215,53 +235,55 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen switch (currState) { case 1: if (flag1) - return setResponse(11828, 2); + return setResponse(TRANSLATE(11828, 11841), 2); if (flag2) - return setResponse(11827, 0); + return setResponse(TRANSLATE(11827, 11840), 0); break; case 2: if (flag1) - return setResponse(11827, 0); + return setResponse(TRANSLATE(11827, 11840), 0); break; case 3: if (sentMode == 3) - return setResponse(10406, 0); + return setResponse(TRANSLATE(10406, 10417), 0); break; case 4: if (flag1) - return setResponse(11332, 0); + return setResponse(TRANSLATE(11332, 11345), 0); if (flag2) - return setResponse(11331, 0); + return setResponse(TRANSLATE(11331, 11344), 0); break; case 5: - return setResponse(11868, 0); + if (g_language == Common::EN_ANY) + return setResponse(11868, 0); + break; case 6: - return setResponse(11872, 0); + return setResponse(TRANSLATE(11872, 11885), 7); case 7: - return setResponse(11869, 0); + return setResponse(TRANSLATE(11869, 11882), 0); case 8: - return setResponse(11870, 0); + return setResponse(TRANSLATE(11870, 11883), 0); case 12: if (flag1) - return setResponse(11894, 13); + return setResponse(TRANSLATE(11894, 11907), 13); if (flag2) - return setResponse(11893, 13); + return setResponse(TRANSLATE(11893, 11906), 13); break; case 13: - return setResponse(11895, 12); + return setResponse(TRANSLATE(11895, 11908), 12); case 15: if (sentMode == 3 || sentMode == 6) - return setResponse(10257, 0); + return setResponse(TRANSLATE(10257, 10260), 0); break; case 16: { @@ -307,47 +329,47 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen case 21: if (flag2) - return setResponse(10935, 0); + return setResponse(TRANSLATE(10935, 10947), 0); break; case 22: if (flag1) { if (getRandomBit()) { - return setResponse(11211, 23); + return setResponse(TRANSLATE(11211, 11223), 23); } else { - return setResponse(10127, 0); + return setResponse(TRANSLATE(10127, 10128), 0); } } if (flag2) - return setResponse(10136, 0); + return setResponse(TRANSLATE(10136, 10137), 0); break; case 23: - return setResponse(10212, 0); + return setResponse(TRANSLATE(10212, 10213), 0); case 24: if (flag1) - return setResponse(11151, 0); + return setResponse(TRANSLATE(11151, 11163), 0); if (flag2) - return setResponse(11150, 0); + return setResponse(TRANSLATE(11150, 11162), 0); break; case 25: case 26: if (flag2) { if (getRandomBit()) { - return setResponse(11211, 23); + return setResponse(TRANSLATE(11211, 11223), 23); } else { - return setResponse(10127, 0); + return setResponse(TRANSLATE(10127, 10128), 0); } } if (flag1) - return setResponse(10136, 0); + return setResponse(TRANSLATE(10136, 10137), 0); break; case 27: if (flag1 || sentence->localWord("did") || sentence->contains("did")) - return setResponse(221175, 28); + return setResponse(getDialogueId(221175), 28); break; case 28: @@ -365,17 +387,20 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen case 31: if (sentMode == 3 || sentMode == 10) - return setResponse(10350, 0); + return setResponse(TRANSLATE(10350, 10353), 0); break; case 32: - return setResponse(10110, 0); + return setResponse(TRANSLATE(10110, 10111), 0); case 33: if (sentence->contains("sieve") || sentence->contains("colander") || sentence->contains("vegetable") || sentence->contains("ground") || sentence->contains("earth") || sentence->contains("garden") - || sentence->contains("cheese") || sentence->contains("strainer")) { + || sentence->contains("cheese") || sentence->contains("strainer") + || sentence->contains("sieb") || sentence->contains("emmenthaler") + || sentence->contains("gemuese") || sentence->contains("kaese") + || sentence->contains("erde") || sentence->contains("garten")) { return setResponse(getDialogueId(221375), 0); } else if (getRandomNumber(100) > 30) { return setResponse(getDialogueId(221376), 33); @@ -386,67 +411,74 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen case 34: if (sentence->localWord("bellbot")) - return setResponse(10094, 0); - if (sentence->localWord("bellbot")) - return setResponse(10349, 0); - if (sentence->localWord("deskbot") || sentence->localWord("titania")) - return setResponse(10148, 0); - if (sentence->localWord("barbot") || sentence->localWord("rowbot") - || sentence->localWord("liftbot") || sentence->localWord("maitredbot")) - return setResponse(10147, 0); + return setResponse(TRANSLATE(10094, 10095), 0); + if (sentence->localWord("doorbot")) + return setResponse(TRANSLATE(10349, 10352), 0); + + if (g_language == Common::EN_ANY) { + if (sentence->localWord("deskbot") || sentence->localWord("titania")) + return setResponse(10148, 0); + if (sentence->localWord("barbot") || sentence->localWord("rowbot") + || sentence->localWord("liftbot") || sentence->localWord("maitredbot")) + return setResponse(10147, 0); + } break; case 35: - return setResponse(10811, 36); + return setResponse(TRANSLATE(10811, 10822), 36); case 36: if (flag1) - return setResponse(10813, 37); + return setResponse(TRANSLATE(10813, 10824), 37); if (flag2) - return setResponse(10812, 37); + return setResponse(TRANSLATE(10812, 10823), 37); break; case 37: if (flag1) - return setResponse(10815, 37); + return setResponse(TRANSLATE(10815, 10826), 37); if (flag2) - return setResponse(10814, 37); + return setResponse(TRANSLATE(10814, 10825), 37); break; case 38: - return setResponse(10848, 39); + if (g_language == Common::EN_ANY) + return setResponse(10848, 39); case 39: - return setResponse(10823, 40); + if (g_language == Common::EN_ANY) + return setResponse(10823, 40); case 40: - return setResponse(10832, 41); + return setResponse(TRANSLATE(10832, 10843), 41); case 41: - addResponse(10833); - return setResponse(10835, 0); + addResponse(TRANSLATE(10833, 10844)); + return setResponse(TRANSLATE(10835, 10846), 0); case 42: if (sentence->localWord("please")) - return setResponse(10840, 43); - return setResponse(10844, 0); + return setResponse(TRANSLATE(10840, 10851), 43); + return setResponse(TRANSLATE(10844, 10855), 0); case 43: case 45: - return setResponse(10844, 0); + return setResponse(TRANSLATE(10844, 10855), 0); case 44: if (sentence->localWord("thanks")) - return setResponse(10843, 45); - return setResponse(10844, 0); + return setResponse(TRANSLATE(10843, 10854), 45); + return setResponse(TRANSLATE(10844, 10855), 0); case 46: if (flag1) return setResponse(getDialogueId(222251), 0); - if (flag2) + if (g_language == Common::EN_ANY && flag2) return setResponse(10713, 0); break; + default: + break; } } @@ -457,39 +489,48 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen return setResponse(getDialogueId(221043), 0); int result = 0; - switch (roomScript->_scriptId) { - case 100: - case 101: - case 102: - case 107: - case 110: - case 111: - case 124: - case 129: - case 131: - case 132: - result = processEntries(&_sentences[roomScript->_scriptId], 0, roomScript, sentence); - break; - default: - break; + if (g_language == Common::EN_ANY) { + switch (roomScript->_scriptId) { + case 100: + case 101: + case 102: + case 107: + case 110: + case 111: + case 124: + case 129: + case 131: + case 132: + result = processEntries(&_sentences[roomScript->_scriptId], 0, roomScript, sentence); + break; + default: + break; + } + + if (result == 2) + return 2; } - if (result == 2) - return 2; if (processEntries(&_entries, _entryCount, roomScript, sentence) == 2 || processEntries(_defaultEntries, 0, roomScript, sentence) == 2 || defaultProcess(roomScript, sentence)) return 2; + if (g_language == Common::DE_DEU && sentence->contains("42")) { + selectResponse(11831); + applyResponse(); + return 2; + } + switch (sentence->_category) { case 11: if (getRandomNumber(100) > 90) - return setResponse(10839, 42); - return setResponse(222415, 0); + return setResponse(TRANSLATE(10839, 10850), 42); + return setResponse(getDialogueId(222415), 0); case 12: if (getRandomNumber(100) > 90) - return setResponse(10841, 44); + return setResponse(TRANSLATE(10841, 10852), 44); return setResponse(getDialogueId(222416), 0); case 13: @@ -696,10 +737,12 @@ int DoorbotScript::updateState(uint oldId, uint newId, int index) { default: break; } - } else if (newId >= 220883) { + } + else if (newId >= 220883) { CTrueTalkManager::setFlags(38, 1); CTrueTalkManager::triggerAction(28, 0); - } else if (newId >= 220076) { + } + else if (newId >= 220076) { switch (newId) { case 220078: case 220080: @@ -715,11 +758,13 @@ int DoorbotScript::updateState(uint oldId, uint newId, int index) { } CTrueTalkManager::setFlags(39, 1); - } else if (newId == 220075) { + } + else if (newId == 220075) { if (flag39) return getRangeValue(221381); CTrueTalkManager::setFlags(39, 1); - } else if (newId == 220038) { + } + else if (newId == 220038) { return 220038; } @@ -745,7 +790,7 @@ int DoorbotScript::updateState(uint oldId, uint newId, int index) { int DoorbotScript::preResponse(uint id) { uint newId = 0; if (getDialRegion(0) != 1 && getRandomNumber(100) > 60) { - addResponse(11195); + addResponse(TRANSLATE(11195, 11207)); newId = 222193; } @@ -765,6 +810,15 @@ uint DoorbotScript::getDialsBitset() const { int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) { int id2, id = 0; + if (g_language == Common::DE_DEU) { + if (val1 == 4010 || (val1 >= 4012 && val1 <= 4015)) { + return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence); + } + + if (val1 >= 4009 && val1 <= 4030) + val1 -= 4000; + } + switch (val1) { case 2: if (getValue(1) != 1) @@ -787,7 +841,8 @@ int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri return 1; break; case 9: - if (sentence->localWord("my") || sentence->contains("my")) + if (sentence->localWord("my") || sentence->contains("my") + || sentence->contains("mein")) return true; id2 = getRoomDialogueId1(roomScript); if (id2) { @@ -886,12 +941,20 @@ int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri CTrueTalkManager::triggerAction(29, 4); break; case 26: - if (!sentence->localWord("my") && !sentence->contains("my")) - return 1; + if (!sentence->localWord("my")) { + if (g_language == Common::EN_ANY && !sentence->contains("my")) + return 1; + if (g_language == Common::DE_DEU && !sentence->contains("mein")) + return 1; + } break; case 27: - if (!sentence->localWord("earth") && !sentence->contains("earth")) - return 1; + if (!sentence->localWord("earth")) { + if (g_language == Common::EN_ANY && !sentence->contains("earth")) + return 1; + if (g_language == Common::EN_ANY && !sentence->contains("erde")) + return 1; + } break; case 28: id2 = getRoomDialogueId2(roomScript); @@ -902,31 +965,36 @@ int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri } break; case 29: - if (sentence->localWord("another") || sentence->localWord("more") || - sentence->localWord("additional") || sentence->contains("another") || - sentence->contains("more") || sentence->contains("additional")) { + if (sentence->localWord("another") || sentence->localWord("more") + || sentence->localWord("additional") || sentence->contains("another") + || sentence->contains("more") || sentence->contains("additional") + || sentence->contains("noch ein") || sentence->contains("einen anderen") + || sentence->contains("ein anderes") || sentence->contains("eine andere") + || sentence->contains("zusaetzliche")) { addResponse(getDialogueId(220058)); applyResponse(); return 2; } break; case 30: - if (!sentence->localWord("because") && !sentence->contains("because")) + if (!sentence->localWord("because") && !sentence->contains("because") + && !(g_language == Common::DE_DEU && sentence->contains("well"))) return 1; break; - case 0x200: + + case 512: if (getValue(4) != 1) id = 221157; break; - case 0x201: + case 513: if (getValue(4) != 2) id = 221157; break; - case 0x202: + case 514: if (getValue(4) != 3) id = 221157; break; - case 0x203: + case 515: if (getValue(4) != 0) id = 221157; break; @@ -1000,7 +1068,8 @@ int DoorbotScript::setResponse(int dialogueId, int v34) { } int DoorbotScript::getRoomDialogueId1(const TTroomScript *roomScript) { - for (const RoomDialogueId *r = ROOM_DIALOGUES1; r->_roomNum; ++r) { + const RoomDialogueId *r = TRANSLATE(ROOM_DIALOGUES1_EN, ROOM_DIALOGUES1_DE); + for (; r->_roomNum; ++r) { if (r->_roomNum == roomScript->_scriptId) return getDialogueId(r->_dialogueId); } @@ -1009,7 +1078,8 @@ int DoorbotScript::getRoomDialogueId1(const TTroomScript *roomScript) { } int DoorbotScript::getRoomDialogueId2(const TTroomScript *roomScript) { - for (const RoomDialogueId *r = ROOM_DIALOGUES2; r->_roomNum; ++r) { + const RoomDialogueId *r = TRANSLATE(ROOM_DIALOGUES2_EN, ROOM_DIALOGUES2_DE); + for (; r->_roomNum; ++r) { if (r->_roomNum == roomScript->_scriptId) return getDialogueId(r->_dialogueId); } diff --git a/engines/titanic/true_talk/german/barbot_script.cpp b/engines/titanic/true_talk/german/barbot_script.cpp deleted file mode 100644 index 3a8177696a..0000000000 --- a/engines/titanic/true_talk/german/barbot_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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/barbot_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 deleted file mode 100644 index 2d1c25d6b2..0000000000 --- a/engines/titanic/true_talk/german/barbot_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index c6ff9f6a50..0000000000 --- a/engines/titanic/true_talk/german/bellbot_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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 deleted file mode 100644 index 42f6e5d7cf..0000000000 --- a/engines/titanic/true_talk/german/bellbot_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index c4d4d3703c..0000000000 --- a/engines/titanic/true_talk/german/deskbot_script.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* 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" -#include "titanic/true_talk/true_talk_manager.h" - -namespace Titanic { -namespace German { - -int DeskbotScript::preResponse(uint id) { - int newId = 0; - if (getValue(1) >= 3 && (id == 41190 || id == 41429 || id == 41755 || id == 41757)) - newId = 241601; - - if (id == 42132) - CTrueTalkManager::triggerAction(20, 0); - - return newId; -} - -int DeskbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) { - if (val1 != 4501) - return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence); - - int v = getValue(1); - int tagId = *srcIdP; - - switch (v) { - case 1: - tagId = 240336; - break; - - case 2: - tagId = addAssignedRoomDialogue(); - break; - - case 3: - if (tagId == 240431 || tagId == 240432) { - if (getValue(v) == 1) { - if (tagId == 240431) - tagId = 240432; - } else { - if (tagId == 240432) - tagId = 240431; - } - } - break; - - default: - break; - } - - addResponse(getDialogueId(tagId)); - applyResponse(); - return 2; -} - -} // 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 deleted file mode 100644 index c3719c85d0..0000000000 --- a/engines/titanic/true_talk/german/deskbot_script.h +++ /dev/null @@ -1,51 +0,0 @@ -/* 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) {} - - /** - * Handles getting a pre-response - */ - virtual int preResponse(uint id); - - /** - * Process a sentence fragment entry - */ - virtual int doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence); -}; - -} // 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 deleted file mode 100644 index 616653d9cb..0000000000 --- a/engines/titanic/true_talk/german/doorbot_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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 deleted file mode 100644 index 1653f42d40..0000000000 --- a/engines/titanic/true_talk/german/doorbot_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index fade9968c4..0000000000 --- a/engines/titanic/true_talk/german/liftbot_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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 deleted file mode 100644 index 650a45201d..0000000000 --- a/engines/titanic/true_talk/german/liftbot_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index f670cdf58b..0000000000 --- a/engines/titanic/true_talk/german/maitred_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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 deleted file mode 100644 index 2bd2ce8e14..0000000000 --- a/engines/titanic/true_talk/german/maitred_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index 3e241c8683..0000000000 --- a/engines/titanic/true_talk/german/parrot_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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 deleted file mode 100644 index b34e6b112f..0000000000 --- a/engines/titanic/true_talk/german/parrot_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index a4963a8a59..0000000000 --- a/engines/titanic/true_talk/german/succubus_script.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* 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 deleted file mode 100644 index f9ad25c36e..0000000000 --- a/engines/titanic/true_talk/german/succubus_script.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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/liftbot_script.cpp b/engines/titanic/true_talk/liftbot_script.cpp index 5f0f6fbb66..757b640c76 100644 --- a/engines/titanic/true_talk/liftbot_script.cpp +++ b/engines/titanic/true_talk/liftbot_script.cpp @@ -24,13 +24,17 @@ #include "titanic/true_talk/liftbot_script.h" #include "titanic/true_talk/true_talk_manager.h" #include "titanic/titanic.h" +#include "titanic/translation.h" namespace Titanic { int LiftbotScript::_stateIndex; -static const int STATE_ARRAY[7] = { - 0x78BE, 0x78C0, 0x78C1, 0x78C2, 0x78C3, 0x78C4, 0x78C5 +static const int STATE_ARRAY_EN[7] = { + 30910, 30912, 30913, 30914, 30915, 30916, 30917 +}; +static const int STATE_ARRAY_DE[7] = { + 30919, 30921, 30922, 30923, 30924, 30925, 30926 }; LiftbotScript::LiftbotScript(int val1, const char *charClass, int v2, @@ -63,21 +67,22 @@ int LiftbotScript::chooseResponse(const TTroomScript *roomScript, const TTsenten case MKTAG('H', 'H', 'G', 'Q'): case MKTAG('A', 'N', 'S', 'W'): if (_stateIndex >= 7) { - selectResponse(30918); + selectResponse(TRANSLATE(30918, 30927)); setState(2); _stateIndex = 0; } else { - addResponse(STATE_ARRAY[_stateIndex++]); + addResponse(TRANSLATE(STATE_ARRAY_EN[_stateIndex++], + STATE_ARRAY_DE[_stateIndex++])); } applyResponse(); return 2; case MKTAG('O', 'R', 'D', '8'): - addResponse(30475); - addResponse(30467); - addResponse(30466); - addResponse(30474); + addResponse(TRANSLATE(30475, 30484)); + addResponse(TRANSLATE(30467, 30476)); + addResponse(TRANSLATE(30466, 30475)); + addResponse(TRANSLATE(30474, 30483)); applyResponse(); return SS_2; @@ -103,22 +108,22 @@ int LiftbotScript::process(const TTroomScript *roomScript, const TTsentence *sen switch (currState) { case 2: if (flag1) - return addDialogueAndState(30920, 3); + return addDialogueAndState(TRANSLATE(30920, 30929), 3); if (flag2) - return addDialogueAndState(30919, 1); + return addDialogueAndState(TRANSLATE(30919, 30928), 1); break; case 3: if (flag1) - return addDialogueAndState(30919, 1); + return addDialogueAndState(TRANSLATE(30919, 30928), 1); break; case 4: - return addDialogueAndState(210391, 1); + return addDialogueAndState(getDialogueId(210391), 1); case 5: if (sentence->contains("reborzo") || sentence->contains("is that")) - return addDialogueAndState(30515, 1); + return addDialogueAndState(TRANSLATE(30515, 30524), 1); break; case 6: @@ -184,7 +189,7 @@ ScriptChangedResult LiftbotScript::scriptChanged(const TTroomScript *roomScript, break; case 155: - selectResponse(30446); + selectResponse(TRANSLATE(30446, 30455)); applyResponse(); break; @@ -192,7 +197,7 @@ ScriptChangedResult LiftbotScript::scriptChanged(const TTroomScript *roomScript, if (getCurrentFloor() == 1) { addResponse(getDialogueId(210614)); } else { - selectResponse(30270); + selectResponse(TRANSLATE(30270, 30272)); } applyResponse(); break; @@ -201,7 +206,7 @@ ScriptChangedResult LiftbotScript::scriptChanged(const TTroomScript *roomScript, break; } - if (id >= 210000 && id <= 211001) { + if (id >= 210000 && id <= (uint)TRANSLATE(211001, 211003)) { addResponse(getDialogueId(id)); applyResponse(); } @@ -333,8 +338,13 @@ int LiftbotScript::updateState(uint oldId, uint newId, int index) { } int LiftbotScript::preResponse(uint id) { - if (id == 30565 || id == 30566 || id == 30567 || id == 30568 - || id == 30569 || id == 30570 || id == 30571) + if (id == (uint)TRANSLATE(30565, 30574) + || id == (uint)TRANSLATE(30566, 30575) + || id == (uint)TRANSLATE(30567, 30576) + || id == (uint)TRANSLATE(30568, 30577) + || id == (uint)TRANSLATE(30569, 30578) + || id == (uint)TRANSLATE(30570, 30579) + || id == (uint)TRANSLATE(30571, 30580)) return 210901; if (getDialRegion(0) == 0 && getRandomNumber(100) > 60) @@ -355,7 +365,6 @@ uint LiftbotScript::getDialsBitset() const { return bits; } - int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) { // Responses for each floor when asked "what floor are we on" static const int FLOOR_RESPONSE_IDS[] = { @@ -374,7 +383,9 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri getState(); int stateVal; - switch (val1) { + int state = (g_language == Common::DE_DEU && val1 > 3000 && val1 < 3020) + ? val1 - 3000 : val1; + switch (state) { case 1: if (getValue(1) != 1) return 1; @@ -394,8 +405,9 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri if (sentence->localWord("big") || sentence->localWord("small")) { addResponse(getDialogueId(210215)); applyResponse(); - } else if (sentence->localWord("my") || sentence->contains("my") || - sentence->contains("bedroom") || sentence->contains("state")) { + } else if (sentence->localWord("my") || sentence->contains("my") + || sentence->contains("bedroom") || sentence->contains("state") + || sentence->contains("mein") || sentence->contains("schlafzimmer")) { addResponse1(CTrueTalkManager::getStateValue(4), true, 0); } else { selectResponse(210763); @@ -434,9 +446,11 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri case 14: // Which lift am I in stateVal = getState6(); - if (sentence->contains("elevator") || - (!sentence->contains("lift") && getRandomNumber(100) > 60)) - stateVal += 4; + if (g_language == Common::EN_ANY) { + if (sentence->contains("elevator") || + (!sentence->contains("lift") && getRandomNumber(100) > 60)) + stateVal += 4; + } selectResponse(LIFT_RESPONSE_IDS[stateVal]); applyResponse(); return 2; @@ -450,7 +464,9 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri applyResponse(); return 2; case 16: - if (sentence->contains("elevator") || sentence->contains("elavator")) + if (g_language == Common::DE_DEU) + addResponse(30589); + else if (sentence->contains("elevator") || sentence->contains("elavator")) addResponse(30579); else addResponse(30580); @@ -461,6 +477,7 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri return 1; break; default: + break; } @@ -510,11 +527,12 @@ int LiftbotScript::addResponse1(int index, bool flag, int id) { return 1; } else if (index == getCurrentFloor()) { if (index == 1) { - addResponse(30558 - (getRandomBit() ? 290 : 0)); + addResponse(TRANSLATE(30558 - (getRandomBit() ? 290 : 0), + 30567 - (getRandomBit() ? 297 : 0))); addResponse(getDialogueId(210589)); } else { if (index == 39) - addResponse(30346); + addResponse(TRANSLATE(30346, 30348)); addResponse(getDialogueId(210589)); } @@ -539,9 +557,10 @@ int LiftbotScript::addResponse1(int index, bool flag, int id) { if (flag) { if (index == 1) { - selectResponse(30558 - (getRandomBit() ? 290 : 0)); + selectResponse(TRANSLATE(30558 - (getRandomBit() ? 290 : 0), + 30567 - (getRandomBit() ? 297 : 0))); } else if (index == 39) { - addResponse(30346); + addResponse(TRANSLATE(30346, 30348)); } else { if (getRandomNumber(100) > 35 && index >= 2 && index <= 38) { addResponse(getDialogueId(DIALOGUE_IDS[index - 2])); @@ -638,7 +657,7 @@ int LiftbotScript::sentence1(const TTsentence *sentence) { diff = -100; } - if (sentence->localWord("lobby")) + if (g_language == Common::EN_ANY && sentence->localWord("lobby")) diff = (getValue(1) == 0 ? 1 : 0) - 99; if (sentence->localWord("bottomofwell") || sentence->contains("bottom")) diff = 39; @@ -656,22 +675,25 @@ int LiftbotScript::sentence1(const TTsentence *sentence) { } if (sentence->_category == 4 || sentence->localWord("find") - || sentence->contains("get to")) { + || sentence->contains("get to") + || sentence->contains("komme ich") + || sentence->contains("ich will zum") + || sentence->contains("ich will zur") + || sentence->contains("ich will ins") + || sentence->contains("ich will in")) { if (getCurrentFloor() != diff) { selectResponse(diff == 1 ? 210769 : 210764); - applyResponse(); } else if (!newId) { selectResponse(210764); - applyResponse(); - } else if (newId >= 210715 && newId <= 210719) { - selectResponse(newId); - applyResponse(); - } else { + } else if (newId > 210715 && newId <= 210719) { addResponse(getDialogueId(210720)); + selectResponse(getDialogueId(newId)); selectResponse(210715); - applyResponse(); + } else { + selectResponse(newId); } + applyResponse(); return 1; } diff --git a/engines/titanic/true_talk/maitred_script.cpp b/engines/titanic/true_talk/maitred_script.cpp index 98a4b42e70..1033db29e0 100644 --- a/engines/titanic/true_talk/maitred_script.cpp +++ b/engines/titanic/true_talk/maitred_script.cpp @@ -23,6 +23,7 @@ #include "common/textconsole.h" #include "titanic/true_talk/maitred_script.h" #include "titanic/true_talk/true_talk_manager.h" +#include "titanic/translation.h" namespace Titanic { @@ -81,9 +82,10 @@ int MaitreDScript::process(const TTroomScript *roomScript, const TTsentence *sen stopFighting(false); _answerCtr = 0; - if (sentence->contains("restaurant at the end of the universe") + if (sentence->contains(TRANSLATE("restaurant at the end of the universe", + "restaurant am ende des universums")) || sentence->contains("milliway") - || sentence->contains("big bang burger bar")) { + || sentence->contains(TRANSLATE("big bang burger bar", "frittenbude"))) { addResponse(getDialogueId(260975)); applyResponse(); } else if (processEntries(&_entries, _entryCount, roomScript, sentence) == 2) { @@ -111,7 +113,20 @@ int MaitreDScript::process(const TTroomScript *roomScript, const TTsentence *sen if (++_answerCtr > 50 || sentence->localWord("stop") || sentence->localWord("enough") || sentence->contains("i give up") || sentence->contains("i give in") - || sentence->contains("i surrender") || sentence->contains("i submit")) { + || sentence->contains("i surrender") || sentence->contains("i submit") + || sentence->contains("ich gebe auf") + || sentence->contains("ich ergebe mich") + || sentence->contains("ich kapituliere") + || sentence->contains("ich unterwerfe mich") + || sentence->contains("hoer auf") + || sentence->contains("lass") + || sentence->contains("schluss") + || sentence->contains("hoer sofort") + || sentence->contains("genug") + || sentence->contains("basta") + || sentence->contains("halt") + || sentence->contains("voll") + || sentence->contains("was soll")) { _answerCtr = 0; stopFighting(false); addResponse(getDialogueId(260063)); @@ -123,17 +138,22 @@ int MaitreDScript::process(const TTroomScript *roomScript, const TTsentence *sen addResponse(getDialogueId(260678)); } else if (sentence->contains("touche") || sentence->contains("toushe")) { addResponse(getDialogueId(260098)); - } else if (sentence->contains("have at you")) { + } else if (sentence->contains("have at you") || sentence->contains("ausfall")) { addResponse(getDialogueId(260047)); - } else if (sentence->contains("en garde") || sentence->contains("on guard")) { + } else if (sentence->contains("en garde") || sentence->contains("on guard") + || sentence->contains("attacke")) { addResponse(getDialogueId(260008)); + } else if (g_language == Common::DE_DEU && !sentence->contains("ich") + && (sentence->contains("surrender") || sentence->contains("gebe auf") + || sentence->contains("ergebe mich"))) { + addResponse(getDialogueId(260086)); } else if ((sentence->localWord("surrender") && !sentence->contains("i surrender")) || (sentence->contains("give up") && !sentence->contains("i give up")) || (sentence->contains("give in") && !sentence->contains("i give in")) || (sentence->contains("submit") && !sentence->contains("i submit"))) { addResponse(getDialogueId(260086)); } else { - addResponse(getDialogueId(260031)); + addResponse(getDialogueId(260131)); } applyResponse(); @@ -539,14 +559,14 @@ int MaitreDScript::updateState(uint oldId, uint newId, int index) { } if (!getValue(12)) { - static const uint FLAG_IDS[] = { + static const uint FIGHTING_IDS[] = { 260080, 260066, 260067, 260062, 260050, 260087, 260090, 260171, 260173, 260184, 260193, 260202, 260205, 260220, 260221, 260223, 260231, 260232, 260365, 260373, 260374, 260387, 260421, 260622, 260695, 0 }; - for (uint idx = 0; FLAG_IDS[idx]; ++idx) { - if (FLAG_IDS[idx] == newId) { + for (uint idx = 0; FIGHTING_IDS[idx]; ++idx) { + if (FIGHTING_IDS[idx] == newId) { startFighting(); break; } @@ -916,7 +936,7 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence * case 21: case 22: - if (sentence->contains("cooking") + if (sentence->contains(TRANSLATE("cooking", "kochen")) || (sentence->localWord("what") && sentence->localWord("mean"))) { addResponse(getDialogueId(260238)); applyFlag = true; diff --git a/engines/titanic/true_talk/succubus_script.cpp b/engines/titanic/true_talk/succubus_script.cpp index 94875840b3..34ae772e1c 100644 --- a/engines/titanic/true_talk/succubus_script.cpp +++ b/engines/titanic/true_talk/succubus_script.cpp @@ -24,6 +24,7 @@ #include "titanic/true_talk/succubus_script.h" #include "titanic/true_talk/true_talk_manager.h" #include "titanic/titanic.h" +#include "titanic/translation.h" namespace Titanic { @@ -171,15 +172,28 @@ int SuccUBusScript::process(const TTroomScript *roomScript, const TTsentence *se } ScriptChangedResult SuccUBusScript::scriptChanged(const TTroomScript *roomScript, uint id) { - if (id == 148) - CTrueTalkManager::setFlags(3, 1); - else if (id == 150) - CTrueTalkManager::setFlags(2, 1); + if (g_language == Common::EN_ANY) { + if (id == 148) + CTrueTalkManager::setFlags(3, 1); + else if (id == 150) + CTrueTalkManager::setFlags(2, 1); + } else { + if (id == 70211 || id == 230013) { + addResponse(getDialogueId(230163)); + applyResponse(); + return SCR_2; + } else if (id < 70211) { + if (id == 148) + CTrueTalkManager::setFlags(3, 1); + else if (id == 150) + CTrueTalkManager::setFlags(2, 1); + } + } if (id >= 230000 && id <= 230245) { addResponse(getDialogueId(id)); applyResponse(); - } else if (id >= 70000 && id <= 70243) { + } else if (id >= 70000 && id <= (uint)TRANSLATE(70243, 70248)) { addResponse(id); applyResponse(); } diff --git a/engines/titanic/true_talk/tt_scripts.cpp b/engines/titanic/true_talk/tt_scripts.cpp index 4c103ed457..bda6e672bd 100644 --- a/engines/titanic/true_talk/tt_scripts.cpp +++ b/engines/titanic/true_talk/tt_scripts.cpp @@ -30,14 +30,6 @@ #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 { @@ -72,25 +64,14 @@ TTscripts::TTscripts() { addScript(new TTroomScript(scriptNum)); // Load npc scripts - 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); - } + 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) { diff --git a/image/png.cpp b/image/png.cpp index cfbcba5206..86d33b6952 100644 --- a/image/png.cpp +++ b/image/png.cpp @@ -122,11 +122,6 @@ bool PNGDecoder::loadStream(Common::SeekableReadStream &stream) { png_destroy_read_struct(&pngPtr, NULL, NULL); return false; } - png_infop endInfo = png_create_info_struct(pngPtr); - if (!endInfo) { - png_destroy_read_struct(&pngPtr, &infoPtr, NULL); - return false; - } png_set_error_fn(pngPtr, NULL, pngError, pngWarning); // TODO: The manual says errors should be handled via setjmp @@ -239,7 +234,7 @@ bool PNGDecoder::loadStream(Common::SeekableReadStream &stream) { png_read_end(pngPtr, NULL); // Destroy libpng structures - png_destroy_read_struct(&pngPtr, &infoPtr, &endInfo); + png_destroy_read_struct(&pngPtr, &infoPtr, NULL); return true; #else @@ -287,11 +282,6 @@ bool writePNG(Common::WriteStream &out, const Graphics::Surface &input, const bo png_destroy_write_struct(&pngPtr, NULL); return false; } - png_infop endInfo = png_create_info_struct(pngPtr); - if (!endInfo) { - png_destroy_write_struct(&pngPtr, &infoPtr); - return false; - } png_set_error_fn(pngPtr, NULL, pngError, pngWarning); // TODO: The manual says errors should be handled via setjmp diff --git a/po/be_BY.po b/po/be_BY.po index 5c0ca6583f..0ee462e17b 100644 --- a/po/be_BY.po +++ b/po/be_BY.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-07-26 18:23+0000\n" "Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n" "Language-Team: Belarusian <https://translations.scummvm.org/projects/scummvm/" @@ -1841,8 +1841,8 @@ msgstr "Г~а~лоўнае меню" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1862,8 +1862,9 @@ msgstr "Захаваць гульню:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2894,8 +2895,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2908,8 +2909,8 @@ msgstr "Узнавіць гульню:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3598,16 +3599,16 @@ msgstr "" "Калі ласка, скарыстайцеся іншай праграмай для прагляду файла дапамогі " "гульні: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "Фармат захаванай гульні састарэў, не магу прачытаць яго" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "Версія файла захавання %d, але максімальна падтрымваецца %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/ca_ES.po b/po/ca_ES.po index 350d5aa2e0..d549212b95 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.6.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-02-20 14:15+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Catalan <https://translations.scummvm.org/projects/scummvm/" @@ -1836,8 +1836,8 @@ msgstr "~R~etorna al Llanчador" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1857,8 +1857,9 @@ msgstr "Desa la partida:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2876,8 +2877,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2890,8 +2891,8 @@ msgstr "Recupera la partida:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3570,16 +3571,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/cs_CZ.po b/po/cs_CZ.po index 3f14657a33..372724970e 100644 --- a/po/cs_CZ.po +++ b/po/cs_CZ.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.7.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-12-04 15:43+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Czech <https://translations.scummvm.org/projects/scummvm/" @@ -1846,8 +1846,8 @@ msgstr "~N~сvrat do SpouЙtьшe" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1867,8 +1867,9 @@ msgstr "UloОit hru:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2898,8 +2899,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2912,8 +2913,8 @@ msgstr "Obnovit hru:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3590,16 +3591,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/da_DK.po b/po/da_DK.po index 61929c475e..ea7ce86686 100644 --- a/po/da_DK.po +++ b/po/da_DK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-12-29 07:29+0000\n" "Last-Translator: poulsen93 <poulsen93@gmail.com>\n" "Language-Team: Danish <https://translations.scummvm.org/projects/scummvm/" @@ -1838,8 +1838,8 @@ msgstr "~R~etur til oversigt" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1859,8 +1859,9 @@ msgstr "Gemmer:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2889,8 +2890,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2903,8 +2904,8 @@ msgstr "Gendan spil:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3591,16 +3592,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/de_DE.po b/po/de_DE.po index b85610b006..01c88280a2 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-09-11 18:50+0000\n" "Last-Translator: Lothar Serra Mari <rootfather@scummvm.org>\n" "Language-Team: German <https://translations.scummvm.org/projects/scummvm/" @@ -1865,8 +1865,8 @@ msgstr "Zur Spiele~l~iste" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1886,8 +1886,9 @@ msgstr "Speichern:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2921,8 +2922,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2935,8 +2936,8 @@ msgstr "Spiel laden:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3634,16 +3635,16 @@ msgstr "" "Bitte verwenden Sie einen externen Betrachter, um die Hilfedatei des Spiels " "zu іffnen: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "Das Format dieses Spielstands ist veraltet; laden nicht mіglich" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "Spielstand-Version ist %d, hіchste unterstќtzte Version ist %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-04-28 11:12+0000\n" "Last-Translator: Arius <alidop@pathfinder.gr>\n" "Language-Team: Greek <https://translations.scummvm.org/projects/scummvm/" @@ -1872,8 +1872,8 @@ msgstr "Х№щѓ~є~ё. ѓєяэ Яфчучєо" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1893,8 +1893,9 @@ msgstr "С№яшоъхѕѓч №сщїэщфщя§:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2929,8 +2930,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2943,8 +2944,8 @@ msgstr "Х№сэсіяём №сщїэщфщя§:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3638,16 +3639,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/es_ES.po b/po/es_ES.po index 547ce4b5d9..d4ad2b8716 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.4.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-04-23 05:59+0000\n" "Last-Translator: Santiago Sanchez <sanchez.santiago.j@gmail.com>\n" "Language-Team: Spanish <https://translations.scummvm.org/projects/scummvm/" @@ -1854,8 +1854,8 @@ msgstr "~V~olver al lanzador" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1875,8 +1875,9 @@ msgstr "Guardar partida:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2903,8 +2904,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2917,8 +2918,8 @@ msgstr "Cargar partida:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3602,16 +3603,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.5.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-12-04 13:27+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Basque <https://translations.scummvm.org/projects/scummvm/" @@ -1842,8 +1842,8 @@ msgstr "It~z~uli abiarazlera" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1863,8 +1863,9 @@ msgstr "Gorde jokoa:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2893,8 +2894,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2907,8 +2908,8 @@ msgstr "Jokoa kargatu:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3596,16 +3597,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/fi_FI.po b/po/fi_FI.po index 74f7316951..5944d0dbfd 100644 --- a/po/fi_FI.po +++ b/po/fi_FI.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.6.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-09-09 13:38+0000\n" "Last-Translator: Timo Mikkolainen <tmikkola@gmail.com>\n" "Language-Team: Finnish <https://translations.scummvm.org/projects/scummvm/" @@ -1840,8 +1840,8 @@ msgstr "Palaa p~e~livalitsimeen" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1861,8 +1861,9 @@ msgstr "Tallenna peli:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2888,8 +2889,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2902,8 +2903,8 @@ msgstr "Lataa pelitallenne:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3579,17 +3580,17 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "Kфytф ulkoista ohjelmaa pelin ohjetiedoston avaamiseen: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" "Tфmфn pelitallenteen formaatti on vanhentunut, sitф ei pystytф lataamaan" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "Pelitallenteen versio on %d, suurin tuettu versio on %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/fr_FR.po b/po/fr_FR.po index 98fb6a5c22..319ec39b25 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-07-03 10:14+0000\n" "Last-Translator: Thierry Crozat <criezy@scummvm.org>\n" "Language-Team: French <https://translations.scummvm.org/projects/scummvm/" @@ -1860,8 +1860,8 @@ msgstr "Retour au ~L~anceur" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1881,8 +1881,9 @@ msgstr "Sauvegarde :" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2913,8 +2914,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2927,8 +2928,8 @@ msgstr "Charger le jeu :" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3619,20 +3620,20 @@ msgstr "" "Veuillez utiliser une application externe pour ouvrir le fichier d'Aide du " "jeu : %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" "Le format de ce fichier de sauvegarde est obsolшte. Le fichier ne peut ъtre " "chargщ." -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" "La version du fichier de sauvegarde est %d, mais la version maximum " "supportщe est %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/gl_ES.po b/po/gl_ES.po index 5bbc9dcdff..34151c4393 100644 --- a/po/gl_ES.po +++ b/po/gl_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-11-28 15:51+0000\n" "Last-Translator: Santiago G. Sanz <santiagogarciasanz@gmail.com>\n" "Language-Team: Galician <https://translations.scummvm.org/projects/scummvm/" @@ -1850,8 +1850,8 @@ msgstr "~V~olver ao Iniciador" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1871,8 +1871,9 @@ msgstr "Gardar partida:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2898,8 +2899,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2912,8 +2913,8 @@ msgstr "Restaurar xogo:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3607,16 +3608,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/hu_HU.po b/po/hu_HU.po index 8da7fc5e0d..9c4e917f69 100644 --- a/po/hu_HU.po +++ b/po/hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-09-09 02:29+0000\n" "Last-Translator: George Kormendi <grubycza@hotmail.com>\n" "Language-Team: Hungarian <https://translations.scummvm.org/projects/scummvm/" @@ -1834,8 +1834,8 @@ msgstr "Visszatщrщs az indэtѓba" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1855,8 +1855,9 @@ msgstr "Jсtщk mentщse:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2878,8 +2879,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2892,8 +2893,8 @@ msgstr "Jсtщkmenet visszaсllэtсsa:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3572,16 +3573,16 @@ msgid "Please use an external viewer to open the game's help file: %s" msgstr "" "A jсtщk sњgѓfсjljсnak megnyitсsсhoz kќlsѕ megjelenэtѕt kell hasznсlnia: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "A mentett jсtщk formсtuma elavult, nem lehet betіlteni" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "A mentщs verziѓja %d, a maximсlisan tсmogatott %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/it_IT.po b/po/it_IT.po index 637cbc9b6f..899ee41821 100644 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-09-09 07:41+0000\n" "Last-Translator: Paolo Bossi <pbossi86@gmail.com>\n" "Language-Team: Italian <https://translations.scummvm.org/projects/scummvm/" @@ -1853,8 +1853,8 @@ msgstr "~V~ai a elenco giochi" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1874,8 +1874,9 @@ msgstr "Salva gioco:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2904,8 +2905,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2918,8 +2919,8 @@ msgstr "Ripristina partita:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3606,17 +3607,17 @@ msgstr "" "Si prega di usare un programma di visualizzazione esterno per aprire il file " "di aiuto:%s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "Il formato di questo salvataggio ш obsoleto, impossibile caricarlo" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" "La versione del salvataggio ш %d, la versione piљ recente supportata ш %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/nb_NO.po b/po/nb_NO.po index e16eb29e79..5d4ceeb5b1 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-12-26 17:36+0000\n" "Last-Translator: Einar Johan Trјan Sјmхen <einarjohants@gmail.com>\n" "Language-Team: Norwegian Bokmхl <https://translations.scummvm.org/projects/" @@ -1839,8 +1839,8 @@ msgstr "~T~ilbake til oppstarter" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1860,8 +1860,9 @@ msgstr "Lagret spill:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2884,8 +2885,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2898,8 +2899,8 @@ msgstr "Gjennopprett spill:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3578,16 +3579,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/nl_NL.po b/po/nl_NL.po index 21160b9a1d..0a61924431 100644 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.9.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-09-11 06:41+0000\n" "Last-Translator: Ben Castricum <github@bencastricum.nl>\n" "Language-Team: Dutch <https://translations.scummvm.org/projects/scummvm/" @@ -1843,8 +1843,8 @@ msgstr "S~t~artmenu" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1864,8 +1864,9 @@ msgstr "Spel opslaan:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2899,8 +2900,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2913,8 +2914,8 @@ msgstr "Laad opgeslagen spel:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3605,17 +3606,17 @@ msgstr "" "Gebruik a.u.b. een externe viewer om het help-bestand van het spel te " "openen: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" "Het formaat van dit opgeslagen spel is verouderd, het laden is niet mogelijk" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "Opgeslagen spel heeft versie %d, maximaal ondersteunde is %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/nn_NO.po b/po/nn_NO.po index d2e7795274..51d634c863 100644 --- a/po/nn_NO.po +++ b/po/nn_NO.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-12-18 18:23+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Norwegian Nynorsk <https://translations.scummvm.org/projects/" @@ -1835,8 +1835,8 @@ msgstr "Tilbake til Oppsta~r~tar" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1856,8 +1856,9 @@ msgstr "Lagra spel:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2879,8 +2880,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2893,8 +2894,8 @@ msgstr "Gjenopprett spel:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3543,16 +3544,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/pl_PL.po b/po/pl_PL.po index b244f3fe1e..cb7881c588 100644 --- a/po/pl_PL.po +++ b/po/pl_PL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-01-25 12:49+0000\n" "Last-Translator: RafaГ Rzepecki <divided.mind@gmail.com>\n" "Language-Team: Polish <https://translations.scummvm.org/projects/scummvm/" @@ -1845,8 +1845,8 @@ msgstr "~P~owrѓt do launchera" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1866,8 +1866,9 @@ msgstr "Zapis:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2889,8 +2890,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2903,8 +2904,8 @@ msgstr "Wznѓw grъ:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3586,16 +3587,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/pt_BR.po b/po/pt_BR.po index ea7048aa54..6f2c39b42d 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-03-03 22:26+0000\n" "Last-Translator: rafaelmessias <rmmartins@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://translations.scummvm.org/" @@ -1872,8 +1872,8 @@ msgstr "~V~oltar ao menu" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1893,8 +1893,9 @@ msgstr "Salvar jogo:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2926,8 +2927,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2940,8 +2941,8 @@ msgstr "Restaurar jogo:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3626,16 +3627,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/pt_PT.po b/po/pt_PT.po index ff456feb90..c95e2b9c89 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-01-30 14:50+0000\n" "Last-Translator: Vitor Santos <vitorhgsantos90@gmail.com>\n" "Language-Team: Portuguese (Portugal) <https://translations.scummvm.org/" @@ -1831,8 +1831,8 @@ msgstr "" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1852,8 +1852,9 @@ msgstr "" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2835,8 +2836,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2849,8 +2850,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3462,16 +3463,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/ru_RU.po b/po/ru_RU.po index 164a5bc352..4ebb6d36c7 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-06-20 15:35+0000\n" "Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n" "Language-Team: Russian <https://translations.scummvm.org/projects/scummvm/" @@ -1844,8 +1844,8 @@ msgstr "~В~ главное меню" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1865,8 +1865,9 @@ msgstr "Сохранить игру:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2894,8 +2895,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2908,8 +2909,8 @@ msgstr "Восстановить игру:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3599,17 +3600,17 @@ msgstr "" "Пожалуйста, воспользуйтесь другой программой для просмотра файла помощи " "игры: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 #, fuzzy msgid "The format of this saved game is obsolete, unable to load it" msgstr "Формат файла сохранённой игры устарел, не могу загрузить его" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, fuzzy, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "Версия файла сохранения: %d, но максимальная поддерживаемая: %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 #, fuzzy msgid "" "This saved game was created with a different version of the game, unable to " diff --git a/po/scummvm.pot b/po/scummvm.pot index 5c01b0b6e9..36da2316cc 100644 --- a/po/scummvm.pot +++ b/po/scummvm.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -1796,8 +1796,8 @@ msgstr "" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1817,8 +1817,9 @@ msgstr "" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2800,8 +2801,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2814,8 +2815,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3426,16 +3427,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/sv_SE.po b/po/sv_SE.po index c4e58d2cbb..730822d2b7 100644 --- a/po/sv_SE.po +++ b/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.5.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-01-06 09:18+0000\n" "Last-Translator: Petter Sjіlund <ignalina@mac.com>\n" "Language-Team: Swedish <https://translations.scummvm.org/projects/scummvm/" @@ -1848,8 +1848,8 @@ msgstr "Хte~r~vфnd till launcher" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1869,8 +1869,9 @@ msgstr "Spara spelet:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2896,8 +2897,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2910,8 +2911,8 @@ msgstr "Ladda sparfil:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3596,16 +3597,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/uk_UA.po b/po/uk_UA.po index 2c0ee4db8f..af8c194737 100644 --- a/po/uk_UA.po +++ b/po/uk_UA.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.9.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2017-06-14 14:55+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Ukrainian <https://translations.scummvm.org/projects/scummvm/" @@ -1845,8 +1845,8 @@ msgstr "~П~овер.в головне меню" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1866,8 +1866,9 @@ msgstr "Зберегти гру:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2895,8 +2896,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2909,8 +2910,8 @@ msgstr "Відновити гру:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3595,16 +3596,16 @@ msgstr "" "Будь-ласка, використовуйте іншу програму для переглядання файлу допомоги " "ігри: %s" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "Формат цього файлу збереженої гри застарілий, не можу його прочитати" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "Версія файлу збереження %d, але максимально підртимується %0d" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" diff --git a/po/zh-Latn_CN.po b/po/zh-Latn_CN.po index ff58da8eb0..5c93012c1a 100644 --- a/po/zh-Latn_CN.po +++ b/po/zh-Latn_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.9.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2017-09-16 06:06+0200\n" +"POT-Creation-Date: 2017-09-24 04:40+0200\n" "PO-Revision-Date: 2016-12-26 19:38+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Chinese <https://translations.scummvm.org/projects/scummvm/" @@ -1835,8 +1835,8 @@ msgstr "~R~Fanhui Qidongqi" #: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 #: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:106 #: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:535 engines/sci/engine/kfile.cpp:944 -#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:656 +#: engines/sci/engine/kfile.cpp:1042 engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -1856,8 +1856,9 @@ msgstr "Baocun Youxi:" #: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 #: engines/mohawk/dialogs.cpp:106 engines/neverhood/menumodule.cpp:880 #: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379 -#: engines/sci/engine/guest_additions.cpp:536 engines/sci/engine/kfile.cpp:944 -#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sci/engine/guest_additions.cpp:657 +#: engines/sci/engine/kfile.cpp:1042 engines/scumm/dialogs.cpp:184 +#: engines/sherlock/scalpel/scalpel.cpp:1250 #: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 #: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 #: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 @@ -2880,8 +2881,8 @@ msgstr "" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:538 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:659 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" @@ -2894,8 +2895,8 @@ msgstr "Huifu Youxi:" #: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 #: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 #: engines/neverhood/menumodule.cpp:893 -#: engines/sci/engine/guest_additions.cpp:539 -#: engines/sci/engine/kfile.cpp:1063 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sci/engine/guest_additions.cpp:660 +#: engines/sci/engine/kfile.cpp:1161 engines/sherlock/scalpel/scalpel.cpp:1263 #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" @@ -3573,16 +3574,16 @@ msgstr "" msgid "Please use an external viewer to open the game's help file: %s" msgstr "" -#: engines/sci/engine/savegame.cpp:1314 +#: engines/sci/engine/savegame.cpp:1292 msgid "The format of this saved game is obsolete, unable to load it" msgstr "" -#: engines/sci/engine/savegame.cpp:1316 +#: engines/sci/engine/savegame.cpp:1294 #, c-format msgid "Savegame version is %d, maximum supported is %0d" msgstr "" -#: engines/sci/engine/savegame.cpp:1327 +#: engines/sci/engine/savegame.cpp:1305 msgid "" "This saved game was created with a different version of the game, unable to " "load it" |