Jump to content

Imoen Bug


Guest Mimic

Recommended Posts

So I am back at Candlekeep and Imoen just mentioned memories and a half-eaten pie and she has asked it six times in a row so far. I think I have to kill her to get rid of the loop. Suggestions?

Link to comment

Sorry for the double post, but I needed to add this. Instead of choosing the pie answer I chose the Hull answer and that seemed to solve the problem. However, there is an error in the grammar. Imoen says"...let's drink his memory". Should it not be drink to his memory?

Link to comment

So, let me get this right.

 

Imoen says:

~Candlekeep... never thought I'd be back here again, and especially this early on. Brings back all sorts of memories, doesn't it?~

 

And you choose:

~Yes, like the time you pilfered that pie from Mr. Winthrop and gave it to me half-eaten, just before he arrived to yell at me.~

 

After that, she's supposed to say:

~Hey, I was just trying to share. How was I supposed to know Mr. Winthrop was coming by just then? Hmm?~

 

You have a choice of 4 responses, all of which are supposed to end the conversation. But one does not, because there is no global being set.

 

But I know why it repeats:

/* 3: Return to Candlekeep */
IF WEIGHT #-2 ~Global("X#IMinCK","GLOBAL",1) AreaCheck("FW2626")~ THEN BEGIN IMINT3
SAY @322
++ @323 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.1
++ @324 GOTO IMINT3.2
++ @325 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.3
++ @326 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.4
END

 

There is nothing telling the game that banter is done. Without checking the script to be certain, that is supposed to trigger when you return to Candlekeep. That sets the global variable at 1. The banter happens, and all responses except the pie one set it to 2, So it never happens again. But if you choose the pie one, it never gets set, so it repeats, since the conditions (still in Candlekeep) are still true. Guess it needs a DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ before the global.

 

Now, on to the second problem.

 

Starting with the "here we are back at Candlekeep, etc."

 

You say:

~Yes, it does.~

 

She says:

~Yep. Why, there's Hull! Let's go say hi to him!~

 

That's supposed to end it. Or are you talking about Hull's dialog?

 

Anyway, yes, there should be a "to" in there, but I'm going to have to dig for it in a bit. I've got to do some housework.

Link to comment
So, let me get this right.

 

Imoen says:

~Candlekeep... never thought I'd be back here again, and especially this early on. Brings back all sorts of memories, doesn't it?~

 

And you choose:

~Yes, like the time you pilfered that pie from Mr. Winthrop and gave it to me half-eaten, just before he arrived to yell at me.~

 

After that, she's supposed to say:

~Hey, I was just trying to share. How was I supposed to know Mr. Winthrop was coming by just then? Hmm?~

 

You have a choice of 4 responses, all of which are supposed to end the conversation. But one does not, because there is no global being set.

Correct.

 

But I know why it repeats:

/* 3: Return to Candlekeep */
IF WEIGHT #-2 ~Global("X#IMinCK","GLOBAL",1) AreaCheck("FW2626")~ THEN BEGIN IMINT3
SAY @322
++ @323 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.1
++ @324 GOTO IMINT3.2
++ @325 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.3
++ @326 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.4
END

 

There is nothing telling the game that banter is done. Without checking the script to be certain, that is supposed to trigger when you return to Candlekeep. That sets the global variable at 1. The banter happens, and all responses except the pie one set it to 2, So it never happens again. But if you choose the pie one, it never gets set, so it repeats, since the conditions (still in Candlekeep) are still true. Guess it needs a DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ before the global.

Well, fine. I just thought I would let the coders know.

 

Now, on to the second problem.

 

Starting with the "here we are back at Candlekeep, etc."

 

You say:

~Yes, it does.~

 

She says:

~Yep. Why, there's Hull! Let's go say hi to him!~

 

That's supposed to end it. Or are you talking about Hull's dialog?

Yeah, you have it right. And no, I was not talking about Hull's dialogue. *points to title of thread* Has nothing to do with him. Just Imoen.

Link to comment

Well, you couldn't have known, but Imoen actually has a couple of different dialog files. They might appear to be connected, but sometimes, they just happen that way. If you are paraphrasing Imoen, anyone who wants to find your specific paraphrase might have to dig through all of them. That is why supplying specific quotes is useful, because whomever is hunting for your quote can do a search using it. But you couldn't have known that!

 

