aVENGER_(RR) Posted March 13, 2009 Share Posted March 13, 2009 According to my testing, action #137 StartDialog(S:DialogFile*,O:Target*) permanently sets the dialogue file of the targeted creature to the indicated value. On the other hand action #293 StartDialogOverride(S:DialogFile*,O:Target*) doesn't seem to do this. This can be easily confirmed by saving a game after using each action and then loading the respective saves with Near Infinity. Open the NPC in question and check his dialogue file designation in both cases and you'll easily spot the difference. For clarity, if you use something like this in order to make a party member start a pre designated conversation with himself: IF Exists(LastSummonerOf(Myself)) Global("RR#SCRLT","LOCALS",0) !StateCheck(LastSummonerOf(Myself),CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("RR#SCRLT","LOCALS",1) ActionOverride(LastSummonerOf(Myself),StartDialog("RR#SCRL",Myself)) END then the respective character will be stuck with RR#SCRL.DLG as his dialogue file forevermore. OTOH, using this: IF Exists(LastSummonerOf(Myself)) Global("RR#SCRLT","LOCALS",0) !StateCheck(LastSummonerOf(Myself),CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("RR#SCRLT","LOCALS",1) ActionOverride(LastSummonerOf(Myself),StartDialogOverride("RR#SCRL",Myself)) END will not change the character's default dialogue file. Link to comment
Avenger Posted March 13, 2009 Share Posted March 13, 2009 I knew this from somewhere (as it is coded this way in GemRB). StartDialogueInterrupt also sets the dialog resref. Link to comment
Ardanis Posted March 13, 2009 Share Posted March 13, 2009 I must say that's very strange, as I did test whether or not StartDialog was permanent action and I'm sure it wasn't. Checked now once again and indeed it's another resref... I wonder then why Spellhold scripts (ar1514 & ar1515 in particular) have ~ActionOverride(Player1,StartDialogue("player1",Player1))~ in them, yet Player1 has their dialog resref empty. Link to comment
igi Posted August 15, 2009 Share Posted August 15, 2009 Added, thanks. I guess this explains why StartDialogNoSet is a separate action... Link to comment
Taimon Posted August 17, 2009 Share Posted August 17, 2009 StartDialogOverride takes an additional parameter indicating that this is a dialogue with an item. (at int3, should be only boolean) I think the only effect is, that it uses the item name instead of the creature name. Link to comment
Avenger Posted August 17, 2009 Share Posted August 17, 2009 If this flag is in int3, what is int1/2? Link to comment
Taimon Posted August 17, 2009 Share Posted August 17, 2009 Probably unused, I don't see anything. Link to comment
igi Posted August 28, 2009 Share Posted August 28, 2009 StartDialogOverride takes an additional parameter indicating that this is a dialogue with an item. (at int3, should be only boolean)I think the only effect is, that it uses the item name instead of the creature name. So, function 293 has two signatures: StartDialogOverride(S:DialogFile*,O:Target*) StartDialogOverride(S:DialogFile*,O:Target*, I:ConverseAsItem) If the 3rd param in the second signature is set to 1, the display name for the dialog is read from the ITM file, rather than a CRE file. Correct? Link to comment
Avenger Posted August 28, 2009 Share Posted August 28, 2009 Int3, this means you have 2 dummy ints Like this: StartDialogOverride(S:DialogFile*,O:Target*, I:sucks, I:sucks2, I:ConverseAsItem) Link to comment
Taimon Posted August 28, 2009 Share Posted August 28, 2009 StartDialogOverride(S:DialogFile*,O:Target*, I:sucks, I:sucks2, I:ConverseAsItem) Confirmed. I bet it is only a dirty hack for Lilarcor. Not even sure it works on other engine variants. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.