Author Topic: Lahl  (Read 1162 times)

Offline Salk

  • Planewalker
  • *****
  • Posts: 848
Lahl
« on: August 19, 2015, 10:55:25 PM »
Hello!

I was wondering if some work could be done about a messed up dialogue (lahl.dlg) and included under "Creature Corrections". Lines said by this NPC (states 2-7) are randomized and end up not making much logical sense most of the times.

States 5, 6 and 7 could be kept random but 2-4 should not.

Furthermore, Lahl says "The wolf monstrosities killed my wife. Will you send a few of them to the Hells for me?" and the trigger for completing the mission is the death of their leader. This does not make much sense and it's also a duplication of the main objective. I suggest to change:

Code: [Select]
!Dead("karoug")
and

Code: [Select]
Dead("karoug")
with

Code: [Select]
OR(3)
!Dead("hunter")
!Dead("jondal")
!Dead("maiden")

and

Code: [Select]
Dead("hunter")
Dead("jondal")
Dead("maiden")

Those two are ambushing villagers and it'd be a more sensible choice, considering also the journal entry:

Avenge Lahl's wife.

An old farmer named Lahl asked that I kill some of the beasts outside the village to avenge his wife. It is the least I can do. Perhaps I can also arrange for these people to be able to go beyond their wall once again.


A small change would also be needed for the journal entry:

"Lahl was grateful for my defeat of Karoug." should be changed to "Lahl was grateful for my defeat of the beasts ambushing the villagers."

TENTATIVE CODE (I can't test it on EasyTuTu/BGEE so the string change block in the bottom is just BGT):

Code: [Select]
//Adjust messed up lahl dialogue
<<<<<<<< ...inlined/#glahl.d
ADD_TRANS_ACTION ~%tutu_var%lahl~ BEGIN 2 END BEGIN 0 END ~SetGlobal("HelpLahl","GLOBAL",1)~ UNLESS ~SetGlobal("HelpLahl","GLOBAL",1)~
ADD_TRANS_ACTION ~%tutu_var%lahl~ BEGIN 4 END BEGIN 0 END ~SetGlobal("HelpLahl","GLOBAL",2)~ UNLESS ~SetGlobal("HelpLahl","GLOBAL",2)~

APPEND ~%tutu_var%lahl~
IF ~Global("HelpLahl","GLOBAL",2) OR(3) !Dead("hunter") !Dead("maiden") !Dead("jondal")~ THEN BEGIN lahlispissed
  SAY #13308
  IF ~~ THEN EXIT
  END
END
>>>>>>>>

COMPILE EVALUATE_BUFFER ~...inlined/#glahl.d~

COPY_EXISTING ~%tutu_var%lahl.dlg~ ~override~
DECOMPILE_DLG_TO_D
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,1)~ ~Global("HelpLahl","GLOBAL",0)~
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,2)~ ~Global("HelpLahl","GLOBAL",0)~
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,3)~ ~Global("HelpLahl","GLOBAL",0)~
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,4)~ ~Global("HelpLahl","GLOBAL",0)~
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,5)~ ~RandomNum(3,1) !Global("HelpLahl","GLOBAL",2)~
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,6)~ ~RandomNum(3,2) !Global("HelpLahl","GLOBAL",2)~
  REPLACE_TEXTUALLY EXACT_MATCH ~RandomNum(7,7)~ ~RandomNum(3,3) !Global("HelpLahl","GLOBAL",2)~
  REPLACE_TEXTUALLY EXACT_MATCH ~!Dead("karoug")~ ~OR(3) !Dead("hunter") !Dead("maiden") !Dead("jondal")~
  REPLACE_TEXTUALLY EXACT_MATCH ~Dead("karoug")~ ~Dead("hunter") Dead("maiden") Dead("jondal") GlobalGT("HelpLahl","GLOBAL",0)~
COMPILE_D_TO_DLG


ACTION_IF GAME_IS ~bgt~ THEN BEGIN
STRING_SET 75168 ~Avenge Lahl's wife.

Lahl was grateful for my defeat of the beasts ambushing the villagers. I have made a lot of friends here. He said I would make a good addition to the village.~
END
« Last Edit: August 20, 2015, 03:53:45 AM by Salk »

Offline Salk

  • Planewalker
  • *****
  • Posts: 848
Re: Lahl
« Reply #1 on: August 20, 2015, 06:00:11 AM »
I have edited the post above a few times making some changes, just in case somebody is interested.

Offline AstroBryGuy

  • Planewalker
  • *****
  • Posts: 154
  • Gender: Male
Re: Lahl
« Reply #2 on: August 20, 2015, 11:59:34 PM »
I took at look at Lahl's dialog, I came up with a slightly different solution that doesn't change any of the dialogs or journal entries. Also, since BG1 does not support OR() in triggers, your proposed change is incompatible with BG1-TotSC. I do like the idea of Lahl getting angry if you insult his honor, and since it uses an existing common string between BG1 and BG2's dialog.tlk files, all the better!

Oh, and Beamdog fixed Lahl in BGEE.

Code: [Select]
// Corrections to Lahl's dialog
ACTION_IF !(GAME_IS ~bgee~) THEN BEGIN

