OBD:BINA/OBJC/CHAR: Difference between revisions
Jump to navigation
Jump to search
(copy-edit, corrections and a missing field added, though it's not clear to me if Oni uses it) |
m (added family to footer template call) |
||
Line 139: | Line 139: | ||
{{OBD OBJC Footer | type=CHAR | prev=WEAP | next=CMBT | name=Character}} | {{OBD OBJC Footer | type=CHAR | prev=WEAP | next=CMBT | name=Character | family=Level}} | ||
{{OBD}} | {{OBD}} |
Revision as of 21:13, 9 December 2023
|
File description
Basic setup
The character's appearance, weapon, position, and misc. spawn flags.
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x00 | char[4] | 43 4A 42 4F | OBJC | wrapper tag |
0x04 | int32 | 2C 8B 00 00 | 35628 | size of the complete list in bytes from this position |
0x08 | int32 | 27 00 00 00 | 39 | object list version |
0x0C | int32 | 20 02 00 00 | 544 | size of the following element in bytes |
First element (black outline) | ||||
0x000 | char[4] | 52 41 48 43 | CHAR | tag name |
0x004 | int32 | 87 19 00 00 | 6535 | old file ID |
0x008 | int32 | 00 00 00 00 | 0 | unknown |
0x00C | float | A5 7D 9D 43 | 314.981597 | x position of the character |
0x010 | float | 00 00 D8 C1 | -27.000000 | y position (height) of the character |
0x014 | float | 98 09 1E 42 | 39.509368 | z position of the character |
0x018 | float | 00 00 00 00 | 0.000000 | rotation on the x axis in degrees |
0x01C | float | 00 00 87 43 | 270.000000 | rotation on the y axis in degrees |
0x020 | float | 00 00 00 00 | 0.000000 | rotation on the z axis in degrees |
0x024 | bitset32 | 01 00 00 00 | 1, 0, 0, 0 | character options; the following bits are used:
|
0x028 | char[64] | konoko_generic | character class name (reference to ONCCkonoko_generic) | |
0x068 | char[32] | konoko | character name | |
0x088 | char[64] | w1_tap | weapon class name (reference to ONWCw1_tap of level 0) |
Script functions
These are the names of the functions in the level script to call when certain things happen to a character.
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x0C8 | char[32] | unused | called when character is spawned | |
0x0E8 | char[32] | you_lose | called when character dies (health reaches 0); can work multiple times | |
0x108 | char[32] | unused | called when character notices an enemy; works only once | |
0x128 | char[32] | unused | never used in the game data, but it should be called when character is alarmed | |
0x148 | char[32] | unused | called when character is hurt for the first time; works only once | |
0x168 | char[32] | unused | called when character is "defeated" (health reaches 1); works only once | |
0x188 | char[32] | unused | called when character runs out of ammo by reloading a weapon with the last available clip); works only once, and the character must have the ammo at spawn time | |
0x1A8 | char[32] | unused | "nopath" function (meant to be called when a character has trouble pathfinding, but isn't) |
Less basic setup
Inventory, team, jobs, alert/pursuit behavior.
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x1C8 | int32 | 00 00 00 00 | 0 | +/- delta to the class's base health (stored in the ONCC file of the character) |
0x1CC | int32 | 00 00 00 00 | 0 | job ID; the following jobs are possible:
|
0x1D0 | int16 | 00 00 | 0 | patrol path ID (reference to the BINACJBOPatrol_Path file) |
0x1D2 | int16 | 00 00 | 0 | combat ID (reference to the BINACJBOCombat file) |
0x1D4 | int16 | 00 00 | 0 | melee ID (reference to the BINACJBOMelee Profile file) |
0x1D6 | int16 | 00 00 | 0 | neutral ID (reference to the BINACJBONeutral file) |
0x1D8 | int16 | 01 00 | 1 | amount of ballistic ammo that can be used |
0x1DA | int16 | 00 00 | 0 | amount of ballistic ammo that can be dropped |
0x1DC | int16 | 00 00 | 0 | amount of energy cells that can be used |
0x1DE | int16 | 00 00 | 0 | amount of energy cells that can be dropped |
0x1E0 | int16 | 00 00 | 0 | amount of hypos that can be used |
0x1E2 | int16 | 00 00 | 0 | amount of hypos that can be dropped |
0x1E4 | int16 | 00 00 | 0 | amount of force shields that can be used |
0x1E6 | int16 | 00 00 | 0 | amount of force shields that can be dropped |
0x1E8 | int16 | 00 00 | 0 | amount of phase cloak remaining; this number is in ticks (1/60 second) except if it's 1, in which case it's interpreted to mean "a full phase cloak" |
0x1EA | int16 | 00 00 | 0 | will drop phase cloak (true if any value above zero) |
0x1EC | int16 | 00 00 | 0 | unused |
0x1EE | int16 | 00 00 | 0 | unused |
0x1F0 | int32 | 00 00 00 00 | 0 | team ID; the following teams are possible:
|
0x1F4 | int32 | 64 00 00 00 | 100 | fullness of current ammo clip as a percentage |
0x1F8 | int32 | 00 00 00 00 | 0 | initial alert level; the following alert levels are possible:
|
0x1FC | int32 | 00 00 00 00 | 0 | minimum alert level |
0x200 | int32 | 01 00 00 00 | 1 | alert level when starting a job |
0x204 | int32 | 02 00 00 00 | 2 | alert level when investigating |
0x208 | bitset32 | 00 00 00 00 | 0, 0, 0, 0 | alarm groups, see below this table |
0x20C | int32 | 04 00 00 00 | 4 | pursuit mode for strong awareness when alert level lull/low |
0x210 | int32 | 01 00 00 00 | 1 | pursuit mode for weak awareness when alert level lull/low |
0x214 | int32 | 04 00 00 00 | 4 | pursuit mode for strong awareness when alert level medium/high/combat |
0x218 | int32 | 04 00 00 00 | 4 | pursuit mode for weak awareness when alert level medium/high/combat |
0x21C | int32 | 00 00 00 00 | 0 | pursuit mode for lost contact (enemy was identified but then the enemy ran away) |
0x220 | float | 20 02 00 00 | ? | "facing; internal use only"; used? |
- Alarm groups
Stored as a bitset. If bit 2^N is ON, the character will be alarmed by script command ai2_tripalarm(N) or alarm console command 0060 NN00 where NN is the hex for N.
- (Since the size of the alarm group field is 4 bytes, there's a maximum of 32 alarm groups, i.e. N ranges from 0 to 31.)
- Pursuit modes
See AI § Reactions and awareness and AI § Pursuit to learn about meaning of CHAR pursuit values.
Dialog from level0_Tools
Also available is the following dialog, which is redundant of CMBT and apparently predates both CHAR and AISA:
ONI BINARY DATA |
---|
AKVA << Other file types >> CBPI |
BINA : Binary data |
TMBD << Other BINA >> ONIE |
OBJC : Objects |
WEAP << Other OBJC >> CMBT |
CHAR : Character |
Level file |