Jump to content

Outstanding bugs: The way from Spellhold to Sahuagin city


Roana

Recommended Posts

Posted

Hello,

 

For this:

 

- Cutscene on Desharik’s stolen ship could break the game when the Gith were attacked by the player/party if AI was on

 

The whole sequence is buggy, and I have also had some strange experiences with this every time, I played (I always choose this way, because I love the sahuagin-city, and won't miss it :) ).

 

Finally I have reached this scene in my new game, and after almost half a day fixing and testing in different ways :) , I have now a final solution ;). The main-fault was in the AR1600.BCS, what I have sadly seen very late, so that I have had done some unnessecary testing (if I would have seen this earlier...).

 

Well, this is a hard one and will be _very_ long, as I have to post almost all, to make (hopefully) clear, what I have done and why:

 

Here are many files involved, but after a long research, I have only fixed the following:

 

- AR1600.BCS

- CUT41Q.BCS

- CUT41ZF.BCS

- PPSAEM3.DLG

- PPSAEM2.BCS

- PPSAEM3.CRE

 

 

To make this all clear, I will post almost all, whats going on here - maybe, you find a better solution:

 

AR1600.BCS:

IF

GlobalLT("AsylumPlot","GLOBAL",78) ----->added - caused problems, if you load a saved game in this Area just before the jouney, if it has not started through the dialogue, because Desharik died, before his dialogue could fire. In a loaded Savegame just before speaking with Saemon, the Area-script has reseted the Global set by the CUT41Q.BCS ("AsylumPlot",80) during the cutscene (please don't ask me why - I have accepted and fixed this after much testing) to the value below and so given Saemon a false trigger, which caused the cutscene running again from the beginning, if you talk to him on the ship.

Dead("ppright") // Dunbar

NumDeadGT("pppirate",2) // Pirat

THEN

RESPONSE #100

SetGlobal("AsylumPlot","GLOBAL",78)

ActionOverride("ppdesh2",StartDialogueNoSet(Player1))

Continue()

END

 

PPSAEM3.CRE

removed the undroppable-flag from the item in his inventory

 

PPSAEM3.DLG:

State 3:

Global("AsylumPlot","GLOBAL",78) ---> the last dialog with him before the journey begins is staring here

Action 18:

GiveItemCreate("misc8u",LastTalkedToBy,0,0,0) ------> replaced with...

GiveItem("misc8u",LastTalkedToBy) -----> ... which resolve the bug of receiving 2 blades (PPSAEM3.CRE has one in its inventory, from which I have removed the undroppable flag)

StartCutSceneMode()

StartCutScene("Cut41q") ----> missing the ClearAllActions() Command (see fix below in CUT41Q.BCS)

Wait(1) ------> added

DestroySelf() -----> added - caused the bug of reviewing the Area AR1600, if Saemon starts his first dialogue on the ship, because he is Actor in AR1607 and then existed twice, without removing him from AR1600.

 

CUT41Q.BCS:

IF

True()

THEN

RESPONSE #100

CutSceneId(Player1)

ClearAllActions() ----> added it here

SetInterrupt(FALSE) ------> added this too...

FadeToColor([20.0],0)

Wait(1)

LeaveAreaLUAPanic("AR1607","",[347.1823],3)

LeaveAreaLUA("AR1607","",[347.1823],3)

ActionOverride(Player2,LeaveAreaLUA("AR1607","",[262.1766],3))

ActionOverride(Player3,LeaveAreaLUA("AR1607","",[306.1721],3))

ActionOverride(Player4,LeaveAreaLUA("AR1607","",[490.1854],3))

ActionOverride(Player5,LeaveAreaLUA("AR1607","",[394.1873],3))

ActionOverride(Player6,LeaveAreaLUA("AR1607","",[514.1620],3))

MultiPlayerSync()

TextScreen("SCRTXT05") --->....because of this, that I have moved a few lines above to....

FadeFromColor([20.0],0)

Explore()

SetInterrupt(TRUE) -----> ....set this after the textscreen, as Bioware have done in the last cutscene

SetGlobal("AsylumPlot","GLOBAL",80) ----> on this Global Seamons DLG will (now after the fix directly) react

EndCutSceneMode()

SmallWait(1)

ActionOverride("ppsaem3",StartDialogueNoSet(Player1)) ---> added after long testing, cause the only way, to avoid, that the whole scene could be broken here by Player-AI-Scripts, is to ActionOverride this dialogue-starting

END

 

PPSAEM2.BCS:

IF

Global("AsylumPlot","GLOBAL",80)

Global("SaemInit1607","GLOBAL",0)

THEN

RESPONSE #100

SetGlobal("SaemInit1607","GLOBAL",1)

StartDialogueNoSet(Player1)

END ----> removed this block, as I was forced to ActionOverride this dialogue-starting in the CUT41Q.BCS, to fix the bug with the PlayerAI

 

PPSAEM3.DLG:

State 5:

Global("AsylumPlot","GLOBAL",80) ------> he fires this State (he mentioned his sailors to be prepared for the ship to be entered)

Action 10:

SetGlobal("AsylumPlot","GLOBAL",90) -----> Saemons sets here already the Global on which his next State will fire

StartCutSceneMode()

StartCutScene("Cut41zf") -----> and start the the next cutscene, again without the ClearAllActions() Command...

 

CUT41ZF.BCS:

IF

True()

THEN

RESPONSE #100

CutSceneId(Player1)

ClearAllActions() -----> which I have added here

SetInterrupt(FALSE) -----> and again added this

MoveViewObject("ppgith99",INSTANT)

Wait(2)

ActionOverride("ppdie1",EquipRanged())

ActionOverride("ppdie1",Attack("ppgith99"))

ActionOverride("ppgith99",ReallyForceSpell("ppdie2",WIZARD_AGANNAZAR_SCORCHER))

ActionOverride("ppdie2",Kill(Myself))

Wait(2)

CreateVisualEffect("SPDIMNDR",[652.1670])

ActionOverride("ppgith97",JumpToPoint([652.1670]))

ActionOverride("ppgith97",Face(0))

Wait(4)

ActionOverride("ppgith97",ForceSpell("ppdie1",PSIONIC_EMOTION_KILL))

Wait(1)

ActionOverride("ppdie1",DisplayStringHead(Myself,31868)) // Ich gebe auf ... Ich kann nicht mehr weiter machen ... Es hat keinen Sinn ... Ich muss sterben

Wait(4)

ActionOverride("ppgith99",ForceSpell("ppdie3",PSIONIC_MIND_BLAST))

Wait(1)

ActionOverride("ppdie3",Kill(Myself))

Wait(2)

ActionOverride("ppgith97",ForceSpell("ppdie4",FLASHY_4))

Wait(1)

ActionOverride("ppdie4",Kill(Myself))

ActionOverride("ppsaem3",Face(12))

Wait(1)

MoveViewPoint([349.1747],AS_FAST_WALKING)

ActionOverride("ppgith99",MoveToPoint([390.1706]))

ActionOverride("ppgith98",MoveToPoint([479.1675]))

Wait(1)

ActionOverride("ppgith90",MoveToPoint([453.1708]))

ActionOverride("ppgith91",MoveToPoint([390.1773]))

Wait(1)

ActionOverride("ppgith92",MoveToPoint([601.1776]))

Wait(1)

ActionOverride("ppgith93",MoveToPoint([689.1781]))

CreateVisualEffect("SPDIMNDR",[349.1747])

Wait(1)

ActionOverride("ppgith",JumpToPoint([349.1747]))

Wait(1)

ActionOverride("ppgith",Face(0))

Wait(4)

SetGlobal("AttackedGith","GLOBAL",1) -----> this is only for Simyaz dialog later in Underdark as a trigger used

SetInterrupt(TRUE) ------> and certainly I added this

ActionOverride("ppsaem3",StartDialogueNoSet(Player1)) ----> now Saemon starts again a dialog - this time with the githyanki-captain, where the mainchar is involved an he betrays her/him

EndCutSceneMode()

END

 

PPSAEM3.DLG:

State 4:

Global("AsylumPlot","GLOBAL",90) ----->based on the variable, he has already set before the cutscene started

Action 7:

SetGlobal("MetGith","GLOBAL",1) ----->also only used as a trigger for Simyaz

and

Action 8:

ChangeEnemyAlly(Myself,GOODBUTBLUE)

SetGlobal("AsylumPlot","GLOBAL",81) ------> on this value, Saemon sets in Asylum-Plot, he should get a trigger, if you talk to him during the fight with the Githyanki

SetGlobalTimer("GithTimer1","GLOBAL",10) -----> on this timer the AREA.BCS reacts

 

PPSAEM3.DLG

New State-Trigger 7 (assigned to State 59):

Global("AsylumPlot","GLOBAL",81) ----->added this trigger to give him a true value, if you talk to him during the fight with the Githyanki. State 59 is also called from the PPSAILOR.DLG and followed by the

Action 9:

SetGlobal("AsylumPlot","GLOBAL",200)

ApplySpell(Myself,DRYAD_TELEPORT)

 

AR1607.BCS:

IF

GlobalTimerExpired("GithTimer1","GLOBAL")

Global("sah","AR1607",0)

THEN

RESPONSE #100

SetGlobalTimer("GithTimer1","GLOBAL",100) ----->resets the timer and...

DisplayStringHead(Player1,31879) // Das Schiff erzittert und gibt ein Ächzen von sich, das so klingt, als würde es gleich auseinander brechen.

ScreenShake([5.5],5)

SetGlobal("sah","AR1607",1)

CreateCreature("ppsailor",[699.1467],0) // Seemann ----> spawns this Sailor, who is more important, than I first thought

END

 

PPSAILOR.DLG:

State 0:

NumTimesTalkedTo(0)

Action 0:

SetGlobal("AsylumPlot","GLOBAL",200) ----> as he sets the whole Asylum Plot to the really end (which is repeated by Saemon, if he is still alive and can answer to this one scentence), on which the AREA.BCS again reacts

 

AR1607.BCS:

IF

Global("AsylumPlot","GLOBAL",200)

THEN

RESPONSE #100

SetGlobal("AsylumPlot","GLOBAL",201)

Wait(1)

ClearAllActions()

StartCutSceneMode()

StartCutScene("Cut41zg") -----> with the next cutscene (this time with ClearAllActions() Command)

END

 

CUT41ZG.BCS:

IF

True()

THEN

RESPONSE #100

CutSceneId(Player1)

CreateCreatureDoor("ppsaha",[992.1440],0) // Sahuagin

CreateCreatureDoor("ppsaha",[827.1362],0) // Sahuagin

CreateCreatureDoor("ppsaha",[630.1460],0) // Sahuagin

CreateCreatureDoor("ppsaha",[864.1581],0) // Sahuagin

CreateCreatureDoor("ppsaha",[713.1551],0) // Sahuagin -----> spawns the sahuagin and....

SetGlobalTimer("GithTimer1","GLOBAL",10) -----> resets the timer - again. I have changed this from 5 to 10, to have a bit longer time, so that the player can see the Sahuagin, that are created, for a short time, before the last cutscene starts

EndCutSceneMode()

END

 

GITHCHP4.BCS:

IF

See([0.0.0.0.SAHUAGIN]) ----> on the sahuagin the githyanki-captain reacts

Name("ppgith",Myself) // Githyanki-Hauptmann

Global("flee","LOCALS",0)

THEN

RESPONSE #100

SetGlobal("flee","LOCALS",1)

StartDialogueNoSet(Player1) ------> with his last dialog-line before fleeing

END

 

AR1607.BCS:

IF

GlobalTimerExpired("GithTimer1","GLOBAL") ----> on the timer reacts - again - the AREA.BCS

Global("lastcut","AR1607",0)

THEN

RESPONSE #100

SetGlobal("lastcut","AR1607",1)

ScreenShake([100.100],100)

ClearAllActions()

StartCutSceneMode()

StartCutScene("Cut41r") -----> with starting the last cutscene CUT41R.BCS, which runs correct

END

 

Well, the ship is on the ground of the sea, and you are arrived in the sahuagin-city.

 

Why have I now to fix Seamons DLG and BCS?

 

Well, first I have had it sometimes, that the whole cutscene is starting again, as I have tried to speak to Saemon again after his last dialog, caused by a missing state-trigger, that would return true on the Global value of AsylumPlot 81.

 

Second, it is supposed, that you should have a chance to kill him for his betrayal. Aran have also some lines according to this, if you have managed to kill him. So I fixed his BCS, to make him enemy, if you attack him, instead of Githyanki (or talk to him).

 

What have I done?

 

Added a state trigger 8 to his DLG based on Global("AsylumPlot","GLOBAL",81) for the existing state 59, which have already only one answer and an action (see the fix also above).

 

Added the reference in the script (PPSAEM2.BCS) for the short time on the ship, the player can act, to get Saemon react correctly, if he will be attacked by the Player, behind this block:

 

PPSAEM2.BCS:

IF

GlobalTimerExpired("SaemonHasArrived","GLOBAL")

GlobalLT("AsylumPlot","GLOBAL",11)

THEN

RESPONSE #100

DestroySelf()

END

 

added:

IF

Global("AsylumPlot","GLOBAL",81)

!Allegiance(Myself,ENEMY)

AttackedBy([GOODCUTOFF],DEFAULT)

THEN

RESPONSE #100

Enemy()

END

 

Well, as I said: all tested several times with different ways to act - and now the whole scene runs well in my game, as it was supposed to ;)

 

