Jump to content

NPC leaves on PID


Guest Brynn

Recommended Posts

OK, I went to the public download and ran a clean install to test.

 

I have just confirmed that something is definitely wrong here. Clean install, *no PIDs installed* ;

 

at a reputation of 11, Ajantis instantly fires off the low reputation speech "I will follow despite the reputation..." and everything goes fine.

 

Initiating the PID should result in the "nothing to say to you" speech, but instead, the Joined dialogue file state 0, fires.

 

Response: Associating myself with you was beneath my honor. I must end your evil ways now!

First response index: 0

# responses: 1

Trigger index: 28

 

The trigger fires if it is HappinessLT(0) or if it is HappinessLT(290).

 

Perhaps because it should be -290.

 

checking...

 

 

yep.

 

 

There is a missing negative sign.

 

This is a Tutu-only problem, as on BGT this is handled by BGT rather than BG1NPC.

 

I will update the single line to be -290 instead of 290, and ask CamDawg to update the mirrors tomorrow morning (no version change).

 

The fix, for anyone finding this problem, is to

 

1. Open Near Infinity, and go to the DLG list.

2. Open up _AJANTJ.DLG

3. Find the "State trigger" entry that reads Global("AjantisLeave","GLOBAL",0 HappinessLT(Myself,290)

4. Insert a negative sign, so that it reads Global("AjantisLeave","GLOBAL",0 HappinessLT(Myself,-290)

5. hit the "Update" button

6. hit the "Save" button

7. you should be good to go.

 

I have no idea how that went from a negative to a positive; I am certain it must have been either 0 or -290 on the tester versions (depending on version), or both they (and I ) would have caught something like that. But at least we caught it early and it is a quick fix.

 

Thanks for reporting!

Link to comment
Guest Brynn

Thank you very much, Jatsey, for taking so much time to investigate this probelm.

 

1. Open Near Infinity, and go to the DLG list.

Um... Sorry for the noobish question, but what is NI and how do I open it...? :suspect: Do I have to download something to be able to edit the .dlg file?

 

2. Open up _AJANTJ.DLG

3. Find the "State trigger" entry that reads Global("AjantisLeave","GLOBAL",0 HappinessLT(Myself,290)

4. Insert a negative sign, so that it reads Global("AjantisLeave","GLOBAL",0 HappinessLT(Myself,-290)

5. hit the "Update" button

6. hit the "Save" button

7. you should be good to go.

These should go without problem once I know where to start :blush:

Link to comment
Guest jastey*

Credits go to cmorgan, I was only emotionally involved. :suspect:

 

Brynn, "NI" stands for Near Infinity which is a tool to modify the files of the Infinity Engine (which runs BG).

Find a link here: http://www.idi.ntnu.no/~joh/ni/

It is recommended to take the beta version instead of the newest one, as it runs more stable. You need java to tun it, the installation instructions should be available. Don't hesitate to ask if something is unclear.

 

Kuloyk: What got updated?

Link to comment

That the version will be updated in a timely manner to let the users access Ajantis' player-initiated dialogue and prevent his erroneous leaving, of course - or did I misread it?

 

I will update the single line to be -290 instead of 290, and ask CamDawg to update the mirrors tomorrow morning (no version change).
Link to comment
Guest jastey*

I thought you meant it got already updated. Or was it? :suspect:

OK, forget what I said. Yes, great to see this updated quickly. Thank you, cmorgan!

Link to comment
That the version will be updated in a timely manner to let the users access Ajantis' player-initiated dialogue and prevent his erroneous leaving, of course - or did I misread it?

 

I will update the single line to be -290 instead of 290, and ask CamDawg to update the mirrors tomorrow morning (no version change).

That would be awesome, I'd rather just reinstall BG1NPC or EasyTutu than start messing with the code. Please let us know when the update is available for download :suspect:

Link to comment

I will ask CamDawg to announce it when he is able to do it; I am trying to balance my own playthrough of Domi's IWD2 NPCs with a run through the miscellaneous mods here at G3 to clear out the old auto-update scripts and move them up to WeiDU v204/VERSION/README behaviors, so we stop getting lots of reports everywhere about those "too many windows open" problems )and I am rapidly running out of vacation time :suspect: ).

 

 

Brynn, if you are really uncomfortable with editors, do this:

 

1. download this file: x_jfix_tutu.rar

 

2. extract it to your desktop, so that you see a file named x#jfix_tutu.d

 

3. copy it into D:\BaldursGateTutu\BG1NPC\core\dlg, replacing the existing version of x#jfix_tutu.d

 

4. reinstall.

 

 

This should not mess up your dialog.tlk or anything; there is a single change in a trigger, but the absolutely safest way is to simply open up the game in NI and change that trigger.

 

For folks with non-MS-Word editors, just open the file D:\BaldursGateTutu\BG1NPC\core\dlg\x#jfix_tutu.d, find line 8, and add a negative sign, so that line 8 reads

 

REPLACE_STATE_TRIGGER ~_AJANTJ~ 0 ~Global("AjantisLeave","GLOBAL",0) HappinessLT(Myself,-290)~

 

and then save the file and reinstall. Anyone not using Ajantis shouldn't bother doing this; anyone using BGT should not do this (BGT has its own system that already covers this).

 

For those keeping track of the whole "Happiness" question in the BG2 engine, the -290 refers to the values in HAPPY.2DA. The values for Good leving are -300 at reps of 1 and 2. The values for Evil leaving are -300 at 19 and 20. If your party reaches an extreme at either end, you will want to be using a "Happy Patch" to keep them around (BG2 Tweaks), visit some of the in-game Bards to pay them to lower your reputation, or donate at temples to raise your reputation. Just be aware that the engine reevaluates this happiness only when you have a reputation *change*. You will want to be careful with PID use before your raputation has moved back down towards center if you are trying to keep evil and good working together.

Link to comment

After realizing how BG1 handles the joined- and post dialogue files, I think those "happiness" leaving dialogue states are remainings of an "unhappy leaving" of the NPC if kicked out, since the joined dialogue file gets called upon kickout, and not the post dialogue like in BGII.

Actually, they could be falsed out in the J.dlgs of all NPCs alltogether, if any Tutu-developper wanted to go that way.

Link to comment

Yep - that's why we falsed 'em all out (initially Andyr and Domi, then fancier stuff working with Pro5) while developing the PIDs with very little discussion. They end up acting as a potential 'always true' condition and blocking PIDs. I suppose the idea could also have been that if you tried to talk to the NPC and they weren't happy they would leave immediately. For our purposes, however, we do actually false them out with a condition (so that if someone really needs the state they can set our global and reenable the dialog state) on everyone but Ajantis. I assumed that was because you wanted him to be forced to leave when party reps dropped to 2 or 1 even if folks found some way of avoiding your reputation warning and leaving code - next version, if you like, we can simply take out the darned Happiness() stuff alltogether, and set both states 0 and 1 as unnatainable.

 

Currently,

 

/* Cleaning J's of not conditionals */
REPLACE_STATE_TRIGGER ~_AJANTJ~ 0 ~Global("AjantisLeave","GLOBAL",0) HappinessLT(Myself,-290)~
REPLACE_STATE_TRIGGER ~_AJANTJ~ 1 ~Global("X#JCleanAjantis","GLOBAL",1)~
REPLACE_STATE_TRIGGER ~_ALORAJ~ 0 ~Global("X#JCleanAlora","GLOBAL",1)~ 1 2
REPLACE_STATE_TRIGGER ~_BRANWJ~ 0 ~Global("X#JCleanBranwen","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_CORANJ~ 7 ~Global("X#JCleanCoran","GLOBAL",1)~ 8

etc.

 

 

we could just run a

 REPLACE_STATE_TRIGGER ~_AJANTJ~ 0 ~Global("X#JCleanAjantis","GLOBAL",1)~ 1

 

I really like Domi's "blocking variable" usage, because it is easy to reverse by other modders and players. If someone needs the state, instead of using NI or searching for REPLACE_TEXTUALLY stuff, a simple block setting our global ingame means install-order-independent reenabling of the state. And for troubleshooting or current installs, CLUAConsole works great. The downside is that it adds another global.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...