Jump to content

[bug] SoD issues from jastey


CamDawg

Recommended Posts

If you pull the Greater Shadow in area BD7220 using the Spectacles of Spectacle after you've already killed the bugbears, you still get to ask the Shadow to kill them which doesn't make sense. That dialog option should be disabled if the bugbears are dead; optionally, it could be replaced with another non-violent exit point seeing as that appears to be the only one.

Link to comment
On 6/5/2022 at 9:37 AM, Andrea C. said:

If you pull the Greater Shadow in area BD7220 using the Spectacles of Spectacle after you've already killed the bugbears, you still get to ask the Shadow to kill them which doesn't make sense. That dialog option should be disabled if the bugbears are dead; optionally, it could be replaced with another non-violent exit point seeing as that appears to be the only one.

On 6/5/2022 at 9:07 AM, Andrea C. said:

When I spoke to Kharm in area BD2000 after having rescued his nephew, he said here's a token of my appreciation but I got nothing...

Both fixed. Kharm's was simple, as he was only giving out a reward on one of the four replies. Shadow/bugbear was a little more complicated, as there are ten flavors of bugbear spawns, and they all vary depending on the difficulty, but it's sorted.

Link to comment
On 3/28/2022 at 3:05 AM, jastey said:

Imoen's script "imoen.bcs" misses these script blocks the other BG1 NPC's have. Again, BG:SoD only, EET has this fixed for itself (plus uses a different script name for Imoen):

In addition to the joining XP stat blocks, the version of "imoen.bcs" with SoD misses these two stat blocks standard to BGEE NPCs:

IF
	Die()
	!InParty(Myself)
	OR(12)
		AreaCheck("OH1000")  // Dorn - Random Encounter Area
		AreaCheck("ar5600")  // Random encounter area
		AreaCheck("ar5601")  // Random encounter area
		AreaCheck("ar5700")  // Random encounter area
		AreaCheck("ar5701")  // Random encounter area
		AreaCheck("ar5800")  // Random encounter area
		AreaCheck("ar5801")  // Random encounter area
		AreaCheck("ar5900")  // Random encounter area
		AreaCheck("ar5901")  // Random encounter area
		AreaCheck("ar6000")  // Random encounter area
		AreaCheck("ar6001")  // Random encounter area
		AreaCheck("ar6100")  // Random encounter area
THEN
	RESPONSE #100
		DestroySelf()
END

IF
	!InParty(Myself)
	CheckSpellState(Myself,STORY_MODE)
THEN
	RESPONSE #100
		ReallyForceSpellDeadRES("OHSMODE3",Myself)  // No such index
		Continue()
END

She's the only companion that won't disappear if she gets stoned in a random encounter area (in patch 2.6), and also the only one that will retain Story Mode protection if she leaves the party.