By the way: I have seen, that I have fixed the whole scene, when Irenicus leads the player through the spellhold, to get some Interjections of NPCs run better. There is not much room, and if the NPC doesn't see Irenicus, he will not say his mentions. Also: If you have Yoshimo on the 4th, 5th or 6th place in the party, sometimes Irenicus could not see him and didn't interact with Yoshimoas it was supposed. If you are interested in these, please say something, and I will post my changed scripts, but I don't want to bore you with my 'cosmetic' fixes :D.

 

Regards

 

Roana

Guest Guest
Posted

After i had stolen the horn at Desharik's girlfriends home...i went to Seamon Havarian to leave the island. I talked to him, and Desherik showed up...he killed a woman, and i killed Dasherik...Then Saemon gave me the Silver Blade, and we sailed away. When the Githyankis attacked our ship, Saemon said the same thing to me (the same thing that he said before he gave me the blade)...and i ended up with a second Silver blade.

 

my weidu.log

 

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #0 // BG2 Fixpack - Core Fixes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #1 // BG2 Fixpack - Game Text Update

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #2 // Super Happy Fun Lucky Modder Pack

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #3 // BETA Core Fixes (please check the readme!)

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #100 // Party Gets XP for Sending Keldorn to Reconcile With Maria

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #101 // Improved Spell Animations

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #102 // Cromwell's Forging Actually Takes a Day

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #103 // Mixed-Use Dagger Fixes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #104 // Ghreyfain's Holy Symbol Fixes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #106 // Giants Receive Penalties When Attacking Halflings, Dwarves, and Gnomes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #107 // Remove Dual-Classing Restriction from Archers and Stalkers

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #108 // Remove Second Attribute Bonus for Evil Path in Wrath Hell Trial

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #109 // Corrected Summoned Demon Behavior

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #110 // Additional Script Fixes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #111 // Bard Song Fixes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #112 // Wizard Slayers Cause Miscast Magic on Ranged Attacks

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #113 // Additional Alignment Fixes

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #114 // Change Free Action to Protect Against Stun

