Help - Search - Members - Calendar
Full Version: Extended list of BG1 character sound offset names
The Black Wyrm's Lair - Forums > Mod development resources & discussion > Tutorials, hints & tips
Baronius
CLICK HERE TO SEE THE COMPARISON CHART

The first part of my additions belongs to sound slots which function has already been obvious for everyone (SELECT_ACTION 1,2,3, SELECT_RARE 1,2,3,4 etc.). The other part contains a few novelties (IDLE 1,2, BIOGRAPHY_TEXT, etc.).

I have written a short description for each new/changed offset name. Naturally the new names are arbitrary. They are as follows:

BATTLE_CRY_1 (9)
BATTLE_CRY_2 (10)

I changed BATTLE_CRY to BATTLE_CRY_1, and added BATTLE_CRY_2.

ATTACK_1 (14)
ATTACK_2 (15)

I changed ATTACK to ATTACK_1, and added ATTACK_2.

SELECT_COMMON_1 (26)
SELECT_COMMON_2 (27)
SELECT_COMMON_3 (28)

I changed SELECT_COMMON to SELECT_COMMON_1, and added SELECT_COMMON_2 and SELECT_COMMON_3.

SELECT_ACTION_1 (32)
SELECT_ACTION_2 (33)
SELECT_ACTION_3 (34)

I changed SELECT_ACTION to SELECT_ACTION_1, and added SELECT_ACTION_2 and SELECT_ACTION_3.

SELECT_RARE_1 (35)
SELECT_RARE_2 (36)
SELECT_RARE_3 (37)
SELECT_RARE_4 (38)

I changed SELECT_RARE to SELECT_RARE_1, and added SELECT_RARE_2, SELECT_RARE_3 and SELECT_RARE_4.

INTERACTION_1 (39)
INTERACTION_2 (40)
INTERACTION_3 (41)
INTERACTION_DIALOG (or INTERACTION_4) (42)
INTERACTION_5 (43)

Interactions with other party members. They are usually said to the same NPC. They are more often negative statements than positive ones. INTERACTION_DIALOG usually opens a dialogue window with the other NPC, while the others are typically spontaneous statements (with immediate reply from the partner, but without dialogue window).

INSULT_1 (44)
INSULT_2 (45)

I changed INSULT to INSULT_1, and added INSULT_2.

POST_TEXT (69)
Text without sound resource. Its trigger in the game is unknown. It is used only in case of Branwen and Ajantis. Very rarely, but it occurs indeed when playing with these NPCs in the party.

IDLE_1 (69)
IDLE_2 (70)
IDLE_3 (71)
IDLE_4 (72)
IDLE_5 (73)
These sounds are played when the creature is idle and is in normal state. It is used in case of Spiders and Helmed Horrors for example. IDLE_5 seems to be used by the Town Crier of Beregost. (Thanks to Zed Nocear for the information on IDLE_3-IDLE5.)

BIOGRAPHY_TEXT (74)
Text without sound resource (obviously). It stores the NPC's biography.
igi
Nice work.

Did you test the "Unknown" values and not find anything, or not test them?

What are the circumstances of the POST_TEXT (69) soundslot being used? Does it trigger in a certain quest, does it seem time based? Whats the actual conversation, since I don't think I've played BG1 with either of those characters... unsure.gif
Baronius
I haven't done a comprehensive testing yet, it would take too much time. My principle was the following: I tested those slots which seem to be used by the original game.

POST_TEXT is problematic. I don't remember when it triggered with Ajantis. With Branwen, it seemed to occur randomly (if I recall it correctly, it triggered a few times during the entire game, so it wasn't especially rare). If I remember correctly, it occured in Cloakwood Mines as well, but its trigger cannot be exactly determined (chapter? cloakwood mines?). It wasn't a response to a party member's interaction. One thing may be important though: the party was idle (but not for so long that the NPCs would complain), characters were standing idle, and the text suddenly appeared next to Branwen's name (as if DisplayString had been used). If I remember correctly, she even made a move.

Based on the fact that POST_TEXT is filled only in case of two original NPCs, I think it is possible that it's an unfinished feature, the developers had stopped using it.
Avenger_teambg
Both NI and DLTCEP use the engine's original sndslot.ids or soundoff.ids
So, don't blame the editors, blame BioWare.
There is an action called SetPlayerSound and VerbalConstant, one uses sndslot the other uses soundoff.
You can fix the problem by adding the missing entries to these files.
Theoretically they are the same.
Baronius
Thank you for your reaction, Avenger.

QUOTE
Both NI and DLTCEP use the engine's original sndslot.ids or soundoff.ids

Before writing the new slot names, I had supposed exactly the same, in fact I had been sure that they use the IDS files. Then something confused me, and I was silly enough not to look into it more seriously:

