Jump to content

Jaheria repeating herself constantly


Guest Theruss

Recommended Posts

Guest Theruss

Hi guys. I am having a blast with this great mod. Unfortunately in the area south of Beregost. After resting, Jaheria constantly brings up the talk about burying Gorion's body. Is there any way to make her stop? I kicked her out of the party and then brought her back but she still kept going on and on about Gorion's burial.

 

I noticed a lot of topics with similar problems involved changing the code or something. If that is what must be done with this bug. Can someone explain where I would go to access and change the code? Forgive my ignorance but I am rather a newbie when it comes to these things.

 

Any help is appreciated.

Link to comment
Guest Theruss

Oh, forgot to mention that I am running the mod with EasyTutu and that when I "Force-talked" Jahiera earlier a few times. She still brought up only Gorion's burial. Now after resting, she won't stop bringing that up every 3 seconds. Again, any help is appreciated.

Link to comment

OK, let me fish for some more information after this, but you should be able to stop this happening by using

 

CLUAConsole:SetGlobal("X#IMGBody","GLOBAL",3)

 

 

This should shut down all of the related talks. What it looks like is happening is that you have found a loophole in my logic; I must have missed a path, and now Jahiera is trying to get her friendship talk going, but keeps looping back to the Bury Gorion talk.

 

Jaheira talking about this is a special friend talk, which fires if the game says it is time for the first friend talk but Gorion is not buried. It should only play once, then advance, so I will review the code and add a "play only once" part. She keeps repeating because something is stuck in that loop, and since all the conditions don't change, she keeps coming back to talk to the PC. I thought I had fixed this, but somehow something didn't get set correctly...

 

The fish for info: What was your sequence of play, please? For example, I though of several paths, but must have missed one. My favorite new one is

1. start game, Gorion is killed.

2. Pick up Imoen, go back to Candlekeep.

3. Talk to keeper, tell keeper to bury Gorion.

4. Go to Gorion's body, passing deathcoach, and find items. Imoen has talk.

5. Go pick up Jaheira & Khalid.

 

What was you sequence, please?

Link to comment
Guest Theruss

Yeah, I just started the game and my sequence went like this...

 

1. start game, Gorion is killed.

2. Pick up Imoen, go up the path and got Xzar and Monty

3. Went north to see Gorion's body. Imoen had some things to say.

4. Left the area and went through the required areas to get to the Friendly Arm Inn.

5. Picked up Jaheria and Khalid.

6. Went north to recruit Ajantis

7. Went to Beregost, recruited Kagain, and did the Silke sidequest, which was basically killing her.

8. Went back to the north area from Beregost to do Kagain's quest.

9. Afterwards went to the area south of Beregost to head to Nashkel. Used the rest command and then Jaheria kept repeating herself constantly.

 

Note: I force talked Jaheria twice in Beregost and she said the Gorion burial dialog. I thought maybe it wasn't a big deal since his death did happen recently and maybe she'd speak of something else later.

 

So, I just have to put that code in the CLUAConsole to get her to stop that dialog? I know how to do that, I'll give it a try later.

Link to comment
Guest Theruss

Okay, I tried using the code you gave me. Pressed TAB + Spacebar to bring up the console and then put in CLUAConsole:SetGlobal("X#IMGBody","GLOBAL",3)

 

However, it doesn't stop her... she keeps going. Tried entering it before she starts doing that and during it. She just won't stop. I am not too far into the game and I am thinking about just starting over and hoping that this does not happen again. Strange...

Link to comment

OK, something is indeed going wrong here. Here is the code for the dialogue that I tink is looping:

 

Jaheira = ~Where do you think we should inter Gorion’s remains? Khalid and I have been discussing this. We are his closest friends, but you are his next of kin, so we want to know your opinion.~

IF WEIGHT #-2 ~
Global("JaFriendTalk","GLOBAL",1)~ THEN BEGIN JAPC1
SAY @0
IF ~~ THEN REPLY @1 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.1
IF ~~ THEN REPLY @2 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.2
IF ~~ THEN REPLY @3 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.3
END

 

According to this code, it should play only once. If you can check Jaheira in a saved game (ShadowKeeper, NI, something) see what the LOCALS JAPC1 is equal to. Or, try setting this with

 

CLUAConsole:SetGlobal("JAPC1","LOCALS",1)

 

If that stops the banter, we know that something is interfering with the dialogue. If it doesn't, then something else is pretty wrong!

 

I see that you found Gorion, so Jaheira's script should have picked this up and skipped to a different variable.

