Jump to content

[bug] SoD issues from jastey


CamDawg

Recommended Posts

Great, thank you! 👍

38 minutes ago, CamDawg said:

I need to look into both of these a bit more

I think the content of the Rasaad dialogue paths are ok for murderer/not murderer. It just brushed me the wrong way that for "not murderer ending" rasaad says one line and leaves. And for the "murderer ending" he babbles on and on how he nearly fell for the PC etcpp... EDIT: Especially because it's content noone will ever see. Who plays the full romance with LG Rasaad and then doesn't apply for the good ending?

But I think there is not much we can do here, really.

For the "NPC return to the entrance of the crypt": I wrote in my SoD NPC Tutorial here how it's done for the camps. It works with the SetGlobal("bd_npc_camp","locals",1) variable that the reply option "to wait at the entrance of the crypt" is also setting. EDIT orjust add a script block in bdparty.bcs  that e.g. checks for

Global("bd_npc_camp","locals",1)
OR(2)
	AreaCheck(bd0120)
	AreaCheck(bd0130)

etc.  and then moves the NPCs to the entrance area of bd0120.are.

55 minutes ago, CamDawg said:

If you look in the area file, the 'override script name' flag is set so they use their area name 'Followers' instead of the DV set in their creature file.

Oh, cool. Thanks for the info!

Link to comment
8 hours ago, jastey said:

Especially because it's content noone will ever see. Who plays the full romance with LG Rasaad and then doesn't apply for the good ending?

Well, I've heard there is the occasional paladin player who refuses to defend herself at the trial... 😉

NPCs now return to the beginning of the Crypt when dismissed.

Link to comment

Neera is supposed to comment on the "Bhaal skull at Boareskyr bridge" incident. From bd2000.bcs:

Spoiler

IF
    Global("bd_neera_special2","bd2000",0)  // Boareskyr Bridge & Bridgefort
    !IfValidForPartyDialog("neera")  // Neera
    OpenState("Bhaal_Skull",TRUE)
THEN
    RESPONSE #100
        SetGlobal("bd_neera_special2","bd2000",1)  // Boareskyr Bridge & Bridgefort
END

IF
    Global("bd_neera_special2","bd2000",0)  // Boareskyr Bridge & Bridgefort
    IfValidForPartyDialog("neera")  // Neera
    !ActuallyInCombat()
    OpenState("Bhaal_Skull",TRUE)
    Delay(8)
THEN
    RESPONSE #100
        DisplayStringHead("neera",67645)  // Hey. What was going on with that burning skull, anyway?
        SetGlobal("bd_neera_special2","bd2000",1)  // Boareskyr Bridge & Bridgefort
END

Problem with this: the skull will be visible after the door "Bhaal_Skull" closed. From bdcut28.bcs:

IF
	True()
THEN
	RESPONSE #100
		CutSceneId("bdcutid")  // No such index
		FadeToColor([20.0],0)
		Wait(3)
		StartMovie("sodcin02")
		Wait(1)
		CloseDoor("Bhaal_Skull")
		AmbientActivate("Bhaal_Smoke01",TRUE)
		AmbientActivate("Bhaal_Smoke02",TRUE)
		AmbientActivate("Bhaal_Smoke03",TRUE)
		AmbientActivate("Bhaal_Smoke04",TRUE)
		AmbientActivate("Bhaal_Smoke05",TRUE)
		AmbientActivate("Bhaal_Smoke06",TRUE)
etc.

So, shouldn't Neera's comment script blocks check for OpenState("Bhaal_Skull",FALSE) instead?

Link to comment

Found a nonsensical OR(4) in bd1000.bcs:

Spoiler

IF
    Global("BD_PET_MAIN","MYAREA",80)
    Global("bd_move_brielle","MYAREA",2)
    Global("bd_move_vessan","MYAREA",2)
    Global("bd_set_up","MYAREA",1)
    OR(4)
        TriggerOverride("bdpetr04",Range([PC],30))
        TriggerOverride("bdteleri",Range([PC],70))
THEN
    RESPONSE #100
        SetGlobal("bd_set_up","MYAREA",2)
        ClearAllActions()
        StartCutSceneMode()
        StartCutScene("bdpetcut")
END

 

Link to comment

The quest "Den of Thieves" given by bdstoneh.dlg can break if the player talks to Stonehand about this topic before it is resolved. SoD, coalition camp bd3000.are.

