Jump to content

Interjection questions


Yovaneth

Recommended Posts

Suggestion for tutorial expansion; when the protagonist is talking to an non-party NPC (e.g. Bernard / Lt. Aegis / Dale Belmark) and an in-party NPC is required to interject into the conversation. This problem's been driving me nuts on and off for the last three or so months...

 

-Y-

Link to comment
Suggestion for tutorial expansion; when the protagonist is talking to an non-party NPC (such as Bernard in the Copper Coronet) and an in-party NPC is required to interject into the conversation. This problem's been driving me nuts on and off for the last three or so months...

 

-Y-

 

Errr... what exactly is the problem? You I_C_T or INTERJECT.

Link to comment
Errr... what exactly is the problem?  You I_C_T or INTERJECT.

Me, probably. I didn't explain that too well at all. What I meant was in the case of a completely new dialog i.e.

 

a. Protagonist talks to MyNewNPC

b. BiowareNPC intejects to a MyNewPC response

c. Protagonist carries on dialog with MyNewNPC

 

(a) and ©, no problem, but (b)? There's a very large hole in the wall next to my PC where my head has been making its acquaintance.

 

-Y-

Link to comment

Thats not hard you just make that dialogue block a CHAIN

e.g.

 

CHAIN MYNPC statename
~I'm going to say something worthy of interjection~
== CERNDJ IF ~InParty("Cernd")~ THEN ~You suck.~
== MYNPC ~And now I carry on.~
END
++ ~Some PC response~ EXIT

Link to comment

Hi Grim

 

That matches with what I thought I knew (fortunately!); what I could never get my head round was getting the Weidu code right. Look at this (please! :p )

 

//---------------------------------------------------------
IF ~Global("ys_TowerGuard","GLOBAL",0)~ THEN BEGIN BLK1
SAY ~Well, now, you tell me what I want to know and I'll tell you whether you're coming in - or not, as the case may be.~
IF~!InParty("Nalia")~THEN REPLY ~Open that gate or you will not live to regret it.~ GOTO BLK3
IF~InParty("Nalia")~THEN <Nalia interjects here> ~ GOTO BLK6
END

//---------------------------------------------------------
IF ~Global("ys_TowerGuard","GLOBAL",0)~ THEN BEGIN BLK3
SAY ~Ha! How about you just go away and come back when you feel like being more polite?~
IF~~THEN EXIT
END

//---------------------------------------------------------
IF ~Global("ys_TowerGuard","GLOBAL",0)~ THEN BEGIN BLK6
SAY ~Please stand clear while I lower the drawbridge.~
IF~~THEN EXIT
END


//Nalia interjection
CHAIN IF ~Global("ys_TowerGuard","GLOBAL",0)
         InParty("Nalia")~THEN yscgtowr BLK6
 ~Ha! How about you just go away and come back when you feel like being more polite?~