IF
InParty(Myself)
CombatCounter(0)
!See([ENEMY])
RealGlobalTimerExpired("JaFriendTalkTime","GLOBAL")
!StateCheck(Player1,STATE_SLEEPING)
See(Player1)
CombatCounter(0)
Global("JaFriendTalk","GLOBAL",0)
GlobalLT("X#IMGBody","GLOBAL",3)
THEN
RESPONSE #100
PlaySong(0)
PlaySound("jahei99")
IncrementGlobal("JaFriendTalk","GLOBAL",1)
RealSetGlobalTimer("JaFriendlyTalkTime","GLOBAL",5)
StartDialogueNoSet(Player1)
END <<<<<<<<<<This is the block firing the talk you see, over and over again. It shouldn't do this, as it has IncrementGlobal("JaFriendTalk","GLOBAL",1). I will change this to read SetGlobal("JaFriendTalk","GLOBAL",1). 

IF
InParty(Myself)
RealGlobalTimerExpired("JaFriendTalkTime","GLOBAL")
Global("JaFriendTalk","GLOBAL",0)
!GlobalLT("X#IMGBody","GLOBAL",3) <<<This block should be firing as well, stopping the dialogue. I will change this to GlobalGT("X#IMGBody","GLOBAL",2)
THEN
RESPONSE #100
IncrementGlobal("JaFriendTalk","GLOBAL",2) <<<<and this to SetGlobal as well.
END

IF
InParty(Myself)
CombatCounter(0)
!See([ENEMY])
RealGlobalTimerExpired("JaFriendTalkTime","GLOBAL")
!StateCheck(Player1,STATE_SLEEPING)
See(Player1)
CombatCounter(0)
Global("JaFriendTalk","GLOBAL",2)
InParty("khalid")
See("khalid")
!StateCheck("khalid",CD_STATE_NOTVALID)
THEN
RESPONSE #100
PlaySong(0)
PlaySound("jahei99")
IncrementGlobal("JaFriendTalk","GLOBAL",1) <<<So the way to trigger the next dialogue is to use this one
RealSetGlobalTimer("JaFriendlyTalkTime","GLOBAL",5)
StartDialogueNoSet(Player1)
END

This means that you should also be able to use

 

CLUAConsole:SetGlobal("JaFriendTalk","GLOBAL",3) to try to get it to move along.

 

I will recheck ythe code and make those changes. It is entirely possible that this is not a problem with your install, but a mistake on my part -- i thought everything was covered by an area script timer that shut this down. Jaheira is not holding up her end of the bargain!

Link to comment
OK, something is indeed going wrong here. Here is the code for the dialogue that I tink is looping:

 

Jaheira = ~Where do you think we should inter Gorion’s remains? Khalid and I have been discussing this. We are his closest friends, but you are his next of kin, so we want to know your opinion.~

IF WEIGHT #-2 ~
Global("JaFriendTalk","GLOBAL",1)~ THEN BEGIN JAPC1
SAY @0
IF ~~ THEN REPLY @1 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.1
IF ~~ THEN REPLY @2 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.2
IF ~~ THEN REPLY @3 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.3
END

 

Forgive the comments of a noober modder, but maybe moving the global increment closer to the check would help?

Could you add the following line after SAY@0?

 

DO ~SetGlobal("JaFriendTalk","GLOBAL",2)

 

With the banters I've been doing, I've been using the following:

 

Global("B!GavinImoen2","LOCALS",0)~ THEN ~BB!GAVIN~ BGavinImoen2

~Imoen, you dropped something.~

DO ~SetGlobal("B!GavinImoen2","LOCALS",1)~

Link to comment
Guest Theruss

"Jaheira = ~Where do you think we should inter Gorion’s remains? Khalid and I have been discussing this. We are his closest friends, but you are his next of kin, so we want to know your opinion.~"

 

Yeah, that is the conversation that is looping. I tried the code CLUAConsole:SetGlobal("JAPC1","LOCALS",1)

 

That doesn't stop her at all though. So, I tried the other code CLUAConsole:SetGlobal("JaFriendTalk","GLOBAL",3)

 

She stopped talking about Gorion and moved on about asking Hero about if he has any questions about the forest areas and nature and all that Druid stuff. But get this... she keeps repeating herself with this new conversation!

 

Yeah, so I started a new game and I am doing the sequence you suggested earlier to see if I can prevent Jaheria from looping her conversations. I will keep the buggy game saved though, just in case you guys want to give me suggestions and other codes to try to fix this loop, if possible. It's the least I can do, considering that despite this random bug occurance, this mod is still very great.

 

I just hope that she doesn't loop on me again in the new game... I'll keep you guys informed on anything else strange that I encounter.

Link to comment

OK, well, darn! Let me think on this for a bit, and check with Domi et al. I may have misdiagnosed - perhaps something else is expecting to fire, and Jaheira's friend talks never got off of the ground. This would be a Bad Thing .

 

If you could .rar or .zip up your DEBUG file and WeiDU.LOG, I could check that everything installed correctly -- let me know how the new game goes, please, because I really want to fix this so it can't happen to anyone else!

 

@berelinde

 

We could probably do something similar to waht you say; this is one of the oldest pieces of code in the mod, so may have been built bfore some of the newer coding options were available.

 

