Kulyok Posted February 17, 2008 Share Posted February 17, 2008 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
CamDawg Posted February 17, 2008 Share Posted February 17, 2008 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
Kulyok Posted February 17, 2008 Author Share Posted February 17, 2008 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
CamDawg Posted February 17, 2008 Share Posted February 17, 2008 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
Kulyok Posted February 17, 2008 Author Share Posted February 17, 2008 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
CamDawg Posted February 17, 2008 Share Posted February 17, 2008 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
Kulyok Posted February 18, 2008 Author Share Posted February 18, 2008 *gulp* I think I won't risk it - I'd rather just install Dale Tweaks. But I'll make nefarious use of 8008_SALAMANDERS_DEAD now that I know how it works, thank you! Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.