== NALIAJ IF ~InParty("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID) See("Nalia")~ THEN
 ~What? How dare you! Open this gate right now!~
== yscgtowr IF ~InParty("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID)  See("Nalia")~ THEN
 ~And who are you, you pretty little thing?~
== NALIAJ IF ~InParty("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID)  See("Nalia")~ THEN
 ~Nalia D'Arnise, you blind fool! Open this gate immediately or I'll have your testicles boiled and dried for sling practice!~
== yscgtowr IF ~InParty("Nalia") !StateCheck("Nalia",CD_STATE_NOTVALID)  See("Nalia")~ THEN
 ~Nalia - ! Oh Hells. At once, my lady.~
END

 

BLK6 is also the endpoint for the 'polite' non-Nalia path. Does that make a little more sense of my problem?

 

-Y-

Link to comment

Okay, you're on the right lines but you're making some mistakes. If you're having NALIA's interjection entirely seperate from the non-injecting version you don't need to check InParty("Naila") everytime. Also as its not the start of a dialogue, you don't need starting conditions. In fact you're doing that for every block. You only need conditions on blocks that start dialogues:

 

//---------------------------------------------------------
IF ~Global("ys_TowerGuard","GLOBAL",0)~ THEN BEGIN BLK1
SAY ~Well, now, you tell me what I want to know and I'll tell you whether you're coming in - or not, as the case may be.~
IF~!InParty("Nalia")~THEN REPLY ~Open that gate or you will not live to regret it.~ GOTO BLK3
IF~InParty("Nalia")~THEN GOTO BLK6
END

//---------------------------------------------------------
IF ~~ THEN BEGIN BLK3
SAY ~Ha! How about you just go away and come back when you feel like being more polite?~
IF~~THEN EXIT
END

//---------------------------------------------------------
IF ~~ THEN BEGIN BLK6
SAY ~Please stand clear while I lower the drawbridge.~
IF~~THEN EXIT
END


//Nalia interjection
CHAIN yscgtowr BLK6
~Ha! How about you just go away and come back when you feel like being more polite?~
== NALIAJ ~What? How dare you! Open this gate right now!~
== yscgtowr ~And who are you, you pretty little thing?~
== NALIAJ ~Nalia D'Arnise, you blind fool! Open this gate immediately or I'll have your testicles boiled and dried for sling practice!~
== yscgtowr ~Nalia - ! Oh Hells. At once, my lady.~
EXIT

 

You said that BLK6 was the end of that dialogue, yes? Then you want an EXIT as I've added.

 

Edit: I'm confused by one point however. You have two BLK6s. What's the behaviour you want?

 

My guess is you want the Nalia BKL6 followed by the first one:

e.g.

 

//---------------------------------------------------------
IF ~Global("ys_TowerGuard","GLOBAL",0)~ THEN BEGIN BLK1
SAY ~Well, now, you tell me what I want to know and I'll tell you whether you're coming in - or not, as the case may be.~
IF~!InParty("Nalia")~THEN REPLY ~Open that gate or you will not live to regret it.~ GOTO BLK3
IF~InParty("Nalia")~THEN GOTO BLK6
END

//---------------------------------------------------------
IF ~~ THEN BEGIN BLK3
SAY ~Ha! How about you just go away and come back when you feel like being more polite?~
IF~~THEN EXIT
END

//Nalia interjection
CHAIN yscgtowr BLK6
~Ha! How about you just go away and come back when you feel like being more polite?~
== NALIAJ ~What? How dare you! Open this gate right now!~
== yscgtowr ~And who are you, you pretty little thing?~
== NALIAJ ~Nalia D'Arnise, you blind fool! Open this gate immediately or I'll have your testicles boiled and dried for sling practice!~
== yscgtowr ~Nalia - ! Oh Hells. At once, my lady.~
=  ~Please stand clear while I lower the drawbridge.~
EXIT

 

Edit#2: However, that can't be right as you then have the bloke responding to himself in the Nalia version, which is bad. This is my best guess at what you wanted:

 

//---------------------------------------------------------
IF ~Global("ys_TowerGuard","GLOBAL",0)~ THEN BEGIN BLK1
SAY ~Well, now, you tell me what I want to know and I'll tell you whether you're coming in - or not, as the case may be.~
IF ~~ THEN REPLY ~Open that gate or you will not live to regret it.~ GOTO BLK3
END

//---------------------------------------------------------
IF ~~ THEN BEGIN BLK3
SAY ~Ha! How about you just go away and come back when you feel like being more polite?~
IF ~!InParty("Nalia")~ THEN EXIT
IF ~InParty("Nalia")~  THEN EXTERN NALIAJ BJK6
END

//Nalia interjection
CHAIN NALIAJ BLK6
~What? How dare you! Open this gate right now!~
== yscgtowr ~And who are you, you pretty little thing?~
== NALIAJ ~Nalia D'Arnise, you blind fool! Open this gate immediately or I'll have your testicles boiled and dried for sling practice!~
== yscgtowr ~Nalia - ! Oh Hells. At once, my lady.~
=  ~Please stand clear while I lower the drawbridge.~
EXIT

Link to comment

<Quietly fills in the head-shaped hole in the wall>. Many thanks Grim; the problem turned out to be that See("<crename>") was causing a "No Valid Replies Or Links"..... go figure. One last minor question please; if I need to have a DO~ action depending on Nalia's reply, where would it go? I tried this:-

 

CHAIN yscgtowr BLK6
~Ha! How about you just go away and come back when you feel like being more polite?~
== NALIAJ ~What? How dare you! Open this gate right now!~
== yscgtowr ~And who are you, you pretty little thing?~
== NALIAJ ~Nalia D'Arnise, you blind fool! Open this gate immediately or I'll have your testicles boiled and dried for sling practice!~
== yscgtowr ~Nalia - ! Oh Hells. At once, my lady.~
DO~SetGlobal("ys_TalkedToGuard","GLOBAL",1)~
EXIT

-and it compiled okay but the variable did not appear to be set. It triggers a cutscene and works fine down one of the other dialog paths.

 

[EDIT]: It does work; it turned out I'd overwritten the cutscene trigger script with an earlier, non-working version. Bugger.

 

[EDIT 2]: If I wanted to continue the dialogue, would I use a

++ ~Some PC response~ GOTO TheNextBlock~

-Y-

Link to comment

Archived

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

×
×
  • Create New...