< Back to main page

"Varium et mutabile semper femina"

JAHEIRA 

Introduction

I think that this name is familiar for all BG players. Some people hates her some almost love her - there are many opinions about this NPC.

Personally I'm one of her fans and that is why I spent so many time trying to resolve her script. I thing that she is the most improved NPC in BG2. Bioware's developers have done very good work (nevertheless her bugged script) - she has the best romance, the most interesting character and story. Someone else could disagree because he prefers Viconia or whining little Aerie but this is just MHO.

She is integral part of my PC's story - I really didn't know how many adventures my PC will spend with her after I saw her first time in Friendly Arm Inn. She acted firstly as guardian and friend when she was traveling with her husband Khalid and my PC - Manveru (at this stage I believe my PC had to prove that he is real leader of his party - J. is bossy hard girl that should know her place in hierarchy) , and later in BG2 after her life tragedy she became my PC's love . Now I'm again going through BG1 in aim to conclude the story.................

Sabre's  Happy Romance scripts : HappyScriptv4-1.zip (For ToB and SoA)

Here is my patch for Jaheira's romance and Harpers quests : JaheiraRomance&HarpersPlotPatchV21.zip (available also in Baldurdash patch) 

Here is the source script file of this patch (jaheira.baf) : SourceJaheiraScript.zip

Here are my modified Jaheira's pictures (I just like girls with darker hair) : JaheiraDark.zip 

Here is greater version of JaheiraDark  : LargeJaheiraDark.zip

 They are compatible with ToB

News and  description of my patch :

2001 - July -06

Update of Sabre's multiromance/happy patch.

2001 - May - 30

Baldurdash patch contains of mine fixed Jaheira script.

2001 - April - 17

1) Fixed next loop in script : e.g. if Jaheira is really hard injured (below 15hp) after "dawning our day" dialogue, if Aerie is hard injured (below 10hp), if Jaheira wants to poke Edwina. I simply removed one condition for 3rd Dermin meeting and now he will appear just after Jaheira finishes talk with PC ("dawning our day") or after this dialogue and leaving any building.

2001 - April - 16

I've spent a lot of time testing this patch. There are some important changes in comparison to original version or Kevin Dorner's patch that was originally used by me to modify Jaheira's romance and Harper quests. Changes are important for example in case of this fiend - Dermin - he bear the blame for almost all loops in Jaheira's script. It will be stuff of legend that I cannot count how many times I killed him and his band of fools during tests (as well as mercenaries in Harper Hold) - my pit fiend performs his work very nicely.  However now this bad boy is improved.

I) The changes are as follows :

Original Kevin Dorner's fixes :

{from his readme}
1. If she was involved in the "Harper Plot" it was possible for one of two groups of Harpers to challenge her as she exited from the Underdark to forest area AR2500. This would cause the elves visible in the area to go hostile, including the leader Elhan, and the game could no longer be completed as Elhan is required to admit the party to Suldanessellar. I resolved this by placing missing area checks in the script that will prevent this from occurring in this area and several others where the skitterish elves are present, as well as the graveyard district so that the party is not confronted by both the Harpers and vampires simultaneously.

2. Halved the time between romance "Love Talks" from 3600 seconds to 1800 seconds. I did this based on the average finish time for party players not rushing through the game being 60-70 days, and for people trying to finish the Jaheira romance, their average was 90-130 days.

3. Fixed a dialog error where, if she was restored from vampirism, she would react as though she had been kicked out of the party rather than being grateful.

4. Fixed a dialog error where if she was kicked out of the party after the romance had concluded, she would react as though the Harper Plot was still unfinished and say that the party had to go to the Harper Hold.

5. Fixed "Terminsel" not appearing after the romance's/Harper plot's conclusion, as the timer was originally defined as five days REAL time, which is a long time!

My fixes :

1) Eliminated problem with too many Terminsels appearing on the screen after romance conclusion and "Good morning" dialogue loop - now we receive Harper pin only one time as well as there is only one "Good morning" dialogue (or this second one if we don't sleep with Jaheira). The highest LoveTalk value is now 71. 

2) Eliminated problem with not appearing "Dawning our day" dialogue - I enabled one more dialogue that connect events after 1st visit of Terminsel and rejoining with Jaheira in Harper Hold with mentioned "Dawning our day...".

3) Now Dermin could appear only in certain moments of romance. (1st meeting after "There is an ill wind" dialogue, 2nd meeting after "How.. how did your last battle", 3rd meeting after "Dawning our day" dialogue) It means that everyone could sleep even 1000 game days and romance still will be OK.

4) If we romance Jaheira all events in Harper quests depends on real time.

5) If our romance is over in any time then Harpers quests continue, so one could obtain Harper pin even if he stopped his romance at very advanced stage (e.g. after some small nookie with Phaere in Underdark). Actually I had to write separate conditions for romance and for playing without it. Game developers tried to do it in one condition what caused all this mess with too early appearing Dermin or Reviane.