<<<<<<<< .../bg1ub/ublahl.d
REPLACE_STATE_TRIGGER ~%tutu_var%lahl~ 1 ~Global("Kaishas1","GLOBAL",1) !Dead("karoug") GlobalLT("UBHelpLahl","GLOBAL",2)~
REPLACE_STATE_TRIGGER ~%tutu_var%lahl~ 2 ~~ 3 4 5 7
REPLACE_STATE_TRIGGER ~%tutu_var%lahl~ 6 ~Global("Kaishas1","GLOBAL",1) Dead("karoug")~
ADD_STATE_TRIGGER ~%tutu_var%lahl~ 8 ~Global("UBHelpLahl","GLOBAL",1)~
SET_WEIGHT ~%tutu_var%lahl~ 8 #-1

ADD_TRANS_TRIGGER ~%tutu_var%lahl~ 1 ~Global("UBHelpLahl","GLOBAL",0)~ DO 0
ADD_TRANS_ACTION ~%tutu_var%lahl~ BEGIN 2 END BEGIN 0 END ~SetGlobal("UBHelpLahl","GLOBAL",1)~
ADD_TRANS_ACTION ~%tutu_var%lahl~ BEGIN 2 END BEGIN 1 END ~SetGlobal("UBHelpLahl","GLOBAL",5)~
ADD_TRANS_ACTION ~%tutu_var%lahl~ BEGIN 8 END BEGIN 0 END ~SetGlobal("UBHelpLahl","GLOBAL",2)~

APPEND ~%tutu_var%lahl~
IF WEIGHT #-1 ~Global("Kaishas1","GLOBAL",1) Global("UBHelpLahl","GLOBAL",5) !Dead("karoug")~ THEN BEGIN LahlAngry
  SAY #13308
  IF ~~ THEN EXIT
  END
END
>>>>>>>>

COMPILE EVALUATE_BUFFER ~.../bg1ub/ublahl.d~
END // Lahl correction


The REPLACE_STATE_TRIGGER on state 1 removes the Random() trigger and blocks the state if Karoug is dead or Lahl has been angered.

The REPLACE_STATE_TRIGGERs on states 2 3 4 5 and 7 remove the state-level triggers. These states can only be reached starting the dialog at state 1.

The REPLACE_STATE_TRIGGER on state 6 removes the Random() trigger and starts the "good crop" dialog if Karoug is dead.

The ADD_STATE_TRIGGER on state 8 only fires "quest completed" dialog if you agreed to help Lahl. Also do a SET_WEIGHT on state 8 to make sure it is checked before state 6.

ADD_TRANS_ACTIONs on states 2 and 8 to set the UBHelpLahl variable: 1 means player agreed to help Lahl, 2 means the quest is completed, 5 means Lahl was insulted.

Finally, adding your "Leave me alone" dialog if UBHelpLahl = 5 (and set the WEIGHT so it will fire before other states).

Offline Salk

  • Planewalker
  • *****
  • Posts: 848
Re: Lahl
« Reply #3 on: August 21, 2015, 04:21:36 AM »
Very nice solution, way better than mine.  ;)

The only thing, I'd really like to change the target of Lahl's wish for revenge. Karoug doesn't really feel right. Not only is it just a duplication of the main objective but it doesn't fit in with the quest background and informations. We could use Palin (the closest one ambushing villagers) instead? No OR would be required, keeping it fully compatibly with the original Tales of the Sword Coast. It'd just require a small change to the journal.

Otherwise it sounds very good to me.
« Last Edit: August 21, 2015, 04:24:25 AM by Salk »

Offline AstroBryGuy

  • Planewalker
  • *****
  • Posts: 154
  • Gender: Male
Re: Lahl
« Reply #4 on: August 22, 2015, 10:33:08 PM »
Actually, perhaps replacing the Dead(Karoug) checks with a variable, Global("UBLahlWolfweresDead","GLOBAL",1).

The following could be added to the area script

IF
  Dead("maiden")
  Dead("palin")
  Dead("jondalw")
THEN
  RESPONSE #100
    SetGlobal("UBLahlWolfweresDead","GLOBAL",1)
END

I didn't flag on hunter. "hunter" appears to be the death variable of an unused CRE (an alternate version of Palin). Also, the wolfwere Jondal has no death variable, so it would need to be assigned. Jondalar in Candlekeep has the death variable "jondal".

Offline Salk

  • Planewalker
  • *****
  • Posts: 848
Re: Lahl
« Reply #5 on: August 23, 2015, 01:46:20 AM »
Sounds perfect.

You're absolutely right about "jondal" being the wrong DV. But to what .cre is the DV "palin" associated to? In my game, there is PALIN.CRE and the script name is "Hunter" (both in BG1 and BGT)...?

Offline AstroBryGuy

  • Planewalker
  • *****
  • Posts: 154
  • Gender: Male
Re: Lahl
« Reply #6 on: August 23, 2015, 01:45:14 PM »
You're right, it should be hunter. I was confused by another  CRE with the name Palin and DV hunter1. In my brain, I was thinking hunter referred to that CRE.

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
What color is grass?:
What is the seventh word in this sentence?:
What is five minus two (use the full word)?: