Jump to content

[Bug Report] [BG:EE] Being eligible for the Rasaad romance can break his entire questline


Recommended Posts

[Edit] I've changed part of the title of this thread from "RASAAD.BCS and/or RASAADJ.DLG" to "Being eligible for the Rasaad romance can break his entire questline".

If this bug is present in the latest patch (it is present in v2.6.5 and reproducible in just a few minutes), then I'm pretty sure any community defined as "people who play Baldur's Gate" would be far more keen to have the bug fixed than much of the minutiae discussed in relation to the EE Fixpack. I mentioned below that a Beamdog forum user had either the same or a very similar bug, and that I was waiting for them to confirm which patch they had installed. I can clarify that the Beamdog forum user did not post again, so I have no more information to add. I can clarify also that I have no intention of doing anything further with this bug. In the event that this bug was already fixed, that's great, but I suspect most people who go to the trouble of writing a 1600-word step-by-step bug report, covering every single relevant variable, script block, dialogue state and response, would probably still appreciate the acknowledgement of being told that the bug is no longer an issue. [/Edit]

 

There is a bug with Rasaad in BG:EE v2.6.5. More importantly, it seems that either the bug remains in BG:EE v2.6.6, or BG:EE v2.6.6 contains a very similar bug.

I don't have v2.6.6 installed at present to check. However, a user over on the Beamdog forums encountered a problem that is very similar, yet different, which I can't explain by reference to v2.6.5 (even after looking at their save game). It seemed that the Beamdog forum user has v2.6.6, although I'm waiting for them to clarify if this is the case.

 

BG:EE v2.6.5 Bug

Current Behaviour

A Good-aligned female Player1 that recruits Rasaad and (1) kicks him out of the party after his first quest talk, but before his first romance talk; and (2) has Rasaad rejoin the party at least 7 days after his first quest talk; will find that the Dark Moon Monk ambush in AR1200 (BG South) that kicks off the action in Rasaad's quest will never trigger.

Expected Behaviour

A Good-aligned female Player1 that recruits Rasaad should (1) get the first quest talk 1 day after first recruitment; (2) get the first romance talk 4 days after first recruitment; (3) get the second quest talk 7 days after the first quest talk; (4) get the Dark Moon Monk ambush 2 days after the second quest talk (when in AR1200 (BG South) with Entillis Fulsom not in visual range of Rasaad).

Bug Reproduction

5 script blocks in RASAAD.BCS contribute in some way to this bug. As the 5 script blocks occur one after another, I will identify only the line numbers of the start of the first block (102) and the end of the last block (163). The ordering of these blocks is relevant to the bug, so I will refer to these blocks as Blocks 1-5, with Block 1 being nearest to the top of RASAAD.BCS.

Spoiler

(1) Create a Good-aligned female Player1.

(2) Speak to Rasaad for the first time, via RASAAD.DLG state 1 (Player1 initated dialogue) or via RASAAD.DLG state 30 (Rasaad initiated dialogue after he joins the fight against Neira or Nimbul). All transitions perform the following action:

    SetGlobal("RASAAD_PLOT","GLOBAL",1)

(3) Recruit Rasaad. This happens via RASAAD.DLG state 28. All transitions perform the following action, setting a quest timer:

    SetGlobalTimer("RASAAD_CDEV1_TIMER","GLOBAL",ONE_DAY).

(4) With Rasaad in the party, and a Good-aligned female Player1, Block 1 in RASAAD.BCS triggers, setting a romance timer:

IF
    Global("RASAAD_ROMANCE","GLOBAL",0)
    InParty(Myself)
    Gender(Player1,FEMALE)
    [Snip - Checks that Rasaad is in the party; Player1 is female; Player1 is Good-aligned]
THEN
    RESPONSE #100
        SetGlobal("RASAAD_ROMANCE","GLOBAL",1)
        SetGlobalTimer("RASAAD_ROMANCE_TIMER1","LOCALS",FOUR_DAYS)
END

(5) 1 day after Rasaad's first recruitment, with Rasaad still in the party or having rejoined, the quest timer in Step (3) expires. Block 3 in RASAAD.BCS triggers, and Rasaad initiates dialogue:

IF
    InParty(Myself)
    GlobalTimerExpired("RASAAD_CDEV1_TIMER","GLOBAL")
    GlobalLT("RASAAD_CDEV","LOCALS",1)
    !ActuallyInCombat()
THEN
    RESPONSE #100
        StartDialogNoSet(Player1)
