Dialogdateien eines aufnehmbaren NPC - welche für was?
Für einen aufnehmbaren NPC werden in der pdialog.2da und der interdia.2da die Namen der Dialogdateien definiert, die die Engine für diesen NPC aufrufen kann. Welche gibt es denn da so und wofür sind die eigentlich?
Achtung: dies ist für BGII(:EE), BGT und BG:EE. In SoD und vor allem EET gibt es weitere 2da-Dateien hierfür.
Schauen wir uns mal den Eintrag an, der in der Ajantis BGII-Mod für Ajantis gesetzt wird:
Code:
APPEND ~pdialog.2da~
~C#Ajantis C#AjanP C#AjanJ C#AjanD C#Aja25P C#Aja25J C#Aja25D C#Ajan25~
UNLESS ~C#Ajantis~
Für die Interdia.2da steht da folgendes:
Code:
APPEND ~interdia.2da~
~C#Ajantis C#AjanB C#Aja25B~
UNLESS ~C#Ajantis~
Also, wenn es noch einen Eintrag für Ajantis gibt, dann sollen diese Einträge für Ajantis gepatcht werden: C#AjanP, C#AjanJ, C#AjanD, C#Aja25P, C#Aja25J, C#Aja25D, C#Ajan25, C#AjanB, C#Aja25B. Und was bedeuten die jetzt bitte?
C#AjanP: "P" kennzeichnet im originalen BG den sogenannten "Kickout"-Dialog. Also, der Dialog, der getriggert wird, wenn sich der NPC nicht mehr in der Gruppe befindet bzw. wenn man ihn gerade über den "Gruppe Ändern" (Reform Party) Knopf aus der Gruppe entlassen hat, oder wenn er irgendwo rumsteht und man ihn dann anspricht, umihn wieder in die Gruppe aufzunehmen. Hierzu auch den
Tipp für das gescriptete Verlassen der Gruppe beachten.
C#AjanJ: "J" steht für den "joined" Dialog. Dialoge in dieser dlg werden mit StartDialogNoSet() oder Dialogue() gestartet. Das ist der Dialog, mit dem der NPC spricht, wenn er sich in der Gruppe befindet, und zu einer ganz bestimmten Sache etwas sagen soll, also einen geskripteten Dialog in einem ganz bestimmten Moment starten soll, oder für Einmischdialoge. Alle geskripteten Dialoge gehen hier hinein, also auch Romanzen- oder Freundschaftsdialoge.
C#AjanD: "D" steht für das "Dreamscript" und hierbei handelt es sich eigentlich um ein Skript, also bcs. Dieses Skript wird aufgerufen, wenn der Spieler den "Rasten"-Knopf drückt oder über Skript RestParty() ausgeführt wird. Hierüber lassen sich zu. Beispiel Dialoge triggern, die "am Abend" vor dem Schlafengehen passieren sollen. Auch die Träume in BGII werden hierüber ausgelöst, da es auch ein "Dreamscript" für den "Player1" gibt.
C#Aja25P: Die "25" steht in BGII für ToB - warum auch immer. Daher handelt es sich hier um den "Kickout"-Dialog für ToB.
C#Aja25J: analog: der Joined-Dialog für ToB.
C#Aja25D: Dreamscript für ToB.
C#Ajan25: dies ist das Override Skript für ToB. Die Engine schaltet in ToB automatisch auf dieses Skript um. Außer in EET, dort muss man es skripten (bzw. die NPC-Transitionfunktion verwenden).
C#AjanB: "B" steht für Banter. In BGII steht das "B" am Anfang des dlg-Namens, aber wenn man das als Modder machte, hätte man gerade sein Präfix ad-absurdum geführt, daher sollte das B am Ende des Namens stehen. Die dlg kann man gescriptet aufrufen über Interact(). Allerdings beinhaltet die B.dlg auch die ganzen ungescripteten NPC-NPC-Banter, so dass dieser Dialog nicht für gescriptete Banter verwendet weden sollte - auch wenn es im Originalspiel für die Romanzen so gehandhabt wurde.

Die B.dlg wird von der Engine immer wieder willkürlich aufgerufen, so dass die NPC-NPC Banter hier ohne Skriptaufrufe im Lauf des Spiels getriggert werden.
C#Aja25B: Banter-Dialogname für ToB.
Und was fehlt? Richtig - der Aufnahmedialog. Also der, mit der NPC spricht, wenn man ihn das alleraller erste mal begegnet, und bevor er das erste mal in der Gruppe ist. Dieser Dialogname ist der einzige, den man direkt in der cre-Datei hinterlegen kann, daher gibt es dafür wohl keinen 2da-Eintrag. Hierfür wähle ich gerne einen Namen ohne "Postfix", z.B. C#Ajan.dlg für SoA und C#Aja25.dlg für ToB.
Übrigens: alle Dialognamen dürfen
nur maximal 8 Zeichen lang sein!