In bdstoneh.dlg state 21 the quest is handed out if the player asks "I'll be leaving soon, unless something else catches my attention here. Do you know of anything that might catch my attention?":

Spoiler

IF ~  GlobalGT("bd_plot","global",304)
GlobalLT("bd_plot","global",350)
AreaCheck("bd3000")
~ THEN BEGIN 21 // from: 55.1
  SAY #43986 /* ~Well, look who we have here. The hero of Baldur's Gate deigns to walk among us. Aren't you supposed to be spelunking in Caelar's caverns?~ [BD43986] */
  IF ~  GlobalLT("bd_sdd305_den_of_thieves","global",4)
~ THEN REPLY #60236 /* ~I'll be leaving soon, unless something else catches my attention here. Do you know of anything that might catch my attention?~ */ GOTO 49
  IF ~  Global("bd_sdd305_den_of_thieves","global",4)
~ THEN REPLY #60237 /* ~I thought I'd report back to you first. I've dealt with that thieves' guild.~ */ GOTO 59
  IF ~~ THEN REPLY #43987 /* ~I'm just heading out to deal with that now.~ */ GOTO 22
  IF ~~ THEN REPLY #43988 /* ~I was—I am. But before I go, tell me, what's your impression of Torsin de Lancie and Marshal Nederlok?~ */ GOTO 23
  IF ~~ THEN REPLY #43989 /* ~I'll deal with that in my own time.~ */ GOTO 30
END

(...)

IF ~~ THEN BEGIN 54 // from: 51.2 52.2 53.2
  SAY #50894 /* ~Well, don't go announcing your mission to the whole camp. Keep it under your hood, eh? Now, get moving!~ [BD50894] */
  IF ~~ THEN DO ~AddJournalEntry(61530,QUEST)
SetGlobal("bd_sdd305_den_of_thieves","global",1)
~ EXIT
END

The check for this reply option is "GlobalLT("bd_sdd305_den_of_thieves","global",4)" and the variable is set to "1" after this in state 54.

Problem: the variable gets increased along the quest but the setting to "1" in state 54 is done without any further checks. Thus, if the quest progressed to "bd_sdd305_den_of_thieves" being at "2" or "3" the variable would be reset to "1" if this reply options was chose again, breaking the ongoing quest.

Easiest solution would be disabling the reply option after the quest was given:

/* deactivate reply option in BDSTONEH.dlg which would reset the whole quest if talked to again */
ADD_TRANS_TRIGGER BDSTONEH 21 ~Global("bd_sdd305_den_of_thieves","global",0)~ DO 0

 

Link to comment

If Waizahb is spoken to by a paladin about the thieves' guild after receiving the quest from Stonehand and the player choses the "bullying" answer "I've no patience for your games. I need to meet with someone from the thieves' guild. Set it up, or things will get very unpleasant for you." with a apaladin PC, the journal entry tells that "She's headed to the north of camp now; perhaps I should follow her.", but the variables for it to happen will not be set:

Spoiler

IF ~~ THEN BEGIN 1 // from: 10.1 13.4
  SAY #48803 /* ~I'm afraid you've been misinformed, my <PRO_LADYLORD>.~ */
  IF ~  OR(2)
CheckStatGT(Player1,13,CHR)
Class(Player1,BARD_ALL)
~ THEN REPLY #48805 /* ~I don't think so, and that's a good thing. I have no intention of shutting you down. In fact, I'd like to meet a representative for the thieves' guild in camp. Can you arrange it?~ */ GOTO 0
  IF ~  !CheckStatGT(Player1,13,CHR)
!Class(Player1,BARD_ALL)
~ THEN REPLY #48805 /* ~I don't think so, and that's a good thing. I have no intention of shutting you down. In fact, I'd like to meet a representative for the thieves' guild in camp. Can you arrange it?~ */ GOTO 2
  IF ~~ THEN REPLY #58659 /* ~For your sake, I hope that's not true. I would speak with a member of the thieves' guild forming in camp. You will facilitate that—if you know what's good for you.~ */ GOTO 0
  IF ~  Class(Player1,PALADIN)
!Kit(Player1,Blackguard)
~ THEN REPLY #48806 /* ~I've no patience for your games. I need to meet with someone from the thieves' guild. Set it up, or things will get very unpleasant for you.~ */ GOTO 3

  IF ~  OR(4)