~1PP/1PP.TP2~ #0 #0 // 1PP: Everything but Potions

~1PP/1PP.TP2~ #0 #1 // New Potion Graphics

~SETUP-ASCENSION.TP2~ #0 #0 // Ascension v1.41 (requires ToB)

~SETUP-ASCENSION.TP2~ #0 #1 // Tougher Abazigal (optional, requires ToB)

~SETUP-ASCENSION.TP2~ #0 #2 // Original Tougher Demogorgon (optional, requires ToB)

~SETUP-ASCENSION.TP2~ #0 #3 // Tougher Gromnir (optional, requires ToB)

~SETUP-ASCENSION.TP2~ #0 #4 // Tougher Illasera (optional, requires ToB)

~SETUP-ASCENSION.TP2~ #0 #5 // Tougher Yaga-Shura (optional, requires ToB)

~SETUP-UB.TP2~ #0 #1 // The Suna Seni/Valygar Relationship

~SETUP-UB.TP2~ #0 #2 // Kalah and What He Was Promised

~SETUP-UB.TP2~ #0 #3 // "Cat and Mouse" (Bodhi hunts you in Spellhold) by Ghreyfain

~SETUP-UB.TP2~ #0 #4 // Gorje Hilldark and the Extended Illithium Quest

~SETUP-UB.TP2~ #0 #5 // The Pai'Na/Spider's Bane Quest