We may have to confirm, though, that what you are doing works on a straight APPEND. For CHAIN that works, but if I recall corectly

 

APPEND ~myNPCbanterfile~

 

IF ~Global("variable","TYPE",#)~ THEN BEGIN statename

SAY ~NPC text goes here~

IF ~~ THEN REPLY ~text1~

IF ~~ THEN DO ~IncrementGlobal("variable",#)~ EXIT

END

 

IF ~Global("variable","TYPE",#)~ THEN BEGIN statename2

SAY ~NPC text goes here~

IF ~~ THEN REPLY ~text1~ DO

IF ~condition1~ THEN REPLY ~text2~ DO ~SetGlobal("variable","TYPE",#)~ EXTERN ~NPC2banterfile~ newstatename

IF ~condition2~ THEN DO ~IncrementGlobal("variable",#)~ EXIT

END

 

END

 

is valid but a straight SAY ~x~ DO ~y~ only works with CHAINs.

 

Paging Grim Squeaker et al for confirmation?

Link to comment

Yes, you are correct, of course. Dummy noober stuff.

 

But that wasn't my entire point. I understand that you are incrementing "JaFriendTalk" further down the code, but would it hurt to put in a check for JAPC1 before the reply? You can check the local before the SAY @0

 

IF WEIGHT #-2 ~
Global("JaFriendTalk","GLOBAL",1) Global("JAPC1","LOCALS",0)~ THEN BEGIN JAPC1
SAY @0
IF ~~ THEN REPLY @1 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.1
IF ~~ THEN REPLY @2 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.2
IF ~~ THEN REPLY @3 DO ~SetGlobal("JAPC1","LOCALS",1)~ GOTO JAPC1.3
END

Link to comment

My new game seems be going fine right now. I am pretty much going to Nashkel again with pretty much the same party. I used your sequence you posted earlier and got Gorion buried and so Jaheria did not bring it up. Instead she brought up her Nature/forest/Druid talk. And only once this time :mad:

 

So, it seems like things are going as well as they should be. But if anything else strange happens, I'll let you know. Oh, I put the WeiDU.LOG and the DEBUG log in a zip file as you suggested. If you would like to take a look at it, I'll send it to you. However, how should I send it to you? I checked your profile and went to email, but apparently you cannot send attachments... unless I am missing it somehow...

Link to comment

I found something a little odd... might not have anything to do with the mod, but I'll tell you guys about it anyway. In Nashkel, when you try to recruit Edwin when he asks to kill Dynaheir. Do not say the option that goes,

 

"I will not kill someone without sufficiant reason. Come with us and we will find your Dynaheir and we will decide how to proceed."

 

After I chose the option. Edwin said he'd come with but didn't join the party at all, and then when you click on him again. It says, Edwin has nothing to say to you. I tried with an empty slot in the party and without.

 

It seems that response option is useless. However, you can just say that you accept and he joins up no problem. Just thought I'd share this strange occurance.

Link to comment

berelinde, the good thing about us both being noobers is that we see stuff that noone else sees (or they have seen so many times that it flies by unnoticed) :mad: Yep, I bet that would do it. It works for BAFs, so it would work for dialogues --

 

Let me think out loud here.

I think the original coders didn't do this because this is BCS driven by timer. Incrementing here is supposed to work like this:

BCS timer "JaFriendlyTalkTime" ends, and makes script block available.

Since Global("JaFriendTalk","GLOBAL",0) and timer expired, BCS triggers a change of the "JaFriendTalk","GLOBAL" and initiates StartDialogueNoSet (since the global is now not 0, it should not play again).

Talk runs, setting the Locals, which in this case of early code are used by other talks to trigger (each one is a trigger condition for the next talk). Another more common usage would be to use a single GLOBAL to advance, or to walk a LOCALS variable up numbers rather than creating individual locals each time, I think... so in this case, the code was designed to rest on the new timer setting, found later in Jaheira's BCS --

 

IF

OR(#) condition condition etc etc -- increment global and SetGlobalTimer.

 

I bet what I did when adding new conditions to this friend ltalk is create a loophole where if you don't bury Gorion, you get the talk -- but do not ever get a chance to advance the variable. I need then to go back over the code and both a. set additional single trigger conditions on the talk as you pointed out, so it will only fire once, b. check the BAF addition to Jaheira's BCS to make sure the activation of this talk happens only once, and c. make this talk a special case, like Ajantis' scripts, where this is a single-shot manually advanced talk in the sequence, which then goes back into regular timers, etc.

 

It may even be worth detaching this as an independent event, and having Jaheira begin her FriendTalk sequence at 3 as she does if you have already buried Gorion. Turning this into an immediate interjection in the FAI after joining the party would keep author intent, but would make sure the FriendTalks could not be disrupted.

 

@Theruss - go for svowles at comcast dot net !

Link to comment

Archived

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

×
×
  • Create New...