Enemy Add/Swap via ".esl" files (Hex Offset Definitions)
Jan 29, 2017 5:26:58 GMT 10
Nathan Kennedy, Vicky, and 1 more like this
Post by 13lack0ut on Jan 29, 2017 5:26:58 GMT 10
I made this after watching a overly-rushed explanation of the hex values in the enemy spawn list (.esl) files. I figured someone might find it useful.
Copy and paste everything below into notepad for the best appearance.
It's formatted with special spacing to even out under fonts like Fixedsys or Lucida Console.
Hex Offset Values:
----------------------------------------------------------------------------
The .esl files are located in etc.dat
Use "GCA Extract" tool to extract the .esl (enemy spawn list) files from etc.dat
Use "HxD" Hex editor to edit the .esl files
At the top of the editor, set the "bytes per row to 32"
(this puts each enemy on a single line)
Use the table below to either change or add enemies to each area
Enemies that are to be added should go at the BOTTOM of the .esl file
Adding enemies (moving any of the existing values down) will corrupt the
.esl file and potentially cause game crashes. Only ADD enemies to the end
of the file.
----------------------------------------------------------------------------
Hex Offset Values:
00 ------ Spawn Mode "00" / "01" - Event-Triggered or Instantaneous respectively.
When adding enemies, always use "01"
01 ------ Enemy ID
02 ------ Enemy Style (Clothing for the most-part)
03 ------ Distance player is from enemy before it reacts (Chasing)
-------
04 |
}--- Weapon ID
05 |
-------
--------
06 |
|
07 |
}--- Enemy HP
08 | 06,07 = HP Value
| 08,09 = Multiplier
09 |
-------- Use Windows calc in Programmer/Hex mode
to calculate (06,07 x 08,09 = HP)
0A ----- Always "00"
0B ----- Enemy Face Direction on Spawn
--------
0C [X] |
|
0D [X] |
|
0E [Y] |
|
0F [Y] |
|---Enemy Spawn Position & Direction
10 [Z] |
|
11 [Z] |
|
12 <---+---.
| }-- Always "00"
13 <---+---'
|
14 [R] |
|
15 [R] |
--------
------------------------------------------------------------------------------------------
| Positional Bytes Read Backwards, same as "spawn in" |
| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
| |
| HEX OC OD OC OD |
| ---------|---|------------------|---|--------------------------------------------------|
| Bytes [A9 DE] [45 DE] |
| VALUE 169 222=(222,169) -> 069 222=(222,069) : "-100" (move back apx. 1&1/2 steps) |
| |
| Use windows calculator in "programmer" mode to figure each byte 1 at a time: |
| |
| -in Windows calculator: Menu "View" > "Programmer" |
| -Set calculator to "hex"/"byte" |
| -enter the hex value, i.e. "0C" above |
| -Switch "hex" to "dec" and the value changes to actual number |
| |
| -Do this in reverse to change numbers to hex values |
------------------------------------------------------------------------------------------
--------
16 |
}--- Always "00"
17 |
--------
--------
18 |
}--- "Spawn in"
19 | reversed, i.e. 00 04 = r400
--------
1A ----- Possibly reference to event that triggers spawning
Just use "00" when adding new enemies.
Copy and paste everything below into notepad for the best appearance.
It's formatted with special spacing to even out under fonts like Fixedsys or Lucida Console.
Hex Offset Values:
----------------------------------------------------------------------------
The .esl files are located in etc.dat
Use "GCA Extract" tool to extract the .esl (enemy spawn list) files from etc.dat
Use "HxD" Hex editor to edit the .esl files
At the top of the editor, set the "bytes per row to 32"
(this puts each enemy on a single line)
Use the table below to either change or add enemies to each area
Enemies that are to be added should go at the BOTTOM of the .esl file
Adding enemies (moving any of the existing values down) will corrupt the
.esl file and potentially cause game crashes. Only ADD enemies to the end
of the file.
----------------------------------------------------------------------------
Hex Offset Values:
00 ------ Spawn Mode "00" / "01" - Event-Triggered or Instantaneous respectively.
When adding enemies, always use "01"
01 ------ Enemy ID
02 ------ Enemy Style (Clothing for the most-part)
03 ------ Distance player is from enemy before it reacts (Chasing)
-------
04 |
}--- Weapon ID
05 |
-------
--------
06 |
|
07 |
}--- Enemy HP
08 | 06,07 = HP Value
| 08,09 = Multiplier
09 |
-------- Use Windows calc in Programmer/Hex mode
to calculate (06,07 x 08,09 = HP)
0A ----- Always "00"
0B ----- Enemy Face Direction on Spawn
--------
0C [X] |
|
0D [X] |
|
0E [Y] |
|
0F [Y] |
|---Enemy Spawn Position & Direction
10 [Z] |
|
11 [Z] |
|
12 <---+---.
| }-- Always "00"
13 <---+---'
|
14 [R] |
|
15 [R] |
--------
------------------------------------------------------------------------------------------
| Positional Bytes Read Backwards, same as "spawn in" |
| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
| |
| HEX OC OD OC OD |
| ---------|---|------------------|---|--------------------------------------------------|
| Bytes [A9 DE] [45 DE] |
| VALUE 169 222=(222,169) -> 069 222=(222,069) : "-100" (move back apx. 1&1/2 steps) |
| |
| Use windows calculator in "programmer" mode to figure each byte 1 at a time: |
| |
| -in Windows calculator: Menu "View" > "Programmer" |
| -Set calculator to "hex"/"byte" |
| -enter the hex value, i.e. "0C" above |
| -Switch "hex" to "dec" and the value changes to actual number |
| |
| -Do this in reverse to change numbers to hex values |
------------------------------------------------------------------------------------------
--------
16 |
}--- Always "00"
17 |
--------
--------
18 |
}--- "Spawn in"
19 | reversed, i.e. 00 04 = r400
--------
1A ----- Possibly reference to event that triggers spawning
Just use "00" when adding new enemies.