~SETUP-UB.TP2~ #0 #6 // Restored Crooked Crane Inn

~SETUP-UB.TP2~ #0 #7 // Restored Encounters

~SETUP-UB.TP2~ #0 #8 // Artemis Entreri in Bodhi's Lair

~SETUP-UB.TP2~ #0 #9 // Corrected "Xzar's Creations"

~SETUP-UB.TP2~ #0 #10 // Restored Hell Minions, by SimDing0

~SETUP-UB.TP2~ #0 #11 // Gorf the Squisher Fix, by Gebhard Blucher

~SETUP-UB.TP2~ #0 #12 // Item Restorations

~SETUP-UB.TP2~ #0 #13 // Yoshimo's Original Portrait

~SETUP-UB.TP2~ #0 #14 // Anomen's Original Portrait

~SETUP-UB.TP2~ #0 #15 // NPC Portrait Restorations

~SETUP-UB.TP2~ #0 #16 // Corrected BAMs and Scripts

~SETUP-UB.TP2~ #0 #17 // Corrected Character Names and Biographies

~SETUP-UB.TP2~ #0 #18 // Restored Minor Dialogs

~SETUP-UB.TP2~ #0 #19 // Restored Bhaalspawn Powers, by David Gaider

~SETUP-UB.TP2~ #0 #20 // Extended ToB Item Descriptions