Kit(Player1,BARBARIAN)
Class(Player1,FIGHTER_ALL)
Race(Player1,HALFORC)
CheckStatGT(Player1,15,STR)
OR(2)
!Class(Player1,PALADIN)
Kit(Player1,Blackguard)
~ THEN REPLY #48806 /* ~I've no patience for your games. I need to meet with someone from the thieves' guild. Set it up, or things will get very unpleasant for you.~ */ GOTO 4
  IF ~  !Kit(Player1,BARBARIAN)
!Class(Player1,FIGHTER_ALL)
!Kit(Player1,Blackguard)
!Race(Player1,HALFORC)
!Class(Player1,PALADIN)
!CheckStatGT(Player1,15,STR)
~ THEN REPLY #48806 /* ~I've no patience for your games. I need to meet with someone from the thieves' guild. Set it up, or things will get very unpleasant for you.~ */ GOTO 5
  IF ~  Class(Player1,MAGE_ALL)
~ THEN REPLY #48807 /* ~I can tell you've never been properly cursed before. I promise that will change if you don't arrange a meeting 'twixt me and a thieves' guild representative. Don't try me on this, woman.~ */ GOTO 4
END

IF ~~ THEN BEGIN 2 // from: 1.1
  SAY #48808 /* ~You're sorely mistaken. I'm not a thief and I'll thank you not to insult me anymore. Good day.~ */
  IF ~~ THEN DO ~AddJournalEntry(61532,QUEST)
SetGlobal("bd_sdd305_den_of_thieves","global",3)
SaveLocation("LOCALS","bd_default_loc",[2337.300])
SetGlobal("bd_retreat","locals",1)
CreateCreature("bdrhynwi",[2246.246],SW)
~ EXIT
END

IF ~~ THEN BEGIN 3 // from: 1.3
  SAY #48809 /* ~As if a paladin would want to meet with thieves! You're trying to trick me somehow and I'm not falling for it. Good day.~ */
  IF ~~ THEN DO ~AddJournalEntry(61532,QUEST)
SetGlobal("bd_sdd305_den_of_thieves","global",3)

~ EXIT
END

From how the variable is set to "3" and other defiant reply options from Waizahb also lead to Rhynwis showing up, I'd suggest adding the moving of Waizahb and spawning of Rhynwis to the paladin case in state 3 as well, so the player will be able to finish the quest:

/* PC is paladin - spawn Rhynwis since the journal entry says she will be there */
ADD_TRANS_ACTION BDWAIZAH BEGIN 3 END BEGIN 0 END ~SaveLocation("LOCALS","bd_default_loc",[2337.300])
SetGlobal("bd_retreat","locals",1)
CreateCreature("bdrhynwi",[2246.246],SW)~

 

Link to comment

This one's from me rather than jastey, but I'm sure she won't mind ;)

Safana's got a personal quest that takes place in the coalition camp. It's been some time since I played it so I apologize if I'm fuzzy about the details, but the quest entailed confronting a number of people about a theft, gathering enough evidence and solving the case. It is possible to solve the quest without talking to all POIs, which is fine (better, in fact, if you ask me); the problem is, once the quest is solved you can still confront all remaining POIs about it as though the investigation were still pending.

Once the quest is solved, it would make more sense for all relevant dialog options to be removed from the characters involved.

Link to comment
On 4/22/2022 at 5:33 AM, jastey said:

Found a nonsensical OR(4) in bd1000.bcs:

Fixed.

On 5/1/2022 at 12:49 AM, jastey said:

The quest "Den of Thieves" given by bdstoneh.dlg can break if the player talks to Stonehand about this topic before it is resolved. SoD, coalition camp bd3000.are.

Fixed. Disabling the reply would have led to a NVLOR so I added a new branch without the variable set to close out the dialogue normally.

On 5/1/2022 at 12:59 AM, jastey said:

If Waizahb is spoken to by a paladin about the thieves' guild after receiving the quest from Stonehand and the player choses the "bullying" answer "I've no patience for your games. I need to meet with someone from the thieves' guild.

Fixed.

On 5/21/2022 at 6:03 AM, Andrea C. said:

Once the quest is solved, it would make more sense for all relevant dialog options to be removed from the characters involved.

Fixed. These replies do go away once you speak to Nederlok to formally close the quest, but now they're disabled once you've dealt with the traitor (usually by killing them, but the other options are covered as well).

Link to comment

I'll go with this thread because this issue might be local and/or resolution-dependent. For the record, I'm playing at 2560x1440.

The cutscene in which M'khiin sends her spirits to attack Baeloth centers the screen on M'khiin and most of the action occurs outside of the player's FOV.

 

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...