Jump to content

Randomising Banters


Recommended Posts

I was wondering how to achieve the seemingly randomising effect in banters.


I've read, understood, and succesfully applied Blue's tutorial for banter, and the same goes for Kulyok's on how to make sure the banters run on the right time.


I was just wondering how to achieve that random feeling, i.e. that there is a certain time between banters.


Right now, I have a test banter in Tutu with Imoen and my NPC, which starts to run run immediately after she joins the party. So, do I just add a timer to delay the banter a couple of minutes to not make it seem forced?


And further on, do all randomised (non-area-tied) banters work this way - i.e. is there a global banter timer that spaces the time between banters, and is this what the 'banter accelerator script' (Kelsey, I think?) modifies?



Link to comment

There are two kinds of dialogues: The scripted and the non-scripted ("banter").


If a dialogue is scripted, it is supposed to fire at a special moment: in the morning, after three days upon joining, if the PC reputation goes below 8, etc. Scripted banters can go into "...J.dlg" or "...B.dlg". To call a dialogue from the J.dlg, it would be the commands "Dialogue(Player1) (NPC moves to the PC before initiating the dialogue)" or "StartDialogNoSet(Player1) (NPC speaks at once)". To call a dialogue from the B.dlg, it would be "Interact(Player1)".

BUT there are the nonscripted banters, which are all in B.dlg. These dialogues are called randomly by the engine itself. The file gets executed, and if there is a dialogue state that returns true, the banter will fire. (e.g. a banter between Minsc and Jaheira, both are in the group and capable of speaking, so they banter). For these non-scripted banters, all triggers have to be put into the dialogue state trigger.


Jcompton's banter accellerator introduces a script, that calls the B.dlg at a definite frequency. Again, only banters that trigger true will be executed.


BioWare itself used the J.dlg for all comments of the NPC while he is in the party: Interjections, dialogues with non-joinable NPCs, and so forth. The romance dialogues (all scripted, of course) they put into the B.dlg.


If scripted dialogues are put into the B.dlg, it has to be made sure by weighting the banters appropriately, that not a non-scripted banter will fire if the script tries to call a scripted one, which could happen if the non-scripted is above the scripted one and returns true (dialogue files are executed from top to bottom).

That is why I (and other modders) prefer to put all scripted dialogues into the J.dlg, and only the non-scripted banters into the B.dlg.


For your example: Yes, a timer would be the solution. It gets set the moment imoen joins, and the dialogue will be executed by another script block once the timer run.

Link to comment


This topic is now archived and is closed to further replies.

  • Create New...