Jump to content

Getting two Delons


Guest pro5

Recommended Posts

Not sure if it's a fixpack problem, but I never had this till now (I have Beta 1 installed).

 

I got two meetings with Delon (boy who gives you the Shade Lord quest in Umar Hills), one in Gate District and later second in Government district.

Link to comment
Not sure if it's a fixpack problem, but I never had this till now (I have Beta 1 installed).

 

I got two meetings with Delon (boy who gives you the Shade Lord quest in Umar Hills), one in Gate District and later second in Government district.

Did you accept or decline his quest when you met him the first time? And the second time? Is Minsc in the party?

Link to comment
Did you accept or decline his quest when you met him the first time? And the second time? Is Minsc in the party?

 

I accepted the quest, Minsc was in party and had his usual "heroic" interjection during that dialog. Journal entries did appear as they should.

 

In the government district, exactly the same dialog happened again (with Minsc speaking again).

 

Don't know if it matters but my PC is Archer, so this is my stronghold quest.

Link to comment

Nope. The important thing is that Minsc was in the party.

 

Delon is supposed to spawn in the government district. He is supposed to approach the party and initiate conversation if Minsc is in the party. Otherwise, you have to initiate conversation with Delon. That part is working as it should.

 

Here's the tricky bit: Delon is supposed to spawn in other parts of Athkatla if Minsc is in the party and you haven't accepted Delon's quest yet. Some global is not setting properly if you're getting Delon in both places.

 

It can get even weirder. I've done the Umar Hills quest and had Delon track me down again in Waukeen's Promenade afterward and give me the quest *again*. I was so confused, I went to go talk to Minister Lloyd, but I don't remember whether he acted like I'd done the quest or not. I do know that my journal reflected *both* the first completed quest and Delon's new assignement.

 

That was in an unmodded game.

Link to comment

OK, got a handle on this. Delon's script includes provision for the Gov't district version to disappear if he's spawned by Minsc's script. However, the trigger conditions are more geared towards whether Minsc should spawn Delon instead of whether he actually has.

 

So a couple of changes to be made:

  • Delon should absolutely, positively leave the Gov't district if he's spawned by Minsc and the party interacts with that version. (The mere spawning shouldn't make the Gov't copy disappear, as he could potentially spawn and be missed by the party, or spawned in an inaccessible area). The inverse is already true: if spoken to in the Gov't district, Minsc does not spawn Delon.
  • If Delon gets spawned by Minsc, and the party does not speak to him, the spawned version needs to go away if the party instead interacts with the Gov't district copy.
  • It's unlikely, but Delon can spawned by Minsc in one of the random city encounter areas (ar0046). This is bad if you ever want to go back and talk to him.

Moving to pending.

Link to comment
OK, got a handle on this. Delon's script includes provision for the Gov't district version to disappear if he's spawned by Minsc's script. However, the trigger conditions are more geared towards whether Minsc should spawn Delon instead of whether he actually has.

 

So a couple of changes to be made:

  • Delon should absolutely, positively leave the Gov't district if he's spawned by Minsc and the party interacts with that version. (The mere spawning shouldn't make the Gov't copy disappear, as he could potentially spawn and be missed by the party, or spawned in an inaccessible area). The inverse is already true: if spoken to in the Gov't district, Minsc does not spawn Delon.
  • If Delon gets spawned by Minsc, and the party does not speak to him, the spawned version needs to go away if the party instead interacts with the Gov't district copy.
  • It's unlikely, but Delon can spawned by Minsc in one of the random city encounter areas (ar0046). This is bad if you ever want to go back and talk to him.

Moving to pending.

 

 

Hello,

 

Well, I have changed your solution and now the bug should be solved with all your conditions above :)

 

As there are no dialogue changes nessecary, I have this time coded it in WeiDU too ;) :

 

ORIGINAL OLD FIX:

 

// delon's script using wrong variable for talking to Lloyd; had EscapeArea() issues

COPY_EXISTING ~delon.bcs~ ~override~

DECOMPILE_BCS_TO_BAF

REPLACE_TEXTUALLY ~TalkedToMayor~ ~TalkedToLloyd~

REPLACE_TEXTUALLY ~Global("Acceptance","GLOBAL",1)~ ~False()~

REPLACE_TEXTUALLY ~AreaCheck("AR1000")~ ~True()~

REPLACE_TEXTUALLY ~Global("DelonMoves","LOCALS",0)~ ~Global("DelonMoves","LOCALS",0) AreaCheck("AR1000")~

COMPILE_BAF_TO_BCS

BUT_ONLY_IF_IT_CHANGES

 

CHANGED FIX:

 

// delon's script using wrong variable for talking to Lloyd; had EscapeArea() issues

COPY_EXISTING ~delon.bcs~ ~override~

DECOMPILE_BCS_TO_BAF

REPLACE_TEXTUALLY ~TalkedToMayor~ ~TalkedToLloyd~

REPLACE_TEXTUALLY ~Global("TalkedToDelon","GLOBAL",0)~ ~Global("TalkedToDelon","GLOBAL",1)~

COMPILE_BAF_TO_BCS

