Jump to content

Comments on Open Development Log: BG1 NPC v15


Miloch

Recommended Posts

Original post here.

Miloch, quest files probably oversights on my part ( I know documentation is important but it is my least favorite thing to do ). Please resend on stuff, and let's go with more verbose rather than less.
I added the stuff to the readme I think needed to be added, but I'll resend you the originals too in case you want to add more.
TO DO LIST:

Need to recheck all portraits added vs tp2 code, so that even if it is assigned at .cre level it is only installed if the portraits component is installed.

Did this, at least for the CREs I checked, and I thought you did it last time, but go ahead and do it again if you want.
no portraits for

x#belgin

x#diala

x#dora

x#dyqimp

x#elhan

x#gael

x#jessup

x#karris

x#mazuri

x#minuw

x#namara

x#seasn

x#siene

x#skodd

x#tanari

x#xqmer1 through 6 only if they say something

Dunno if I have time to get to these, but someone really should. Maybe Rabain has some?
need to recheck soundset blanking and make sure we use Miloch's string blanker code so I don't go crazy every time I open DLTCEP
Did this too (added to Nythrun's CRE patcher). Also, I think you can turn that warning off in DLTCEP setup (Check String References or something) but of course, there are times when you want to use that feature too.

 

Also, I hope to be able to get to these today:

1) Check/implement journal entry for Jaheira's Quest as mentioned in this post.

2) Revert Neb to a gnome (again) due to overwhelming public opinion in this post.

Link to comment

Hey, let me know how you sequence the Journal Entry syntax for addition/removal/etc, please - I have only reliably been able to get JOURNAL to operate using my coding (and I have seen others do so with more success, but I put this as a "last thing to look at" priority, like the remaining portraits and the three REPLACE materials. I am still rereading CamDawg's docs)

Link to comment

I thought is would, as researched when we did the soundset fixers; yet I have all sorts of notes here and there about difficulties with Tutu and SOLVED UNSOLVED etc. I will research what works with .tra, too. And test for myself. That would mean looking up all the branches we create, too, and finding out what the original unlolved quest entries were, and removing them - perhaps that is why everyone seemed to go with JOURNAL inproject.

 

If so, I have alot more work ahead of me than I thought.

Link to comment
1) Check/implement journal entry for Jaheira's Quest as mentioned in this post.
Done. Eh... I think so anyway.

 

As it turns out, Valiant's method is unnecessary. TRAing a .d will evaluate the values within ~EraseJournalEntry(@x)~ properly (either that or it's the EVALUATE_BUFFER that does it, but whatever... it works).

 

Firstly, I think we need journal titles so the engine can identify them. It puts the title (first line) in red, puts the day and time after that, then there should be two line breaks and the main text of the entry.

 

There's another problem in that you need to resolve the journal entries from the original game (titled "Aldeth Sashenstar") before getting rid of him and assigning Jaheira's quest.

 

So changes for v15-r2-Miloch:x#jaqu.tra:

@159, 161, 163, 169: Journal title ("Shadows in Cloakwood") added to existing strings; new strings added for Aldeth entry resolution (first is from the vanilla game, but we need to reference it to erase it):

@184 = ~Aldeth Sashenstar

 

I have agreed to help Aldeth Sashenstar, a noble from Baldur's Gate, to fight off a band of savages.~

@185 = ~Aldeth Sashenstar

 

I sided with Seniyad and the druids in their conflict with Aldeth Sashenstar, and ultimately killed Aldeth.~

@186 = ~Aldeth Sashenstar

 

With Jaheira's help, I succeeded in dissuading the druids who were threatening Aldeth Sashenstar. He was grateful, and invited me to visit him at his merchant house in Baldur's Gate one day.~

@187 = ~Aldeth Sashenstar

 

With Jaheira's help, I succeeded in dissuading the druids who were threatening Aldeth Sashenstar. He didn't seem too happy about it though, and left in a hurry.~

I think I corrected a few typos and other minor things when I was there, but you should be able to see that pretty easily by DIFFing the files.

 

x#jaqu.d:

Changed JOURNAL to SOLVED_JOURNAL/UNSOLVED_JOURNAL and added EraseJournalEntry(@x) as relevant

 

When I was testing though, I noticed some dialogue issues that need to be straightened out. Hopefully I didn't introduce them, but I tried not to touch the actual dialogue apart from the journal addition/removal. If you tell Jaheira to "fall back in line," and Aldeth is alive, he tries to interject with "Would you raise my hopes of rescue, only to hand me back over to these uncouth savages?" But the dialogue displayed is directed at Jaheira (Ah, shut up, you nagging forest wench... etc.). It works as planned only if Aldeth is dead.

 

As in the generic game, Call Lightning can fry the PC even after dealing with the druids. It hit me as I went to talk to Aldeth afterwards (not sure what would've happened if it'd killed me). It also fried Imoen after Seniyad was dead and said "Seniyad did 21 damage to Imoen." Which is kinda stupid, but maybe that's just how the engine works. His casting also can't be interrupted AFAICT. Another oddity is if you decide to whack him after accepting the quest, the other druids'll just sit there like the Three Stooges. Good thing I overhauled these lame, cheating druid scripts in Miloch's Misc-Mod or whatever - let me know if you want them.

 