~SETUP-UB.TP2~ #0 #21 // Throne of Bhaal Minor Restorations

~SETUP-UB.TP2~ #0 #22 // Justifier Kit

~SETUP-UB.TP2~ #0 #23 // Feralan Kit

~SETUP-UB.TP2~ #0 #24 // Sarevok's Remorse

~SETUP-VALHORN.TP2~ #0 #0 // Improved Horns of Valhalla v1.2

~SETUP-ESERIES.TP2~ #0 #0 // eSeries v1.8

~SETUP-GMINION.TP2~ #0 #0 // gMinion v1.8

~SETUP-OVERSIGHT.TP2~ #0 #0 // Tougher Sendai (ToB Required)

~SETUP-OVERSIGHT.TP2~ #0 #1 // Alignment Correction

~SETUP-OVERSIGHT.TP2~ #0 #2 // Class Tweaks/Fixes

~SETUP-OVERSIGHT.TP2~ #0 #3 // Altered Spells

~SETUP-OVERSIGHT.TP2~ #0 #4 // Improved Continuity

~SETUP-OVERSIGHT.TP2~ #0 #5 // Cleric Kits

~SETUP-OVERSIGHT.TP2~ #0 #6 // Monk High Level Abilities

~SETUP-OVERSIGHT.TP2~ #0 #7 // Holy Liberator

~SETUP-D0TWEAK.TP2~ #0 #0 // Enhanced Goodberries

~SETUP-D0TWEAK.TP2~ #0 #1 // Corrected Summoned Demon Behaviour

~SETUP-D0TWEAK.TP2~ #0 #2 // Corrected Demon Animations

~SETUP-D0TWEAK.TP2~ #0 #3 // Reintroduce Dimension Door

