Jump to content

PST: CRE


Displacer

Recommended Posts

Offset 0x44 is listed as Reputation and as 1 signed byte. It is loaded into memory as a word, it needs a bit more research but I don't think the following byte Hide In Shadows (base) is used, it looks like it is just one word for Reputation.

 

Offset 0x242 Morale Recovery Time is listed as a byte, but it is loaded as a word so I believe the unknown at 0x243 is actually part of 0x242

Link to comment

Ok, I am heading into the code that processes the Effects. The IESDP doesn't have the embedded effects listed, but someone on here gave me this list:

 

0x00 (word) Type

0x02 ( byte) Target

0x03 ( byte) Power

0x04 (dword) Parameter1

0x08 (dword) Parameter2

0x0C ( byte) Timing Mode

0x0D ( byte) Dispel/Resistance

0x0E (4 bytes) Duration

0x12 (1 byte) Probability 1

0x13 (1 byte) Probability 2

0x14 (8 byte) Unknown (string of some sort?)

0x1C (4 byte) # dice/Max Level

0x20 (4 byte) Dice size/Min Level

0x24 (4 byte) Save type

0x28 (4 byte) Save bonus

0x2C (4 byte) Unknown

 

Can someone verify that this is correct? If so the first effect I've ran through, number 0, has a word @0x0C. The processing function looks like its for all effects so this may be true for all of them.

Link to comment

It wouldn't be surprising, but the effects of values in the field (when saved by the BioWare toolset at least) is known for both bytes, so the specific representation isn't all that important (I believe it can get extra bits and such when saved on disk, but those would never be set beforehand on an item or spell, so it's not researched exactly what's going on).

 

You'll likely find that +0x12 is also a word (it was separated into bytes for BG2), +0x14 is the resref field used only in a fraction of the effects, and +0x1c and +0x20 act as dice values instead of level ranges in a very small number of effects (probably two or three at most in normal IE).

Link to comment

Yep, 0x12 is loaded as a word. I ran through effect 0 just to get a feel on how this stuff is being used and learned a few things about it. First the AC that's being modified cannot go above 20, or below -20. If it does it is manually set to one of those values. I assume this makes it important when this effect is applied. If for some reason you're AC is set to 25, and this effect reduces it to 23 it will still be manually set to 20, effectively bypassing whatever set it to 25 (or at least part of it).

Link to comment

Hm, there is a lot of bounds checking in the effects that aren't listed in the IESDP, such as the ones for effect 0 I already stated.

 

Effect 1 also has some, and an apparent error. The error is in the Type field, it is posted that 3 is the same as 0, but from what I'm seeing anything above 2 will spit an error, or crash with an exception. Also for bounds checking, type 0 can only modify to 5, type 2 can modify to 10. If type 0 goes over 5 it is manually set to 5.

 

Perhaps I should start another thread about effects...

Link to comment

Added, thanks.

 

Effect 1 also has some, and an apparent error. The error is in the Type field, it is posted that 3 is the same as 0, but from what I'm seeing anything above 2 will spit an error, or crash with an exception. Also for bounds checking, type 0 can only modify to 5, type 2 can modify to 10. If type 0 goes over 5 it is manually set to 5.

 

Perhaps I should start another thread about effects...

 

Yes, that would be easier for me.

Link to comment

Archived

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

×
×
  • Create New...