BUT_ONLY_IF_IT_CHANGES

 

// minsc's script need some additional checks; to prevent him from spawning delon in areas with random encounters

COPY_EXISTING ~minsc.bcs~ ~override~

DECOMPILE_BCS_TO_BAF

REPLACE_TEXTUALLY ~!AreaCheck("AR1000")~ ~!AreaCheck("AR0020") !AreaCheck("AR0041") !AreaCheck("AR0042") !AreaCheck("AR0043") !AreaCheck("AR0045") !AreaCheck("AR0046") !AreaCheck("AR1000")~

COMPILE_BAF_TO_BCS

BUT_ONLY_IF_IT_CHANGES

 

 

Explanation:

 

REPLACE_TEXTUALLY ~TalkedToMayor~ ~TalkedToLloyd~ // right !

 

 

REPLACE_TEXTUALLY ~Global("Acceptance","GLOBAL",1)~ ~False()~

 

Don't Know, why you have done this :) .

 

The Global variable: Global("Acceptance","GLOBAL",1) is set by Delon himself in his dialogue and should be 1 to force him do went home in AR1000 after you have accepted his quest...

 

and in addition with this

 

REPLACE_TEXTUALLY ~AreaCheck("AR1000")~ ~True()~

 

it will result in the original Script of Delon in the block with the Acceptance variable in:

IF

OR(4)

false() // canged variable: Global("Acceptance","GLOBAL",1)

Global("Villagesaved","GLOBAL",1)

Global("TalkedToMayor","GLOBAL",1)

InParty("Mazzy")

true() // changed variable: AreaCheck("AR1000")

Global("DelonGoesHome","LOCALS",0)

THEN

RESPONSE #100

SetGlobal("DelonGoesHome","LOCALS",1)

EscapeArea()

END

 

Hm... well, I have never got a script running with false() AND true() as one condition... But don't worry about it: you have written 458 pages TP2 (count from my Winword) and so I guess, everyone will forgive you, as me (of course) :)

 

REPLACE_TEXTUALLY ~Global("DelonMoves","LOCALS",0)~ ~Global("DelonMoves","LOCALS",0) AreaCheck("AR1000")~

 

Not nessecary to change here anything, regarding that I have notchanged the area check at all.

 

The Global variable for: Global("TalkedToDelon","GLOBAL",0) is really wrong and this is the bug that caused Delon to not leave after you have spoken to him. He sets it by himself in his dialogue to 1 just after greeting the Mainchar or Minsc. So if you will force him to go after Minsc or the Mainchar has spoken to him, it should be Global("TalkedToDelon","GLOBAL",1), which will result in:

 

 

IF

GlobalTimerExpired("MinscDelon","GLOBAL") //Timer set by Minsc right after entering the area AR0400 is reached

InParty("Minsc") // and Minsc is in Party

!Dead("Minsc") // and Minsc is not dead

AreaCheck("AR1000") // only run, if he is in this area, the only area, he will not spawn, because he is Actor here

Global("DelonMoves","LOCALS",0) // and he is still in the area, in which he is as Actor

Global("TalkedToDelon","GLOBAL",1) // and you have talked to him once (because if the timer is expired, Minsc will spawn Delon elsewhere - and after greeting, you have spoken to him)

Global("TalkedToLloyd","GLOBAL",0) // and you have not been in Umar Hills yet (the other case is checked in the script block above)

THEN

RESPONSE #100

SetGlobal("DelonMoves","LOCALS",1) // then please leave this area

EscapeArea()

END

 

I hope, this makes clear, why and how I have changed your fix :)

 

Regards

 

Roana

Link to comment

Hm... well, I have never got a script running with false() AND true() as one condition... But don't worry about it: you have written 458 pages TP2 (count from my Winword) and so I guess, everyone will forgive you, as me (of course) :)

 

The False() is under the OR(4) conditional, so as long as any one of those four statements is true, the script continues ;)

 

Hello,

 

well, I'll reformate it for you:

 

IF

OR(4)

false() // canged variable: Global("Acceptance","GLOBAL",1)

Global("Villagesaved","GLOBAL",1)

Global("TalkedToMayor","GLOBAL",1)

InParty("Mazzy")

 

AND

 

true() // changed variable: AreaCheck("AR1000")

Global("DelonGoesHome","LOCALS",0)

THEN

RESPONSE #100

SetGlobal("DelonGoesHome","LOCALS",1)

EscapeArea()

END

 

I guess, this unqouted, by hand formated script will say all, I wanted to say :)

 

(grrrr - why will this Editor never allow spaces at the begin of a line :) ??)

 

Regards

 

Roana

Link to comment
Delon ... Noled ... Satan

 

OHMYGOD!!!!

 

Delon has always been broken. I posit that his demonic powers will prevent us from ever truly fixing him.

 

 

Hello,

 

oh boy, don't give up: give my changes a try - and call me silly, if its not working, after testing it out :)

 

I would very aprreciate to have someone, who know so much about area-fixing as you, for to really big area-bugs in BG1, that I'm not able to fix, cause I simply lag knowledge how to rewrite Vertices (I have only a _suggeston_ what exactly vertices are, but I know very well from IETME, that they are broken in two areas in BG1)

 