~SETUP-D0TWEAK.TP2~ #0 #4 // Tweaked Weapon Enchantments

~SETUP-D0TWEAK.TP2~ #0 #5 // Additional Racial Enemies

~SETUP-D0TWEAK.TP2~ #0 #11 // Visual Ioun Stones

~SETUP-D0TWEAK.TP2~ #0 #13 // Kensai Ryu's Restored Drow Innate Abilities

~RR/SETUP-RR.TP2~ #0 #0 // Proper dual-wielding implementation for Thieves and Bards

~RR/SETUP-RR.TP2~ #0 #4 // Additional equipment for Thieves and Bards

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #60 // Weapon Animation Tweaks

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #70 // Icewind Dale Casting Graphics (Andyr)

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #110 // Icon Improvements

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #130 // Force All Dialogue to Pause Game

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1040 // Improved Athkatlan City Guard

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1080 // Add Bags of Holding

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1150 // Shapeshifter Rebalancing

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1170 // Bonus Merchants (Baldurdash)

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1180 // Female Edwina

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2151 // Wear Multiple Protection Items -> No Restrictions

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2210 // True Grand Mastery (Baldurdash)

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3080 // Unlimited Ammo Stacking

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3090 // Unlimited Gem and Jewelry Stacking

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3100 // Unlimited Potion Stacking

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3110 // Unlimited Scroll Stacking

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3200 // Sellable Staffs, Clubs, and Slings (Icelus)

Posted

It's happened to me in the vanilla game long ago, or possibly with Baldurdash/Old G3 Tweaks installed. That being the case it may be something from one of the older fixes. I don't recall it making for any serious problems, except the fact that I had a spare blade.

Posted

Yeah, I had the same stuff in the vanilla game. A variable is not closing somewhere, probably.

 

What bothered me more, though, was that I identified the blade, then gave it to Githyanki, then killed them, and on their corpses, there was still an _unidentified_ blade, and I had to identify it all over again. Meh.

Posted

I've seen this happen in so many games with so many different mod builds, I just ignore it every time. I don't think it used to happen before I got ToB, but that was a very long time ago, and I don't really trust my memory that far.

Posted

I'm moving this to pending, as this whole sequence really needs to be reviewed. I've sailed away with Saemon, and when the cutscene starts, the screeen changes as it prompts the Saemon still back on the ship at the docks to speak, instead of the Saemon on the ship at sea.

Posted
I've sailed away with Saemon, and when the cutscene starts, the screeen changes as it prompts the Saemon still back on the ship at the docks to speak, instead of the Saemon on the ship at sea.

I've had that happen when an over-eager area effect spell in the Desharik fight accidentally caught Saemon and turned him hostile just before Desharik died and the scene changed to the ship. I always found it funny to have hostile Saemon interject from back in Brynnlaw when Githyanki matters played out on the high seas. It never affected my play but it did confuse me a bit the first time it happened.

Posted

OK, I'm so glad this is here because now I don't have to do it. :)

 

Two variations from Roana's fixes--she changes Saemon's blade to droppable, and then changes GiveItemCreate to GiveItem. Net result of undroppable + GIC is the same as droppable + GI, so I left this pair of changes out.

 

<<<<<<<<saemon.d
// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// last brynnlaw dialogue; destroyself() to avoid ar1600 saemon talking instead of ar1617 one
ALTER_TRANS PPSAEM3 // file name
BEGIN 70 END // state number (can be more than one)
BEGIN  0 END // transition number (can be more than one)
BEGIN // list of changes, see below for flags
 ACTION ~GiveItemCreate("misc8u",LastTalkedToBy,0,0,0)
	  StartCutSceneMode()
	  StartCutScene("Cut41q")
	  Wait(1) 
	  DestroySelf()~
END

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// give Saemon a true() trigger during gith attack
ADD_STATE_TRIGGER PPSAEM3 59 ~Global("AsylumPlot","GLOBAL",81)~

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// if player talks to saemon during attack (saemon teleports away), then end dialogue here instead of handing to saemon
EXTEND_BOTTOM PPSAILOR 1
 IF ~Global("AsylumPlot","GLOBAL",200)~ THEN EXIT