END

(6) RASAADJ.DLG selects State 49 ("You appear troubled. Does a shadow lie upon your soul, <CHARNAME>?"), which has a weight of 8. The state triggers are as follows:

    InParty("RASAAD")
    GlobalLT("RASAAD_CDEV","LOCALS",1)
    GlobalTimerExpired("RASAAD_CDEV1_TIMER","GLOBAL")

(7) State 49, transition 4 ("No time to talk") is irrelevant - it ends dialogue and resets the quest timer from Steps (3) and (5). State 49, transitions 1-3 perform the following action:

    SetGlobal("RASAAD_CDEV","LOCALS",1)

(8) State 49, transition 3 directly leads to State 50 ("In times of discomfort..."). State 49, transitions 1-2 ultimately lead to State 52 ("How may I enlighten you?"). The only routes from States 50 and 52 to end dialogue perform the following action, setting a quest timer:
 
    SetGlobalTimer("RASAAD_CDEV2_TIMER","GLOBAL",SEVEN_DAYS)

(9) Remove Rasaad from the party. Wait for a minimum of 7 days. The romance timer in Step (4) and the quest timer in Step (8) have now expired. Recruit Rasaad again.

(10) With Rasaad back in the party, and the romance timer in Step (4) expired, Block 2 in RASAAD.BCS triggers and Rasaad initiates dialogue:

IF
    InParty(Myself)
    Global("RASAAD_ROMANCE","GLOBAL",1)
    GlobalTimerExpired("RASAAD_ROMANCE_TIMER1","LOCALS")
    !ActuallyInCombat()
THEN
    RESPONSE #100
        StartDialogNoSet(Player1)
END

(11) RASAADJ.DLG selects State 69 ("Do you seek enlightenment?"), which has a weight of 10. The state triggers are as follows:

    GlobalTimerExpired("RASAAD_CDEV2_TIMER","GLOBAL")
    GlobalLT("RASAAD_CDEV","LOCALS",3)
    Global("RASAAD_CDEV2_END","LOCALS",0)

This is where the problems begin, because State 69 is the second of Rasaad's quest talks, yet this state has been selected as a result of the expiry of a romance timer

(12) State 69, transition 3 ("Not now, Rasaad") is irrelevant - it ends dialogue and resets the quest timer from Step (8). State 69, transitions 1-2 both perform the following actions:

    SetGlobal("RASAAD_CDEV","LOCALS",2)
    SetGlobal("RASAAD_CDEV2_END","LOCALS",1)

The remainder of the dialogue is irrelevant.

(13) With dialogue terminated, the romance timer in Step (4) expired, and there being no changes to the global variable "RASAAD_ROMANCE", Block 2 in RASAAD.BCS triggers for a second time. Rasaad initiates dialogue:

IF
    InParty(Myself)
    Global("RASAAD_ROMANCE","GLOBAL",1)
    GlobalTimerExpired("RASAAD_ROMANCE_TIMER1","LOCALS")
    !ActuallyInCombat()
THEN
    RESPONSE #100
        StartDialogNoSet(Player1)
END

(14) RASAADJ.DLG selects State 117 ("Do you ever stop to contemplate the moonlight reflected on water?"), which has a weight of 12. The state triggers are as follows:

    Global("RASAAD_ROMANCE","GLOBAL",1)
    GlobalTimerExpired("RASAAD_ROMANCE_TIMER1","LOCALS")

(15) From State 117, dialogue proceeds in fashion that will lead to one of the following two actions, ensuring that the value of the global variable "RASAAD_ROMANCE" is changed:
 
    SetGlobal("RASAAD_ROMANCE","GLOBAL",-1)
OR
    SetGlobal("RASAAD_ROMANCE","GLOBAL",2)

I am unaware of any problems with or caused by the Rasaad romance after this point, although I have neither played the romance myself nor actively looked for any problems.

(16) As explained above in Steps (10) and (13), Block 2 in RASAAD.BCS has triggered twice. This prevents Block 4 in RASAAD.BCS from triggering when it should:

IF
    InParty(Myself)
    GlobalTimerExpired("RASAAD_CDEV2_TIMER","GLOBAL")
    GlobalLT("RASAAD_CDEV","LOCALS",2)
    !ActuallyInCombat()
THEN
    RESPONSE #100
        SetGlobalTimer("DARK_MOON_AMBUSH","LOCALS",TWO_DAYS)
        StartDialogNoSet(Player1)
