Skip to content
Shihan edited this page Mar 17, 2020 · 1 revision

Table of Contents

DSA 1

Aufbau

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.

Fileformat

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

TLK-Dateien

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.

DASPOTA1.TLK

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.

DASPOTA2.TLK

Dialogpartner: 8 (SONYA, EIN PIRAT, EIN MANN, WIRT, LAGERHALTER, TISCHLER, BETRUNKENDER, ALTER MANN)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine

DASPOTA3.TLK

Dialogpartner: 3 (WIRT, SEGELMACHER, EINE HURE)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine

EREMIT.TLK

Dialogpartner: 1 (EIN EREMIT)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine

F092.TLK

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

F115.TLK

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.

HYGGELIK.TLK

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.

INFO1.TLK

Dialogpartner: 2 (JURGE TORFINSSON, HJORE AHRENSSON)
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine

INFO2.TLK

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.

INFO3.TLK

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.

INFO4.TLK

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?"

INFO5.TLK

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."

INFO6.TLK

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.

INFO7.TLK

DialogPartner: 2 (SWAFNILD EGILSDOTTER, EINHORN(Zweite Begegnung))
Textauswahl: 1 aus 1 (normal)
Besonderheiten: keine

GHANDEL.TLK

Dialogpartner: 1 (GEMISCHTWARENHÄNDLER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine besonderen Einstiegspunkte

KHANDEL.TLK

Dialogpartner: 1 (KRÄUTERHÄNDLER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine Besonderen Einstiegspunkte

WHANDEL.TLK

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.

HERBERG.TLK

Dialogpartner: 1 (HERBERGSVATER)
Textauswahl: 1 aus 4 (zufall)
Besonderheiten: keine Besonderen Einstiegspunkte

SCHMIED.TLK

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!"

TAVERN.TLK

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

DSA 2

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".

normale Dialoge

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

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.

Kategorie:DSA1Kategorie:DSA2

Clone this wiki locally