END
>>>>>>>>

COMPILE ~saemon.d~

 

So, two main dialogue changes. The first is the addition of a DestroySelf() to Saemon's last Brynnlaw dialogue, to prevent the engine from using this Saemon copy in the ensuing cutscenes. The other two changes give Saemon something to say if you talk to him during the Githyanki attack. PPSAILOR's change is to make sure he doesn't pass off dialogue to Saemon if this happens and he's already teleported away.

 

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// add extra trigger so this won't fire twice
COPY_EXISTING ~ar1600.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~Dead("ppright")~  ~GlobalLT("AsylumPlot","GLOBAL",78) Dead("ppright")~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

This just makes sure the Brynnlaw area script doesn't try to fire Saemon's final Brynnlaw dialogue twice.

 

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// many changes--clear actions, make uniterruptable, reorder textscreen, move saemon dialogue call here from ppsaem2.bcs
COPY_EXISTING ~cut41q.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~CutSceneId(Player1)~	 ~CutSceneId(Player1) ClearAllActions() SetInterrupt(FALSE)~
REPLACE_TEXTUALLY ~TextScreen("SCRTXT05")~  ~ActionOverride("ppsaem3",StartDialogueNoSet(Player1))~
REPLACE_TEXTUALLY ~MultiPlayerSync()~	   ~MultiPlayerSync() TextScreen("SCRTXT05")~
REPLACE_TEXTUALLY ~Explore()~			   ~Explore() SetInterrupt(TRUE)~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

This is the initial cutscene after Saemon's final Brynnlaw dialogue that transfers the party to the ship in the ocean. It clears party actions (so their AI scripts won't interfere during the cutscene) and makes the player uninterruptable. Also moves the dialogue call from ppsaem2.bcs to the cutscene. The text screen order seems a bit cosmetic, but I'm more than willing to trust Roana here. :)

 

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// clear actions, make uninterruptable
COPY_EXISTING ~cut41zf.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~CutSceneId(Player1)~				  ~CutSceneId(Player1) ClearAllActions() SetInterrupt(FALSE)~
REPLACE_TEXTUALLY ~SetGlobal("AttackedGith","GLOBAL",1)~ ~SetGlobal("AttackedGith","GLOBAL",1) SetInterrupt(TRUE)~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

The cutscene where the Githyanki arrive; just clears the party actions again.

 

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// add a bit more time for sahuagin attack
COPY_EXISTING ~cut41zg.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~SetGlobalTimer("GithTimer1","GLOBAL",5)~ ~SetGlobalTimer("GithTimer1","GLOBAL",10)~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

This gives a bit more time for a battle after the appearance of the Sahuagin. It's a nice touch, and it's been retained.

 

// saemon brynnlaw -> sahuagin city sequence errors (8 changes)
// see ppsaem3.dlg (x2), ppsailor.dlg, ar1600.bcs, cut41q.bcs, cut41zf.bcs, cut41zg.bcs, ppsaem2.bcs
// false block for saemon initiating dialogue (moved to cut41q.bcs); add block to make saemon hostile if attacked
COPY_EXISTING ~ppsaem2.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~Global("SaemInit1607","GLOBAL",0)~ ~False()~
APPEND_FILE ~bg2fixpack/baf/ppsaem2.baf~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

So, two changes here. If you attack Saemon after the appearance of the Sahuagin, he goes hostile. Also, since a dialogue call has been moved to the cutscene script, one of the script blocks here is now redundant and gets False()d.

Posted

My oh my this looks like a tough fix. I've tried to use the most recent patches and the g3 fixpack, but I still seem to be getting these errors.

 

I'm kind of desperate to get into Sahuagin City to grab certain items... I don't think my party can handle certain lich-related encounters without it...

 

Any ideas what a non-coding-savvy guy can do?

 

I'm running BG with TOB installed on a Mac with OS X 10.5.8

Archived

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

×
×
  • Create New...