I use NI only for a few tasks, so when checking SOUNDOFF.IDS (BG1 has no SNDSLOT.IDS), the most comfortable way was to open it in DLTCEP.

I don't know if the same happens for others too, but DLTCEP doesn't display INITIAL_MEETING. I found it strange that it was missing from the IDS, but I trusted ItemChecker, and didn't check the IDS manually or in NI. So I believed that INITIAL_MEETING is added by DLTCEP. When I ran NI, I was checking the slots of CRE files only, I didn't check SOUNDOFF.IDS with it (I did it only today, after reading your post). (This is SOUNDOFF.IDS in Near Infinity)
Any idea?

I didn't mean to blame the editors, I was just surprised why their list was outdated (based on those written above, it looked like that...).

Eventually, since the CRE file editor isn't an IDS browser, I think that (starter) modders wouldn't mind if the soundslots had arbitrary names in the dropdown list of the Soundsets page in DLTCEP -- at least if there was an option (e.g. checkbox) to switch between "IDS mode" and "arbitrary mode". It could be a bit more user-friendly in this way.
Avenger_teambg
Probably the IDS file has no header, that confuses my editor?
No idea, but i'll check it.
Zed Nocear
RESPONSE_TO_COMPLIMENT and MISCELLANEOUS have the same number, but it's an error, because only the first offset name with particular number in SOUNDOFF.IDS is taken in account in game and displayed, for example in NI.

It seems me, that numbers 71, 72, 73 work as IDLE_3, IDLE_4 and IDLE_5. The sound on position 73 (IDLE_5) of towncrier in Beregost can be hear sometimes.
Baronius
Thanks for the information on indices 71-73.

QUOTE
RESPONSE_TO_COMPLIMENT and MISCELLANEOUS have the same number, but it's an error, because only the first offset name with particular number in SOUNDOFF.IDS is taken in account in game and displayed, for example in NI.

What actual significance does SOUNDOFF.IDS have in the game?
Zed Nocear
Yes, you are right, for running game nothing, only for peoples creating new CREs. I suppouse, the game works good without IDS files at all.

But it does not change the issue, that it is an error from Bioware, that has influence on info in NI or DLTCEP.
Baronius
Not necessarily. IDS files define a (sometimes admittedly ambigious) mapping between names and values, and mapping is possible in the other direction as well. That is, you can map the name to a value (and more names can represent the same value).

I don't know how the tools you've mentioned react to ambigious mappings, but I've never experienced any error in them, so I suppose they're written in the way they should be written: they resolve the ambiguity somehow, e.g. when it's a value->name mapping, they choose one of the names when displaying it (instead of dying with an exception, for example).
devSin
Near Infinity and WeiDU are not fooled by multiple symbols for the same value (nor is the game, but it rarely uses the IDS files anyway). Near Infinity will pick the first symbol it finds that corresponds to the listed value, and WeiDU will choose the last symbol. WeiDU (older versions at least) doesn't handle the first row in IDS files (the first row is always assumed to be a header and gets skipped), and an exception will fire if you try to overload STATE.IDS symbols (say APPEND 0x00000000 STATE_WHYISTHISHERE) and view CRE files in NI (the IDSFlag datatype can't handle multiple symbols for the same bit).

In BG/TotSC, the values for the DIALOG_DEFAULT and DIALOG_HOSTILE locations are off (I believe 61 is _HOSTILE and 62 is _DEFAULT). When a creature is hostile, clicking on the Talk icon and then clicking on the creature runs the DIALOG_HOSTILE string in the text console (the dialogue assigned to the creature is never checked when hostile). If a neutral creature is clicked on and spoken to, if none of the state triggers in the dialogue evaluate to true, then the DIALOG_DEFAULT string is displayed in the console. IIRC, there are two additional _DEFAULT slots following that seemed to be originally intended to pick between the strings based on some condition, but these are totally unused.

All the EXISTENCE (IDLE_) slots work; they just run the attached string (usually sound only, with no string data) at random intervals (the game isn't too good at only picking one, so lots of times, multiple sounds from the list will fire).

Everything between a run of certain soundset strings and the next run are part of the previous slot group (e.g., BATTLE_CRY goes all the way up to BATTLE_CRY5 and then switches to ATTACK). The BG2 IDS should have mostly appropriate mappings (although BG2 adds some additional slots, all the common ones remain identical between the original and the sequel).

Note that MORALE corresponds to morale failure, and UNHAPPY_BREAKING corresponds only to party members failing their happiness check (it only plays when the engine periodically checks happiness and finds a party member past their breaking point); BioWare confused the two a lot, so many NPCs won't play their morale failure sounds (since they're assigned to the breaking point slot).
Baronius
Thank you for the additions and explanations, devSin.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2024 Invision Power Services, Inc.