Jump to content

Lavok Won't Die


kix

Recommended Posts

Sorry to be such a nuisance; but I, or rather Lavok, has a problem.

He won't die. He sputters his line about seeing the sky ending with 'I wish', and then just lays there in his blue circle.

 

I've got SoA [without ToB], official patch, G3 Fixpack and Tweakpack. The odd thing was that this didn't happen before the patch, fixpack and tweakpack were installed. I play using 6 created characters without NPC's. With a Gateway500, 128MB RAM and Win98SE. Ribald's genie is the only mod I have installed.

 

I picked up Valygar, we completed the sphere, took the poor old guy outside and talked to him and that's what happened. I wasn't given the sphere, the knights inside are still speaking there original lines [Cannabalistic children] and the Cowled wizard doesn't show up. Although, the sphere shows up on the completed quest list.

 

I searched the archives and the closest mention I found was the use of:

CLUAConsole:SetGlobal("PCSphere","GLOBAL",1) to render the sphere as a stronghold, which it immediately did; and all seems as it should.

 

The Bad side: I have an undying Lavok I have to walk around when entering/exiting the sphere.

 

The Good side: Each and every time I talk to him, each of the party members gets 45,000xpts [Real easy to make 40th Level this way]

 

Further note;spin769.spl was removed from the Override folder to deal with a previous prob.

 

Thought you folks might want to know.

 

kix :)

Link to comment

Thanks for the report. You could try to bypass this issue by deleting lavok.dlg out of the override, but you'll lose the changes from Tweaks as well. You can console the sphere into your possession with the code you posted, though. :)

 

The original problem: Lavok has an invincibility item that prevents you from accidentally killing him in the initial fight or prior to the completion of the Sphere quest. Originally, he would remove the item in his final dialogue and die; however this caused issues in that one of his scripts would sometimes kick in too early (it's triggered on the destruction of the item) and kill him during his final dialogue, before he can reward the player and/or offer the sphere.

 

To fix this, we removed the action to remove the invincibility item (hence preventing the troublesome script from firing), as his Kill(Myself) action worked, regardless of whether the invincibility item was present or not--essentially, it's removal was entirely redundant. Learned a fun fact, though: while this is true with ToB...

 

I've got SoA [without ToB]

I've just discovered that Kill(Myself) actions do not bypass these protections in SoA-only games. So, we need a slightly different fix to account for how an SoA-only game handles this. The removal of the invincible item will have to stay, and we'll simply remove the problem scripting instead.

Link to comment
You could try to bypass this issue by deleting lavok.dlg out of the override, but you'll lose the changes from Tweaks as well.

 

What would this removal alter? Only the pertinence to Lavok, or would this effect other conditions?

 

 

Also [my ability at old-time basic programming being minimal at best], wouldn't it have been cleaner to have the destruction of the invincibility item conditional upon the complete execution of Lavok's final dialogue?

 

kix

Link to comment
What would this removal alter? Only the pertinence to Lavok, or would this effect other conditions?

I think the only other thing this would affect is Multiple Strongholds from Tweaks, which is why I gave the console workaround for it. :)

 

Also [my ability at old-time basic programming being minimal at best], wouldn't it have been cleaner to have the destruction of the invincibility item conditional upon the complete execution of Lavok's final dialogue?

In a sense, it already is, but the internal workings of the engine aren't nearly as cut-and-dried as we'd like. On Lavok's final line, he queues up a series of actions (varies slightly depending on whether you take him outside, whether you get the sphere, etc.): destroy the invincibility item, erase all of the sphere journal entries, hand out some XP, set variables to grant the PC the sphere (if appropriate) and then finally Kill(Myself). The problem is that Lavok's script can jump in any time after the item is destroyed. If the script jumps in and kills Lavok then these queued actions are dumped and never executed.

Link to comment
In a sense, it already is, but the internal workings of the engine aren't nearly as cut-and-dried as we'd like. On Lavok's final line, he queues up a series of actions (varies slightly depending on whether you take him outside, whether you get the sphere, etc.): destroy the invincibility item, erase all of the sphere journal entries, hand out some XP, set variables to grant the PC the sphere (if appropriate) and then finally Kill(Myself). The problem is that Lavok's script can jump in any time after the item is destroyed. If the script jumps in and kills Lavok then these queued actions are dumped and never executed.
But if the other actions are queued, why wouldn't his Kill() just get pushed like all the other actions?

 

