Jump to content


Photo

Centeol quest (partially broken)


  • Please log in to reply
21 replies to this topic

#1 Kobold

Kobold
  • Member
  • 22 posts

Posted 05 January 2008 - 09:40 AM

Hi,

I've stumpled apon a small but annoying bug regarding the Centeol quest.
After I got finally rid of my quite buggy BGT 1.04 install I started a new one (now BGT 1.05b) and realised how much had been broken in the install before (at some time some of my spell icons dissappeared and that was it actually for me), because now some quest which didn't really work before did so.

Anyways quite worked like a charm now (one no valid replies or links bug regarding the spy in SoBH but thatws already known and no prob at all) until I did the Centeol quest one further time. After beating up her and her spiders she iniates dialog and wants to tell her story, but in the second dialog window "no valid replies or links" is shown. This is annoying as hell because she reinitiates dialog over and over then and won't die.

The fun thing is I actually used only my main character the second time I tried using a ring of Free Action (before my whole party was killed by the damn spiders because of the webs and she wouldn't die because of the bug) and after getting out of the cave (click => dialog => click on exit => dialog => and so on) I though that perhaps I could spawn a monster to finish her while being outside.

I sent Xan in and now the dialog worked like a charm (and something new which I didn't know before because Xan gives her her true body back and she leaves for kicking Jons ass :D, so its probably another fork of the dialog).

So nice for me but without Xan in the party it wouldn't probably have worked.

Any ideas whats causing that? I'll attach a copy of my Weidu.log and can even come up with a save from straight before sending Xan or whoever in if interested.

Kobold

P.S.:

One other thing.. I was thinking about where to report this bug, but since it affects the normal BGT game (and not a mod) I thought the Weidu forum should be the best.

Attached Files



#2 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 05 January 2008 - 09:48 AM

BG1 NPC. I'll have a look at it.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#3 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 05 January 2008 - 09:54 AM

By the way, Kobold, are you using the v14 patch? I don't know if it's required for your specific issue, but check this link.

Thanks for your patience while I look into this.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#4 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 05 January 2008 - 10:01 AM

OK, this was very easy to troubleshoot. I'm afraid you have a reinstallation issue. The dialogue involved in this is very, very straightforward, and coded properly. It isn't unusual to have oddness when you reinstall a mod, I'm afraid.

This is the code in question:
APPEND _CENTEO

IF WEIGHT #-1 ~Global("P#Rain","GLOBAL",1)
~ THEN BEGIN P#Centeo
 SAY @0
= @1
= @2
IF ~!InParty("xan")~ THEN REPLY @3 DO ~SetGlobal("P#Rain","GLOBAL",2)~ + CenteolJon1
IF ~!InParty("xan")~ THEN REPLY @4 DO ~ SetGlobal("P#Rain","GLOBAL",2)~ + CenteolJon2
IF ~InParty("xan")~ THEN DO ~ SetGlobal("P#Rain","GLOBAL",2)~ EXTERN _XANJ XanTwist
END

IF ~~ CenteolJon1
SAY @5
= @6 
IF ~~ THEN JOURNAL @7 EXIT
END

IF ~~ CenteolJon2
SAY @8
= @9
= @10 
IF ~~ THEN REPLY @11 JOURNAL @7 EXIT
IF ~~ THEN REPLY @12 JOURNAL @13 EXIT
END
END

APPEND _XANJ

IF ~Global("P#Rain","GLOBAL",5)~ P#XanTalkofRain
SAY @14
IF ~~ THEN DO ~SetGlobal("P#Rain","GLOBAL",6)~ EXIT
END

END

CHAIN _XANJ XanTwist
@15
== _CENTEO @16
== _XANJ @17 
== _CENTEO @18
== _XANJ @19
== _CENTEO @20
== _XANJ @21
 == _CENTEO @22 
== _XANJ @23
= @24
== _CENTEO @25
== _XANJ @26
== _CENTEO @27
== _XANJ @28
END
IF ~~ THEN DO ~SetGlobal("P#SpeakUp","GLOBAL",1)~ EXIT


CHAIN IF ~Global("P#SpeakUp","GLOBAL",2)~ THEN _CENTEO XanTwist2
@29 
= @30
= @31
= @32
DO ~SetGlobal("P#SpeakUp","GLOBAL",3)~
== _XANJ @33
DO ~CreateVisualEffectObject("SPFLESHS","centeol")
ActionOverride("centeol",DestroySelf())
SetGlobal("P#Rain","GLOBAL",3)~ EXIT

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#5 Kobold

Kobold
  • Member
  • 22 posts

Posted 05 January 2008 - 10:26 AM

Hello Berelinde,

first of all, thanks for the really fast help and answer. But just one question.

You said this is a reinstallation issue. Question is do I have to reinstall anything because it worked with Xan of course or are there more errors which could oocur which make a reinstall necessary?

Thx

Kobold

P.S. As bigmoshi stated in the g3-Forum (your link), the actual question what does the patch do and what will it affect?
P.P.S and yes v14

Edited by Kobold, 05 January 2008 - 10:31 AM.


#6 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 05 January 2008 - 10:45 AM

By "reinstallation issue," I meant that sometimes, when mods are reinstalled on an existing game, things can get a little out of kilter.

You had BGTv1.04 installed, and you upgraded to BGT v1.05. A logical thing to do, and I would have done the same. However, BGT is traditionally placed very early in the installation, definitely before BG1 NPC. So, in order to update your installation, you had to reinstall BGT, to update the version.

Now, the way WeiDU works, all the mods installed *after* the mod you want to reinstall are first uninstalled. Then the target mod is installed, and all the mods installed afterwards are reinstalled, following the parameters set forth in the weidu.log. That's the beauty of WeiDU: takes the guesswork out.

Most of the time, you never notice anything odd after reinstalling a mod anywhere in the installation, however there can be issues, sometimes. One of those issues is that sometimes, files get corrupted, and dialogue gets messed up. String references can be lost, and you might notice NVROL (no valid replies or links), duplicated NPCs appearing, script errors, or other strangeness. I recently hosed my own installation by attempting to uninstall a component of BG2 Tweaks, so I know what I'm talking about. I've also had two Gavins appear, two Ketos appear, have had scripts go crazy, have had NPCs talking with the wrong lines, and have had NPCs fail to spawn. It happens.

If it does, you can sometimes solve the problem by reinstalling the affected mods. But in your case, the issue seems to be minor, so if you can live with the solution you found, I'd advise you to just carry on.

But please, do not hesitate to continue to bring any issues you might find to the attention of the appropriate forum.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#7 Kobold

Kobold
  • Member
  • 22 posts

Posted 05 January 2008 - 11:28 AM

Oh no,

so we misunderstood each other quite well and I have not stated exactly what I ment. I did a new full install of everything in a separate directory and tried to import my savegames (which helped for the icons) but then the world map was messed up and then I started a totally new game with the completely new install. My old install was quite thoroughly broken I think.

But thanks a lot

Kobold

#8 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 05 January 2008 - 11:33 AM

Ah, I see. That is a different situation entirely, and one that requires a little more digging on my part.

Do you know how to decompile dialogues using WeiDU? That can help me get to the bottom of your problem.

If you do not know how to decompile dialogues using WeiDU, I can walk you through it.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#9 Kobold

Kobold
  • Member
  • 22 posts

Posted 05 January 2008 - 12:48 PM

I don't know (yet ;) ), so please tell me :)

Kobold

#10 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 06 January 2008 - 08:35 AM

To decompile a dialogue file, please follow these steps. I hope your OS is Windows, because I don't know how to do it with OSX.
  • Download a copy of WeiDU here. You can just save it to your game directory.
  • Extract the ZIP. Open it up and copy the file marked weidu.exe to your game directory. In most cases, that will be c:\program files\black isle\bgii - soa.
  • Click on the "start" button, and select run.
  • Type cmd in the dialogue box that appears. That will open up a command (DOS) window.
  • Type cd followed by the path to your game directory. In most cases, you'll be typing in cd c:\program files\black isle\bgii - soa.
  • Type weidu centeo.dlg at the cursor.
  • The computer will work for a bit and when it is done, there will be a file called "centeo.d" in your game directory.
  • Attach that to this post, and I'll open it up and see what weirdness is happening on your install.
Looking forward to seeing how you make out.

Edited by berelinde, 06 January 2008 - 08:36 AM.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#11 Kobold

Kobold
  • Member
  • 22 posts

Posted 06 January 2008 - 11:14 AM

Well that was easy. Thanks for the very detailed instructions (Should've told I know who to use a command prompt :D)

Kobold

P.S. wohoooo GOTO :D (Just peeked into the file myself)

Attached Files

  • Attached File  CENTEO.d   10.45K   200 downloads

Edited by Kobold, 06 January 2008 - 11:16 AM.


#12 Kobold

Kobold
  • Member
  • 22 posts

Posted 06 January 2008 - 11:23 AM

I digged some more with my savegame... if I kick Xan from the party the dialog works also.

So it works:

- Without Xan in the party
- If only Xan is in the lair

It works not when Xan is in the Party and the dialog breaks (NVROL) with the text appearing in the button : "An exotic sorceress..."

Kobold

P.S.

What does that do (from Begin 11, could it break there?)

IF ~InParty("xan")
InMyArea("xan")
!StateCheck("xan",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("P#Rain","GLOBAL",2)
~ EXTERN ~XANJ~ 200

Probably uses anotther script file then? (of xan)

Edited by Kobold, 06 January 2008 - 11:27 AM.


#13 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 06 January 2008 - 12:41 PM

OK, so I'm a little confused.

It works when:
1 Xan is in the party, in the area, and alive, well and not silenced
2 When Xan is not in the lair

When doesn't it work?

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#14 Kobold

Kobold
  • Member
  • 22 posts

Posted 06 January 2008 - 01:09 PM

OK, so I'm a little confused.

It works when:
1 Xan is in the party, in the area, and alive, well and not silenced
2 When Xan is not in the lair

When doesn't it work?


It doesn't work when: My whole party with Xan is in the lair and it also doesn't work when only my main character (probably any other except of Xan as well) and the rest of the party (including Xan) is waiting outside.

It does work when: The whole party is waiting outside and only Xan enters the lair to talk to Centeol or if I kick Xan from the party (while being outside) and reentering (even though the dialog was broken before).

This leads to the conclusion (for me): If my main character (or the party, I don't know yet [Minsc, Jaheira, Khalid, Imoen]) and Xan are at once present in the lair it doesn't work. Only if Xan is alone in the lair (when in the party) it does work.

Hopefully I am being coherent now.

Kobold

#15 cmorgan

cmorgan
  • Modder
  • 2301 posts

Posted 06 January 2008 - 01:18 PM

Kobold, could you please do exactly what you did for decompiling Centeol with XANJ?

(I am a little stumped, too, berelinde - I can't figure out under what conditions this one could break with PC and Xan both present in the same area :( )

#16 Kobold

Kobold
  • Member
  • 22 posts

Posted 06 January 2008 - 01:25 PM

Here, hope that helps

Attached Files

  • Attached File  XANJ.d   537.84K   908 downloads


#17 Kobold

Kobold
  • Member
  • 22 posts

Posted 06 January 2008 - 01:30 PM

OK now i don't get it anymore myself. I am 100% perfectly sure it did not work the first time with the whole party in the lair, but now it does if I try again. The only condition it does not work at the moment is when only the PC is in the lair.... perhaps Xan was dead the first time round? will try that now.

Nope Xan dead but in the lair or out of it works too (wasn't easy to achive before Centeol starts talking, not sure I got that right). Only if Xan is outside but a party member the script breaks. I honestly don't get it what happened during my first try with the whole party... what condition coukld cause the script to break then. The one with Xan outside seems simple enough? Probably just a trigger that doesn't check correctly if Xan is inside the lair?

Kobold

P.S. Played around with SK to get a scroll of Power Word: Silence. Upon casting on Xan and entering with the Party the script breaks too. So the first time (with the whole party in the lair) it must have been some condition rendering Xan unable to speak which led to the bug.

So to summarize this mess I've generated: Script breaks if Xan is in party but outside of lair or if Xan is in lair but unable to speak. Otherwise it seems to work. Sorry for the confusion.

Edited by Kobold, 06 January 2008 - 01:53 PM.


#18 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 06 January 2008 - 01:57 PM

Thanks, Kobold! I'll run the dialogue you posted against the logic check you just provided, and "give it a good shake, and see what falls out."

*ahem* In other words, I'll look into it, and get back to you soonish (like tonight sometime, later).

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#19 cmorgan

cmorgan
  • Modder
  • 2301 posts

Posted 15 January 2008 - 09:49 AM

I think I got it.

An incredibly rare and hard to get bug, but it does make sense.

Xan is in the party but not able to talk/participate.

Ordinarily, a check could just be Inparty or !InParty.

Logic problem #174 - what happens when you apply these three conditions in your dialogue chain?

IF ~~ THEN BEGIN 11 // from: 10.0
SAY #105058 /* ~An exotic sorceress, with many powers at my command, and suitors at my door. But I only had eyes for one man, Jon Irenicus. He was a great and powerful wizard, the only man worthy of my affections, or so I thought. Though I lusted for Jon, he cared little for me, for he had another to whom he was married, lady Tanova.~ */

IF ~!InParty("xan")~ THEN REPLY #105059 /* ~Please, go on, that's quite a story!~ */ DO ~SetGlobal("P#Rain","GLOBAL",2)~ GOTO 12 <<EVALUATED THIRD

IF ~!InParty("xan")~ THEN REPLY #105060 /* ~Jon was married?! I... I think I heard about him. I thought he was in love with Ellesime, and then he lost his er... zest for women's charms...~ */ DO ~SetGlobal("P#Rain","GLOBAL",2)~ GOTO 14 <<EVALUATED SECOND

IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN DO ~SetGlobal("P#Rain","GLOBAL",2)~ EXTERN ~XANJ~ 200
END <<EVALUATED FIRST

And the answer is, Xan was not able to participate at first, so the CD_SNV kicks the dialogue appropriately along to the PC states. Then you hit a response that says

IF Inparty Xan AND valid THEN GOTO xan 200.
IF !Inparty Xan THEN ALLOW 12 OR 14

BUT

no response IF Inparty Xan AND notvalid.

The fix:

~OR(2) !InParty("xan") StateCheck("xan",CD_STATE_NOTVALID)~

Logging that when I get home, I need to search for all !InParty checks and make sure they logically line up so that having a party member in party but disabled doesn't accidentally mess up other calls. Eldoth/Skie interactions are particularly suspect, as there are alot of !InParty calls, as are Jaheira/Khalid.

Edited by cmorgan, 15 January 2008 - 09:50 AM.


#20 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 15 January 2008 - 10:25 AM

Now I see it! I feel like such a dolt.

But your fix is incomplete. You need OR(3) !InParty() !InMyArea() !SC().

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum