Jump to content

Is this IWD Fixpack material or IWD UB material?


Kulyok

Recommended Posts

DMALASIM(Chapter 6, Malavon's estate): Global("Golem_Commands","GLOBAL",1) variable triggers additional dialogue options which control the golems - but I don't see where this variable is set, and there seems to be no Golem manual around.

 

DGUELLO(Chapter 6, deep gnome village/mines): Global("Beorn_Quest","GLOBAL",5) variable triggers additional dialogue XP, but I don't see where this variable is set, and no quest seems to trigger this dialogue.

 

In short, it didn't happen in my game, and neither of the walkthroughs mentions these. I noticed, however, that IWD Fixpack works with Guello's quest:

 

Guello says he's giving the party an item as a reward, but the item was non-existent--he now properly rewards the party

 

Help?

Link to comment
DMALASIM(Chapter 6, Malavon's estate): Global("Golem_Commands","GLOBAL",1) variable triggers additional dialogue options which control the golems - but I don't see where this variable is set, and there seems to be no Golem manual around.

Ooh, now this is interesting. It definitely looks dropped, as I can not find golem_commands used anywhere except here. If you look in the strings, though, there's this unused goodie (18713):

 

This book appears to be a manual detailing Malavon's construction of two iron golems. It also contains a number of strange phrases that appear to be command words.

 

DGUELLO(Chapter 6, deep gnome village/mines): Global("Beorn_Quest","GLOBAL",5) variable triggers additional dialogue XP, but I don't see where this variable is set, and no quest seems to trigger this dialogue.

Hmm. This looks more like Bandoth's razorvine quest, where they set the variables to random values at random times. I'll see if I can make some sense of it.

Link to comment
Hmm. This looks more like Bandoth's razorvine quest, where they set the variables to random values at random times. I'll see if I can make some sense of it.

 

Please! :) And I think it might be this one: LDGUELLO.bcs

 

IF
CreatureHidden(Myself)
Global("BEORN_QUEST","GLOBAL",4)
Global("8004_HULKS_DEAD","GLOBAL",15)
THEN
RESPONSE #100
	HideCreature(Myself,FALSE)
	Continue()
END

 

I think Global("8004_HULKS_DEAD","GLOBAL",15) should be triggering "quest complete" and setting the var to 5.

Link to comment
I think Global("8004_HULKS_DEAD","GLOBAL",15) should be triggering "quest complete" and setting the var to 5.

Yeah. As near as I can figger, this is how the var should be tracking:

 

1

Beorn asks you to rescue Guello, and the party declines

2

Beorn asks you to rescue Guello, party accepts

3

Set when Shikata and the salamanders in ar8008 are dead once you leave the area

Moves Guello from ar8008 to ar8004 (hide in ar8008, reveal in ar8004)

4

Set by Guello via dialogue after Shikata/salamanders are dead

Most of the ar8004 creatures have blocks to unhide themselves once B_Q is 4, which is silly as none of them are hidden

 

So, good call, it looks like beorn_quest should go to 5 after Guello is saved and the umber hulks defeated. For completeness, I'd feel better about altering the triggers for the ar8004 creatures just in case.

 

There are also two loose ends. Guello clears out of ar8008 with an OnCreation() block if beorn_quest is 3. However, if you save him and then go straight to talk to him in the gnome village, he never leaves Shikata's area--putting him in two places at once. For the other, Beorn_quest is set to 3 if Shikata and his salamanders are dead once you leave ar8008 to ar8001 or ar8011--it misses the third exit area, ar8005. So, all told:

 

// beorn quest fix; see ar8004.bcs, ar8005.bcs, ldguell2.bcs, ldguello.dlg
// changes trigger to account for beorn_quest values > 4
COPY_EXISTING ~ldbeorn.bcs~  ~override~
		  ~lddgnom1.bcs~ ~override~
		  ~ldguello.bcs~ ~override~
		  ~ldllew.bcs~   ~override~
		  ~ldnym.bcs~	~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~Global("BEORN_QUEST","GLOBAL",4)~ ~GlobalGT("BEORN_QUEST","GLOBAL",3)~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

// beorn quest fix; see ar8005.bcs, ldbeorn.bcs, lddgnom1.bcs, ldguell2.bcs, ldguello.bcs, ldguello.dlg, ldllew.bcs, ldnym.bcs
// sets b_q to 5 if guello free and umber hulks killed
EXTEND_BOTTOM ~ar8004.bcs~   ~g3daletweaks/baf/ar8004.baf~

// beorn quest fix; see ar8004.bcs, ldbeorn.bcs, lddgnom1.bcs, ldguell2.bcs, ldguello.bcs, ldguello.dlg, ldllew.bcs, ldnym.bcs
// set b_q to 3 once you leave shikata's area, like other two exit areas
EXTEND_BOTTOM ~ar8005.bcs~   ~g3daletweaks/baf/ar8005.baf~

// beorn quest fix; see ar8004.bcs, ar8005.bcs, ldbeorn.bcs, lddgnom1.bcs, ldguello.bcs, ldguello.dlg, ldllew.bcs, ldnym.bcs
// clear out guello once party re-enters shikata's area to prevent dupe guellos (use same destroy as other gnomes in area)
EXTEND_TOP	~ldguell2.bcs~ ~g3daletweaks/baf/ldguell2.baf~

 

ar8004.baf:

IF
 Global("BEORN_QUEST","GLOBAL",4)
 Global("8004_HULKS_DEAD","GLOBAL",15)
THEN
 RESPONSE #100
SetGlobal("BEORN_QUEST","GLOBAL",5)
END

 

In base IWD, the ar8005.bcs script contains a lot of blocks to control the myconid spawns as well as the block below. In HoW, they changed over the spawns to .ini files and apparently forgot about preserving this block. So, this does not need to be applied to base IWD games. ar8005.baf:

IF
 GlobalLT("BEORN_QUEST","GLOBAL",3)
 GlobalGT("8008_SALAMANDERS_DEAD","GLOBAL",11)
 !Global("SHIKATA_DEAD","GLOBAL",0)
THEN
 RESPONSE #100
SetGlobal("BEORN_QUEST","GLOBAL",3)
Continue()
END

 

ldguell2.baf:

IF
 OnCreation()
 GlobalGT("8008_SALAMANDERS_DEAD","GLOBAL",11)
 !Global("SHIKATA_DEAD","GLOBAL",0)
THEN
 RESPONSE #100
DestroySelf()
END

 

In addition to the existing .d code, need to weight state 9 so that it will actually fire at some point::

 

// beorn quest fix; see ar8004.bcs, ar8005.bcs, ldbeorn.bcs, lddgnom1.bcs, ldguell2.bcs, ldguello.bcs, ldllew.bcs, ldnym.bcs
// gnomarm doesn't exist; need to weight b_q = 5 state so that it actually appears
// also need to adjust post-rescue dialogue state (11) to account for b_q > 4
REPLACE_ACTION_TEXT  ~dguello~ ~GiveItemCreate("GnomArm",Protagonist,1,1,1)~ ~GiveItemCreate("bootfor",Protagonist,1,1,1)~
SET_WEIGHT ~dguello~ 9 #-1
REPLACE_STATE_TRIGGER ~dguello~ 10 ~GlobalGT("Beorn_Quest","GLOBAL",3)~

Link to comment

Thank you, it all makes sense now.

 

But I've a question: just this evening I've searched for "8004_HULKS_DEAD" and "8008_SALAMANDERS_DEAD" GLOBAL variables, and I do not understand where they _do_ get set(or incremented), only where they're checked. I might've missed it, but if I haven't, is it another glitch?

Link to comment
Thank you, it all makes sense now.

 

But I've a question: just this evening I've searched for "8004_HULKS_DEAD" and "8008_SALAMANDERS_DEAD" GLOBAL variables, and I do not understand where they _do_ get set(or incremented), only where they're checked. I might've missed it, but if I haven't, is it another glitch?

Don't forget the secondary and tertiary death variables. :) 8008_SALAMANDERS_DEAD is incremented every time a sal8008.cre is killed; though it appears 8004_hulks_dead is not being set. Since we can't overwrite the generic umberhulk creatures with these, we need to clone and replace (this is quickly getting complex):

 

COPY_EXISTING ~umberhlk.cre~ ~override/cduh8004.cre~
 WRITE_ASCII 0x29e ~8004_HULKS_DEAD~ #32

COPY_EXISTING ~ar8003.are~ ~override~
 READ_LONG  0x54 "actor_off"
 READ_SHORT 0x58 "actor_num"
 FOR (index = 0; index < actor_num; index = index + 1) BEGIN
READ_ASCII ("%actor_off%" + 0x80 + ("%index%" * 0x110)) "cre_file"
PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "umberhlk" = 0)  BEGIN
  WRITE_ASCIIT ("%actor_off%" + 0x80 + ("%index%" * 0x110)) "cduh8004"
END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~ar8003.ini~ ~override~
 REPLACE_TEXTUALLY ~Umberhlk~ ~cduh8004~
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...