She has her joining dialog file (the one where she says "Hiya! It's me, Imoen!" and she has her banter file, the one where she chitchats with various other NPCs and sometimes the pc. These banters are usually just random things. She also has an interjection file, where she says specific things in reaction to specific in-game events. These things are scripted, and occur at points that are relevant to Imoen's story: burying Gorion, returning to Candlekeep, walking into the Elfsong for the first time. There may even be a "dream" file, where stuff that happens at or after rest go. I'm going to start with the interjection file, and do a search for "memory."

 

BTW: the Hull dialog should have ended there. Anyway, I'll post the whole sequence in a few minutes.

Link to comment

OK. I have the sequence that happens if you go over and talk to Hull, and it looks like the omission has already been corrected, unless you mean something else. I'll do a quick sweep of the rest of the file just to make sure she isn't drinking to too many people's memories.

 

Imoen: Returning to Candlekeep.

 

Imoen: ~Candlekeep... never thought I'd be back here again, and especially this early on. Brings back all sorts of memories, doesn't it?~

 

Your selected response: ~Yes, it does.~

 

Imoen: ~Yep. Why, there's Hull! Let's go say hi to him!~

 

And that's it for this dialog. Really, it is. It's got

 

IF ~~ THEN EXIT
END

 

at the end of it, which means that when you hit continue, the dialog box will close.

 

But that isn't the point. Something might actually happen there, so I'm going to go backwards from the "drink to his memory" bit and see where it starts.

 

OK, I see a reference to drinking to Gorion's memory, but that version has been proofread and is correct in the newest build, which is just waiting on a couple minor bugs and BGT revisions.

 

Here is what I believe you are referring to, once you talk to Hull:

 

Hull: ~Now there's a face I never thought I'd see again in a million years. When we heard about Gorion's passing, Fuller and I went out to gather his body but you were nowhere to be seen. I don't know what you two came across that night but Gorion died a noble death saving you from it.~

 

Imoen: ~Oh, Hull, so many things have happened since... both good and bad... but nothin' was worse than ol' Gorion's being killed. <CHARNAME>, I think we should drink to his memory, while we're here in Candlekeep with our friends.~

 

Player choices:

1 ~That night's all a blur. We were ambushed and he told me to run, so I did.~

Hull replies: ~It's good that you did, kid, or you wouldn't be here to talk to me right now. There's never been any shame in running every now and again.~

And then the dialog ends.

 

2 ~I need your help, Hull.~

Hull replies: ~What kind of help?~

PC has a couple choices, but let's move on.

 

3 ~Thanks for taking care of his remains, Hull. I didn't have the means. Someday we'll sit down over a mug of ale and I'll tell you about it.~

Hull replies: ~I look forward to it, kid.~

And that ends the dialog.

 

 

And, after checking the entire file, Gorion is the only person Imoen wants to drink to while in Candlekeep, and the grammar is corrected in the upcoming version. Although, I must admit, the idea of memory being liquid enough to drink is kind of... different.

Link to comment

OK, now this is getting really weird. I was digging through the X#IMINT2.baf, looking for the script that triggers that interjection when I came across the following:

 

IF
InParty(Myself)
CombatCounter(0)
!See([ENEMY])
AreaCheck("FW2626")
Global("X#IMinCK","GLOBAL",1)
THEN
RESPONSE #100
SetGlobalTimer("X#IMinCKtimer","GLOBAL",1)
PlaySong(0)
PlaySound("imoen99")
StartDialogNoSet(Player1)
END

IF
InParty(Myself)
AreaCheck("FW2626")
Global("X#IMinCK","GLOBAL",1)
GlobalTimerExpired("X#IMinCKtimer","GLOBAL")
THEN
RESPONSE #100
SetGlobal("X#IMinCK","GLOBAL",3)
END

 

The first script block sets the timer (to one second real time!) and the second one advances the X#IMinCK global to 3. So why is this interjection still repeating? The interjection should start immediately, but I don't see why it would repeat. Maybe that timer needs to be longer?

Link to comment

Good point. She can't be, because the latest (unreleased, don't forget!) beta is corrected for the typo mentioned.

 

Unfortunately, I don't have a game at the point where I can go to Candlekeep without using the console.

 

The code and quotes I posted are from chev7.

Link to comment

I checked... the currently released Beta also has this code as you describe, berelinde - I think the last version to not have this set up was v11 (or 10). There seems to be some oddities with Imoen and two areas: Firewine and Candlekeep. I am going through back threads to see, but I remember fixing this and the Imoen in Firewine with the AreaCheck trigger... I will have to ask around and see how we can test the second block and see if we can figure out why it isn't firing. Perhaps I forgot a timer set?

 

I repaired the next internal version to

/* 3: Return to Candlekeep */
IF WEIGHT #-2 ~Global("X#IMinCK","GLOBAL",1) AreaCheck("FW2626")~ THEN BEGIN IMINT3
SAY @322
++ @323 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.1
++ @324 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.2
++ @325 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.3
++ @326 DO ~SetGlobal("X#IMinCK","GLOBAL",2)~ GOTO IMINT3.4
END

 

mimic, I apologise for the sloppiness, as this is one where my repairs took us back a step; I am glad you were able to continure. Until the full release version comes out, the workaround is either "Doctor, it hurts when I do this! ..Doctor: So, don't do that!" or use CLUAConsloleSetGlobal("X#IMinCK","GLOBAL",2) to advance.

Link to comment

Archived

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

×
×
  • Create New...