II) Known problems that may occur (with possible solutions) :

1) One loop that I wasn't able to fix in script : e.g. If Jaheira is really hard injured (below 15hp) after "dawning our day" dialogue, If Aerie is hard injured (below 10hp), If Jaheira wants to poke Edwina. But there is solution : Just sleep somewhere outside dungeons and after one or two rests you should meet Dermin 3rd time. After killing him everything should be ok.  (now it is fixed in my patch)

2) If user tries to force suddenly some action after party rest several dialogues may be looped (e.g. not appearing "Good morning" dialogue if we end rest movie too suddenly) - only good solution for this is to load earlier savegame.

3) If there are still any problems with not appearing Dermin, Reviane or Terminsel (nevertheless proper romance dialogues) then use the following CLUAConsole commands :
(These solutions are also good for Harper quests without romance)

But here is one warning : Do not use this codes when you haven't proper dialogues before it - If you use these commands too early it will mess both romance and Harpers quests
If Dermin hasn't appeared first time :
CLUAConsole:SetGlobal("DerminSpawn","GLOBAL",1)
CLUAConsole:SetGlobal("DerminAppear","GLOBAL",1)

If he hasn't met with Jaheira 2nd time :
CLUAConsole:SetGlobal("DerminSpawn","GLOBAL",3)
CLUAConsole:SetGlobal("DerminAppear","GLOBAL",1)

If he hasn't appeared 3rd time :
CLUAConsole:SetGlobal("DerminSpawn","GLOBAL",5)
CLUAConsole:SetGlobal("DerminAppear","GLOBAL",1)

Not appearing Reviane :
She should appear after dialogue lovetalk=34

CLUAConsole:SetGlobal("RevianeSpawn","LOCALS",1)
CLUAConsole:SetGlobal("RevianeAppear","GLOBAL",1)

Not appearing Terminsel (2nd time) :

CLUAConsole:SetGlobal("TerminselSpawn","GLOBAL",4)
CLUAConsole:SetGlobal("TerminselAppear","GLOBAL",1)

4) Possible problem with Harper Hold closed doors - I haven't this problem during my games. Everything in scripts seems to be logical and correct.. (but for 90% I'm mistaken) 

III) Not appearing next romance dialogues :
It could be caused by :
- You have finished the whole romance (LoveTalk=71 in my patch or 70 originally)
- There are other conditions that should be satisfied (rest, to be outside city, meet certain person etc.)
- User somehow interrupted dialogue appearance. There is the following solution :

CLUAConsole:SetGlobal("JaheiraRomance","Global",1) 
forces next dialogue to appear (but if there are more conditions than time then it will not appear until everything is satisfied) 

IV) Fixing already bugged romances :
There are several cases when using CLUAConsole is necessary to move on the romance :

-If someone killed Dermin before he had Dawning our day then he should use the following :
CLUAConsole:SetGlobal("Lovetalk","LOCALS",59) enter this in CLUAConsole and press enter when pointer indicates Jaheira. 
You will loose some dialogues but romance will progress further.

-Too may Terminsels on the screen : CLUAConsole:SetGlobal("Lovetalk","LOCALS",71) enter this in CLUAConsole and press enter when pointer indicates Jaheira. 
If it doesn't work write also : CLUAConsole:SetGlobal("TerminselSpawn","GLOBAL",5)

Manveru's musings about Jaheira's script

Other information that I have gathered during Jaheira's script analysis :


Files description with respect to Jaheira's story :

Scripts :


AR0300.bcs - script that controls Rylock and probably the Harper Hold doors 
AR0308.bcs - script that puts Galvarey in Harper Hold as well as mercenaries that are there when we go for Jaheira after 1st meeting with Terminsel.
Renfeld.bcs - script that controls Renfeld (guy that starts Harper quests - we have to take him to Rylock that guards the doors to Harper Hold).
Jaheira.bcs - script that generally controls Jaheira's romance progression and Harper quests. 
Jaheirad.bcs - script that controls two important moments in romance (dialogue : "It is about time we rested. I have seen enough waking hours, thank you very much." lt=58 - JaheiraRomanceActive changed to 2, and " Can I... I would... *ahem* Hear my words while I have the nerve." lt=68 - sleep or not to sleep with her)
Vampjah.bcs - script that controls Jaheira during fight in Bodhi's lair

Dialogues :