In other words, nobody really knows what the engine does.

Link to comment

Gotcha. I wonder if its possible to allow all calls concerning Lavok to run there course, and once the stronghold has been granted - then nullify his appearance.

 

For now though -

I'm gonna let the sucker bake in the sun and keep the multiple strongholds.

 

Thanks Folks

 

kix :)

Link to comment
The problem is MINHP1 item. You should either remove it or patch Lavok's dialog. See staes 27, 58 and 62. It is also connected to multistronghold component.Please bear in mind that DestroyItem("MINHP1") should be moved to the top of the command list.

Um, no. Removing it means Lavok would die when the party fought him and break the sphere quest completely. It's already at the top of the command list, which exarcerbates the problem. (If anything, it needs to be next-to-last in the command list to minimize the delay between its destruction and Lavok's death.)

 

The problem is lavok02.bcs, which steps in kills Lavok as soon as minhp1 is gone--it's wholly unnecessary as every path in Lavok's final dialogue already destroys minhp1 and kills Lavok.

Link to comment

seanas is working on a fix for this for BP. The problem in BP is that the min1hp is removed before he says his final words so the player cannot get the sphere. I suggested something like the below code:

 

IF
!Global("PlayerHasStronghold","GLOBAL",0) //does not have to be this one this is an example.
!HasItem("MINHP1",Myself)
THEN
RESPONSE #100
	Kill(Myself)
END

 

 

Its probably all screwed up but if it works then the script will check to see if the player has the stronghold or not before lavok kills himself.

 

I know this is something entirely different than what this thread is about but it might save problems if the fixpack and BP both try to fix Lavok.

 

just my 2 cents.

 

ronin

Link to comment
Again, lavok02.bcs is completely unnecessary, as every one of his final dialogue branches already kills him.

 

Hello,

 

right. I have fixed my game in the same way last year. Just removed the unnesscary script :).

 

Regards

 

Roana

Link to comment
Guest Guest_Vlad_*

I fixed in TS and then in Baldurdash-WeiDU only Lavok.dlg:

 

REPLACE ~LAVOK~

 

IF WEIGHT #5 ~Global("LavokOutside","GLOBAL",1)

~ THEN BEGIN 27

SAY ~Ah, it is the sky, after all. I had forgotten how it looked after so long. I thank you... I... I wish...~ [LAVOK17]

IF ~~ THEN DO ~EraseJournalEntry(6509)

EraseJournalEntry(6534)

EraseJournalEntry(7994)

EraseJournalEntry(7995)

EraseJournalEntry(8126)

EraseJournalEntry(8127)

EraseJournalEntry(8128)

EraseJournalEntry(8129)

EraseJournalEntry(10128)

EraseJournalEntry(16302)

EraseJournalEntry(16343)

EraseJournalEntry(16524)

EraseJournalEntry(16544)

EraseJournalEntry(16569)

EraseJournalEntry(20179)

EraseJournalEntry(20365)

EraseJournalEntry(20453)

EraseJournalEntry(23371)

EraseJournalEntry(23409)

EraseJournalEntry(3422)

EraseJournalEntry(6557)

EraseJournalEntry(7241)

EraseJournalEntry(9705)

EraseJournalEntry(9919)

EraseJournalEntry(10047)

EraseJournalEntry(23551)

AddXPObject(Player1,45500)

AddXPObject(Player2,45500)

AddXPObject(Player3,45500)

AddXPObject(Player4,45500)

AddXPObject(Player5,45500)

AddXPObject(Player6,45500)

DestroyItem("MINHP1")

Kill(Myself)

~ SOLVED_JOURNAL ~Lavok is dead, the sphere returned.

 

The planar sphere has returned to our home plane, and I have fulfilled my end of the bargain by bringing Lavok outside of the sphere to die under his home sky. He passed peacefully and with little comment other than to thank me.~ EXIT

END

 

IF ~~ THEN BEGIN 30

SAY ~Take the planar sphere, mage. I grant it to you, in payment for my release. Use it... use it far more wisely than I ever did...~

IF ~~ THEN DO ~EraseJournalEntry(6509)

EraseJournalEntry(6534)

EraseJournalEntry(7994)

EraseJournalEntry(7995)

EraseJournalEntry(8126)

EraseJournalEntry(8127)