END

(17) Block 4 in RASAAD.BCS will never trigger because, as described in Steps (11) and (12), the local variable "RASAAD_CDEV" has been set to 2 (if it did trigger at this stage, RASAADJ.DLG would in any case have no valid states). So, the local timer "DARK_MOON_AMBUSH" has not been set, nor will it ever be set.

(18) Block 5 of RASAAD.BCS is the block that is intended to trigger in AR1200 (Baldur's Gate South) and kick off the action in Rasaad's quest. Its trigger conditions include the expiry of the local timer "DARK_MOON_AMBUSH":

IF
    GlobalTimerExpired("DARK_MOON_AMBUSH","LOCALS")
    Global("RASAAD_PLOT","GLOBAL",1)
    AreaCheckObject("AR1200",Myself)  // S Baldur's Gate (docks, Iron Throne, Low Lantern, Umberlee temple)
    OR(2)
        !Range("entillis",30)  // Entillis Fulsom
        Dead("entillis")  // Entillis Fulsom
THEN
    RESPONSE #100
        FadeToColor([10.0],0)
        SetGlobal("RASAAD_PLOT","GLOBAL",2)
        [Snip - Irrelevant stuff]
END

(19) Because the local timer "DARK_MOON_AMBUSH" has not been set, and never will be set, Rasaad's quest cannot progress.

Bug Fix

There are a number of different ways to fix the problem. I don't know what is best practice, but I suspect adding an extra condition to a top-level dialogue state would probably be favoured as the least destructive fix. Therefore, in RASAADJ.DLG, for State 69, add the following line to the state trigger:

    !Global("RASAAD_ROMANCE","GLOBAL",1)

Result of Bug Fix

Spoiler

(a) Steps (1) to (10) occur as described above.

(b) Steps (11) and (12) no longer happen at this stage due to the adjustment to the state trigger for State 69.

(c) We therefore proceed from Step (10) to Steps (14) and (15).

(d) With Step (15) completed, Step (13) - Block 2 incorrectly triggering a second time - will never happen, as the value of the global variable "RASAAD_ROMANCE" was changed in Step (15).

(e) We therefore proceed from Step (15) to Step (16), only now Block 4 will trigger as it was meant to do, so the local timer "DARK_MOON_AMBUSH" is set.

(f) We now return to Steps (11) and (12).

(g) With the local timer "DARK_MOON_AMBUSH" set, Step (17) is no longer a going concern.

(h) Step (18) will proceed as it as it was meant to do, and the Rasaad quest will progress. Cake for everyone!

 

BG:EE v2.6.6 Bug

I would rather chew through my own arm than laboriously reproduce the step-by-step process above. At this point, noting the similarities should suffice.

Spoiler

Here's what the Beamdog forum user said:

- "I did his meeting sequence in Nashkel and then said he could come with me but immediately dismissed him."
- "He [later] joined the fight against the assassin."
- "Then I played through most of the rest of the game [and] came back and picked him up."
- "He hailed me immediately after recruiting him with important dialogue #1."
- "Then I entered the inn in Nashkel and after entering he hailed with important dialogue #2 (the enlightenment one)."
- "Then I talked to the barkeep and rested for 8 hours and after waking up he hailed again with the moonlight romance dialogue (which I promptly shut down, sorry Rasaad!)."

When I looked at the Beamdog forum user's save game, it had the following values:

- The global variable "RASAAD_PLOT" was at 1.
- The global timer "RASAAD_CDEV1_TIMER" was at 970421.
- Rasaad's local timer "RASAAD_ROMANCE_TIMER1" was at 2171962.
- The global variable "RASAAD_ROMANCE" was at 2.
- The global timer "RASAAD_CDEV2_TIMER" was at 2495978.
- Rasaad's local timer "DARK_MOON_AMBUSH" had not been set.
- Rasaad's local variable "RASAAD_CDEV" was at 2.
- Rasaad's local variable "RASAAD_CDEV2_END" was at 1.

In short, they encounter the same problem as I laid out step-by-step above, with the added wrinkle that they claim Steps (5) to (8) occured between Step (9) and Step (10); ie they had quest talk 1, immediately followed by quest talk 2. Perhaps they misremembered that part? I'm not sure how much can be gleaned from the values of the timers. Either way, I have no intention of spending any more time on this without v2.6.6 installed and without confirmation that the Beamdog forum user's problem happened in v2.6.6.

 

Edited by The_Baffled_King
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...