Pocket Plane Group
Miscellany, Inc. => Infinity Engine Modding Q&A => Topic started by: V. Lokai on July 18, 2004, 11:13:24 PM
-
Ok. Hrm. The way I'm writing my NPC, she has some complicated conversations that aren't really standard banters. They involve her, other NPCs, and the PC.
Haer'Dalis will butt in and argue with Sudar (my NPC) and she will kind of go off on a tangent with him for a little while, and eventually I need the conversations to come back to the PC. Because in the mod I want the PC to be able to 'pick a side' or stay neutral by their responses to HD's and Sue's arguments. I'm just not sure how to set this up. Also, since this placed in her J dialogue file (because these conversations are PC initiated like in romances) does everything for the other NPCs still need to be appended to their B instead of J file? Does it make a difference?
Am I making sense? ???
-
For NPC/NPC stuff, you want to use CHAIN, and that can flow back into a state that has PC replies when the time is right.
As for the PC choosing sides, you should set a global variable when they choose a specific response:
PC 1) Yo dood, I totally agree with Haery, here. DO ~SetGlobal("Argument","GLOBAL",1)~
PC 2) Hmm, I'd have to say my vote goes with whoever, on this one. DO ~SetGlobal("Argument","GLOBAL",2)~
PC 3) What, me? Oh no, I'm staying out of this!
Or if the implications of the PC's choices don't matter beyond the conversation, just have one reply link to a state where Haer'dalis/Anti-Haer either expresses indignance, or accepts the praise, or whatever.
Also, since this placed in her J dialogue file (because these conversations are PC initiated like in romances) does everything for the other NPCs still need to be appended to their B instead of J file? Does it make a difference?
Doesn't matter, necessarily, but personally I try to keep "J" conversations in all "J" dialogue files, and banters/lovetalks in "B" files.
-
For NPC/NPC stuff, you want to use CHAIN, and that can flow back into a state that has PC replies when the time is right
This what I'm trying to figure out right here. How do I get a chain to go back to the PC? I understand the variables part.
Doesn't matter, necessarily, but personally I try to keep "J" conversations in all "J" dialogue files, and banters/lovetalks in "B" files.
Ok good. :) I didn't think so but I'm glad to have someone experienced's opinion.
-
You can just END the CHAIN and append your PC's responses:
eg (end of CHAIN)
== HAERDAJ ~I was wondering whether I should call you my emu or my penguin?~
== SUDARJ ~Try 'my sister'?! Well, I think CHARNAME should have a say.~
END
++ ~Go the emu!~ DO ~SG("Sides",1)~ + SUDARJ ChoseEmu
++ ~I like penguins. You can splat them.~ DO ~SG("Sides",2)~ + SUDARJ ChosePeng
++ ~I don't like either, really.~ + SUDARJ ChoseNone
You don't need an END after the PC interjects. It should work. :)
-
++ ~Go the emu!~ DO ~SG("Sides",1)~ + SUDARJ ChoseEmu
++ ~I like penguins. You can splat them.~ DO ~SG("Sides",2)~ + SUDARJ ChosePeng
++ ~I don't like either, really.~ + SUDARJ ChoseNone
Does that syntax actually work? The last plus is typically "GOTO" (which in the case of a CHAIN, refers to the DLG that STARTED the conversation, and NOT the last one to speak)... EXTERN SUDARJ seems more likely to work.
-
Thanks a lot guys. I'll try that. :)
-
++ ~Go the emu!~ DO ~SG("Sides",1)~ + SUDARJ ChoseEmu
++ ~I like penguins. You can splat them.~ DO ~SG("Sides",2)~ + SUDARJ ChosePeng
++ ~I don't like either, really.~ + SUDARJ ChoseNone
Does that syntax actually work? The last plus is typically "GOTO" (which in the case of a CHAIN, refers to the DLG that STARTED the conversation, and NOT the last one to speak)... EXTERN SUDARJ seems more likely to work.
If Sudar started the conversation and all of those go back to Sudar, it will work. If it goes to Haer'Dalis, it won't.
Romance conversations are initiated by the NPC and placed in the B file. (Except in Cailean -- I don't know what's going on there :)).
Here's a bigger example:
CHAIN IF ~InParty("Haer'Dalis")
See("Haer'Dalis")
!StateCheck("Haer'Dalis",STATE_SLEEPING)
Global("SudHae","GLOBAL",0)~ THEN BSUDAR blah //Use any GLOBAL and B file name you like here, just make sure it doesn't overlap with anyone else's
~Hi Haery.~ DO ~SetGlobal("SudHae","GLOBAL",1)~
== BHAERDA ~Hi Sudy. What's up?~
== BSUDAR ~Not much.~
END //Normal banter CHAINs use EXIT. You don't want to exit here because you want to let the PC continue the conversation thread
++ ~Not much is up with me either.~ EXTERN BHAERDA whoask
++ ~You two are boring.~ EXTERN BSUDAR soareyou
CHAIN BHAERDA whoask
~Who asked you?~
== BSUDAR ~I sure didn't.~
EXIT
CHAIN BSUDAR soareyou
~So are you.~
== BHAERDA ~You tell <PRO_HIMHER>, sis.~
EXIT
-
Romance conversations are initiated by the NPC and placed in the B file. (Except in Cailean -- I don't know what's going on there :)).
And, just to avoid confusion, non-romance conversations are also generally started by the NPC and placed in the B file.
As for Cailean, the conversations he initiates we put into the B file and the conversations that we have the PC initiate (they work somewhat like flirts) we put into the J file.
-
Ok. I can't use chain because the original conversation was started by the PC. I've gotten it to do what I want, but it requires a lot of use of EXTERN.
Can I make a seperete dialogue file to set up the appended text for the other characters? For my experimenting I'm sticking them at the bottom of her J dialogue file, but is it possible to put them seperate? Her J file is going to be long as it is. :P
-
Ok. I can't use chain because the original conversation was started by the PC. I've gotten it to do what I want, but it requires a lot of use of EXTERN.
Can I make a seperete dialogue file to set up the appended text for the other characters? For my experimenting I'm sticking them at the bottom of her J dialogue file, but is it possible to put them seperate? Her J file is going to be long as it is. :P
The PC's dialog file is Player1 so technically you could use CHAIN, but you really want to be careful about forcing the player to say one particular thing. [edit] -- This does require the dialog be assigned to the PC before the talk starts, however.
You can put appended text for other NPCs in a different file but you'd have to compile them all at the same time.
COMPILE ~sudar~ ~someotherfile~
rather than
COMPILE ~sudar~
COMPILE ~someothernpc~
-
The PC's dialog file is Player1 so technically you could use CHAIN, but you really want to be careful about forcing the player to say one particular thing.
You can put appended text for other NPCs in a different file but you'd have to compile them all at the same time.
COMPILE ~sudar~ ~someotherfile~
rather than
COMPILE ~sudar~
COMPILE ~someothernpc~
Ok I got the appended text part, but what do you mean about forcing the player to say something? You mean giving them commentary on the argument?
-
By forcing the PC to say something I mean when you don't give the PC the option to choose what they want to say.
PC: It's a nice day out.
NPC: Yes, it is.
as opposed to
NPC: It's a nice day out
PC1: Yes, it is.
PC2: No, it isn't.
PC3: Piss off.
You don't want to do much, if any, of the former because it's important for the player to be able to choose what his/her character says in any given situation.
-
Right. If you assign PLAYER1.DLG to the PC and then do
== PLAYER1 ~I am saying something here~
then you're dictating what the PC says.
-
By forcing the PC to say something I mean when you don't give the PC the option to choose what they want to say.
PC: It's a nice day out.
NPC: Yes, it is.
as opposed to
NPC: It's a nice day out
PC1: Yes, it is.
PC2: No, it isn't.
PC3: Piss off.
You don't want to do much, if any, of the former because it's important for the player to be able to choose what his/her character says in any given situation.
Oh. Well yeah I think that would be common sense for anyone creating a mod. Right now the PC has three options. To pick a side, Harry or Sue or to stay out of it.
And I'll just stick to EXTERN because I don't want to force them to say anything, and this way I can end the argument on either Harry or Sue before going back to the PC. I don't want my mod to look one-sided, so I think this will give me the most flexibility.