-
Notifications
You must be signed in to change notification settings - Fork 0
TLK
DASPOTA1.TLK 9A 02 00 00 (Offset des Textblocks - Länge des Headers (6 Byte)) 07 00 (Anzahl der Gesprächspartner) 00 00 00 00 00 00 | GUARD | 00 00 (Gesprächspartner Nr. 1) 20 00 00 00 09 00 | GUARD | 02 00 (Gesprächspartner Nr. 2) etc... EREMIT.TLK E6 00 00 00 (Offset des Textblocks - Länge des Headers (6 Byte)) 01 00 (Anzahl der Gesprächspartner) 00 00 00 00 00 00 | A HERMIT | 2B 00 (Gesprächspartner Nr. 1) etc... INFO2.TLK E2 02 00 00 (Offset der Textblocks - Länge des Headers (6 Byte)) 03 00 (Anzahl der Gesprächspartner) 00 00 00 00 00 00 | YASMA THINMARSDOTTER | 1C 00 (Gesprächspartner Nr. 1) C8 00 00 00 27 00 | UMBRIK SEVENSTONES | 1D 00 (Gesprächspartner Nr. 2) 90 01 00 00 48 00 | ISLEIF OLGARDSSON | 1E 00 (Gesprächspartner Nr. 3) struct partner { unsigned long first_layout; (Offset des ersten Eintrags in der Layouttabelle(es wird von 0 an gezählt)) unsigned short first_string; (Der erste String im Textblock (es wird von 0 an gezählt)) unsigned char name[30]; (Der Name des Gesprächspartners) unsigned short bild; (Index des Bildes in IN_HEADS.NVF (es wird von 0 an gezählt)) }; 00 80 00 00 00 01 02 00 ----------------------- tt a1 a2 a3 g1 g2 g3 Ab hier betraegt die Blocklänge 8 Bytes. Formatiert und nummeriert, um es uebersichtlicher zu machen: tt = Haupttext (signed short, also 2 Bytes) a1 etc = Antwortoption Nummer 1 etc g1 etc = Link zu naechster Kontrollzeile Wenn tt den Wert -1 hat, soll direkt zu g1 gesprungen werden. Solche Einträge werden dann in der Regel in der SCHICKM.EXE genutzt, um Code an einer bestimmten Stelle im Dialog auszuführen. Wenn tt nicht den Wert -1 hat, wird tt & 0x7fff (bitwise AND) und davon der Haupttext bestimmt. Tatsächlich nimmt tt aber außer -1 nur positive Werte an - lediglich das Flag-Bit 0x8000 wird gesetzt, um zu erzwingen, dass nach zu diesem Zustand passendem Code in der SCHICKM.EXE gesucht wird. Also, z.B. Zeile 10 sagt "Blende Text 18 als Haupttext ein, mit Texten 19 und 1A als Antwortoptionen. Wenn 19 ausgewaehlt wird, gehe zu Zeile 11, wenn 1A, Zeile 12". Der Textblock besteht einfach aus beliebig langen Passagen, getrennt durch 00 Bytes.
4 bytes (unsigned) | Offset des Textblocks | Header: 6 bytes |
2 bytes (unsigned) | Anzahl der Gesprächspartner (n) | |
2 bytes (unsigned) | Gesprächspartner 1: Offset des ersten Eintrags in der Layouttabelle | Gesprächspartnerblock: n * 38 bytes |
2 bytes | Gesprächspartner 1: unbekannt (immer = 0) | |
2 bytes (unsigned) | Gesprächspartner 1: Erster String (Index des Textblocks) | |
30 bytes | Gesprächspartner 1: Name des Gesprächspartners | |
2 bytes (unsigned) | Gesprächspartner 1: Charakterbild-ID (Index zu IN_HEADS.NVF) | |
... | ||
2 bytes (unsigned) | Gesprächspartner n: Offset des ersten Eintrags in der Layouttabelle | |
2 bytes | Gesprächspartner n: unbekannt (immer = 0) | |
2 bytes (unsigned) | Gesprächspartner n: Erster String (Index des Textblocks) | |
30 bytes | Gesprächspartner n: Name des Gesprächspartners | |
2 bytes (unsigned) | Gesprächspartner n: Charakterbild-ID (Index zu IN_HEADS.NVF) | |
1 byte (unsigned) | Layout 1: Haupttext (Index des String im Textblock) | Layoutblock: m * 8 bytes |
1 byte | Layout 1: unbekannt | |
1 byte (unsigned) | Layout 1: Antwortoption 1 (Index des String im Textblock) | |
1 byte (unsigned) | Layout 1: Antwortoption 2 (Index des String im Textblock) | |
1 byte (unsigned) | Layout 1: Antwortoption 3 (Index des String im Textblock) | |
1 byte (unsigned) | Layout 1: Goto für Antwort 1 (Index des Dialog Layout im Layoutblock) | |
1 byte (unsigned) | Layout 1: Goto für Antwort 2 (Index des Dialog Layout im Layoutblock) | |
1 byte (unsigned) | Layout 1: Goto für Antwort 3 (Index des Dialog Layout im Layoutblock) | |
... | ||
1 byte (unsigned) | Layout m: Haupttext (Index des String im Textblock) | |
1 byte | Layout m: unbekannt | |
1 byte (unsigned) | Layout m: Antwortoption 1 (Index des String im Textblock) | |
1 byte (unsigned) | Layout m: Antwortoption 2 (Index des String im Textblock) | |
1 byte (unsigned) | Layout m: Antwortoption 3 (Index des String im Textblock) | |
1 byte (unsigned) | Layout m: Goto für Antwort 1 (Index des Dialog Layout im Layoutblock) | |
1 byte (unsigned) | Layout m: Goto für Antwort 2 (Index des Dialog Layout im Layoutblock) | |
1 byte (unsigned) | Layout m: Goto für Antwort 3 (Index des Dialog Layout im Layoutblock) | |
variabel | Text (C-Strings) | Textblock: Offset des Textblocks bis EOF |
Die Schick.dat beinhaltet 20-TLK-Dateien. Jede dieser Dateien beinhaltet mindestens einen Dialogpartner.
Ein Dialog beginnt normalerweise ab dem ersten Layout des Gesprächspartners. (Layout[0]) Es gibt aber auch die Möglichkeit an anderen Stellen in den Dialog einzuspringen. Diese scheinen in der Schickm.exe zu stehen.
In bestimmten Dialogen(Händler,Herberge,Schmied) stehen die Dialogtexte nicht fest, sondern werden per Zufall aus bis zu 4 Zeichenketten ausgewählt. Bei der Taverne verhält es sich ganz anders.
Im Spiel bestimmt nicht nur die Auswahl einer Antwort den Ablauf des Dialogs,
sondern auch Proben, Gegenstände und Erlebnisse.
Solche Layouts sind an dem Wert -1
für tt
erkennbar.
Die Felder g1-g3 sind in dem Fall die Layouts, bei denen es weitergeht.
Außerdem können sich noch Texte in TLK-Dateien verstecken, welche nicht ins Spiel gekommen sind.
Dialogpartner: 7 (WACHE, WACHE, WACHE, SCHMIED, TÄTOWIERER, WACHE, EIN SPIELER) Textauswahl: 1 aus 1 (normal) Besonderheiten: Dialogpartner 1 WACHE (östlichstes Haus in Daspota)
Der Dialog läuft auf jeden Fall auf einen Kampf heraus. Nach dem Kampf kommt die Frage: "Wollt ihr in das Gebäude eindringen?" Diese Frage kann mit Ja oder Nein beantwortet werden.
Allerdings befindet sich nur die Frage im Dialog, aber nicht die Antworten. Dessweiteren gibt es auch kein Layout, welches auf diese Zeichenkette (Nr. 7 von 0 beginnend) verweist. Auf die Zeichenkette Nr. 8 gibt es ebenso keinen Verweis.
ALS IHR DIE TÜR ÖFFNET, KÖNNT IHR IM HALBDUNKEL EINEN RIESIGEN THORWALER ERKENNEN, BEGLEITET VON DREI ETWAS KLEINEREN GESTALTEN. DIE DREI GREIFEN EUCH OHNE VORWARNUNG AN.
Dialogpartner: 8 (SONYA, EIN PIRAT, EIN MANN, WIRT, LAGERHALTER, TISCHLER, BETRUNKENDER, ALTER MANN)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine
Dialogpartner: 3 (WIRT, SEGELMACHER, EINE HURE)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine
Dialogpartner: 1 (EIN EREMIT)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine
Dialogpartner: 1 (EINE ALTE)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Bei diesem Dialog im Spiel kann der Reset des Rechners ausgelöst werden. Es erscheinen andere Dialogteile abhängig davon, aus welcher Richtung die Helden kommen (Felsteyn oder Einsiedlersee).
Die Antworten sind: 1-1-2-2-1
Dialogpartner: 1 () Die Suche nach der Hyggelik-Burgruine
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Dieser Dialog kann auf zwei verschiedenen Strecken vorkommen (Skelellen-Phexcaer, Vilnheim-Phexcaer). Es gilt zu prüfen, ob die Dialoge sich dabei unterscheiden. Voraussetzung für diesen Dialog ist auf jeden Fall, dass die Helden mindestens sieben Kartenteile haben.
Dialogpartner: 2 (HYGGELIK DER GROSSE, HYGGELIK der GROSSE)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Der erste Hyggelik-Dialog kommt vor, wenn die Helden nicht verflucht sind. Der zweite Dialog wird verwendet, wenn man bereits etwas von den Münzen oder Schätzen genommen hat und das Spiel daher nicht mehr erfolgreich beenden kann.
Dialogpartner: 2 (JURGE TORFINSSON, HJORE AHRENSSON)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine
Dialogpartner: 3 (YASMA THINMARSDOTTER, UMBRIK SIEBENSTEIN, ISLEIF OLGARDSSON)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Crufty Layout Nr. 27 und String Nr. 27 von ISLEIF OLGARDSSON
Dieses Gesprächsende dürfte im Spiel nicht vorkommen. Falls doch, teilt es uns bitte mit.
"LANGSAM FRAGE ICH MICH WIRKLICH, WARUM ICH EUCH UNFREUNDLICHEN GESELLEN DAS ERZÄHLT HAB. NA SCHÖN, DANN VERSCHWINDET!" ER WENDET SICH VON EUCH AB UND GEHT VERÄRGERT INS HAUS.
Dialogpartner: 3 (RAGNA FIRUNJASDOTTER, BEORN HJALLASSON, ALGRID TRONDESDOTTER)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Besonderer Einstiegspunkt Layout Nr. 23 und String Nr. 23 von ALGRID TRONDESDOTTER
Dieser Gesprächsanfang kommt im Spiel vor, wenn man sie in der Taverne trifft und mit zu ihr nach Hause geht.
IHR MARSCHIERT EINE WEILE DURCH HJALSINGOR. SCHLIESSLICH ERREICHT IHR ALGRIDS HAUS.
Dialogpartner: 2 (ELIANE WINDENBEK, TIOMAR SWAFNILDSSON)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Crufty Layouts Nr. 44-47 und Strings Nr. 48 und 49 bei TIOMAR SWAFNILDSSON
Dieser Gesprächsanfang könnte im Spiel nicht vorkommen. Falls doch, teilt es uns bitte mit.
Eine Möglichkeit wäre wenn man ihn in der Taverne trifft und mit zu ihm nach Hause geht.
Start bei Layout Nr. 44:
ALS IHR BEI SEINEM HAUS ANGELANGT SEID, ZÖGERT ER EINEN MOMENT.
und
"ALSO, WAS GENAU WOLLT IHR DENN VON MIR?"
Dialogpartner: 2 (OLVIR GUNDRIDSSON, ASGRIMM THURBOLDSSON)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Crufty Layout Nr. 22 und Besonderer Einstiegspunkt Nr. 34 bei ASGRIMM THURBOLDSSON
Dieser Gesprächsanfang kommt im Spiel vor, wenn man ihn in der Taverne trifft und mit zu ihm nach Hause geht.
"NUN KOMMT DOCH ERST MAL REIN." MEINT ASGRIMM FREUNDLICHEN."
Dialogpartner: 3 (TREBORN KOLBERG, TREBORN KOLBERG, DAS EINHORN)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: Der erste Dialog erscheint, wenn man Treborn Kolberg auf der Reise begegnet. Der zweite Dialog war für eine Wiederbegegnung mit Treborn Kolberg in Clanegh vorgesehen (wenn man beim ersten Mal noch nicht die Karte gekauft hat), kommt jedoch nicht im Spiel vor (wohl aufgrund eines Bugs). Bei dem Einhorndialog handelt es sich um den Text, der bei dem ersten Treffen verwendet wird.
DialogPartner: 2 (SWAFNILD EGILSDOTTER, EINHORN(Zweite Begegnung))
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine
Dialogpartner: 1 (GEMISCHTWARENHÄNDLER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine besonderen Einstiegspunkte
Dialogpartner: 1 (KRÄUTERHÄNDLER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine Besonderen Einstiegspunkte
Dialogpartner: 1 (WAFFENHÄNDLER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine besonderen Einstiegspunkte
Beim Versuch den Laden zu betreten wird kontrolliert, ob man bei diesem Waffenhändler in Ungnade gefallen ist (Beleidigt). Ist das wahr, so wird Layout Nr. 26 (von 0 beginnend) gestartet und man kann den Laden nicht betreten.
Hat man den Waffenhändler nicht beleidigt, kann man den Laden betreten und mit ihm sprechen. Dann geht es bei Layout Nr. 1 los.
Dialogpartner: 1 (HERBERGSVATER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine Besonderen Einstiegspunkte
Dialogpartner:1 (SCHMIED)
Textauswahl: 1 aus 4 (zufall/gemischt)
Besonderheiten:
Dialoganfang Layout[27] (DER LANGE GERBALD in Phexcaer) Dialoganfang Layout[28] (GURTHAG, SOHN DES GARDOSCH) nachdem man den Zugang von ALTE ZWINGFESTE in seine Schmiede benutzt hat.
Diese TLK-Datei ist etwas besonderes, da alle Schmiede-Dialoge per Zufall geführt werden. Der Dialog mit GURTHAG, SOHN DER GARDOSCH ist aber immer gleich. Ähnlich wie bei DER LANGE GERBALD, wo der Haupttext und Antwort 1 und 3 zufällig bestimmt werden, aber Antwort 2 immer "KENNT IHR HYGGELIK?" lautet.
Um das zu erreichen steht als erste der 4 Textoptionen der Text welcher ausgegeben werden soll und bei den Anderen ein einzelnes Leerzeichen mit abschliessender 0 (0x20,0x00).
Texte, welche nicht über die Layouts erreicht werden:
String[38] (SCHMIED) - die vier Auswahlmöglichkeiten
"GUTE ARBEIT BRAUCHT EINE WEILE, WERTE REISENDE! LASST MIR NOCH ETWAS ZEIT.>"
"WOLLT IHR QUALITÄTSARBEIT? DANN LASST MIR AUCH DIE ZEIT DAZU!"
"ICH BIN HANDWERKER UND KEINE MANUFAKTUR! ALSO GEDULDET EUCH."
"GUT DING WILL WEILE HABEN, SAGTE MEIN VATER IMMER. UND DER IST DAMIT GUTGEFAHREN. ALSO SEID SO GUT UND WARTET."
Das kommt wenn man etwas zur Reparatur abgegeben hat und schon mal vorher beim Schmied vorbeiguckt. Es gibt dazu aber kein Layout.
String[40] (SCHMIED) - die vier Auswahlmöglichkeiten
"JA, SO EIN RUF HAT SEINE VORTEILE. MAN BEKOMMT EINE MENGE ZU HÖREN. AUCH ÜBER DIE GEGENDEN, IN DENEN MAN SELBER NIE WAR. IHR SEID AUF REISEN? DANN HILFT EUCH VIELLEICHT EIN KLEINER HINWEIS WEITER."
"SCHON, JA. UND MAN HAT AUCH EINIGE VORTEILE DAVON. DIE LEUTE ERZÄHLEN EINEM IHRE GANZEN SORGEN, ABER MANCHMAL SIND AUCH EIN PAAR GANZ NÜTZLICHE HINWEISE DABEI. VIELLEICHT KANN ICH EUCH DAMIT WEITERHELFEN."
"DAS IST SCHON RICHTIG. ES KANN GANZ NÜTZLICH SEIN, WAS DIE LEUTE EINEM ALLES SO ANVERTRAUEN. ABER ICH BIN GERNE BEREIT, MIT MEINEM WISSEN FREMDEN REISENDEN ZU HELFEN."
"SO IST ES. ABER ICH WILL DIE VORTEILE NICHT FÜR MICH AUSNUTZEN. ES GEFÄLLT DEN GÖTTERN, WENN MAN MIT SEINEM WISSEN REISENDEN BEISTEHT, UND MAN ERZÄHLT MIR EINE MENGE VON DEM, WAS HIER IN DER GEGEND PASSIERT.>
Diese Texte sollten eigentlich erscheinen, wenn man dem Schmied geschmeichelt hat ("sicher ein angesehener Mann", "Wort gilt etwas" usw.). Dann sollte er eigentlich einen Tipp herausrücken ähnlich wie bei den Händlern oder dem Herbergsvater. Aufgrund eines Bugs erscheinen diese Texte jedoch nicht. Hier gibt es auch kein Layout.
String[50] (DER LANGE GERBALD in Phexcaer) - eine Auswahlmöglichkeit
"IHR GLAUBT WOHL, ICH WÄRE DUMM? IHR TUT WOHL DENKEN TUN, MIT MIR KANN MAN ES JA MACHEN TUN? EUCH WERDE ICH HELFEN!"
Dialogpartner: 1 (Barkeeper)
Textauswahl: 1 aus 1 (normal/gemischt)
Besonderheiten: Die Datei enthält verschiedene Texte rund um Dialoge, die alle in der Taverne stattfinden:
- Standardbeschreibungen und -dialoge rund ums Tavernengeschehen (trinken, essen, Runde ausgeben, mit dem Wirt plaudern, Beschreibungen der Lage in der Taverne)
- Vor- und Nachnamen, die bei zufälligen Begegnungen mit Thorwalern in der Taverne vorkommen
- Dialog, der verwendet wird, wenn man einen Informanten / Kartenteilbesitzer in der Taverne antrifft
- allgemeine Hinweise aus Tavernengesprächen (nicht spezifische Hinweise zum jeweiligen Ort!)
- Spezialtext 1: Aufruf des Hetmanns
- Spezialtext 2: Geschichte über das Totenschiff
im Gegensatz zu der Schicksalsklinge(DSA 1) nutzt Sternscheweif (DSA 2) 2 verschiedene Dialogsysteme die beide die Endung TLK tragen (normale Dialoge & Info Dialoge). Info Dialoge sind Dialoge wo man auf der rechten Seite ein Thema wählen kann und der Gesprächspartner dann etwas zu dem Thema erzählt (z.B. in Tempeln). Beide Dialoge besitzen keinen Identifier und lassen sich nicht direkt Unterscheiden, allerdings gibt es einen kleinen Trick dabei: Info Dialoge nutzen gewisse Schlüsselwörter an denen sie sich gut erkennen lassen. Eines dieser Schlüsselwörter welches in allen Info Dialogen vorhanden ist lautet "PIC".
Auch hier gibt es Unterschiede zu DSA 1!!!
Aufbau
Offset | Typ | Beschreibung |
0x00 | Int 16 | Anzahl der Dialoge (n) |
0x02 | n*12 Bytes | Dialogpartner |
0x02 + n*12 | n*(bytes varieren) | Layouts der Dialogpartner |
im Anschluss | Int 16 | Größe der C-Strings in Byte |
im Anschluss | Int 16 | Anzahl der C-Strings+1, genau genommen die breaks(00) |
im Anschluss | bis zum Ende | Texte (C-Strings) |
Dialogpartner
<tr> <td><b>Offset</b></td> <td><b>Typ</b></td> <td><b>Beschreibung</b></td> </tr> <tr> <td>0x00</td> <td>Int 16</td> <td>Unbekannt</td> </tr> <tr></tr> <tr> <td>0x02</td> <td>Int 16</td> <td>Unbekannt</td> </tr> <tr> <tr> <td>0x04</td> <td>Int 16</td> <td>Textindex zum eigenen Text</td> </tr> <tr> <td>0x06</td> <td>Int 16</td> <td>Textindex zum Namen</td> </tr> <tr> <td>0x08</td> <td>Int 16</td> <td>Bild ID (HEADS.NVF & CHEADS.NVF)</td> </tr> <tr> <td>0x0A</td> <td>Int 16</td> <td>Unbekannt</td> </tr>
</table>
Layouts des Dialogpartner
Offset | Typ | Beschreibung |
0x00 | Int 16 | Anzahl der Layouteinträge |
0x02 | n*8 Bytes | n Layouteinträge |
Layouteintrag
Offset | Typ | Beschreibung |
0x00 | 1 Byte | Textindex - Angezeigter text |
0x01 | 1 Byte | art des textes (0x00 - Dialog beginnt, 0x80 - normaler Eintrag, 0xFF - Dialog ende) |
0x02 | 3 * 1 Byte | 3 * Textindex Antwort 1 - 3 |
0x05 | 3 * 1 Byte | 3 * Layoutindex des nächsten Layouts (Antwort 1-3). Ist der Index 0 so ist diese Antwort nicht wählbar (es wird auch kein text angezeigt). Bei 0xFF führt diese Antwort zum beenden des Dialoges |
Info Dialoge sind Textformatiert und lassen sich mit einem gewöhnlichen Texteditor betrachten und bearbeiten.
Kommentare sind durch "#" gekennzeichnet und sind bis zum nächsten Zeilenumbruch gültig
Aufbau
Grundsätzlich folgt immer auf eine Einleitende Konstante die zugehörigen Werte, diese können durch Leerzeichen Tabulatoren oder Zeilenumbrüche getrennt sein.
Konstante - Werte (Beschreibung)
PIC - Zahl (Index zum Bild in der Datei HEADS.NVF)
TOLERANCE - Zahl (Anzahl der erlaubten Fragen)
NAME - Text in Anführungszeichen (Name des Gesprächspartners)
es folgt eine Reihe von Themeneinträgen (TOPIC).Das Schlüsselwort END leitet das Ende der Datei ein.
Aufbau Topic
TOPIC - Konstante (Themengebiet)
Zahl - Zahl - Text*
...
Zahl - Zahl - Text*
Zahl - Zahl - NOTMORE
- Der Text ist auch wieder in Anführungszeichen, kann aber aus mehreren Stücken in verschiedenen Zeilen bestehen, dabei wird der Anfang des Textes mit < und das Ende mit > gekennzeichnet
Texte des Topics Steht anstelle eines Textes die Konstante "LIST", so wird der Text zufällig aus der Zugehörigen "TALKS_xx.LTX" Datei geholt, dabei ist der erste Text immer die Frage, welche die helden stellen und die restlichen Texte sind die möglichen Antworten.