Jump to content

Delon and Umar Hills Quest


Recommended Posts

To fix the bug where Delon will give you the Umar Hills quest repeatedly, I suggest we just add something whereby he says he's going home, and EscapeArea()s. I don't see any reason for him to stick around, and it seems like an oversight that he just stands there-- every other time he approaches you, he vanishes afterwards.

 

The alternative is new dialogue trying to explain exactly WHY he's just standing there.

Link to comment

Okay, missed a block and there IS some pretty sub-optimal text he spouts when he's still standing there. However... the coding makes it look like you'll never see it because he has an EscapeArea block triggering on the Acceptance variable. In conclusion, I don't understand what the bug is.

Link to comment

Are you sure it's the Umar Hills quest and not something to do with the ranger quests? I know that Atta sticks around, but I have no idea what Delon's up to.

 

Anyway, I think that he's only supposed to approach Minsc (if Minsc is in the party, obviously), and I remember a couple spawn blocks or something dealing with Minsc or rangers or whatever. Otherwise, he'll just stand around "I have an offer for you if you wish to hear it..." (it's reassuring to see such eloquence in the young).

Link to comment

Fairly sure he EscapeArea()s on all other ranger stronghold quests.

 

I think I may have spotted the problem. If you mention the reward, and then either Korgan, Minsc or Jaheira interject, the "Acceptance" variable doesn't get set, and so his script won't kick in. Given that every other path sets it, I'd say we should add it in, although that raises a question of why there's a redundant block to cater for him standing around. I guess I should test this ingame rather than looking at half the code then making guesses.

 

[EDIT] Okay, and yeh, his EscapeArea() script will only kick in in AR1000, while Minsc can potentially spawn him elsewhere. So, can anyone suggest what the intended behaviour was meant to be? I'm inclined to think that he was meant to ALWAYS stand around until you've saved the Umar Hills from the Shade Lord, at which point he disappears.

Link to comment

If Minsc is not in the party, or not close enough to him, he will just stand there. I was doing something in the Government District a few days ago, and strolled right past him repeatedly (Minsc wasn't in the party). He did nothing other than DisplayStringHead().

 

I'm inclined to think that he was meant to ALWAYS stand around until you've saved the Umar Hills from the Shade Lord, at which point he disappears.
It wouldn't be unprecedented. Flydian was also supposed to remain (not to mention that he was supposed to be in the Copper Coronet, along with everybody else in the game) until Faldorn was dead.
Link to comment

One obvious problem is that his script (here, at least) is using "TalkedToMayor" instead of "TalkedToLloyd" (causing him to stick around even if you've talked to the mayor). He was originally supposed to wait until you saved Imnesvale, but I don't really see any problems here (I'm re-enabling this behavior, but the current EscapeArea() doesn't look to be causing any bugs).

 

The Minsc spawn could cause problems, but my MINSC.BAF has a butt-load of checks (which may or may not have been in the original script)

IF
 InParty(Myself)
 GlobalTimerExpired("MINSCDELON","GLOBAL")
 Global("TALKEDTODELON","GLOBAL",0)
 Global("TALKEDTOLLOYD","GLOBAL",0)
 Global("ACCEPTANCE","GLOBAL",0)
 Global("VILLAGESAVED","GLOBAL",0)
 !Dead("DELON")
 !InParty("MAZZY")
 !Global("CHAPTER","GLOBAL",4)
 !Global("CHAPTER","GLOBAL",5)
 !Global("CHAPTER","GLOBAL",7)
 AreaType(CITY)
 AreaType(OUTDOOR)
 CombatCounter(0)
 !AreaCheck("AR1000")
 !AreaCheck("AR2000")
 Global("DELONSPAWN","LOCALS",0)
 !Exists("DELON")
THEN
 RESPONSE #100
   SetGlobal("DELONSPAWN","LOCALS",1)
   CreateCreatureObjectOffScreen("DELON",Myself,0,0,0) // Delon
END

Link to comment
He was originally supposed to wait until you saved Imnesvale, but I don't really see any problems here (I'm re-enabling this behavior, but the current EscapeArea() doesn't look to be causing any bugs).

But he won't wait around some of the time, because the "Acceptance" variable gets set in some dialogue paths, causing him to leave.

Link to comment

The way it's implemented, once the quest is accepted, he shouldn't be standing around at all (he should always EscapeArea() once you give him the yes). State 15 sets the right stuff, but it looks like state 16 doesn't (I just forced in the RevealAreaOnMap() and SetGlobal() actions for the transitions there -- I really didn't want to troll through the entire tree looking for what goes where and when). Note that it looks to be somewhat difficult to actually get to state 16 (WeiDU only showed one path to it).

Link to comment

That's what I'm saying, yeh-- there's an obscure path which allows him to stay standing around, opening up a different dialogue state. So should he always stay, or always go, given that doing one or the other randomly is a bit silly.

Link to comment

Always go. There are no provisions in the current data for sticking around (he'll act as though you haven't accepted the quest even if you already did through state 16); it looks like they tried to lump everything together to make him always leave, but evidently missed a few details. Restoring RevealAreaOnMap("AR1100") SetGlobal("Acceptance","GLOBAL",1) will cause him to leave, and is probably the only bug with his default behavior (anything else would be bugs in the spawns in Baldur.bcs or Minsc.bcs).

Link to comment
There are no provisions in the current data for sticking around (he'll act as though you haven't accepted the quest even if you already did through state 16); it looks like they tried to lump everything together to make him always leave, but evidently missed a few details.

IF WEIGHT #3 /* Triggers after states #: 42 even though they appear after this state */

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

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

!Global("umarplot","GLOBAL",1)~ THEN BEGIN 18 // from:

SAY #16878 /* ~Thank you for helping out my village! Um, er, shouldn't you be going there?~ */

IF ~~ THEN REPLY #16986 /* ~I intend to. What exactly was the problem again?~ */ GOTO 19

IF ~~ THEN REPLY #16987 /* ~I'll go as soon as I'm able to. Excuse me.~ */ GOTO 1

IF ~~ THEN REPLY #16988 /* ~Don't bother me, boy.~ */ GOTO 5

END

 

I think that's definitely a provision for him sticking around.

Link to comment

Except that they stuck the Acceptance variable in the check to get him to leave. That the variable doesn't get set is a bug. That there's usable material to turn him into a more substantial character isn't (as mentioned, Flydian has material to stick around boozing in the CC, the CC hookers all have material to be permanent, Drush does, Lillith and Skarmaen do, etc.). There are a lot of places where they just went back with the proverbial "fuck it" and made everyone EscapeArea(), and some places where it was easier to remedy continuity issues (what happens if they kill Lillith or Skarmaen before the hero cutscene/feud plot?) by just giving the creatures a token part. The material exists, but there are no provisions to access it (from the perspective of a bug fix); you can modify the script to make it work, but it works fine as-is (i.e., it's not a bug).

 

Either one is fine to me (as stated, I went ahead and made him stick around until Imnesvale is saved) but, based on all the similar sequences I've trolled through, I really think killing him after the quest is accepted was intentional (for whatever reason).

Link to comment

I think I have this sorted. Thanks to Minsc's script, Delon can be spawned anywhere. If you initially encounter and accept the quest outside of the Government district, Delon will remain if you accept the quest.

 

Delon also gets spawned in the course of the ranger quests to notify you of the ogron assault and the return of the Umar Witch. After both of these dialogues, he EscapeArea()s.

 

There are, I believe, two bugs. The first is that the Acceptance global is not being set properly in the dialogue, as devSin notes. the other is that Delon never leaves if initially encountered outside of the Government District, as his scripted EscapeArea()s check for ar1000.

 

In addition to devSin's fix, I'm inclined to change two more items. Delon will EscapeArea() after the initial meeting if he's in ar1000 and one of the four condidtions is true: Mazzy's in the party, Umar Hills is saved, or you've spoken to Minister Lloyd. I suggest we remove the ar1000 check, so that Delon behaves the same no matter where he's spawned, and also remove the Acceptance Global check for his EscapeArea(). This would mean he would stick around until you've met Mazzy, save Umar Hills, or spoken to Minister Lloyd.

 

Comments?

Link to comment

Taking in mind all of the comments... :)

 

delon.dlg is already fixed, so we just need a few script fixes.

 

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

Link to comment

Archived

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

×
×
  • Create New...