Maybe a minor thing, but perhaps more important if you're opening Cloakwood early. When Jaheira and Khalid force-leave the party, you should erase any entries related to them. Which means you're going to have to copy them to the TRA or use the hard (#x) string ref. I went there in Chapter 1 and still had "Jaheira and Khalid would have me accompany them to Nashkel." Which obviously isn't true now that I've pissed them off.

 

Also, when you piss J&K off and Seniyad also, his three goons don't go with him. He needs to do a Shout(3) before he makes like a tree and leaves (and any journal scripting needs to go before all that too). I added this.

 

Apart from all that, I tested most of the initial dialogue scenarios at least, and the journal adding/deleting seems to work now. Have I ever mentioned how much I hate testing?

2) Revert Neb to a gnome (again) due to overwhelming public opinion in this post.
Done - replace COPY_EXISTING block around 1494 of bg1npc.tp2 with this block (Makes Neb a gnome illusionist/thief as his dialogue and popular vote indicates, with stats more in line with BG2... not that it matters, since I don't think you can really fight him in BG1, but consistency and all... The BG1 soundset was stupid too, so I gave him the BG2 sounds that are at least marginally more appropriate. I guess you can TRA these if you want to make more work for yourself, but being BG2 references, they're gonna be the same in Tutu and BGT too.)
Link to comment

Integrated your new Neb;

 

Maybe a minor thing, but perhaps more important if you're opening Cloakwood early. When Jaheira and Khalid force-leave the party, you should erase any entries related to them. Which means you're going to have to copy them to the TRA or use the hard (#x) string ref. I went there in Chapter 1 and still had "Jaheira and Khalid would have me accompany them to Nashkel." Which obviously isn't true now that I've pissed them off.

On this one, I am not going to implement them yet - the problem is that sttrefs in Tutu are dynamic. They change between versions. So grabbing the correct one means checking for BGT, SoA based, ToB based, and perhpas even

 

I think this might have been why folks avoided using SOLVED/UNSOLVED. They just figured the logic was "use the Journal. It is a diary entry. It doens't need to be changed or accounted for. The palyer can logic out that if they aren't around, no problem - and they can create their own 'J andK left already' entry."

 

But for the future, it is something to look into as a big grand project :)

 

As far as the .tra and D changes you made, I am implementing them fully as is, and learning from you. From now on, I think I can get that syntax right for manipulating journal entries - cool!

Link to comment
On this one, I am not going to implement them yet - the problem is that sttrefs in Tutu are dynamic.
Yeah, which is why I suggested TRAing them first.

 

I grepped my dialog.tlk, and it looks like this is the such only string that would be affected, so you can just add this to x#jaqu.tra:

@188 = ~Jaheira and Khalid

 

Jaheira and Khalid would have me accompany them to Nashkel.~

And then wherever you have an ActionOverride("jaheira",LeaveParty()) in x#jaqu.d, insert an EraseJournalEntry(@188) before it.

 

No idea if the entry has the same title in BGT (hopefully there's some sort of consistency between it and Tutu). The only caveat here is your TRA entry has to match the original one exactly, or it won't erase it.

 

All quests should really go in SOLVED/UNSOLVED (which is probably why the original poster couldn't find the entry). The regular JOURNAL is for stuff that's not quest-related (doesn't need to be "solved" or anything). The good thing about EraseJournalEntry() is that it'll erase the entry no matter where it is in the journal.

Link to comment

Unfortunately, there has to be some serious magic happenintg with .tra, too, because between Baldurdash, original, Macready's EasyTutu before he fixed journal entries, EasyTutu after he started fixing journal entries, your upcoming BGFixpack GTU component, and all the languages, it becomes really interesting trying to support stuff... lots of variants to account for :)

Link to comment

The GTU is hardly even a reality for BG1 yet, let alone Tutu (we would have to figure out how to match up with dynamically-determined string references for one thing). And in any case, we'd be consistent with EasyTutu for something like this (I would hope so at least, though Salk would have to say for sure).

 

So you're supporting Tutu, EasyTutu and BGT. Which is pretty much the case for the mod in general, no? If not, then some readmes and whatnot probably need to be changed... :)

 

Incidentally, EraseJournalEntry() does nothing if it doesn't find a matching journal entry to erase. So you can line up as many as you want at once, and in fact, the vanilla game frequently does this. (In other words, if there are differences between EasyTutu, Tutu and BGT, you can cover them all in one fell swoop.)

Link to comment

Not ignoring you, Miloch - just tossing this for scratch space as i am boing to have to do a hardcoded fix for BGT with/without fixpack until i can get my mind around either S_W_S and gather materials or get the cool "dead the backups for # states" stuf working. Too much fixed to not at least get an open v15.

 

Core Fixes changes for reference and addition later..

/* Cleaning J's of not conditionals */

IF Fixpack THEN

REPLACE_STATE_TRIGGER EDWINJ 193 ~Global("X#JCleanEdwin","GLOBAL",1)~

ELSE

REPLACE_STATE_TRIGGER EDWINJ 190 ~Global("X#JCleanEdwin","GLOBAL",1)~

 

IF Fixpack THEN

REPLACE_STATE_TRIGGER JAHEIRAJ 539 ~Global("X#JCleanJaheira","GLOBAL",1)~ 540

ELSE

REPLACE_STATE_TRIGGER JAHEIRAJ 533 ~Global("X#JCleanJaheira","GLOBAL",1)~ 534

 

IF Fixpack THEN

REPLACE_STATE_TRIGGER MINSCJ 246 ~Global("X#JCleanMinsc","GLOBAL",1)~ 247

ELSE

REPLACE_STATE_TRIGGER MINSCJ 243 ~Global("X#JCleanMinsc","GLOBAL",1)~ 244

 

IF Fixpack THEN

REPLACE_STATE_TRIGGER VICONIJ 189 ~Global("X#JCleanViconia","GLOBAL",1)~

ELSE

REPLACE_STATE_TRIGGER VICONIJ 183 ~Global("X#JCleanViconia","GLOBAL",1)~

 

on both (no corresponding fix on Tutu)

REPLACE_STATE_TRIGGER IMOEN2J 119 ~Global("X#JCleanImoen","GLOBAL",1)~

Link to comment

Archived

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

×
×
  • Create New...