bodhiamb.dlg - dialogue with Bodhi before we loose romance interest.
bjaheir.dlg - romance dialogues, interactions dialogues
jahaboam.dlg - locket dialogues
dshop02.dlg - dialogue with guy that sells locket 
jaheira.dlg - dialogues at the beginning of the game (Irenicus's dungeon)
jaheiraj.dlg - Dermin/Ployer/Khalid/reverse vampirism/Phaere/ bandit plot dialogues
jaheirap.dlg - rejoin in Harper hold/joining or kicking from the party dialogues
jamerona.dlg - dialogue with Meronia
jameroni.dlg - dialogue with Meronia
jagalvar.dlg - dialogue with Galvarey
jaertof.dlg - dialogue with bandits
jarevia.dlg - dialogue with Reviane
jatermin.dlg - dialogues with Termisel
jadermin.dlg - 2nd dialogue with Dermin
player1.dlg - dialogues with Jaheira after PC attacks her in slayer form in Asylum and dialogues before 2nd battle with Irenicus (generally dialogues and information concerned around the PC as child of Bhaal)

baronp.dlg - dialogues with Baron Ployer.



Meaning of variables and their values (valid for Kevin Dorner's patch and original files - there are some more changes in my patch) :

Of course all mentioned variables values can be changed using CLUAConsole in form : CLUAConsole("variablename","GLOBAL",value)


JaheiraHarperPlot : controls Jaheira's Harper quests.
0 - no Harper plot
1 - set when Xzar's / Rylock's quests are finished and in case of romance additionally Bandit plot is finished 
2 - Jaheira returns to the party (after Meronia's call)
3 - set after she returned to the party

CloseHarperDoors : value 1 for opened doors value 0 for closed (that is as I think)

HarperHold : timer for Jaheira's reminding about going to Harper Hold
ReturnToHarpers : Jaheira reminds PC to go to Harper Hold. When it reaches value 

JaheiraBanditPlot :
1 - bandits appears outside the city after rest.
2 - after bandits appearance. 
9 - after dialogue with Jaheira
10 - bandit plot finished

GalvareySpawn :
1 - Galvarey and his lackeys appeared in Harper Hold (AR308.bcs)

JaheiraAbandoned : used to check if she left the party during the battle with Galvarey (because of low reputation or we told her that she was blame of this situation).

1 - she left

JaheiraTraitor : used to determine if she fought with PC vs Galvarey
1 - she fought with PC

RevieneAppear - timer for Reviane

RevieneSpawn : (local variable)
1 - after Galvarey's death
2 - Reviane appeared

DerminAppear - timer variable for Dermin (in game time)
DerminSpawn :

1 - set after death of Galvarey with counter 5 days of game time (if there are no romance), or after lovetalk=40 dialogue
2 - change to this value after 5 days + 1st dialogue with Dermin or after lovetalk=40 (Jaheiraj.dlg file with this dialogue)
3 - value after dialogue - 2nd meeting with Dermin after 6 days of game time
4 - after 6 days + 2nd dialogue with Dermin (jadermin.dlg)
5 - value after 1st meeting with Termisel. (jatermin.dlg)
6 - change to this value after 2 days of gametime. 3rd meeting with Dermin.
7 - after dialogue with Dermin during 3rd meeting (Jaheiraj.dlg)
8 - when we kill Dermin and co.
9 - After dialogue with Jaheira (Jaheiraj.dlg). Condition for 2nd Terminsel's appearance.
10 - After 2nd Termisel visit

TerminselAppear - timer variable for Termisel (in game time)
TerminselSpawn:
1 - set after 2nd meeting with Dermin (jadermin.dlg)
2 - set if party rests outside the city (Jaheira goes to Harper Hold)
3 - set after we rejoin with Jaheira in Harper Hold. 
4 - set when Dermin was killed and JaheiraRomanceActive=2 (lovetalk>58). Terminsel will appear after 5 days of game time.

JaheiraNookie :
1 - PC had night of pleasure with Jaheira.
0 - PC was fool and didn't sleep with her. 

JaheiraVampire :
1 - Jaheira kidnapped by Bodhi.
2 - Jaheira fights vs PC
3 - Jaheira vampire died (vampjah.bcs)
4 - dialogue when Jaheira is resurrected and her vampirism is removed.
5 - after dialogue

JaheiraHunt : strange variable that has value 1 if at the very beginning you will tell her not to join the group after releasing her from cage. (Jaheira.dlg)

JaheiraReleased : checks whether Jaheira was released from her cage (value 1) or not (value 0). (Jaheira.dlg)

JaheiraJerk : set to 1 if we tell Jaheira that we take new path in life (in meaning to be more evil) or something unpleasant and then we release her and join to the party. (Jaheira.dlg)

EndangerLovedOne : set after 1st slayer change (player1.dlg )
1- for Jaheira
2- for Aerie
3- for Viconia
4- for Anomen

JaheiraMad1 :
JaheiraMad2 :
JaheiraMad3 : 

one of these variables is set to one after Phaere tries to seduce PC. It depends on what result she obtained (variable PhaereInneuendo value) (Jaheiraj.dlg)

KickedOut :
Jaheira kicked out of the party by PC (value 1) or not (value 0). If it is 1 it always ends the romance.