mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 12:39:56 +00:00
SUPERNOVA2: add tool to generate engine data file
Most of the tool is copied from create supernova Add correct gametext.h and strings_en.po for supernova2 Doesn't handle images yet
This commit is contained in:
parent
9bf7dc817f
commit
0ed3dbf21f
197
devtools/create_supernova2/create_supernova2.cpp
Normal file
197
devtools/create_supernova2/create_supernova2.cpp
Normal file
@ -0,0 +1,197 @@
|
||||
#include "create_supernova2.h"
|
||||
#include "gametext.h"
|
||||
#include "file.h"
|
||||
#include "po_parser.h"
|
||||
|
||||
// HACK to allow building with the SDL backend on MinGW
|
||||
// see bug #1800764 "TOOLS: MinGW tools building broken"
|
||||
#ifdef main
|
||||
#undef main
|
||||
#endif // main
|
||||
|
||||
// List of languages to look for. To add new languages you only need to change the array below
|
||||
// and add the supporting files:
|
||||
// - 640x480 bitmap picture for the newpaper named 'img1-##.pbm' and 'img2-##.pbm'
|
||||
// in pbm binary format (you can use gimp to generate those)
|
||||
// - strings in a po file named 'strings-##.po' that uses CP850 encoding
|
||||
|
||||
const char *lang[] = {
|
||||
"en",
|
||||
NULL
|
||||
};
|
||||
|
||||
void writeImage(File& outputFile, const char *name, const char* language) {
|
||||
File imgFile;
|
||||
char fileName[16];
|
||||
sprintf(fileName, "%s-%s.pbm", name, language);
|
||||
if (!imgFile.open(fileName, kFileReadMode)) {
|
||||
printf("Cannot find image '%s' for language '%s'. This image will be skipped.\n", name, language);
|
||||
return;
|
||||
}
|
||||
|
||||
char str[256];
|
||||
|
||||
// Read header (and check we have a binary PBM file)
|
||||
imgFile.readString(str, 256);
|
||||
if (strcmp(str, "P4") != 0) {
|
||||
imgFile.close();
|
||||
printf("File '%s' doesn't seem to be a binary pbm file! This image will be skipped.\n", fileName);
|
||||
return;
|
||||
}
|
||||
|
||||
// Skip comments and then read and check size
|
||||
do {
|
||||
imgFile.readString(str, 256);
|
||||
} while (str[0] == '#');
|
||||
int w = 0, h = 0;
|
||||
if (sscanf(str, "%d %d", &w, &h) != 2 || w != 640 || h != 480) {
|
||||
imgFile.close();
|
||||
printf("Binary pbm file '%s' doesn't have the expected size (expected: 640x480, read: %dx%d). This image will be skipped.\n", fileName, w, h);
|
||||
return;
|
||||
}
|
||||
|
||||
// Write block header in output file (4 bytes).
|
||||
// We convert the image name to upper case.
|
||||
for (int i = 0 ; i < 4 ; ++i) {
|
||||
if (name[i] >= 97 && name[i] <= 122)
|
||||
outputFile.writeByte(name[i] - 32);
|
||||
else
|
||||
outputFile.writeByte(name[i]);
|
||||
}
|
||||
// And write the language code on 4 bytes as well (padded with 0 if needed).
|
||||
int languageLength = strlen(language);
|
||||
for (int i = 0 ; i < 4 ; ++i) {
|
||||
if (i < languageLength)
|
||||
outputFile.writeByte(language[i]);
|
||||
else
|
||||
outputFile.writeByte(0);
|
||||
}
|
||||
|
||||
// Write block size (640*480 / 8)
|
||||
outputFile.writeLong(38400);
|
||||
|
||||
// Write all the bytes. We should have 38400 bytes (640 * 480 / 8)
|
||||
// However we need to invert the bits has the engine expects 1 for the background and 0 for the text (black)
|
||||
// but pbm uses 0 for white and 1 for black.
|
||||
for (int i = 0 ; i < 38400 ; ++i) {
|
||||
byte b = imgFile.readByte();
|
||||
outputFile.writeByte(~b);
|
||||
}
|
||||
|
||||
imgFile.close();
|
||||
}
|
||||
|
||||
void writeGermanStrings(File& outputFile) {
|
||||
// Write header and language
|
||||
outputFile.write("TEXT", 4);
|
||||
outputFile.write("de\0\0", 4);
|
||||
|
||||
// Reserve the size for the block size, but we will write it at the end once we know what it is.
|
||||
uint32 blockSizePos = outputFile.pos();
|
||||
uint32 blockSize = 0;
|
||||
outputFile.writeLong(blockSize);
|
||||
|
||||
// Write all the strings
|
||||
const char **s = &gameText[0];
|
||||
while (*s) {
|
||||
outputFile.writeString(*s);
|
||||
blockSize += strlen(*s) + 1;
|
||||
++s;
|
||||
}
|
||||
|
||||
// Now write the block size and then go back to the end of the file.
|
||||
outputFile.seek(blockSizePos, SEEK_SET);
|
||||
outputFile.writeLong(blockSize);
|
||||
outputFile.seek(0, SEEK_END);
|
||||
}
|
||||
|
||||
void writeStrings(File& outputFile, const char* language) {
|
||||
char fileName[16];
|
||||
sprintf(fileName, "strings-%s.po", language);
|
||||
PoMessageList* poList = parsePoFile(fileName);
|
||||
if (!poList) {
|
||||
printf("Cannot find strings file for language '%s'.\n", language);
|
||||
return;
|
||||
}
|
||||
|
||||
// Write block header
|
||||
outputFile.write("TEXT", 4);
|
||||
|
||||
// And write the language code on 4 bytes as well (padded with 0 if needed).
|
||||
int languageLength = strlen(language);
|
||||
for (int i = 0 ; i < 4 ; ++i) {
|
||||
if (i < languageLength)
|
||||
outputFile.writeByte(language[i]);
|
||||
else
|
||||
outputFile.writeByte(0);
|
||||
}
|
||||
|
||||
// Reserve the size for the block size, but we will write it at the end once we know what it is.
|
||||
uint32 blockSizePos = outputFile.pos();
|
||||
uint32 blockSize = 0;
|
||||
outputFile.writeLong(blockSize);
|
||||
|
||||
// Write all the strings.
|
||||
// If a string is not translated we use the German one.
|
||||
const char **s = &gameText[0];
|
||||
while (*s) {
|
||||
const char* translation = poList->findTranslation(*s);
|
||||
if (translation) {
|
||||
outputFile.writeString(translation);
|
||||
blockSize += strlen(translation) + 1;
|
||||
} else {
|
||||
outputFile.writeString(*s);
|
||||
blockSize += strlen(*s) + 1;
|
||||
}
|
||||
++s;
|
||||
}
|
||||
delete poList;
|
||||
|
||||
// Now write the block size and then go back to the end of the file.
|
||||
outputFile.seek(blockSizePos, SEEK_SET);
|
||||
outputFile.writeLong(blockSize);
|
||||
outputFile.seek(0, SEEK_END);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Main method
|
||||
*/
|
||||
int main(int argc, char *argv[]) {
|
||||
File outputFile;
|
||||
if (!outputFile.open("supernova2.dat", kFileWriteMode)) {
|
||||
printf("Cannot create file 'supernova2.dat' in current directory.\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// The generated file is of the form:
|
||||
// 3 bytes: 'MSN'
|
||||
// 1 byte: version
|
||||
// -- data blocks
|
||||
// 4 bytes: header 'IMG1' and 'IMG2' for newspaper images (for file 1 and file 2 respectively),
|
||||
// 'TEXT' for strings
|
||||
// 4 bytes: language code ('en\0', 'de\0'- see common/language.cpp)
|
||||
// 4 bytes: block size n (uint32)
|
||||
// n bytes: data
|
||||
// ---
|
||||
|
||||
// Header
|
||||
outputFile.write("MS2", 3);
|
||||
outputFile.writeByte(VERSION);
|
||||
|
||||
// German strings
|
||||
writeGermanStrings(outputFile);
|
||||
|
||||
// TODO make the needed images and reenable writing them to the .dat file
|
||||
// Other languages
|
||||
const char **l = &lang[0];
|
||||
while(*l) {
|
||||
// writeImage(outputFile, "img1", *l);
|
||||
// writeImage(outputFile, "img2", *l);
|
||||
writeStrings(outputFile, *l);
|
||||
++l;
|
||||
}
|
||||
|
||||
outputFile.close();
|
||||
return 0;
|
||||
}
|
33
devtools/create_supernova2/create_supernova2.h
Normal file
33
devtools/create_supernova2/create_supernova2.h
Normal file
@ -0,0 +1,33 @@
|
||||
/* 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.
|
||||
*
|
||||
* This is a utility for generating a data file for the supernova engine.
|
||||
* It contains strings extracted from the original executable as well
|
||||
* as translations and is required for the engine to work properly.
|
||||
*/
|
||||
|
||||
#ifndef CREATE_SUPERNOVA_H
|
||||
#define CREATE_SUPERNOVA_H
|
||||
|
||||
#define VERSION 1
|
||||
|
||||
|
||||
|
||||
#endif // CREATE_SUPERNOVA_H
|
72
devtools/create_supernova2/file.cpp
Normal file
72
devtools/create_supernova2/file.cpp
Normal file
@ -0,0 +1,72 @@
|
||||
#include "file.h"
|
||||
|
||||
bool File::open(const char *filename, AccessMode mode) {
|
||||
f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb");
|
||||
return (f != NULL);
|
||||
}
|
||||
|
||||
void File::close() {
|
||||
fclose(f);
|
||||
f = NULL;
|
||||
}
|
||||
|
||||
int File::seek(int32 offset, int whence) {
|
||||
return fseek(f, offset, whence);
|
||||
}
|
||||
|
||||
long File::read(void *buffer, int len) {
|
||||
return fread(buffer, 1, len, f);
|
||||
}
|
||||
void File::write(const void *buffer, int len) {
|
||||
fwrite(buffer, 1, len, f);
|
||||
}
|
||||
|
||||
byte File::readByte() {
|
||||
byte v;
|
||||
read(&v, sizeof(byte));
|
||||
return v;
|
||||
}
|
||||
|
||||
uint16 File::readWord() {
|
||||
uint16 v;
|
||||
read(&v, sizeof(uint16));
|
||||
return FROM_LE_16(v);
|
||||
}
|
||||
|
||||
uint32 File::readLong() {
|
||||
uint32 v;
|
||||
read(&v, sizeof(uint32));
|
||||
return FROM_LE_32(v);
|
||||
}
|
||||
|
||||
void File::readString(char* string, int bufferLength) {
|
||||
int i = 0;
|
||||
while (i < bufferLength - 1 && fread(string + i, 1, 1, f) == 1) {
|
||||
if (string[i] == '\n' || string[i] == 0)
|
||||
break;
|
||||
++ i;
|
||||
}
|
||||
string[i] = 0;
|
||||
}
|
||||
|
||||
void File::writeByte(byte v) {
|
||||
write(&v, sizeof(byte));
|
||||
}
|
||||
|
||||
void File::writeWord(uint16 v) {
|
||||
uint16 vTemp = TO_LE_16(v);
|
||||
write(&vTemp, sizeof(uint16));
|
||||
}
|
||||
|
||||
void File::writeLong(uint32 v) {
|
||||
uint32 vTemp = TO_LE_32(v);
|
||||
write(&vTemp, sizeof(uint32));
|
||||
}
|
||||
|
||||
void File::writeString(const char *s) {
|
||||
write(s, strlen(s) + 1);
|
||||
}
|
||||
|
||||
uint32 File::pos() {
|
||||
return ftell(f);
|
||||
}
|
59
devtools/create_supernova2/file.h
Normal file
59
devtools/create_supernova2/file.h
Normal file
@ -0,0 +1,59 @@
|
||||
/* 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.
|
||||
*
|
||||
* This is a utility for generating a data file for the supernova engine.
|
||||
* It contains strings extracted from the original executable as well
|
||||
* as translations and is required for the engine to work properly.
|
||||
*/
|
||||
|
||||
#ifndef FILE_H
|
||||
#define FILE_H
|
||||
|
||||
// Disable symbol overrides so that we can use system headers.
|
||||
#define FORBIDDEN_SYMBOL_ALLOW_ALL
|
||||
#include "common/endian.h"
|
||||
|
||||
enum AccessMode {
|
||||
kFileReadMode = 1,
|
||||
kFileWriteMode = 2
|
||||
};
|
||||
|
||||
class File {
|
||||
private:
|
||||
FILE *f;
|
||||
public:
|
||||
bool open(const char *filename, AccessMode mode = kFileReadMode);
|
||||
void close();
|
||||
int seek(int32 offset, int whence = SEEK_SET);
|
||||
uint32 pos();
|
||||
long read(void *buffer, int len);
|
||||
void write(const void *buffer, int len);
|
||||
|
||||
byte readByte();
|
||||
uint16 readWord();
|
||||
uint32 readLong();
|
||||
void readString(char*, int bufferLength);
|
||||
void writeByte(byte v);
|
||||
void writeWord(uint16 v);
|
||||
void writeLong(uint32 v);
|
||||
void writeString(const char *s);
|
||||
};
|
||||
|
||||
#endif // FILE_H
|
778
devtools/create_supernova2/gametext.h
Normal file
778
devtools/create_supernova2/gametext.h
Normal file
@ -0,0 +1,778 @@
|
||||
/* 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.
|
||||
*
|
||||
* This is a utility for generating a data file for the supernova engine.
|
||||
* It contains strings extracted from the original executable as well
|
||||
* as translations and is required for the engine to work properly.
|
||||
*/
|
||||
|
||||
#ifndef GAMETEXT_H
|
||||
#define GAMETEXT_H
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
// This file contains the strings in German and is encoded using CP850 encoding.
|
||||
// Other language should be provided as po files also using the CP850 encoding.
|
||||
|
||||
// TODO: add the strings from the engine here, add an Id string in comment.
|
||||
// And in the engine add a StringId enum with all the Ids = index in this array.
|
||||
|
||||
const char *gameText[] = {
|
||||
// 0
|
||||
"Gehe", //Go
|
||||
"Schau", //Look
|
||||
"Nimm", //Take
|
||||
"\231ffne", //Open
|
||||
"Schlie\341e", //Close
|
||||
// 5
|
||||
"Dr\201cke", //Push
|
||||
"Ziehe", //Pull
|
||||
"Benutze", //Use
|
||||
"Rede", //Talk
|
||||
"Gib", //Give
|
||||
// 10
|
||||
"Gespr\204ch beenden", //End of conversation
|
||||
"Gehe zu ", //Go to
|
||||
"Schau ", //Look at
|
||||
"Nimm ", //Take
|
||||
"\231ffne ", //Open
|
||||
// 15
|
||||
"Schlie\341e ", //Close
|
||||
"Dr\201cke ", //Push
|
||||
"Ziehe ", //Pull
|
||||
"Benutze ", //Use
|
||||
"Rede mit ", //Talk to
|
||||
// 20
|
||||
"Gib ", //Give
|
||||
" an ", // to
|
||||
" mit ", // with
|
||||
"Laden", //Load
|
||||
"Speichern", //Save
|
||||
// 25
|
||||
"Zur\201ck", //Back
|
||||
"Neustart", //Restart
|
||||
"Schreibfehler", //write error
|
||||
"Textgeschwindigkeit:", //Text speed:
|
||||
"Spiel abbrechen?", //Leave game?
|
||||
// 30
|
||||
"Ja", //Yes
|
||||
"Nein", //No
|
||||
"Das tr\204gst du doch bei dir.", //You already carry this.
|
||||
"Du bist doch schon da.", //You are already there.
|
||||
"Das ist geschlossen.", //This is closed.
|
||||
// 35
|
||||
"Das hast du doch schon.", //You already have that.
|
||||
"Das brauchst du nicht.", //You don't need that.
|
||||
"Das kannst du nicht nehmen.", //You can't take that.
|
||||
"Das l\204\341t sich nicht \224ffnen.", //This cannot be opened.
|
||||
"Das ist schon offen.", //This is already opened.
|
||||
// 40
|
||||
"Das ist verschlossen.", //This is locked.
|
||||
"Das l\204\341t sich nicht schlie\341en.", //This cannot be closed.
|
||||
"Das ist schon geschlossen.", //This is already closed.
|
||||
"Behalt es lieber!", //Better keep it!
|
||||
"Das geht nicht.", //You can't do that.
|
||||
// 45
|
||||
"^(C) 1994 Thomas und Steffen Dingel#", //^(C) 1994 Thomas and Steffen Dingel#
|
||||
"Story und Grafik:^ Thomas Dingel#", //Story and Graphics:^ Thomas Dingel#
|
||||
"Programmierung:^ Steffen Dingel#", //Programming:^ Steffen Dingel#
|
||||
"Musik:^ Bernd Hoffmann#", //Music:^ Bernd Hoffmann#
|
||||
"Getestet von ...#", //Tested by ...#
|
||||
// 50
|
||||
"^Das war's.#", //^That's it.#
|
||||
"^Schlu\341!#", //^Over!#
|
||||
"^Ende!#", //^End!#
|
||||
"^Aus!#", //^Done!#
|
||||
"^Tsch\201\341!#", //^Bye!#
|
||||
// 55
|
||||
"Oh!", //Oh!
|
||||
"Nicht schlecht!", //Not bad!
|
||||
"Supersound!", //Supersound!
|
||||
"Klasse!", //Great!
|
||||
"Nicht zu fassen!", //I can't believe it!
|
||||
// 60
|
||||
"Super, ey!", //Dope, yo!
|
||||
"Fantastisch!", //Fantastic!
|
||||
"Umwerfend!", //Stunning!
|
||||
"Genial!", //Brilliant!
|
||||
"Spitze!", //Awesome!
|
||||
// 65
|
||||
"Jawoll!", //Alright!
|
||||
"Hervorragend!", //Outstanding!
|
||||
"Ultragut!", //Ultra-good!
|
||||
"Megacool!", //Mega cool!
|
||||
"Yeah!", //Yeah!
|
||||
// 70
|
||||
"Ein W\204chter betritt den Raum.|Du wirst verhaftet.", //A guard enters the room.|You are getting arrested.
|
||||
"Die n\204chsten paar Jahre|verbringst du im Knast.", //You will spend the next|few years in jail.
|
||||
"Es wird Alarm ausgel\224st.", //The alarm is about to be set off.
|
||||
"Du h\224rst Schritte.", //You are hearing footsteps.
|
||||
"Um das Schloss zu \224ffnen,|brauchst du einige Zeit.", //You will take some time,|to pick that lock.
|
||||
// 75
|
||||
"Du ger\204tst in Panik|und ziehst die Keycard|aus der T\201r.", //You are panicking|and remove the keycard|from the door.
|
||||
"Du hast deinen Auftrag|noch nicht ausgef\201hrt.", //You have not completed|your task yet.
|
||||
"Obwohl du die Alarmanlage noch|nicht ausgeschaltet hast,|entscheidest du dich, zu fliehen.", //Although you haven't|disabled the alarm yet,|you decide to escape.
|
||||
"Du entledigst dich der Einbruchswerkzeuge|und nimmst ein Taxi zum Kulturpalast.", //You get rid of your burglar tools|and take a cab to the Palace of Culture.
|
||||
"Diese T\201r brauchst|du nicht zu \224ffnen.", //You don't need|to open this door.
|
||||
// 80
|
||||
"Uff, es hat geklappt!", //Phew, it worked!
|
||||
"Zur\201ck im Quartier der Gangster ...", //Back in the gangsters' hideout ...
|
||||
"Das lief ja wie am Schn\201rchen!", //Everything went like clockwork!
|
||||
"Hier, dein Anteil von 30000 Xa.", //Here, your share of 30000 Xa.
|
||||
"Wo ist denn der Saurierkopf?", //Where's the dinosaur skull?
|
||||
// 85
|
||||
"Dazu hatte ich keine Zeit mehr.", //I didn't have enough time for that.
|
||||
"Was? Du spinnst wohl!|Dann kriegst du auch deinen|Anteil nicht. Raus!", //What? You're nuts!|Then you won't get your|share. Beat it!
|
||||
"Der Sauger ist schon dort.", //The suction cup is already there.
|
||||
"Du heftest den Sauger an die Wand|und h\204lst dich daran fest.", //You attach the suction cup to the wall|and hold on to it.
|
||||
"Du stellst dich auf den|Boden nimmst den Sauger|wieder von der Wand", //You stand on the floor|then remove the suction cup from the wall
|
||||
// 90
|
||||
"Die Alarmanlage ist|schon ausgeschaltet.", //The alarm system is|already switched off.
|
||||
"Um die Anlage abzuschalten,|brauchst du einige Zeit.", //To turn off the system,|you need some time.
|
||||
"Die Alarmanlage ist jetzt ausgeschaltet.", //The alarm system is now switched off.
|
||||
"Saurier", //Dinosaur
|
||||
"Du hast jetzt besseres zu tun,|als das Ding anzuschauen.", //You have better things to do now|than look at that thing.
|
||||
// 95
|
||||
"Eingang", //Entrance
|
||||
"T\201r", //Door
|
||||
"Strasse zum Stadtzentrum", //Road to the city center
|
||||
"Kamera", //Security camera
|
||||
"Hoffentlich bemerkt dich niemand.", //Hopefully nobody will notice you.
|
||||
// 100
|
||||
"Haupteingang", //Main entrance
|
||||
"Gang", //Corridor
|
||||
"Ziemlich gro\341.", //Quite large.
|
||||
"Saurierkopf", //Dinosaur head
|
||||
"Dies ist der Kopf,|den du suchst.", //This is the head|you're looking for.
|
||||
// 105
|
||||
"Alarmanlage", //Alarm system
|
||||
"Sauger", //Suction cup
|
||||
"Wand", //Wall
|
||||
"Loch", //Opening
|
||||
"Buchstabe", //Letter
|
||||
// 110
|
||||
"Sie ist sehr massiv.", //It is very massive.
|
||||
"Hmm, X und Y, irgendwo|habe ich die Buchstaben|schon gesehen.", //Hmm, X and Y|I have seen these letters|somewhere before.
|
||||
"Deine Zeit ist um, Fremder!", //Your Time is up, Stranger!
|
||||
"Du hast das Seil|doch schon festgebunden.", //You already tied the rope.
|
||||
"Das w\201rde wenig bringen.", //That would have little effect.
|
||||
// 115
|
||||
"Sonnenstich, oder was?", //Sunstroke, or what?
|
||||
"Du merkst, da\341 der Boden|unter dir nachgibt, und|springst zur Seite.", //You notice that the ground|is giving way under you,|and you leap aside.
|
||||
"Puzzleteil", //Puzzle piece
|
||||
"Neben diesem Stein|ist kein freies Feld.", //There's no free square|next to this stone.
|
||||
"Du spielst gerade ein|Adventure, kein Rollenspiel!", //You are currently playing an|Adventure, not a Role-Playing Game!
|
||||
// 120
|
||||
"Du kannst das Seil|nirgends befestigen.", //There's nowhere|to attach the rope.
|
||||
"Es pa\341t nicht|zwischen die Steine.", //It does not fit|between the stones.
|
||||
"Das ist doch|oben festgebunden!", //That is already|tied up above!
|
||||
"Hey, das ist|mindestens 10 Meter tief!", //Hey, that is|at least 10 meters deep!
|
||||
"In dem Schlitz|ist nichts mehr.", //There is nothing|left in the slot.
|
||||
// 125
|
||||
"Das ist mindestens 5 Meter tief!", //That is at least 5 meters deep!
|
||||
"Du versuchst, den Sarg zu|\224ffnen, aber der Deckel bewegt|sich keinen Millimeter.", //You try to open the coffin,|but the lid does not|move a millimeter.
|
||||
"Du hast die Kugel schon gedr\201ckt.", //You have already|pushed the ball.
|
||||
"Die Kugel bewegt sich ein St\201ck.", //The ball moves a bit.
|
||||
"Herzlichen Gl\201ckwunsch!", //Congratulations!
|
||||
// 130
|
||||
"Sie haben das Spiel gel\224st|und gewinnen 400 Xa!", //You solved the game|and won 400 Xa!
|
||||
"Vielen Dank f\201r die Benutzung eines|VIRTUAL-REALITY-SYSTEMS-Produkts!", //Thank you for using a|VIRTUAL-REALITY-SYSTEMS product!
|
||||
"N", //N
|
||||
"O", //E
|
||||
"S", //S
|
||||
// 135
|
||||
"W", //W
|
||||
"Seil", //Rope
|
||||
"Schild", //Sign
|
||||
"Darauf steht:|\"Willst du finden das|richtige Loch, so wage|dich in die Pyramide!\".", //It reads:|"Want to find|the right hole? Then dare|to enter the pyramid!".
|
||||
"Es ist eine kleine \231ffnung.", //It is a small opening.
|
||||
// 140
|
||||
"Pyramide", //Pyramid
|
||||
"Komisch! Was soll eine Pyramide|bei den Axacussanern? Deine|eigenen Gedanken scheinen|den Spielverlauf zu beeinflussen.", //Weird! What is a pyramid doing|at the Axacussians? Your own thoughts seem to influence|the course of the game.
|
||||
"Sonne", //Sun
|
||||
"Sch\224n!", //Nice!
|
||||
"\"Hallo Fremder, wenn du diesen|Raum betreten hast, bleibt|dir nur noch eine Stunde Zeit,|um deine Aufgabe zu erf\201llen!\"", //"Hello, Stranger, when you enter|this room, you have only an hour|to accomplish your task!"
|
||||
// 145
|
||||
"rechte Seite", //right side
|
||||
"linke Seite", //left side
|
||||
"Knopf", //Button
|
||||
"Schrift", //Inscription
|
||||
"Tomate", //Tomato
|
||||
// 150
|
||||
"Komisch!", //Funny!
|
||||
"Messer", //Knife
|
||||
"Es ist ein relativ stabiles Messer.", //It is a relatively sturdy knife.
|
||||
"Monster", //Monster
|
||||
"Es ist dick und|ungef\204hr 15 Meter lang.", //It is thick and|about 15 meters long.
|
||||
// 155
|
||||
"Augen", //Eyes
|
||||
"Mund", //Mouth
|
||||
"Es ist nur eine Statue.", //It's just a statue.
|
||||
"Zettel", //Note
|
||||
"Darauf steht:|\"Wenn du fast am Ziel|bist, tu folgendes:|Sauf!\"", //It reads:|"When you're almost there,|do the following:|Drink!"
|
||||
// 160
|
||||
"Es ist ca. 10 Meter tief.", //It is about 10 meters deep.
|
||||
"Oben siehst du helles Licht.", //Above you is a bright light.
|
||||
"Darauf steht:|\"Ruhe eine Minute im Raum|zwischen den Monstern,|und du wirst belohnt!\"", //It reads:|"Rest a minute in the room|between the monsters,|and you'll be rewarded!"
|
||||
"Schlitz", //Slot
|
||||
"Du kommst mit den|H\204nden nicht rein.", //You cannot get in|with your hands.
|
||||
// 165
|
||||
"Es ist ca. 5 Meter tief.", //It is about 5 meters deep.
|
||||
"Steine", //Stones
|
||||
"Platte", //Plate
|
||||
"Sarg", //Coffin
|
||||
"Ausgang", //Exit
|
||||
// 170
|
||||
"Unheimlich!", //Creepy!
|
||||
"Zahnb\201rste", //Toothbrush
|
||||
"Die Sache mit der|Artus GmbH scheint dir zu|Kopf gestiegen zu sein.", //The thing with the|Artus GmbH seems to have|gotten to your head.
|
||||
"Zahnpastatube", //Toothpaste
|
||||
"Kugel", //Ball
|
||||
// 175
|
||||
"Hmm, die Kugel sieht lose aus.", //Hmm, the ball looks loose.
|
||||
"Auge", //Eye
|
||||
"Irgendwas stimmt damit nicht.", //Something is wrong with that.
|
||||
"Es ist nichts Besonderes daran.", //There's nothing special about it.
|
||||
"Sieht nach Metall aus.", //It looks like metal.
|
||||
// 180
|
||||
"Ein Taxi kommt angerauscht,|du steigst ein.", //A taxi arrives, and you get in.
|
||||
"Du dr\201ckst auf den Knopf, aber nichts passiert", //You press the button, but nothing happens
|
||||
"Es ist leer.", //It is empty.
|
||||
"Du findest ein kleines Ger\204t,|einen Ausweis und einen Xa.", //You find a small device,|an ID card and a Xa.
|
||||
"Du heftest den|Magnet an die Stange.", //You attach the|magnet to the pole.
|
||||
// 185
|
||||
"Stange mit Magnet", //Pole with magnet
|
||||
"Raffiniert!", //Cunning!
|
||||
"Du mu\341t das|Ger\204t erst kaufen.", //You must buy|this device first.
|
||||
"Du legst den Chip|in das Ger\204t ein.", //You insert the chip|into the device.
|
||||
"Du \201berspielst die CD|auf den Musikchip.", //You transfer the CD|to the Music chip.
|
||||
// 190
|
||||
"Ohne einen eingelegten|Musikchip kannst du auf dem|Ger\204t nichts aufnehmen.", //Without an inserted|music chip, you can not|record on the device.
|
||||
"Du nimmst den Chip|aus dem Ger\204t.", //You remove the chip|from the device.
|
||||
"Es ist kein Chip eingelegt.", //There is no chip inserted.
|
||||
"Wozu? Du hast sowieso nur die eine CD.", //What for? You only have one CD anyway.
|
||||
"Die \"Mad Monkeys\"-CD. Du hast|sie schon tausendmal geh\224rt.", //The "Mad Monkeys" CD.|You've heard them a thousand times.
|
||||
// 195
|
||||
"Du h\224rst nichts.|Der Chip ist unbespielt.", //All you hear is silence.|The chip is empty.
|
||||
"Du h\224rst dir den Anfang|der \201berspielten CD an.", //You are listening to the beginning|of the copied CD.
|
||||
"Es ist kein Chip einglegt.", //There is no chip inserted.
|
||||
"Du trinkst etwas von den Zeug, danach|f\201hlst du dich leicht beschwipst.", //You drink some of the stuff,|then begin to feel slightly tipsy.
|
||||
"%d Xa", //%d Xa
|
||||
// 200
|
||||
"Als du ebenfalls aussteigst haben|die anderen Passagiere das|Fluggel\204nde bereits verlassen.", //When you get off the plane|the other passengers|have already left the airport.
|
||||
"Flughafen", //Airport
|
||||
"Stadtzentrum", //Downtown
|
||||
"Kulturpalast", //Palace of Culture
|
||||
"Erde", //Earth
|
||||
// 205
|
||||
"Privatwohnung", //Private apartment
|
||||
"(Taxi verlassen)", //(Leave the taxi)
|
||||
"(Bezahlen)", //(Pay)
|
||||
"Adresse:| ", //Address:|
|
||||
"Fuddeln gilt nicht!|Zu diesem Zeitpunkt kannst du diese|Adresse noch gar nicht kennen!", //Fiddling with the system doesn't work!|At this time you can not|even know this address!
|
||||
// 210
|
||||
"Du hast nicht|mehr genug Geld.", //You do not|have enough money left.
|
||||
"Du merkst, da\341 das Taxi stark beschleunigt.", //You notice the taxi is accelerating rapidly.
|
||||
"F\201nf Minuten sp\204ter ...", //Five minutes later ...
|
||||
"Du hast doch schon eine Stange", //You already have a pole
|
||||
"Du s\204gst eine der Stangen ab.", //You saw off one of the poles.
|
||||
// 215
|
||||
"Du betrittst das einzige|offene Gesch\204ft, das|du finden kannst.", //You enter the only|open shop that|you can find.
|
||||
"Die Kabine ist besetzt.", //The cabin is occupied.
|
||||
"He, nimm erstmal das Geld|aus dem R\201ckgabeschlitz!", //Hey, take the money|from the return slot!
|
||||
"Du hast doch schon bezahlt.", //You have already paid.
|
||||
"Du hast nicht mehr genug Geld.", //You do not have enough money left.
|
||||
// 220
|
||||
"Du wirfst 10 Xa in den Schlitz.", //You put 10 Xa in the slot.
|
||||
"Dir wird schwarz vor Augen.", //You are about to pass out.
|
||||
"Du ruhst dich eine Weile aus.", //You rest for a while.
|
||||
"An der Wand steht:|\"Ich kenne eine tolle Geheimschrift:|A=Z, B=Y, C=X ...|0=0, 1=9, 2=8 ...\"", //On the Wall is:|"I know a great cypher:|A=Z, B=Y, C=X ...|0=0, 1=9, 2=8 ..."
|
||||
"Ok, ich nehme es.", //OK, I'll take it.
|
||||
// 225
|
||||
"Nein danke, das ist mir zu teuer.", //No thanks, that's too expensive for me.
|
||||
"Ich w\201rde gern etwas kaufen.", //I would like to buy something.
|
||||
"Ich bin's, Horst Hummel.", //It's me, Horst Hummel.
|
||||
"Haben Sie auch einen Musikchip f\201r das Ger\204t?", //Do you have a music chip for the device?
|
||||
"Eine tolle Maske, nicht wahr?", //It's a great mask, right?
|
||||
// 230
|
||||
"Komisch, da\341 sie schon drei Jahre da steht.", //Strange that it has been there for three years.
|
||||
"Ein starker Trunk. Zieht ganz sch\224n rein.", //A strong drink. It hits you pretty hard.
|
||||
"Ein Abspiel- und Aufnahmeger\204t f\201r die neuen Musikchips.", //A playback and recording device for the new music chips.
|
||||
"Eine ARTUS-Zahnb\201rste. Der letzte Schrei.", //An ARTUS toothbrush. The latest craze.
|
||||
"Verkaufe ich massenhaft, die Dinger.", //I sell these things in bulk.
|
||||
// 235
|
||||
"Das sind echte Rarit\204ten. B\201cher in gebundener Form.", //These are real rarities. Books in bound form.
|
||||
"Die Encyclopedia Axacussana.", //The Encyclopedia Axacussana.
|
||||
"Das gr\224\341te erh\204ltliche Lexikon auf 30 Speicherchips.", //The largest available dictionary on 30 memory chips.
|
||||
"\232ber 400 Trilliarden Stichw\224rter.", //Over 400 sextillion keywords.
|
||||
"Die ist nicht zu verkaufen.", //It is not for sale.
|
||||
// 240
|
||||
"So eine habe ich meinem Enkel zum Geburtstag geschenkt.", //I gave one to my grandson for his birthday.
|
||||
"Er war begeistert von dem Ding.", //He was excited about this thing.
|
||||
"Der stammt aus einem bekannten Computerspiel.", //It comes from a well-known computer game.
|
||||
"Robust, handlich und stromsparend.", //Sturdy, handy and energy-saving.
|
||||
"Irgendein lasches Ges\224ff.", //Some cheap swill.
|
||||
// 245
|
||||
"Das sind Protestaufkleber gegen die hohen Taxigeb\201hren.", //These are stickers protesting the high taxi fees.
|
||||
"Das ist Geschirr aus der neuen Umbina-Kollektion.", //These are dishes from the new Umbina-Collection.
|
||||
"H\204\341lich, nicht wahr?", //Ugly, right?
|
||||
"Aber verkaufen tut sich das Zeug gut.", //But this stuff sells well.
|
||||
"Das kostet %d Xa.", //That costs %d Xa.
|
||||
// 250
|
||||
"Schauen Sie sich ruhig um!", //Take a look around!
|
||||
"Unsinn!", //Nonsense!
|
||||
"Tut mir leid, die sind|schon alle ausverkauft.", //I'm very sorry,|they are already sold out.
|
||||
"Guten Abend.", //Good evening.
|
||||
"Hallo.", //Hello.
|
||||
// 255
|
||||
"Huch, Sie haben mich aber erschreckt!", //Yikes, you scared me!
|
||||
"Wieso?", //How so?
|
||||
"Ihre Verkleidung ist wirklich t\204uschend echt.", //Your disguise is deceptively real-looking.
|
||||
"Welche Verkleidung?", //What disguise?
|
||||
"Na, tun Sie nicht so!", //Stop pretending you don't know!
|
||||
// 260
|
||||
"Sie haben sich verkleidet wie der Au\341erirdische,|dieser Horst Hummel, oder wie er hei\341t.", //You disguised yourself as that extraterrestrial guy,|Horst Hummel, or whatever his name is.
|
||||
"Ich BIN Horst Hummel!", //I AM Horst Hummel!
|
||||
"Geben Sie's auf!", //Give it up!
|
||||
"An Ihrer Gestik merkt man, da\341 Sie|ein verkleideter Axacussaner sind.", //You can tell from your gestures that you are|a disguised Axacussan.
|
||||
"Der echte Hummel bewegt sich|anders, irgendwie ruckartig.", //The real Hummel moves|differently, kind of jerky.
|
||||
// 265
|
||||
"Weil er ein Roboter ist! ICH bin der Echte!", //Because he is a robot! I am the real one!
|
||||
"Ach, Sie spinnen ja!", //Oh, you are crazy!
|
||||
"Sie Trottel!!!", //You Idiot!!!
|
||||
"Seien Sie still, oder ich werfe Sie raus!", //Shut up or I'll kick you out!
|
||||
"Taschenmesser", //Pocket knife
|
||||
// 270
|
||||
"Hey, da ist sogar eine S\204ge dran.", //Hey, there's even a saw on it.
|
||||
"20 Xa", //20 Xa
|
||||
"Discman", //Discman
|
||||
"Da ist noch die \"Mad Monkeys\"-CD drin.", //The "Mad Monkeys" CD is still in there.
|
||||
"Mit dem Ding sollst du dich|an der Wand festhalten.", //You should hold onto the wall|using that thing.
|
||||
// 275
|
||||
"Spezialkeycard", //Special keycard
|
||||
"Damit sollst du die|T\201ren knacken k\224nnen.", //With that you should be able to crack the doors.
|
||||
"Alarmknacker", //Alarm cracker
|
||||
"Ein kleines Ger\204t, um|die Alarmanlage auszuschalten.", //A small device|to turn off the alarm.
|
||||
"Karte", //Keycard
|
||||
// 280
|
||||
"Raumschiff", //Spaceship
|
||||
"Damit bist du hierhergekommen.", //You came here with it.
|
||||
"Fahrzeuge", //Vehicles
|
||||
"Du kannst von hier aus nicht erkennen,|was das f\201r Fahrzeuge sind.", //You cannot tell from here|what those vehicles are.
|
||||
"Fahrzeug", //Vehicle
|
||||
// 285
|
||||
"Es scheint ein Taxi zu sein.", //It seems to be a taxi.
|
||||
"Komisch, er ist verschlossen.", //Funny, it is closed.
|
||||
"Portemonnaie", //Wallet
|
||||
"Das mu\341 ein Axacussaner|hier verloren haben.", //This must have been|lost by an Axacussan.
|
||||
"Ger\204t", //Device
|
||||
// 290
|
||||
"Auf dem Ger\204t steht: \"Taxi-Call\".|Es ist ein kleiner Knopf daran.", //The device says "Taxi Call."|There is a small button on it.
|
||||
"Ausweis", //ID card
|
||||
"Auf dem Ausweis steht:| Berta Tschell| Axacuss City| 115AY2,96A,32", //On the card it reads: | Berta Tschell | Axacuss City | 115AY2,96A,32
|
||||
"Treppe", //Staircase
|
||||
"Sie f\201hrt zu den Gesch\204ften.", //It leads to the shops.
|
||||
// 295
|
||||
"Gesch\204ftsstra\341e im Hintergrund", //Business street in the background
|
||||
"Die Stra\341e scheint kein Ende zu haben.", //The road seems to have no end.
|
||||
"Stange", //Rod
|
||||
"Pfosten", //Post
|
||||
"Gel\204nder", //Railing
|
||||
// 300
|
||||
"Plakat", //Poster
|
||||
"Musik Pur - Der Musikwettbewerb!|Heute im Kulturpalast|Hauptpreis:|Fernsehauftritt mit Horst Hummel|Sponsored by Artus GmbH", //Pure Music - The Music Competition!|Today at the Palace of Culture|Main Prize:|Television appearance with Horst Hummel|Sponsored by Artus GmbH
|
||||
"Kabine", //Cabin
|
||||
"Sie ist frei!", //It is free!
|
||||
"Sie ist besetzt.", //It is occupied.
|
||||
// 305
|
||||
"F\201\341e", //Feet
|
||||
"Komisch, die|F\201\341e scheinen|erstarrt zu sein.", //Strange, the|feet seem to be frozen.
|
||||
"Haube", //Hood
|
||||
"Sieht aus wie beim Fris\224r.", //Looks like the hairdresser.
|
||||
"400 Xa", //400 Xa
|
||||
// 310
|
||||
"10 Xa", //10 Xa
|
||||
"Dar\201ber steht:|\"Geldeinwurf: 10 Xa\".", //It says:|"Coins: 10 Xa".
|
||||
"Dar\201ber steht:|\"Gewinnausgabe / Geldr\201ckgabe\".", //It says:|"Prize / Money Return".
|
||||
"Stuhl", //Chair
|
||||
"Etwas Entspannung k\224nntest du jetzt gebrauchen.", //You could use some relaxation right about now.
|
||||
// 315
|
||||
"Gekritzel", //Scribble
|
||||
"Gesicht", //Face
|
||||
"Nicht zu fassen! Die|W\204nde sind genauso beschmutzt|wie auf der Erde.", //Unbelievable! The walls|are just as dirty|as those on Earth.
|
||||
"B\201cher", //Books
|
||||
"Lexikon", //Dictionary
|
||||
// 320
|
||||
"Pflanze", //Plant
|
||||
"Maske", //Mask
|
||||
"Schlange", //Snake
|
||||
"Becher", //Cup
|
||||
"Joystick", //Joystick
|
||||
// 325
|
||||
"Eine normale Zahnb\201rste,|es steht nur \"Artus\" darauf.", //An ordinary toothbrush.|It says "Artus" on it.
|
||||
"Musikger\204t", //Music device
|
||||
"Ein Ger\204t zum Abspielen und|Aufnehmen von Musikchips.|Es ist ein Mikrofon daran.", //A device for playing and recording music chips.|There is a microphone on it.
|
||||
"Flasche", //Bottle
|
||||
"Auf dem Etikett steht:|\"Enth\204lt 10% Hyperalkohol\".", //The label says: "Contains 10% hyperalcohol".
|
||||
// 330
|
||||
"Kiste", //Box
|
||||
"Verk\204ufer", //Seller
|
||||
"Was? Daf\201r wollen Sie die Karte haben?", //What? Do you want the card for that?
|
||||
"Sie sind wohl nicht ganz \201ber|die aktuellen Preise informiert!", //You are probably not completely|informed about the current prices!
|
||||
"Ich bin's, Horst Hummel!", //It's me, Horst Hummel!
|
||||
// 335
|
||||
"Sch\224nes Wetter heute!", //Nice weather today!
|
||||
"K\224nnen Sie mir sagen, von wem ich eine Eintrittskarte f\201r den Musikwettbewerb kriegen kann?", //Can you tell me who can get me a ticket for the music contest?
|
||||
"Ok, hier haben Sie den Xa.", //OK, here is the Xa.
|
||||
"Ich biete Ihnen 500 Xa.", //I offer you 500 Xa.
|
||||
"Ich biete Ihnen 1000 Xa.", //I offer you 1000 Xa.
|
||||
// 340
|
||||
"Ich biete Ihnen 5000 Xa.", //I offer you 5000 Xa.
|
||||
"Ich biete Ihnen 10000 Xa.", //I offer you 10000 Xa.
|
||||
"Vielen Dank f\201r Ihren Kauf!", //Thank you for your purchase!
|
||||
"Was bieten Sie mir|denn nun f\201r die Karte?", //What will you offer me|for the card?
|
||||
"Hallo, Sie!", //Hello to you!
|
||||
// 345
|
||||
"Was wollen Sie?", //What do you want?
|
||||
"Wer sind Sie?", //Who are you?
|
||||
"Horst Hummel!", //Horst Hummel!
|
||||
"Kenne ich nicht.", //Never heard of him.
|
||||
"Was, Sie kennen den ber\201hmten Horst Hummel nicht?", //What, you don't know the famous Horst Hummel?
|
||||
// 350
|
||||
"Ich bin doch der, der immer im Fernsehen zu sehen ist.", //I'm the guy who is always on TV.
|
||||
"Ich kenne Sie wirklich nicht.", //I really do not know you.
|
||||
"Komisch.", //Funny.
|
||||
"Aha.", //Aha.
|
||||
"Ja, kann ich.", //Yes, I can.
|
||||
// 355
|
||||
"Von wem denn?", //From whom?
|
||||
"Diese Information kostet einen Xa.", //This information costs a Xa.
|
||||
"Wie Sie meinen.", //As you say.
|
||||
"Sie k\224nnen die Karte von MIR bekommen!", //You can get the card from ME!
|
||||
"Aber nur eine Teilnahmekarte,|keine Eintrittskarte.", //But only a participation ticket,|not an entrance ticket.
|
||||
// 360
|
||||
"Was wollen Sie daf\201r haben?", //What do you want for it?
|
||||
"Machen Sie ein Angebot!", //Make an offer!
|
||||
"Das ist ein gutes Angebot!", //That's a good offer!
|
||||
"Daf\201r gebe ich Ihnen meine|letzte Teilnahmekarte!", //For that I give you my|last participation card!
|
||||
"(Dieser Trottel!)", //(That Idiot!)
|
||||
// 365
|
||||
"Ich w\201rde gern beim Musikwettbewerb zuschauen.", //I would like to watch the music competition.
|
||||
"Ich w\201rde gern am Musikwettbewerb teilnehmen.", //I would like to participate in the music competition.
|
||||
"Wieviel Uhr haben wir?", //What time is it?
|
||||
"Ja.", //Yes.
|
||||
"Nein.", //No.
|
||||
// 370
|
||||
"Hallo, Leute!", //Hi guys!
|
||||
"Hi, Fans!", //Hi, fans!
|
||||
"Gute Nacht!", //Good night!
|
||||
"\216h, wie geht es euch?", //Uh, how are you?
|
||||
"Sch\224nes Wetter heute.", //Nice weather today.
|
||||
// 375
|
||||
"Hmm ...", //Hmm ...
|
||||
"Tja ...", //Well ...
|
||||
"Also ...", //So ...
|
||||
"Ok, los gehts!", //OK let's go!
|
||||
"Ich klimper mal was auf dem Keyboard hier.", //I'll fix something on the keyboard here.
|
||||
// 380
|
||||
"Halt, sie sind doch schon drangewesen!", //Stop, you have already been on it!
|
||||
"He, Sie! Haben Sie|eine Eintrittskarte?", //Hey, you! Do you have|a ticket?
|
||||
"Ja nat\201rlich, hier ist meine Teilnahmekarte.", //Yes of course, here is my participation ticket.
|
||||
"Sie sind Teilnehmer! Fragen|Sie bitte an der Kasse nach,|wann Sie auftreten k\224nnen.", //You are a participant!|Please ask at the checkout|when you can go on stage.
|
||||
"\216h, nein.", //Uh, no.
|
||||
// 385
|
||||
"He, wo ist Ihr Musikchip?", //Hey, where's your music chip?
|
||||
"Laber nicht!", //Stop talking!
|
||||
"Fang an!", //Get started!
|
||||
"Einen Moment, ich mu\341 erstmal \201berlegen, was ich|euch spiele.", //One moment, I have to think about what I'm playing for you.
|
||||
"Anfangen!!!", //Begin!!!
|
||||
// 390
|
||||
"Nun denn ...", //Well then ...
|
||||
"Raus!", //Out!
|
||||
"Buh!", //Boo!
|
||||
"Aufh\224ren!", //Stop!
|
||||
"Hilfe!", //Help!
|
||||
// 395
|
||||
"Ich verziehe mich lieber.", //I'd prefer to get lost.
|
||||
"Mist, auf dem Chip war|gar keine Musik drauf.", //Damn, there was no music on the chip at all.
|
||||
"Das ging ja voll daneben!", //That went completely wrong!
|
||||
"Du n\204herst dich der B\201hne,|aber dir wird mulmig zumute.", //You approach the stage,|but you feel queasy.
|
||||
"Du traust dich nicht, vor|so vielen Menschen aufzutreten|und kehrst wieder um.", //You do not dare to appear|in front of so many people|and turn around.
|
||||
// 400
|
||||
"Oh, Sie sind Teilnehmer!|Dann sind Sie aber sp\204t dran.", //Oh, you are a participant!|But you are late.
|
||||
"Spielen Sie die Musik live?", //Do you play the music live?
|
||||
"Dann geben Sie bitte Ihren Musikchip ab!|Er wird bei Ihrem Auftritt abgespielt.", //Then please submit your music chip!|It will be played during your performance.
|
||||
"Oh, Sie sind sofort an der Reihe!|Beeilen Sie sich! Der B\201hneneingang|ist hinter dem Haupteingang rechts.", //Oh, it's your turn!|Hurry! The stage entrance|is to the right behind the main entrance.
|
||||
"Habe ich noch einen zweiten Versuch?", //Can I have another try?
|
||||
// 405
|
||||
"Nein!", //No!
|
||||
"Haben Sie schon eine Eintrittskarte?", //Do you already have a ticket?
|
||||
"Tut mir leid, die Karten|sind schon alle ausverkauft.", //I'm sorry, the tickets|are already sold out.
|
||||
"Mist!", //Crap!
|
||||
"Haben Sie schon eine Teilnahmekarte?", //Do you already have a participation ticket?
|
||||
// 410
|
||||
"Ja, hier ist sie.", //Yes, here it is.
|
||||
"Tut mir leid, die Teilnahmekarten|sind schon alle ausverkauft.", //I'm sorry, the participation tickets|are already sold out.
|
||||
"Schei\341e!", //Crap!
|
||||
"Das kann ich Ihnen|leider nicht sagen.", //I can not tell you that.
|
||||
"Wo ist denn nun Ihr Musikchip?", //Where is your music chip?
|
||||
// 415
|
||||
"Jetzt beeilen Sie sich doch!", //Now hurry up!
|
||||
"Huch, Sie sind hier bei einem Musik-,|nicht bei einem Imitationswettbewerb", //Huh, you're here at a music contest,|not at an imitation contest
|
||||
"Imitationswettbewerb?|Ich will niemanden imitieren.", //Imitation contest?|I do not want to imitate anyone.
|
||||
"Guter Witz, wieso sehen Sie|dann aus wie Horst Hummel?", //Good joke. Then why do you look like Horst Hummel?
|
||||
"Na, nun h\224ren Sie auf! So perfekt ist|ihre Verkleidung auch wieder nicht.", //Oh come on! Your disguise isn't that perfect.
|
||||
// 420
|
||||
"Ich werde Ihnen beweisen, da\341 ich Horst Hummel bin,|indem ich diesen Wettbewerb hier gewinne.", //I will prove to you that I am Horst Hummel|by winning this competition.
|
||||
"Dann kann ich in dieser verdammten Fernsehshow|auftreten.", //Then I can perform in this|damn TV show.
|
||||
"Du hampelst ein bi\341chen zu|der Musik vom Chip herum.|Die Leute sind begeistert!", //You're rocking a little bit|to the music from the chip.|The audience is excited!
|
||||
"Guten Abend. Diesmal haben wir|einen besonderen Gast bei uns.", //Good evening. This time we have|a special guest with us.
|
||||
"Es ist der Gewinner des gestrigen|Musikwettbewerbs im Kulturpalast,|der dort vor allem durch seine|Verkleidung aufgefallen war.", //He is the winner of yesterday's music competition in the Palace of Culture.|He was particularly noteworthy|because of his disguise.
|
||||
// 425
|
||||
"Sie haben das Wort!", //You have the floor!
|
||||
"Nun ja, meine erste Frage lautet: ...", //Well, my first question is ...
|
||||
"Warum haben Sie sich sofort nach|Ihrer Landung entschlossen, f\201r|die Artus-GmbH zu arbeiten?", //Why did you decide immediately|after your arrival to work for|Artus GmbH?
|
||||
"Es war meine freie Entscheidung.|Die Artus-GmbH hat mir einfach gefallen.", //It was a decision I made on my own.|I just decided I liked Artus-GmbH.
|
||||
"Wieso betonen Sie, da\341 es|Ihre freie Entscheidung war?|Haben Sie Angst, da\341 man Ihnen|nicht glaubt?", //Why do you stress that|it was your own decision?|Are you afraid that nobody will believe you otherwise?
|
||||
// 430
|
||||
"Also, ich mu\341 doch sehr bitten!|Was soll diese unsinnige Frage?", //How dare you!|What is with this nonsensical question?
|
||||
"Ich finde die Frage wichtig.|Nun, Herr Hummel, was haben|Sie dazu zu sagen?", //I think the question is important.|Well, Mr. Hummel, what do you have to say?
|
||||
"Auf solch eine Frage brauche|ich nicht zu antworten!", //I don't feel that I have|to answer such a question!
|
||||
"Gut, dann etwas anderes ...", //Alright, something else then ...
|
||||
"Sie sind von Beruf Koch.|Wie hie\341 das Restaurant,|in dem Sie auf der Erde|gearbeitet haben?", //You are a chef by profession.|What was the name of the restaurant|where you worked|on Earth?
|
||||
// 435
|
||||
"Hmm, da\341 wei\341 ich nicht mehr.", //Hmm, I do not remember that.
|
||||
"Sie wollen mir doch nicht weismachen,|da\341 Sie den Namen vergessen haben!", //Do you really expect me to believe you cannot remember the name?
|
||||
"Schlie\341lich haben Sie|zehn Jahre dort gearbeitet!", //After all, you worked there for ten years!
|
||||
"Woher wollen Sie das wissen?", //How do you know that?
|
||||
"Nun, ich komme von der Erde,|im Gegensatz zu Ihnen!", //Well, I come from Earth,|unlike you!
|
||||
// 440
|
||||
"Langsam gehen Sie zu weit!", //Now you've gone too far!
|
||||
"Sie sind ein Roboter!|Das merkt man schon an|Ihrer dummen Antwort!|Sie sind nicht optimal|programmiert!", //You are a robot!|It is obvious from|your stupid answer!|You are not even programmed|correctly!
|
||||
"Wenn Sie jetzt nicht mit Ihren|Beleidigungen aufh\224ren, mu\341 ich|Ihnen das Mikrofon abschalten!", //If you do not stop right now|with your insults, I will have|to turn off the microphone!
|
||||
"Ich bin der echte Horst Hummel,|und hier ist der Beweis!", //I am the real Horst Hummel,|and here is the proof!
|
||||
"Am n\204chsten Morgen sind alle|Zeitungen voll mit deiner spektakul\204ren|Enth\201llung des Schwindels.", //The next morning, all the papers|are full of your spectacular|revelation of fraud.
|
||||
// 445
|
||||
"Die Manager der Artus-GmbH und Commander|Sumoti wurden sofort verhaftet.", //The managers of Artus-GmbH and Commander|Sumoti were arrested immediately.
|
||||
"Nach dem Stre\341 der letzten Tage,|entscheidest du dich, auf die|Erde zur\201ckzukehren.", //After these stressful last few days|you decide to return to Earth.
|
||||
"W\204hrend du dich vor Interviews|kaum noch retten kannst, ...", //While you can barely save|yourself from interviews, ...
|
||||
"... arbeiten die Axacussanischen|Techniker an einem Raumschiff,|das dich zur Erde zur\201ckbringen soll.", //... the Axacussan|technicians are working on a spaceship|to bring you back to Earth.
|
||||
"Eine Woche sp\204ter ist der|Tag des Starts gekommen.", //One week later, the day of the launch has arrived.
|
||||
// 450
|
||||
"Zum dritten Mal in deinem|Leben verbringst du eine lange|Zeit im Tiefschlaf.", //For the third time in your life,|you spend a long time|in deep sleep.
|
||||
"Zehn Jahre sp\204ter ...", //Ten years later ...
|
||||
"Du wachst auf und beginnst,|dich schwach an deine|Erlebnisse zu erinnern.", //You wake up and begin|to faintly remember|your experiences.
|
||||
"Um dich herum ist alles dunkel.", //Everything is dark around you.
|
||||
"Sie zeigt %d an.", //It displays %d.
|
||||
// 455
|
||||
"Ich interessiere mich f\201r den Job, bei dem man \201ber Nacht", //I'm interested in the job where you can get
|
||||
"reich werden kann.", //rich overnight.
|
||||
"Ich verkaufe frische Tomaten.", //I sell fresh tomatoes.
|
||||
"Ich bin der Klempner. Ich soll hier ein Rohr reparieren.", //I am the plumber. I'm supposed to fix a pipe here.
|
||||
"Ja, h\224rt sich gut an.", //Yes, it sounds good.
|
||||
// 460
|
||||
"Krumme Gesch\204fte? F\201r wen halten Sie mich? Auf Wiedersehen!", //Crooked business? Who do you think I am? Goodbye!
|
||||
"\216h - k\224nnten Sie mir das Ganze nochmal erkl\204ren?", //Uh - could you explain that to me again?
|
||||
"Wie gro\341 ist mein Anteil?", //How big is my share?
|
||||
"Machen Sie es immer so, da\341 Sie Ihre Komplizen \201ber ein Graffitti anwerben?", //Do you always use graffiti to recruit your accomplices?
|
||||
"Hmm, Moment mal, ich frage den Boss.", //Hmm wait, I will ask the boss.
|
||||
// 465
|
||||
"Kurze Zeit sp\204ter ...", //A short while later ...
|
||||
"Ok, der Boss will dich sprechen.", //OK, the boss wants to talk to you.
|
||||
"Du betrittst die Wohnung und|wirst zu einem Tisch gef\201hrt.", //You enter the apartment and are led to a table.
|
||||
"Hmm, du willst dir also|etwas Geld verdienen?", //Hmm, so you want to earn some money?
|
||||
"Nun ja, wir planen|einen n\204chtlichen Besuch|eines bekannten Museums.", //Well, we're planning|a nightly visit|to a well-known museum.
|
||||
// 470
|
||||
"Wie sieht's aus, bist du interessiert?", //So, are you interested?
|
||||
"Halt, warte!", //Stop, wait!
|
||||
"\232berleg's dir, es springen|30000 Xa f\201r dich raus!", //Think about it, your share would be|30000 Xa!
|
||||
"30000?! Ok, ich mache mit.", //30000?! Alright, count me in.
|
||||
"Gut, dann zu den Einzelheiten.", //Good, now then to the details.
|
||||
// 475
|
||||
"Bei dem Museum handelt es|sich um das Orzeng-Museum.", //The museum in question is|the Orzeng Museum.
|
||||
"Es enth\204lt die wertvollsten|Dinosaurierfunde von ganz Axacuss.", //It contains the most valuable|dinosaur discoveries of Axacuss.
|
||||
"Wir haben es auf das Sodo-Skelett|abgesehen. Es ist weltber\201hmt.", //We're aiming to get the Sodo skeleton.|It is world-famous.
|
||||
"Alle bekannten Pal\204ontologen haben|sich schon damit besch\204ftigt.", //All known paleontologists|have already dealt with it.
|
||||
"Der Grund daf\201r ist, da\341 es allen|bis jetzt bekannten Erkenntnissen|\232ber die Evolution widerspricht.", //The reason for this is that it contradicts all known|knowledge about evolution.
|
||||
// 480
|
||||
"Irgendein verr\201ckter Forscher|bietet uns 200.000 Xa,|wenn wir ihm das Ding beschaffen.", //Some crazy researcher|will give us 200,000 Xa|if we retrieve that thing for him.
|
||||
"So, jetzt zu deiner Aufgabe:", //So, now to your task:
|
||||
"Du dringst durch den Nebeneingang|in das Geb\204ude ein.", //You enter the building through|the side entrance.
|
||||
"Dort schaltest du die Alarmanlage aus,|durch die das Sodo-Skelett gesichert wird.", //There you switch off the alarm system,|which secures the Sodo skeleton.
|
||||
"Wir betreten einen anderen Geb\204udeteil|und holen uns das Gerippe.", //We'll enter another part of the building|and fetch the skeleton.
|
||||
// 485
|
||||
"Deine Aufgabe ist nicht leicht.|Schau dir diesen Plan an.", //Your task is not easy.|Look at this plan.
|
||||
"Unten siehst du die kleine Abstellkammer,|durch die du in die Austellungsr\204ume kommst.", //Below you can see the small storage room,|through which you come to the showrooms.
|
||||
"Bei der mit Y gekennzeichneten|Stelle ist die Alarmanlage.", //The alarm system is at the location marked Y.
|
||||
"Bei dem X steht ein gro\341er Dinosaurier|mit einem wertvollen Sch\204del.|Den Sch\204del nimmst du mit.", //The X marks the spot with a big dinosaur|with a valuable skull.|You will take the skull with you.
|
||||
"Nun zu den Problemen:", //Now for the problems:
|
||||
// 490
|
||||
"Die wei\341 gekennzeichneten|T\201ren sind verschlossen.", //The marked white doors|are locked.
|
||||
"Sie m\201ssen mit einer Spezialkeycard ge\224ffnet|werden, was jedoch einige Zeit dauert.", //They have to be opened with a special keycard,|which can take a while.
|
||||
"Au\341erdem gibt es in den auf der Karte|farbigen R\204umen einen Druck-Alarm.", //In addition, there are pressure alarms|in the rooms which are colored on the map.
|
||||
"Du darfst dich dort nicht l\204nger|als 16 bzw. 8 Sekunden aufhalten,|sonst wird Alarm ausgel\224st.", //You can not stay there longer than|16 or 8 seconds,|or the alarm will go off.
|
||||
"Im Raum oben rechts ist|eine Kamera installiert.", //In the room at the top right|there is a camera installed.
|
||||
// 495
|
||||
"Diese wird jedoch nur von|der 21. bis zur 40. Sekunde|einer Minute \201berwacht.", //However, it is only monitored|between the 21st and the 40th second|of every minute.
|
||||
"Das gr\224\341te Problem ist der W\204chter.", //The biggest problem is the guard.
|
||||
"Er braucht f\201r seine Runde genau|eine Minute, ist also ungef\204hr|zehn Sekunden in einem Raum.", //He needs exactly one minute for his round,|so he is in each room|for about ten seconds.
|
||||
"Du m\201\341test seine Schritte h\224ren k\224nnen,|wenn du in der Abstellkammer bist|und der W\204chter dort vorbeikommt.", //You should be able to hear his footsteps|if you are in the closet|and the guard passes by.
|
||||
"Wenn du es bis zur Alarmanlage|geschafft hast, h\204ngst du dich|mit dem Sauger an die Wand,|damit du keinen Druck-Alarm ausl\224st.", //If you make it to the alarm system,|you'll use the sucker to hang on the wall|to avoid triggering the pressure alarm.
|
||||
// 500
|
||||
"Die Alarmanlage schaltest du|mit einem speziellen Ger\204t aus.", //You switch off the alarm system|with a special device.
|
||||
"Wenn du das geschafft hast, nichts|wie raus! Aber keine Panik,|du darfst keinen Alarm ausl\224sen.", //Once you're done, get out of there!|But do not panic!|You must not set off the alarm.
|
||||
"So, noch irgendwelche Fragen?", //So, any more questions?
|
||||
"Also gut.", //All right then.
|
||||
"Du bekommst 30000 Xa.", //You get 30,000 Xa.
|
||||
// 505
|
||||
"Ja, die Methode hat sich bew\204hrt.", //Yes, that method has proven itself worthy.
|
||||
"Hast du sonst noch Fragen?", //Do you have any questions?
|
||||
"Nachdem wir alles gekl\204rt|haben, kann es ja losgehen!", //Now that we are on the same page we can get started!
|
||||
"Zur vereinbarten Zeit ...", //At the agreed upon time ...
|
||||
"Du stehst vor dem Orzeng Museum,|w\204hrend die Gangster schon in einen|anderen Geb\204uderteil eingedrungen sind.", //You stand in front of the Orzeng Museum,|while the gangsters have already penetrated|into another part of the building.
|
||||
// 510
|
||||
"Wichtiger Hinweis:|Hier ist die letzte M\224glichkeit,|vor dem Einbruch abzuspeichern.", //Important note:|Here is the last possibility to save|before the break-in.
|
||||
"Wenn Sie das Museum betreten haben,|k\224nnen Sie nicht mehr speichern!", //Once you enter the museum|you will not be able to save!
|
||||
"Stecken Sie sich Ihre|Tomaten an den Hut!", //You can keep your tomatoes!
|
||||
"Das kann ja jeder sagen!", //Anyone can say that!
|
||||
"Niemand \224ffnet.", //Nobody answers.
|
||||
// 515
|
||||
"Welche Zahl willst du eingeben: ", //What number do you want to enter:
|
||||
"Falsche Eingabe", //Invalid input
|
||||
"Der Aufzug bewegt sich.", //The elevator is moving.
|
||||
"Die Karte wird|nicht angenommen.", //The card|is not accepted.
|
||||
"Da ist nichts mehr.", //There is nothing left.
|
||||
// 520
|
||||
"Da ist ein Schl\201ssel unter dem Bett!", //There's a key under the bed!
|
||||
"Hey, da ist etwas unter dem|Bett. Nach dem Ger\204usch zu|urteilen, ist es aus Metall.", //Hey, there is something under the|bed. Judging by the noise,|it is made of metal.
|
||||
"Mist, es gelingt dir nicht,|den Gegenstand hervorzuholen.", //Damn, you do not succeed in getting the object out.
|
||||
"Die Klappe ist schon offen.", //The flap is already open.
|
||||
"Der Schl\201sssel pa\341t nicht.", //The key does not fit.
|
||||
// 525
|
||||
"Du steckst den Chip in die|Anlage, aber es passiert nichts.|Die Anlage scheint kaputt zu sein.", //You put the chip in the stereo,|but nothing happens.|The stereo seems to be broken.
|
||||
"Es passiert nichts. Das Ding|scheint kaputt zu sein.", //Nothing happens. The thing|seems to be broken.
|
||||
"Hochspannung ist ungesund, wie du aus|Teil 1 eigentlich wissen m\201\341test!", //High voltage is unhealthy, as you|should already know|from Part 1!
|
||||
"Es h\204ngt ein Kabel heraus.", //A cable hangs out.
|
||||
"Irgendetwas hat hier|nicht ganz funktioniert.", //Something did not|quite work out here.
|
||||
// 530
|
||||
"Du ziehst den Raumanzug an.", //You put on your space suit.
|
||||
"Du ziehst den Raumanzug aus.", //You take off your space suit.
|
||||
"Das ist schon verbunden.", //That is already connected.
|
||||
"Die Leitung ist hier|schon ganz richtig.", //The cable is already|at the right place.
|
||||
"Roger W.! Wie kommen Sie denn hierher?", //Roger W.! How did you get here?
|
||||
// 535
|
||||
"Ach, sieh mal einer an! Sie schon wieder!", //Oh, look at that! It's you again!
|
||||
"Wo haben Sie denn|Ihr Schiff gelassen?", //Where did you|leave your ship?
|
||||
"Schauen Sie mal hinter mich auf|den Turm! Da oben h\204ngt es.", //Take a look behind me, up on|the tower! It's up there.
|
||||
"Ich hatte es scheinbar etwas zu|eilig, aber ich mu\341te unbedingt|zu den Dreharbeiten nach Xenon!", //Apparently I was too much in a hurry,|but I had to be at the film shooting in Xenon!
|
||||
"Mich wundert, da\341 es die Leute|hier so gelassen nehmen.", //I am surprised that people|here take things so calmly.
|
||||
// 540
|
||||
"Die tun gerade so, als ob der Turm|schon immer so schr\204g gestanden h\204tte!", //They are pretending that the tower|has always been that slanted!
|
||||
"Hat er auch, schon seit|mehreren Jahrhunderten!", //It has, for|several centuries, actually!
|
||||
"\216h ... ach so. Und von wo|kommen Sie? Sie hatten's ja|wohl auch ziemlich eilig.", //Uh ... I see. And where are you coming from? It seems you were in quite a hurry as well.
|
||||
"Ich komme von Axacuss.", //I come from Axacuss.
|
||||
"Hmm, was mach ich jetzt blo\341?", //Hmm, what am I going to do now?
|
||||
// 545
|
||||
"Ich kenne ein gutes Cafe nicht|weit von hier, da k\224nnen|wir uns erstmal erholen.", //I know a good cafe not far from here,|where we can get some rest.
|
||||
"Ok, einverstanden.", //OK, I agree.
|
||||
"Faszinierend!", //Fascinating!
|
||||
"Taxis", //Taxis
|
||||
"Hier ist ja richtig was los!", //There seems to be something really going on here!
|
||||
// 550
|
||||
"Axacussaner", //Axacussan
|
||||
"Teilnahmekarte", //Participation card
|
||||
"Axacussanerin", //Axacussian
|
||||
"Darauf steht:|\"115AY2,96A\"", //It reads:|"115AY2,96A"
|
||||
"Darauf steht:|\"115AY2,96B\"", //It reads:|"115AY2,96B"
|
||||
// 555
|
||||
"Darauf steht:|\"341,105A\"", //It reads:|"341,105A"
|
||||
"Darauf steht:|\"341,105B\"", //It reads:|"341,105B"
|
||||
"Klingel", //Bell
|
||||
"Anzeige", //Display
|
||||
"Tastenblock", //Keypad
|
||||
// 560
|
||||
"Es sind Tasten von 0 bis 9 darauf.", //There are keys from 0 to 9 on it.
|
||||
"Chip", //Chip
|
||||
"Es ist ein Musikchip!", //It's a music chip!
|
||||
"Klappe", //Hatch
|
||||
"Sie ist mit einem altmodischen|Schlo\341 verschlossen.", //It is secured with an old-fashioned lock.
|
||||
// 565
|
||||
"Musikanlage", //Music system
|
||||
"Toll, eine in die Wand|integrierte Stereoanlage.", //Great, a built-in stereo|in the wall.
|
||||
"Boxen", //Speakers
|
||||
"Ganz normale Boxen.", //Ordinary speakers.
|
||||
"Stifte", //Pencils
|
||||
// 570
|
||||
"Ganz normale Stifte.", //Ordinary pencils.
|
||||
"Metallkl\224tzchen", //Metal blocks
|
||||
"Es ist magnetisch.", //It is magnetic.
|
||||
"Bild", //Image
|
||||
"Ein ungew\224hnliches Bild.", //An unusual picture.
|
||||
// 575
|
||||
"Schrank", //Cabinet
|
||||
"Er ist verschlossen", //It is closed
|
||||
"Aufzug", //Elevator
|
||||
"unter Bett", //under bed
|
||||
"Unter dem Bett sind bestimmt wichtige|Dinge zu finden, nur kommst du nicht darunter.|Du br\204uchtest einen Stock oder so etwas.", //Under the bed are certainly important|things to find, only you cannot reach underneath.|You need a stick or something.
|
||||
// 580
|
||||
"Schl\201ssel", //Key
|
||||
"Ein kleiner Metallschl\201ssel.", //A small metal key.
|
||||
"Schalter", //Switch
|
||||
"Griff", //Handle
|
||||
"Luke", //Hatch
|
||||
// 585
|
||||
"Raumanzug", //Space suit
|
||||
"Ein zusammenfaltbarer Raumanzug.", //A collapsible spacesuit.
|
||||
"Leitung", //Cable
|
||||
"Irgendetwas scheint hier|kaputtgegangen zu sein.", //Something seems to|have broken here.
|
||||
"Sie h\204ngt lose von der Decke runter.", //It hangs loose from the ceiling.
|
||||
// 590
|
||||
"Zur Erinnerung:|Dir ist es gelungen, aus den|Artus-Geheimb\201ros zu fliehen.", //Reminder:|You managed to escape from the|Artus-GmbH secret offices.
|
||||
"Nun befindest du dich in|einem Passagierraumschiff,|das nach Axacuss City fliegt.", //Now you are in a passenger|spaceship that|flies to Axacuss City.
|
||||
"W\204hrend des Fluges schaust du dir|das axacussanische Fernsehprogramm an.|Du st\224\341t auf etwas Interessantes ...", //During the flight, you watch the|Axacussan TV program.|You come across something interesting ...
|
||||
"Herzlich willkommen!", //Welcome!
|
||||
"Heute zu Gast ist Alga Lorch.|Sie wird Fragen an den Erdling|Horst Hummel stellen.", //Alga Lorch will be present today.|She will ask questions to the Earthling|Horst Hummel.
|
||||
// 595
|
||||
"Horst wird alle Fragen|beantworten, soweit es|ihm m\224glich ist.", //Horst will answer all|questions as fully|as possible.
|
||||
"Sie haben das Wort, Frau Lorch!", //You have the floor, Mrs Lorch!
|
||||
"Herr Hummel, hier ist meine erste Frage: ...", //Mr. Hummel, here is my first question: ...
|
||||
"Sie sind nun ein ber\201hmter Mann auf Axacuss.|Aber sicher vermissen Sie auch Ihren Heimatplaneten.", //You are now a famous man on Axacuss.|But surely you miss your home planet.
|
||||
"Wenn Sie w\204hlen k\224nnten, w\201rden Sie lieber|ein normales Leben auf der Erde f\201hren,|oder finden Sie das Leben hier gut?", //If you could choose, would you prefer|to lead a normal life on Earth,|or do you find life here good?
|
||||
// 600
|
||||
"Ehrlich gesagt finde ich es sch\224n,|ber\201hmt zu sein. Das Leben ist|aufregender als auf der Erde.", //Honestly, I think it's nice to be|famous. Life is more exciting here|than on Earth.
|
||||
"Au\341erdem sind die Leute von der|Artus GmbH hervorragende Freunde.", //In addition, the people of|Artus GmbH are excellent friends.
|
||||
"Nun ja, planen Sie denn trotzdem,|irgendwann auf die Erde zur\201ckzukehren?", //Well, are you still planning|to return to Earth someday?
|
||||
"Das kann ich Ihnen zum jetzigen|Zeitpunkt noch nicht genau sagen.", //At this point in time,|I haven't made up my mind, yet.
|
||||
"Aber ich versichere Ihnen, ich|werde noch eine Weile hierbleiben.", //But I assure you,|I will stay here for a while.
|
||||
// 605
|
||||
"Aha, mich interessiert au\341erdem,|ob es hier auf Axacuss etwas gibt,|das Sie besonders m\224gen.", //I see. I'm also interested in|whether there's anything here on Axacuss that you particularly like.
|
||||
"Oh mir gef\204llt der ganze Planet,|aber das Beste hier sind die|hervorragenden Artus-Zahnb\201rsten!", //Oh I like the whole planet,|but the best thing here are the|extraordinary Artus toothbrushes!
|
||||
"Zahnb\201rsten von solcher Qualit\204t|gab es auf der Erde nicht.", //Toothbrushes of such quality|do not exist on Earth.
|
||||
"\216h, ach so.", //Um, I see.
|
||||
"Pl\224tzlich lenkt dich eine|Lautsprecherstimme vom Fernseher ab.", //Suddenly, a speaker's voice|distracts you from the television.
|
||||
// 610
|
||||
"\"Sehr geehrte Damen und Herren,|wir sind soeben auf dem Flughafen|von Axacuss City gelandet.\"", //"Ladies and Gentlemen,|We just landed at the airport|at Axacuss City."
|
||||
"\"Ich hoffe, Sie hatten einen angenehmen Flug.|Bitte verlassen Sie das Raumschiff! Auf Wiedersehen!\"", //"I hope you had a nice flight.|Please leave the spaceship! Goodbye!"
|
||||
"W\204hrend die anderen Passagiere|aussteigen, versuchst du,|den Schock zu verarbeiten.", //While the other passengers|are disembarking, you are trying|to handle the shock.
|
||||
"\"Ich mu\341 beweisen, da\341 dieser|Roboter der falsche Horst|Hummel ist!\", denkst du.", //"I have to prove that this robot|is the wrong Horst|Hummel!", you think to yourself.
|
||||
NULL
|
||||
};
|
||||
|
||||
#endif // GAMETEXT_H
|
12
devtools/create_supernova2/module.mk
Normal file
12
devtools/create_supernova2/module.mk
Normal file
@ -0,0 +1,12 @@
|
||||
MODULE := devtools/create_supernova2
|
||||
|
||||
MODULE_OBJS := \
|
||||
file.o \
|
||||
po_parser.o \
|
||||
create_supernova2.o
|
||||
|
||||
# Set the name of the executable
|
||||
TOOL_EXECUTABLE := create_supernova2
|
||||
|
||||
# Include common rules
|
||||
include $(srcdir)/rules.mk
|
221
devtools/create_supernova2/po_parser.cpp
Normal file
221
devtools/create_supernova2/po_parser.cpp
Normal file
@ -0,0 +1,221 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "po_parser.h"
|
||||
|
||||
PoMessageList::PoMessageList() : _list(NULL), _size(0), _allocated(0) {
|
||||
}
|
||||
|
||||
PoMessageList::~PoMessageList() {
|
||||
for (int i = 0; i < _size; ++i)
|
||||
delete _list[i];
|
||||
delete[] _list;
|
||||
}
|
||||
|
||||
int PoMessageList::compareString(const char* left, const char* right) {
|
||||
if (left == NULL && right == NULL)
|
||||
return 0;
|
||||
if (left == NULL)
|
||||
return -1;
|
||||
if (right == NULL)
|
||||
return 1;
|
||||
return strcmp(left, right);
|
||||
}
|
||||
|
||||
int PoMessageList::compareMessage(const char *msgLeft, const char *contextLeft, const char *msgRight, const char *contextRight) {
|
||||
int compare = compareString(msgLeft, msgRight);
|
||||
if (compare != 0)
|
||||
return compare;
|
||||
return compareString(contextLeft, contextRight);
|
||||
}
|
||||
|
||||
void PoMessageList::insert(const char *translation, const char *msg, const char *context) {
|
||||
if (msg == NULL || *msg == '\0' || translation == NULL || *translation == '\0')
|
||||
return;
|
||||
|
||||
// binary-search for the insertion index
|
||||
int leftIndex = 0;
|
||||
int rightIndex = _size - 1;
|
||||
while (rightIndex >= leftIndex) {
|
||||
int midIndex = (leftIndex + rightIndex) / 2;
|
||||
int compareResult = compareMessage(msg, context, _list[midIndex]->msgid, _list[midIndex]->msgctxt);
|
||||
if (compareResult == 0)
|
||||
return; // The message is already in this list
|
||||
else if (compareResult < 0)
|
||||
rightIndex = midIndex - 1;
|
||||
else
|
||||
leftIndex = midIndex + 1;
|
||||
}
|
||||
// We now have rightIndex = leftIndex - 1 and we need to insert the new message
|
||||
// between the two (i.a. at leftIndex).
|
||||
if (_size + 1 > _allocated) {
|
||||
_allocated += 100;
|
||||
PoMessage **newList = new PoMessage*[_allocated];
|
||||
for (int i = 0; i < leftIndex; ++i)
|
||||
newList[i] = _list[i];
|
||||
for (int i = leftIndex; i < _size; ++i)
|
||||
newList[i + 1] = _list[i];
|
||||
delete[] _list;
|
||||
_list = newList;
|
||||
} else {
|
||||
for (int i = _size - 1; i >= leftIndex; --i)
|
||||
_list[i + 1] = _list[i];
|
||||
}
|
||||
_list[leftIndex] = new PoMessage(translation, msg, context);
|
||||
++_size;
|
||||
}
|
||||
|
||||
const char *PoMessageList::findTranslation(const char *msg, const char *context) {
|
||||
if (msg == NULL || *msg == '\0')
|
||||
return NULL;
|
||||
|
||||
// binary-search for the message
|
||||
int leftIndex = 0;
|
||||
int rightIndex = _size - 1;
|
||||
while (rightIndex >= leftIndex) {
|
||||
int midIndex = (leftIndex + rightIndex) / 2;
|
||||
int compareResult = compareMessage(msg, context, _list[midIndex]->msgid, _list[midIndex]->msgctxt);
|
||||
if (compareResult == 0)
|
||||
return _list[midIndex]->msgstr;
|
||||
else if (compareResult < 0)
|
||||
rightIndex = midIndex - 1;
|
||||
else
|
||||
leftIndex = midIndex + 1;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PoMessageList *parsePoFile(const char *file) {
|
||||
FILE *inFile = fopen(file, "r");
|
||||
if (!inFile)
|
||||
return NULL;
|
||||
|
||||
char msgidBuf[1024], msgctxtBuf[1024], msgstrBuf[1024];
|
||||
char line[1024], *currentBuf = msgstrBuf;
|
||||
|
||||
PoMessageList *list = new PoMessageList();
|
||||
|
||||
// Initialize the message attributes.
|
||||
bool fuzzy = false;
|
||||
bool fuzzy_next = false;
|
||||
|
||||
// Parse the file line by line.
|
||||
// The msgstr is always the last line of an entry (i.e. msgid and msgctxt always
|
||||
// precede the corresponding msgstr).
|
||||
msgidBuf[0] = msgstrBuf[0] = msgctxtBuf[0] = '\0';
|
||||
while (!feof(inFile) && fgets(line, 1024, inFile)) {
|
||||
if (line[0] == '#' && line[1] == ',') {
|
||||
// Handle message attributes.
|
||||
if (strstr(line, "fuzzy")) {
|
||||
fuzzy_next = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// Skip empty and comment line
|
||||
if (*line == '\n' || *line == '#')
|
||||
continue;
|
||||
if (strncmp(line, "msgid", 5) == 0) {
|
||||
if (currentBuf == msgstrBuf) {
|
||||
// add previous entry
|
||||
if (*msgstrBuf != '\0' && !fuzzy)
|
||||
list->insert(msgstrBuf, msgidBuf, msgctxtBuf);
|
||||
msgidBuf[0] = msgstrBuf[0] = msgctxtBuf[0] = '\0';
|
||||
|
||||
// Reset the attribute flags.
|
||||
fuzzy = fuzzy_next;
|
||||
fuzzy_next = false;
|
||||
}
|
||||
strcpy(msgidBuf, stripLine(line));
|
||||
currentBuf = msgidBuf;
|
||||
} else if (strncmp(line, "msgctxt", 7) == 0) {
|
||||
if (currentBuf == msgstrBuf) {
|
||||
// add previous entry
|
||||
if (*msgstrBuf != '\0' && !fuzzy)
|
||||
list->insert(msgstrBuf, msgidBuf, msgctxtBuf);
|
||||
msgidBuf[0] = msgstrBuf[0] = msgctxtBuf[0] = '\0';
|
||||
|
||||
// Reset the attribute flags
|
||||
fuzzy = fuzzy_next;
|
||||
fuzzy_next = false;
|
||||
}
|
||||
strcpy(msgctxtBuf, stripLine(line));
|
||||
currentBuf = msgctxtBuf;
|
||||
} else if (strncmp(line, "msgstr", 6) == 0) {
|
||||
strcpy(msgstrBuf, stripLine(line));
|
||||
currentBuf = msgstrBuf;
|
||||
} else {
|
||||
// concatenate the string at the end of the current buffer
|
||||
if (currentBuf)
|
||||
strcat(currentBuf, stripLine(line));
|
||||
}
|
||||
}
|
||||
if (currentBuf == msgstrBuf) {
|
||||
// add last entry
|
||||
if (*msgstrBuf != '\0' && !fuzzy)
|
||||
list->insert(msgstrBuf, msgidBuf, msgctxtBuf);
|
||||
}
|
||||
|
||||
fclose(inFile);
|
||||
return list;
|
||||
}
|
||||
|
||||
char *stripLine(char *const line) {
|
||||
// This function modifies line in place and return it.
|
||||
// Keep only the text between the first two unprotected quotes.
|
||||
// It also look for literal special characters (e.g. preceded by '\n', '\\', '\"', '\'', '\t')
|
||||
// and replace them by the special character so that strcmp() can match them at run time.
|
||||
// Look for the first quote
|
||||
char const *src = line;
|
||||
while (*src != '\0' && *src++ != '"') {}
|
||||
// shift characters until we reach the end of the string or an unprotected quote
|
||||
char *dst = line;
|
||||
while (*src != '\0' && *src != '"') {
|
||||
char c = *src++;
|
||||
if (c == '\\') {
|
||||
switch (c = *src++) {
|
||||
case 'n': c = '\n'; break;
|
||||
case 't': c = '\t'; break;
|
||||
case '\"': c = '\"'; break;
|
||||
case '\'': c = '\''; break;
|
||||
case '\\': c = '\\'; break;
|
||||
default:
|
||||
// Just skip
|
||||
fprintf(stderr, "Unsupported special character \"\\%c\" in string. Please contact ScummVM developers.\n", c);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
*dst++ = c;
|
||||
}
|
||||
*dst = '\0';
|
||||
return line;
|
||||
}
|
||||
|
||||
char *parseLine(const char *line, const char *field) {
|
||||
// This function allocate and return a new char*.
|
||||
// It will return a NULL pointer if the field is not found.
|
||||
// It is used to parse the header of the po files to find the language name
|
||||
// and the charset.
|
||||
const char *str = strstr(line, field);
|
||||
if (str == NULL)
|
||||
return NULL;
|
||||
str += strlen(field);
|
||||
// Skip spaces
|
||||
while (*str != '\0' && isspace(*str)) {
|
||||
++str;
|
||||
}
|
||||
// Find string length (stop at the first '\n')
|
||||
int len = 0;
|
||||
while (str[len] != '\0' && str[len] != '\n') {
|
||||
++len;
|
||||
}
|
||||
if (len == 0)
|
||||
return NULL;
|
||||
// Create result string
|
||||
char *result = new char[len + 1];
|
||||
strncpy(result, str, len);
|
||||
result[len] = '\0';
|
||||
return result;
|
||||
}
|
||||
|
78
devtools/create_supernova2/po_parser.h
Normal file
78
devtools/create_supernova2/po_parser.h
Normal file
@ -0,0 +1,78 @@
|
||||
/* 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.
|
||||
*
|
||||
* This is a utility for generating a data file for the supernova engine.
|
||||
* It contains strings extracted from the original executable as well
|
||||
* as translations and is required for the engine to work properly.
|
||||
*/
|
||||
|
||||
#ifndef PO_PARSER_H
|
||||
#define PO_PARSER_H
|
||||
|
||||
struct PoMessage {
|
||||
char *msgstr;
|
||||
char *msgid;
|
||||
char *msgctxt;
|
||||
|
||||
PoMessage(const char *translation, const char *message, const char *context = NULL) :
|
||||
msgstr(NULL), msgid(NULL), msgctxt(NULL)
|
||||
{
|
||||
if (translation != NULL && *translation != '\0') {
|
||||
msgstr = new char[1 + strlen(translation)];
|
||||
strcpy(msgstr, translation);
|
||||
}
|
||||
if (message != NULL && *message != '\0') {
|
||||
msgid = new char[1 + strlen(message)];
|
||||
strcpy(msgid, message);
|
||||
}
|
||||
if (context != NULL && *context != '\0') {
|
||||
msgctxt = new char[1 + strlen(context)];
|
||||
strcpy(msgctxt, context);
|
||||
}
|
||||
}
|
||||
~PoMessage() {
|
||||
delete[] msgstr;
|
||||
delete[] msgid;
|
||||
delete[] msgctxt;
|
||||
}
|
||||
};
|
||||
|
||||
class PoMessageList {
|
||||
public:
|
||||
PoMessageList();
|
||||
~PoMessageList();
|
||||
|
||||
void insert(const char *translation, const char *msg, const char *context = NULL);
|
||||
const char *findTranslation(const char *msg, const char *context = NULL);
|
||||
|
||||
private:
|
||||
int compareString(const char *left, const char *right);
|
||||
int compareMessage(const char *msgLeft, const char *contextLeft, const char *msgRight, const char *contextRight);
|
||||
|
||||
PoMessage **_list;
|
||||
int _size;
|
||||
int _allocated;
|
||||
};
|
||||
|
||||
PoMessageList *parsePoFile(const char *file);
|
||||
char *stripLine(char *);
|
||||
char *parseLine(const char *line, const char *field);
|
||||
|
||||
#endif /* PO_PARSER_H */
|
2780
devtools/create_supernova2/strings-en.po
Normal file
2780
devtools/create_supernova2/strings-en.po
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user