EraseJournalEntry(8128)

EraseJournalEntry(8129)

EraseJournalEntry(10128)

EraseJournalEntry(16302)

EraseJournalEntry(16343)

EraseJournalEntry(16524)

EraseJournalEntry(16544)

EraseJournalEntry(16569)

EraseJournalEntry(20179)

EraseJournalEntry(20365)

EraseJournalEntry(20453)

EraseJournalEntry(23371)

EraseJournalEntry(23409)

EraseJournalEntry(3422)

EraseJournalEntry(6557)

EraseJournalEntry(7241)

EraseJournalEntry(9705)

EraseJournalEntry(9919)

EraseJournalEntry(10047)

EraseJournalEntry(23551)

SetGlobal("PCSphere","GLOBAL",1)

DestroyItem("MINHP1")

Kill(Myself)

~ SOLVED_JOURNAL ~Lavok is dead, the sphere returned.

 

Lavok has returned the sphere to our home plane and is now dead. Before he died, however, he granted the sphere to me... perhaps because I am a magic-user myself, I do not know. He asked me to use the construct wisely... more wisely than himself... and then died. What secrets lay in the place and how it even operates, I am not sure... but it is a grander base than any other mage might have, that is certain.~ EXIT

END

 

IF ~~ THEN BEGIN 58

SAY ~I... am most grateful. If... you could but carry me, my strength has all but fled... my last moments... are upon me...~ [LAVOK15]

IF ~~ THEN DO ~StartCutSceneMode()

FadeToColor([30.0],0)

Wait(1)

ActionOverride(Player1,Wait(1))

ActionOverride(Player2,Wait(1))

ActionOverride(Player3,Wait(1))

ActionOverride(Player4,Wait(1))

ActionOverride(Player5,Wait(1))

ActionOverride(Player6,Wait(1))

ActionOverride(Player1,LeaveAreaLUAPanic("AR0400","",[251.694],4))

ActionOverride(Player1,LeaveAreaLUA("AR0400","",[251.694],4))

ActionOverride(Player2,LeaveAreaLUA("AR0400","",[270.743],4))

ActionOverride(Player3,LeaveAreaLUA("AR0400","",[200.701],4))

ActionOverride(Player4,LeaveAreaLUA("AR0400","",[238.740],2))

ActionOverride(Player5,LeaveAreaLUA("AR0400","",[371.659],2))

ActionOverride(Player6,LeaveAreaLUA("AR0400","",[436.621],2))

SetGlobal("LavokOutside","GLOBAL",1)

MultiplayerSync()

EndCutSceneMode()

MoveBetweenAreas("AR0400",[319.680],0)~ EXIT

END

 

IF ~~ THEN BEGIN 60

SAY ~... I... I wish I had... had... ah...~

IF ~~ THEN DO ~DestroyItem("MINHP1")

Kill(Myself)~ EXIT

END

 

IF ~~ THEN BEGIN 62

SAY ~Yes... I see that you are. I... I grant you the sphere, mage. Do... do with it far... far better than I ever did. It is yours... to use wisely...~

IF ~~ THEN DO ~EraseJournalEntry(6509)

EraseJournalEntry(6534)

EraseJournalEntry(7994)

EraseJournalEntry(7995)

EraseJournalEntry(8126)

EraseJournalEntry(8127)

EraseJournalEntry(8128)

EraseJournalEntry(8129)

EraseJournalEntry(10128)

EraseJournalEntry(16302)

EraseJournalEntry(16343)

EraseJournalEntry(16524)

EraseJournalEntry(16544)

EraseJournalEntry(16569)

EraseJournalEntry(20179)

EraseJournalEntry(20365)

EraseJournalEntry(20453)

EraseJournalEntry(23371)

EraseJournalEntry(23409)

EraseJournalEntry(3422)

EraseJournalEntry(6557)

EraseJournalEntry(7241)

EraseJournalEntry(9705)

EraseJournalEntry(9919)

EraseJournalEntry(10047)

EraseJournalEntry(23551)

SetGlobal("PCSphere","GLOBAL",1)~ GOTO 60

END

END

Link to comment

Fixed:

 

// lavok dying too early because of this cheese script
// False()d rather than unassigned in case someone wants to use this for lavok02-specific scripting
COPY_EXISTING ~lavok02.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~!HasItem("MINHP1",Myself)~ ~False()~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...