Captain Brelaina and being uncompromising
SOLVED:
I have checked every occurrence of the global int checked by the condition being updated. From what i can understand, it seems like for some reason they decided to use the same meter for violence/peace regardless if you are with the Watch or with Moire.
The way this manifests is that, to get compliments for your tact from Brelaina, you need to accept every single bribe (even if you use intimidation and harsh language to get it). Yes, even the Luskan one. Yes, every bribe. Smugglers and lockpickers too. If you stop them, you get violent points. If you use diplomacy to put watchmen on the right path, you don't get points at all. Only accepting bribes and being a bad cop. Accepting a drink from the loiterer gives you good points. Using diplomacy to kindly ask him to go inside gives you bad points.
It's not bugged, it's just terribly designed LMAO
Now, you get violent result if you have 3 or more violent points. That means you can do 2 "bad things" and still get good dialogue.
If your character doesn't want to accept bribes, you can stop smugglers and lockpickers, refuse bribe by attacking Luskan infiltrators and this would put you at 3. Then you can accept a drink from the loiterer and go back to 2. If you then avoid turning watchmen in you should still be in range for peaceful resolution while not being forced to be morally reprehensible. I will test this edge case now and confirm if it works.
FINAL UPDATE:
Actually, I tested every single value possible. I tried staying below 3 (as the check script implies), 2, 1, i tried going in the negatives. Nothing. I am always uncompromising.
Which means my initial doubt was right:
There is an undocumented bug forcing the bad ending dialogue when turning in the quest.
The global int is properly updated and the check itself seems fine, but it doesn't work. Bad ending triggers because it's the default state. There is no way to affect the outcome in the current version of the game.
------------
As a kid I played NWN2 for thousands of hours, with no access to the internet on my pc (i had a physical copy). Therefore I either played 1.0 or whatever early patch came with the disc I had.
In that version of the game, I vividly remember Captain Brelaina having two different dialogues based on the way the character approaches the four guard groups during the docks patrol. Attempting arrest them and ending up killing them would count towards being called foul and uncompromising, while using skill checks to turn them back to the law (and in one case just letting them stay corrupt without intervening) would have her call you tactful.
However in the many years since moving on to a new pc, playing on the GOG release with all expansions and the most recent patch, I never managed to get the tactful dialogue. I tried saving and doing things differently and then reloading, but could never trigger that branch.
Does any of you have a recent recollection of that dialogue? I am starting to think this is an undocumented bug introduced with later patches where the "bad" branch misfires without the appropriate checks, or some flags are turned on by accident.
If any of you can attest to experiencing the proper dialogue please let me know, and specify if you play with any fix packs or unofficial patches I don't know about.
I know that dialogue is flavor only, but it's been bugging me for almost a decade. I would appreciate any input on this.
EDIT: By opening the OC with the toolset and looking at her dialogue files, she that dialogue is controlled by a check called 10c_ds_check.
The check itself is:
// 10c_ds_check
/*
Simple check of the value for the global int 10_cw_sweep_extras
-3 or less is peaceful
+3 or more is violent.
*/
// JYL 05/05/05
int StartingConditional(int nDialogNode)
{
switch (nDialogNode)
{
case 1: // Peaceful
{
if (GetGlobalInt("10_cw_sweep_extras") <= 2)
{
return TRUE;
}
}
break;
case 2: // Violent
{
if (GetGlobalInt("10_cw_sweep_extras") >= 3)
{
return TRUE;
}
}
break;
}
return FALSE;
}
First of all i notice that the comment implies a -3/+3 range, but the check actually reads "less than three or more than three", but i think thats just normal change in design during development.
Im not a programmer but from what i understand, the code runs top down and first checks if violence is <= 2. If it is, it declares the outcome as peaceful and returns.
If it's not, it checks whether its three or more. If it is, it returns as violent. If both those checks somehow fail, it returns false, which i assume does nothing.
What i noticed, however, is that while the positive outcome dialogue checks for 10c_ds_check(1), there is no check for 10c_ds_check(2) in order to trigger the bad dialogue, it seems to be the default state.
So what i assume is that either somehow 10c_ds_check returns false, which would still satisfy the bad end conditions, or the global int gets increased even while not committing violent acts. I'll look more into it.