These are the AR1801 (where Davaeorn is, which have very... hm ... spurios walls and vertices...) and the AR0514 (in Durlags tower - with that broken Door, which has a sight through, when its closed - I think the bug is in the wall-grafics there...)

 

But I really can script in BG1 and BG2, if I am more than half sleeping :)

 

Regards

 

Roana

Link to comment
I'm just trying to say that this:
IF
 OR(4)
False() 
Global("VillageSaved","GLOBAL",1)
Global("TalkedToMayor","GLOBAL",1)
InParty("Mazzy")
 True() 
 Global("DelonGoesHome","LOCALS",0)
THEN
 RESPONSE #100
SetGlobal("DelonGoesHome","LOCALS",1)
EscapeArea()
END

does exactly the same thing as this:

IF
 OR(3)
Global("VillageSaved","GLOBAL",1)
Global("TalkedToMayor","GLOBAL",1)
InParty("Mazzy")
 Global("DelonGoesHome","LOCALS",0)
THEN
 RESPONSE #100
SetGlobal("DelonGoesHome","LOCALS",1)
EscapeArea()
END

 

The True() and the False() are not part of the same conditional, so this is ok :)

 

 

Hello,

 

well, the script will work, but its really senseless to use true() and false() it this way... ;)

 

What leaves the question: Why didn't you written the fix in the way, you have quoted without these values? I'm just curious :)

 

(oh my... only two hours to sleep yet - and then I have to master PnP... :) ...)

 

Regards

 

Roana

Link to comment
oh boy, don't give up: give my changes a try - and call me silly, if its not working, after testing it out :)
That was simply a joke aimed at the work and discussion involved in his previous fix and wasn't based on your suggestions.

 

Hello,

 

I didn't have taken and meaned this so serious too - so never mind :)

 

(If I will ever be angry, you don't will find any " :) " in the post - but I suppose, this will never be happen in this G3-forums with such fine people ;) )

 

Regards

 

Roana

Link to comment

Roana, your fix isn't quite doing it either. :)

 

Delon's AreaCheck("ar1000") has to be removed from his third scripting block:

IF
OR(4)
	Global("Acceptance","GLOBAL",1)
	Global("Villagesaved","GLOBAL",1)
	Global("TalkedToMayor","GLOBAL",1)
	InParty("Mazzy")
AreaCheck("AR1000")
Global("DelonGoesHome","LOCALS",0)
THEN
RESPONSE #100
	SetGlobal("DelonGoesHome","LOCALS",1)
	EscapeArea()
END

otherwise Delon will stick around forever if he's spawned anywhere other than the Gov't district by Minsc. As for this:

 

REPLACE_TEXTUALLY ~Global("Acceptance","GLOBAL",1)~ ~False()~

 

Delon has valid dialogue if you speak with him between the time you accept the quest and when you complete it. If you leave this condition in his script, he leaves and you never see this additional bit of dialogue.

 

The last of Delon's script can be simplified greatly. It's there to prevent the Gov't Delon from hanging around if Minsc spawns him somewhere else--however, the party can miss the spawned Delon, or he could be spawned somewhere where he can not reach the party. We need to allow for the possibility that Minsc could spawn Delon, but the party still speaks to the Gov't version of him. This should be very simple to rectify--a global variable is set if you actually speak to Delon, but NumTimesTalkedTo is local in scope:

 

IF
Global("DelonMoves","LOCALS",0)
Global("TalkedToDelon","GLOBAL",1)
	NumTimesTalkedTo(0)
THEN
RESPONSE #100
	SetGlobal("DelonMoves","LOCALS",1)
	DestroySelf()
END

 

Once you speak with one Delon, this block should cause the other to disappear immediately. We could use EscapeArea(), but if the spawned Delon is close to a map edge, it's possible the party could spot him leaving when they enter his area. Rather than trying to transform Delon's last scripting block into this, I say we just append this block and False() the existing one. So, all told, this should do it:

 

// delon's script using wrong variable for talking to Lloyd; had EscapeArea() issues
COPY_EXISTING ~delon.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~TalkedToMayor~ ~TalkedToLloyd~
REPLACE_TEXTUALLY ~OR(4)[%tab% %lnl%%mnl%%wnl%]+Global("Acceptance","GLOBAL",1)~ ~OR(3)~
REPLACE_TEXTUALLY ~AreaCheck("AR1000")~ ~~
REPLACE_TEXTUALLY ~GlobalTimerExpired("MinscDelon","GLOBAL")~ ~False()~
APPEND_FILE ~bg2fixpack/baf/delon.baf~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

// Minsc shouldn't spawn Delon in random encounter areas
COPY_EXISTING ~minsc.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~!AreaCheck("AR1000")~ ~!AreaCheck("AR0041") !AreaCheck("AR0045") !AreaCheck("AR0046") !AreaCheck("AR1000")~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

 

ar0020 is the City Gates, and ar0043 and ar0044 aren't flagged as city areas.

Link to comment

Archived

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

×
×
  • Create New...