Jump to content

ALIGN.IDS


Echon

Recommended Posts

http://iesdp.gibberlings3.net/scripting/ids/bg1/align.htm

The above IDS is incorrect. The correct values were taken from NI:

 

0x00 NONE

0x17 LAWFUL_GOOD

0x18 LAWFUL_NEUTRAL

0x19 LAWFUL_EVIL

0x33 NEUTRAL_GOOD

0x34 NEUTRAL

0x35 NEUTRAL_EVIL

0x49 CHAOTIC_GOOD

0x50 CHAOTIC_NEUTRAL

0x51 CHAOTIC_EVIL

0x01 MASK_GOOD

0x02 MASK_GENEUTRAL

0x03 MASK_EVIL

0x16 MASK_LAWFUL

0x32 MASK_LCNEUTRAL

0x48 MASK_CHAOTIC

 

 

-Echon

Link to comment

What is the point in keeping a file with incorrect references?

 

ALIGN.IDS is not unused, it is part of the IDS targeting in Use EFF File, and as I just noticed, it tends not to work when the numbers are wrong.

 

-Echon

Link to comment

NI uses the wrong .ids file, i guess. Luckily the alignments are not numerous and not moddable, so it is easy to hardcode the correct values.

 

I just don't understand how align.ids is not used when changealignment action and alignment trigger uses it. (Or those are never used?)

Link to comment

NI is acting a bit strange here. When editing the alignment of a CRE, the values match what I listed in the first post. But it uses its own ALIGN.IDS for Use EFF File because it does not recognise the values in the ALIGN.IDS I edited.

 

-Echon

Link to comment

In BG, it should be using ALIGNMEN exclusively. NI's EffectFactory (deals with building up the list for all effects) is pretty big; there's lots of places for mistakes, but it should be using ALIGNMEN too in BG (I don't know if mine does; I may have just used ALIGNMEN everywhere since it's correct in BG2 too); if it's only with use EFF file, then it's probably just a place where Jon forgot to conditionally use ALIGNMEN over ALIGN for BG (specifically, the IDSTargetEffect data type).

 

Smoketest is probably posting the same right now. ;)

Link to comment

BG1's ChangeAlignment() action and Alignment() trigger both refer specifically to ALIGN.IDS (as do BG2's), but the game uses reaction checks in dialog rather than alignment checks so that IDS' values apparently aren't being used.

 

I tried to talk Jon Olav into making NI use ALIGN.IDS for BG1 and BG2 for consistency, but he wouldn't do it. I've done it locally, and it could easily be done by Fred for his NI update project.

 

Here are the places (off the top of my head) where NI refers to an alignment IDS file (from Jon Olav's last source version):

infinity > datatype > IdsTargetEffect.java (no game-specific checks; uses ALIGN.IDS for everything)
infinity > resource > bcs > Compiler.java (IWD2 = ALIGNMNT.IDS; all others = ALIGNMEN.IDS)
infinity > resource > bcs > Decompiler.java (IWD2 = ALIGNMNT.IDS; all others = ALIGNMEN.IDS)
infinity > resource > cre > CreResource.java (IWD2 = ALIGNMNT.IDS; BG2/TOB = ALIGN.IDS; all others = ALIGNMEN.IDS)
infinity > resource> EffectFactory.java (0x39 Change Alignment: IWD2 = ALIGNMNT.IDS; all others = ALIGNMEN.IDS)

IWD has both ALIGN.IDS and ALIGNMEN.IDS (both with correct entries) but incorrectly refers to ALIGNMENT.IDS in both the ChangeAlignment() action and the Alignment() trigger. There is no such file in the game. BG2 also has both ALIGN.IDS and ALIGNMEN.IDS (both with correct entries), but refers to ALIGN.IDS in its other IDS files.

 

Edit: yes I was slow; was browsing through the source code zip file and using NI to check default IDS data. One could go with ALIGNMEN.IDS since it had the correct entries, but I chose to go with what the other IDS files were referencing, and to correct the contents of BG1's ALIGN.IDS while I was at it.

Link to comment
BG1's ChangeAlignment() action and Alignment() trigger both refer specifically to ALIGN.IDS (as do BG2's), but the game uses reaction checks in dialog rather than alignment checks so that IDS' values apparently aren't being used.
Wow. Is there any place where the values compiled incorrectly (in the shipping scripts) or somewhere they're used in dialogues with the botched entries?

 

I tried to talk Jon Olav into making NI use ALIGN.IDS for BG1 and BG2 for consistency, but he wouldn't do it. I've done it locally, and it could easily be done by Fred for his NI update project.
Where did you want it? Everywhere where ALIGNMEN is used? (I would have gone the other way, using ALIGNMEN everywhere since I think it's always correct across the different variants.) I probably wouldn't be comfortable switching entirely to ALIGN either since you'd then have to correct the IDS to not horribly break everything.
Link to comment
Wow. Is there any place where the values compiled incorrectly (in the shipping scripts) or somewhere they're used in dialogues with the botched entries?

I'm not familiar with any such issues. I used NI to search for various text patterns in DLG triggers and actions and didn't find any usage of ChangeAlignment() or Alignment(). A more thorough check might be done with WeiDU, by scanning DLG trigger and action text and BCS code.

 

Where did you want it? Everywhere where ALIGNMEN is used? (I would have gone the other way, using ALIGNMEN everywhere since I think it's always correct across the different variants.) I probably wouldn't be comfortable switching entirely to ALIGN either since you'd then have to correct the IDS to not horribly break everything.

Everywhere, I suppose (it was three or four years ago when I ran into this same issue and noticed ALIGN had bad values). For a time I settled with using ALIGNMEN.IDS, but when Jon Olav stopped updating NI and released the final source code, I took matters into my own hands and forced the editor to use ALIGN.IDS everywhere, except for IWD2 and PS:T. BG1's ALIGN.IDS is the only broken file, though the game doesn't seem to care since it only checks things like reaction, charisma, and reputation.

Link to comment

I think the engine works correctly even when you refer to filenames > 8 (at least in action/trigger ids), it will simply truncate the filename to 8 characters.

This is just another quirk NI and DLTCEP should be aware of.

Link to comment

Not from dialogues (in BG2, at least). If you try to use MUSICLIST, for instance, the compilers recognize it fine (for BAF compiles), but the game can't resolve references when they're used in dialogues. (Unless you're saying that a MUSICLIS file would work where MUSICLIST was specified.)

Link to comment
Not from dialogues (in BG2, at least). If you try to use MUSICLIST, for instance, the compilers recognize it fine (for BAF compiles), but the game can't resolve references when they're used in dialogues. (Unless you're saying that a MUSICLIS file would work where MUSICLIST was specified.)

Yes, i said just that, the engine will automagically truncate all references in .ids files to 8 chars.

Link to comment

Archived

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

×
×
  • Create New...