The remaining blocks shared between the two versions of the script (her approaching you for the initial Lion's Way meeting, and some stuff about Dorn picking fights) get a check for "SOD_fromimport" being zero added to them.

Belated, but I only got SoD myself less than a month ago.

Link to comment

In BDMKHIIN.dlg:

Quote

IF ~~ THEN BEGIN 18 // from: 17.8
  SAY #65556 /* ~Asking questions always gets me in trouble. Not gonna stop. Tried. Didn't work. I'll come with you, though. Not safe to be alone these days.~ [BD65556] */
  IF ~~ THEN DO ~AddJournalEntry(61705,INFO)
SetGlobal("bd_mkhiin_join","global",1)
JoinParty()
AddexperienceParty(3000)
~ EXIT
END

I did not check this ingame, but as far as i know, actions after "JoinParty()" do not get executed, so I'd suggest moving the "AddexperienceParty(3000)" before it. The other instances are already in that order.

Link to comment

I'm at Bridgefort and I am stuck in a loop where I can't inform Corwin that the Bridgforters are ready to attack. It seems the variable "Global("bd_bf_attack","global",1)" needs to be set to tell Corwin, and it doesn't get set if the dialogue path goes from Khalid's state 70.2 to 59 (it only gets set if coming from 56.4).

Possible solutions: add the ~SetGlobal("bd_bf_attack","global",1)~ to bdkhalid.dlg state 70.2:

Quote

IF ~  Global("bd_bridgefort_plot","global",5)
AreaCheck("bd2000")
~ THEN BEGIN 70 // from:
  SAY #65935 /* ~What news, m-my friend?~ [BD65935] */
  IF ~  Global("bd_bf_action_plan","global",2)
Global("bd_fists_attack","global",2)
!Global("BD_SDD200","GLOBAL",1)
~ THEN REPLY #65936 /* ~The time has come to attack. The Flaming Fist stand ready to join us.~ */ DO ~SetGlobal("bd_bf_action_plan","global",3)
~ GOTO 57
  IF ~  Global("bd_bf_action_plan","global",2)
Global("bd_fists_attack","global",2)
Global("BD_SDD200","GLOBAL",1)
~ THEN REPLY #65936 /* ~The time has come to attack. The Flaming Fist stand ready to join us.~ */ DO ~SetGlobal("bd_bf_action_plan","global",3)
~ GOTO 60
  IF ~  Global("bd_bf_action_plan","global",2)
GlobalLT("bd_fists_attack","global",2)
~ THEN REPLY #65937 /* ~The time has come to attack. The Flaming Fist haven't been alerted but we don't need their help.~ */ DO ~SetGlobal("bd_bf_action_plan","global",3)

SetGlobal("bd_bf_attack","global",1) //<- here
~ GOTO 59

(snip)

Or, just add it to state 59 reply options 0 and 1:

Quote

IF ~~ THEN BEGIN 59 // from: 56.4 70.2
  SAY #65921 /* ~Wh-what? But without the aid of the Fist we'll be s-slaughtered.~ */
  IF ~  !Global("BD_SDD200","GLOBAL",1)
~ THEN REPLY #65922 /* ~You're right. I'll go alert the camp. If you hear sounds of combat, join the battle.~ */ DO ~SetGlobal("bd_bf_action_plan","global",2) SetGlobal("bd_bf_attack","global",1) //<- here
~ GOTO 68
  IF ~  Global("BD_SDD200","GLOBAL",1)
~ THEN REPLY #65922 /* ~You're right. I'll go alert the camp. If you hear sounds of combat, join the battle.~ */ DO ~SetGlobal("bd_bf_action_plan","global",2) SetGlobal("bd_bf_attack","global",1) //<- here
~ GOTO 69

 

Link to comment

I don't seem to find an instance where the journal entry is removed (strref 61531):

Quote

Den of Thieves

I must go to the north end of camp to meet with the thieves' guild.

It seems General Stonehand was right. There is a burgeoning thieves' guild in camp. How such a thing can spring up so quickly I don't know. I've convinced the guild's fence, Waizahb, to set up a meeting for me. At the north edge of camp I should find the representatives of the guild.

It is set in BDWAIZAH.dlg states 0 and 4, but not removed after meeting with Rhynwis.

Oh, and the same with strref 61532:

Quote

Den of Thieves

I should follow Waizahb to the north end of camp.

It seems General Stonehand was right. There is a burgeoning thieves' guild in camp. How such a thing can spring up so quickly I don't know. I tried to get information out of the guild's fence, Waizahb, but she quickly saw through me. She's headed to the north of camp now; perhaps I should follow her.

This is set in BDWAIZAH.dlg states 2,3,5.

I'd suggest to remove both in BDRHYNWI.dlg state 0.

Link to comment

Er, and the journal entry from Rhynwis doesn't seem to get removed after talking to General Stonehand, either, strref 61537:

Quote

Den of Thieves

I should report back to General Stonehand.

I confronted the leader of the thieves' guild, a woman named Rhynwis. She fled before I could get much information out of her, but I believe the thieves' guild will leave the camp alone now. I should report back to General Stonehand.

Aaaand the one from Stonehand herself, strref 61530:

Quote

Den of Thieves

I should find and speak with Waizahb.

General Stonehand, head of the Daggerford forces, asked me to uncover the growing thieves' guild in camp. I should start by questioning a potential fence, a gnome named Waizahb.

I would expect both to be removed in bdstoneh.dlg, state 63.

That, or I'm too stupid to identify where these journal entries get removed.

Link to comment

In bd0101.bcs:

IF
	Global("bd_safana_spawn","bd0101",0)  // Ducal Palace, Leaving BG
	OR(2)
		InPartyAllowDead("safana")  // Safana
		Global("BD_SAFANA_DIED_IN_BG","GLOBAL",0)
THEN
	RESPONSE #100
		SetGlobal("bd_safana_spawn","bd0101",1)  // Ducal Palace, Leaving BG
		Continue()
END

should check for Global("BD_SAFANA_DIED_IN_BG","GLOBAL",1) instead.

 

Which leads me to a finding related to that, an inconsistency with regard to whether NPCs who died during BG1 will reappear or not. I elaborated here on it with Safana as an example.

In short:

The three NPCs Minsc, Dynaheir, Safana will get revived and can be met in their starting areas in BG independent on whether they were dead.

All three will not appear in front of the palace upon leaving for the crusade in case they died in BG and with a true BeenInParty() check. They will also not be there if case the player met them earlier in their starting areas but didn't take them into party if they were dead in BG1.

All three will only appear in the camp(s) if they are not dead (!Dead() check). This means, if the player leaves BG without visiting the starting areas of Minsc, Dynaheir, and Safana, they will not appear in the campaign if they were in party in BG1 and died at some point.

If the player visits the areas - even without taking the NPCs in party, or if they never joined in BG1 they will be available (even if they were dead).

This is an inconsistency I am not sure is intended. My impression is that the devs wanted to do something smart with the "BD_npcname_DIED_IN_BG" variable but I am not sure they succeeded.

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...