EDIT: If someone feels like discussing the fact whether Anomen actually would romance an engaged woman, maybe this thread is more suitable: Poll: Multiromancing in the committed state?
I felt the need for a more individualised Anomen - Ajantis romance conflict, as Ajantis (if the player wants to play the romance) and the PC would be already engaged at the beginning of BGII. Since I did not want to "shut down" the Anomen romance from the start, I needed a more specific romance conflict than the usual "two men in the party realise they are both romancing the PC - one of them starts a conflict - PC has to decide - one romance gets shut down" approach.
The following abbreviations are used:
"CN Anomen": Anomen as a chaotic neutral cleric, after failing his knighthood test.
"LG Anomen": Sir Anomen as a lawful good knight, after passing his knighthood test.
"RA" = "RomanceActive": Variable which defines the status of a romance. For Anomen's romance, that would be "1" for an uncommitted relationship, "2"for flirt status (see below), "2" for committed, and "3" for terminated.
"LT" = LoveTalk variable: the value of the local variable named "LoveTalk" that is used to trigger the romance dialogues. Anomen's romance is coded so that the love talks are triggered by even LT values, uneven values are in between while the timer is running.
I advise decompiling the BANOMEN.dlg into a readable file, such as a text editor, and comparing the states. I have identified the ones that would cause Ajantis to react. It could well be that your NPC would react to different states!
Summary of important points of the Anomen romance for conflict talks:
Between LT variables 26 and 28: Anomen has his knighthood test.
If he passes the test and becomes a knight, the variable ~Global("AnomenIsKnight","GLOBAL",1)~ is set and his alignment is changed to LG (lawful good).
If he fails, the variable ~Global("AnomenIsNotKnight","GLOBAL",1)~ is set and his alignment changes to CN (chaotic neutral).
LT 30: CN Anomen wants to kiss the PC
LT 32: CN and LG Anomen asks the PC to spend the night with him
LT 34: CN Anomen's love confession
There are several reasons I found the Anomen romance conflict to be quite complex:
1. Anomen's romance is structured differently, depending on whether he is LG or CN, which, in turn, is dependent on whether or not he passed his knigthood test. Ajantis's reactions and conflicts would be different, depending on Anomen's path. Apart from alignment, Ajantis would react differently to a fellow knight than to a CN cleric and "ex" order member.
2. Anomen's sequence of first love night, then love confession: Makes it possible, that the PC "only" sleeps with him but ends the relation afterwards.
3. Inaccurate or missing setting of the Anomen RA variable. The "committed" romance state, i.e. the "AnomenRomanceActive = 2" is actually already set in LoveTalk 28, which is the first love talk after the knighthood test, two lovetalks before the deciding night talk. It can still be set to "3" if the PC brakes with him, but other than that the romance variable indicates already "committed romance". So, detecting the "AnomenRomanceActive = 2" alone for a "committed" Anomen romance would not be enough!
Plus, Anomen LT triggered by Global("LoveTalk","LOCALS",28) ("~A glorious day it is, my lady! I have achieved my dream, and I owe much of that to your assistance and counsel.~") is triggered without check of AnomenRomanceActive variable. Meaning: If the AnomenRomanceActive is set to 3 by another mod while Anomen's LoveTalk variable is Global("LoveTalk","LOCALS",27), Anomen will start his dialogue after the knighting test and AnomenRomanceActive gets set to 2!
I solved this problem for my mod in the way that I allow the Anomen romance to proceed until this dialogue, and make the shut down then. For this, I need a check whether the after-test dialogue already fired:
IF GlobalGT("LoveTalk","LOCALS",27) Global("C#CheckAnomenLTGT27","GLOBAL",0) THEN RESPONSE #100 SetGlobal("C#CheckAnomenLTGT27","GLOBAL",1) ENDWith this, I add a block to my NPC's script:
//Kill Anomenromance if PC and Ajantis are married IF Global("C#AjantisPCMarriage","GLOBAL",1) Global("C#AjantisKillAnomenRom","GLOBAL",0) Global("C#CheckAnomenLTGT27","GLOBAL",1) OR(2) Global("AnomenRomanceActive","GLOBAL",1) Global("AnomenRomanceActive","GLOBAL",2) THEN RESPONSE #100 SetGlobal("C#AjantisKillAnomenRom","GLOBAL",1) SetGlobal("AnomenRomanceActive","GLOBAL",3) END
Now let us take care of point number 3. In addition to the confusion caused by setting the variable before the decision whether or not to sleep with Anomen, there are two states where setting the RA to "3" for break-up is missing: state 437 (LG Anomen, PC refuses to sleep with him two times), and state 399 (CN Anomen, PC insults him and Anomen leaves for ever).
There is also one state where setting to RA = 2 is missing (as said before, it would not really be needed, but I added it nonetheless to make sure): state 434, where the PC sleeps with LG Anomen without being too positive about his desire.
Adding these actions would be done by "ADD_TRANS_ACTION", to be put into a .d-file for compilation:
/* adding action states to ensure that the AnomenRomanceActive has the right value depending on the PC's behaviour */ ADD_TRANS_ACTION BANOMEN BEGIN 434 END BEGIN END ~SetGlobal("AnomenRomanceActive","GLOBAL",2) ~ ADD_TRANS_ACTION BANOMEN BEGIN 437 399 END BEGIN END ~SetGlobal("AnomenRomanceActive","GLOBAL",3)~
Further, I said that checking for RA = 2 is not enough, so a check for the LoveTalk number would be needed. Since "LoveTalk" is a local variable, the check has to be performed in Anomen's script Anomen.bcs:
IF //check for love night in Anomen.bcs GlobalGT("LoveTalk","LOCALS",32) Global("C#CheckAnomenLTGT32","GLOBAL",0) THEN RESPONSE #100 SetGlobal("C#CheckAnomenLTGT32","GLOBAL",1) END
In addition, a check whether Anomen slept with the PC could be introduced, which would be sufficient if it is assumed that the Anomen romance would be played while the Ajantis mod is installed (and not before). The states for committed Anomen love night are 432 and 434 for LG Anomen, and 366 for CN Anomen:
ADD_TRANS_ACTION BANOMEN BEGIN 432 434 366 END BEGIN END ~SetGlobal("C#AjantisPCSleptWithAno","GLOBAL",1)~ //variable is set for committed anomen love night
So the global variable "C#CheckAnomenLTGT32" or "C#AjantisPCSleptWithAno" tell Anomen's love night happened. Combined "C#CheckAnomenLTGT32" with Anomenromance = 2 would mean the PC slept with Anomen. The script block to deactivate the Ajantis romance for committed romance with Anomen now looks like this:
IF Global("C#AjantisRomanceActive","GLOBAL",2) Global("AnomenRomanceActive","GLOBAL",2) OR(2) GlobalGT("C#CheckAnomenLTGT32","GLOBAL",0) //after Ano love night Global("C#AjantisPCSleptWithAno","GLOBAL",1) //PC slept with Anomen Global("C#AjantisPCOtherRom","GLOBAL",0) THEN RESPONSE #100 SetGlobal("C#AjantisPCOtherRom","GLOBAL",1) SetGlobal("C#AjantisRomanceActive","GLOBAL",3) END
Now comes the interesting part: Adapting the Anomen romance so it is appropriate for the case of "romancing an engaged woman". I was anxious to give the PC enough answer options concerning her relation with Ajantis. Most of them do not end the Anomen romance, especially not for CN Anomen. Still, I didn't want LG Anomen to look like a jerk, but that's to the author's taste, I guess.
The additional PC choice would be added with EXTEND_BOTTOM.
So, the interesting points would be:
-in LT 30 for CN Anomen:
State 347: Anomen asks for a kiss.
(CN Anomen doesn't let himself be decouraged, no matter how rude the answer. For refusal, I used state "354", which is the origial one for rejection.)
State BANOMEN 350 would be after the actual kiss.
If Ajantis would be in the party, I wanted him to react to that, of course.
/* adding interjection if PC kissed CN Anomen with Ajantis in the party*/ INTERJECT BANOMEN 350 C#AnomenKissedPC == ~C#AjanJ~ IF ~InParty("C#Ajantis") !Dead("C#Ajantis") !StateCheck("C#Ajantis",CD_STATE_NOTVALID) Global("C#AjantisRomanceActive","GLOBAL",2) Global("C#AjantisNoRomance","GLOBAL",0)~ THEN ~<CHARNAME>, my love!... What... what are you doing there with Anomen?~ END BANOMEN pc_kiss
-For LG Anomen, I added answer option after his flower present, where he finds quite direct words already (state BANOMEN 411 and 416).
-Next is the love night (LoveTalk","LOCALS",32).
CN Anomen: state BANOMEN 361, 364, 365
LG Anomen: state BANOMEN 429
In addition to the PC reply options, I felt it necessary that Anomen expresses his awareness that he is romancing an engaged woman. It can be easily realised by letting him say some more additional lines via "INTERJECT_COPY_TRANS", which would only be triggered if the romance case would be true. For example after state 427, where LG Anomen makes his intro to his final question:
Here are the original states:
IF ~~ THEN BEGIN 427 // from: 426.0 SAY #35850 /* ~You have become the captain of my soul, and have kept me on the path of righteousness and good... and aided me in achieving a dream I had nearly thought to be impossible.~ */ IF ~~ THEN GOTO 428 END IF ~~ THEN BEGIN 428 // from: 427.0 SAY #35851 /* ~I... I wish to become closer to you, <CHARNAME>. I wish to feel you in my arms, to caress your skin and lay with you in the night.~ */ IF ~~ THEN GOTO 429 ENDI let him express his awareness that what he is doing is somehow wrong:
I_C_T BANOMEN 427 C#Banomen_Add_427_01 == ~BANOMEN~ IF ~Global("C#AjantisRomanceActive","GLOBAL",2) Global("C#AjantisNoRomance","GLOBAL",0) OR(2) GlobalGT("C#AjanAnomenConflictKnight","GLOBAL",0) GlobalGT("C#AjanAnomenConflictKnight2","GLOBAL",0) OR(2) Global("DomainPaladinBattle","GLOBAL",0) Global("C#AjantisExistiert","GLOBAL",1)~ THEN ~I know that I am wrong to address such direct words to the fiance of an Order comrade, and yet, my lady, if I do not ask you now, I will never know the answer to my painful desire!~ END
I hope someone will find this useful. If you have any comments or corrections please let me know!
Edited by jastey, 13 January 2008 - 07:22 AM.