OBD:BINA/OBJC/CHAR: Difference between revisions
Jump to navigation
Jump to search
m (→Less basic setup - Inventory, team, jobs, alert/pursuit: fixed a mistake) |
m (fixed Stuff link) |
||
(19 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{OBD OBJC Header | align=center | type=CHAR | prev=WEAP | next=CMBT | name=Character}} | {{OBD OBJC Header | align=center | type=CHAR | prev=WEAP | next=CMBT | name=Character |stuff=b_ch}} | ||
==File description== | |||
==Basic setup - | ===Basic setup - Appearance, weapon, position, misc spawn flags=== | ||
Line 10: | Line 10: | ||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x00 | char[4] |FF0000| 43 4A 42 4F | OBJC | objects }} | |||
{{OBDtr| 0x04 | int32 |FFFF00| 2C 8B 00 00 | 35628 | size of the complete list from this position in bytes }} | |||
{{OBDtr| 0x08 | int32 |00FF00| 27 00 00 00 | 39 | object list version }} | |||
{{OBDtr| 0x0C | int32 |00FFFF| 20 02 00 00 | 544 | size of the following element in bytes }} | |||
{{OBDtrBK}} | {{OBDtrBK}} | ||
{{OBDtr| 0x000 | char[4] |FFC8C8| 52 41 48 43 | CHAR | character }} | {{OBDtr| 0x000 | char[4] |FFC8C8| 52 41 48 43 | CHAR | character }} | ||
{{OBDtr| 0x004 | int32 |FFFFC8| 87 19 00 00 | 6535 | old file ID }} | {{OBDtr| 0x004 | int32 |FFFFC8| 87 19 00 00 | 6535 | old file ID }} | ||
{{OBDtr| 0x008 | int32 |C8FFC8| 00 00 00 00 | 0 | | {{OBDtr| 0x008 | int32 |C8FFC8| 00 00 00 00 | 0 | unknown }} | ||
{{OBDtr| 0x00C | float |C8FFFF| A5 7D 9D 43 | 314.981597 | x-position of the character }} | {{OBDtr| 0x00C | float |C8FFFF| A5 7D 9D 43 | 314.981597 | x-position of the character }} | ||
{{OBDtr| 0x010 | float |C8FFFF| 00 00 D8 C1 | -27.000000 | y-position (height) of the character }} | {{OBDtr| 0x010 | float |C8FFFF| 00 00 D8 C1 | -27.000000 | y-position (height) of the character }} | ||
Line 20: | Line 24: | ||
{{OBDtr| 0x01C | float |FFC8FF| 00 00 87 43 | 270.000000 | rotation on the y-axis in degrees }} | {{OBDtr| 0x01C | float |FFC8FF| 00 00 87 43 | 270.000000 | rotation on the y-axis in degrees }} | ||
{{OBDtr| 0x020 | float |FFC8FF| 00 00 00 00 | 0.000000 | rotation on the z-axis in degrees }} | {{OBDtr| 0x020 | float |FFC8FF| 00 00 00 00 | 0.000000 | rotation on the z-axis in degrees }} | ||
{{OBDtr| 0x024 | bitset32 |FFC800| 01 00 00 00 | 1, 0, 0, 0 | character options; the | {{OBDtr| 0x024 | bitset32 |FFC800| 01 00 00 00 | 1, 0, 0, 0 | character options; the following bits are used: | ||
:0x '''01''' 00 00 00 - player character | :0x '''01''' 00 00 00 - player character | ||
:0x '''02''' 00 00 00 - random skin | :0x '''02''' 00 00 00 - random skin | ||
:0x '''04''' 00 00 00 - not | :0x '''04''' 00 00 00 - not pre-spawned | ||
:0x '''08''' 00 00 00 - non-combatant | :0x '''08''' 00 00 00 - non-combatant | ||
:0x '''10''' 00 00 00 - multi-spawnable | :0x '''10''' 00 00 00 - multi-spawnable | ||
Line 31: | Line 33: | ||
:0x '''40''' 00 00 00 - unkillable | :0x '''40''' 00 00 00 - unkillable | ||
:0x '''80''' 00 00 00 - superammo | :0x '''80''' 00 00 00 - superammo | ||
:0x 00 '''01''' 00 00 - | :0x 00 '''01''' 00 00 - omniscient | ||
:0x 00 '''02''' 00 00 - has LSI | :0x 00 '''02''' 00 00 - has [[LSI]] | ||
:0x 00 '''04''' 00 00 - | :0x 00 '''04''' 00 00 - boss | ||
:0x 00 '''08''' 00 00 - upgrade difficulty (spawns a stronger enemy if you play on medium or hard) | :0x 00 '''08''' 00 00 - upgrade difficulty (spawns a stronger enemy if you play on medium or hard) | ||
:0x 00 '''10''' 00 00 - | :0x 00 '''10''' 00 00 - no auto-drop (doesn't drop "used" shield, "used" invisibility and LSI when killed) | ||
}} | }} | ||
{{OBDtr2|0x028 | char[64] |B0C3D4| konoko_generic | character class name (reference to [[OBD:ONCC|00991-konoko_generic.ONCC]]) }} | {{OBDtr2|0x028 | char[64] |B0C3D4| konoko_generic | character class name (reference to [[OBD:ONCC|00991-konoko_generic.ONCC]]) }} | ||
{{OBDtr2|0x068 | char[32] |E7CEA5| konoko | character name }} | {{OBDtr2|0x068 | char[32] |E7CEA5| konoko | character name }} | ||
{{OBDtr2|0x088 | char[ | {{OBDtr2|0x088 | char[64] |FFDDDD| w1_tap | weapon class name (reference to [[OBD:ONWC|03701-w1_tap.ONWC]] of level 0) }} | ||
|} | |} | ||
===Script functions - Called by engine when certain things happen to a character=== | |||
==Script functions - Called by engine when certain things happen to a character== | |||
Line 62: | Line 60: | ||
==Less basic setup - Inventory, team, jobs, alert/pursuit== | ===Less basic setup - Inventory, team, jobs, alert/pursuit=== | ||
Line 69: | Line 67: | ||
{{OBDtr| 0x1C8 | int32 |C8C864| 00 00 00 00 | 0 | additional health (the basic health is stored in the [[OBD:ONCC|ONCC]] file of the character) }} | {{OBDtr| 0x1C8 | int32 |C8C864| 00 00 00 00 | 0 | additional health (the basic health is stored in the [[OBD:ONCC|ONCC]] file of the character) }} | ||
{{OBDtr| 0x1CC | int32 |0096C8| 00 00 00 00 | 0 | job ID; the following jobs are possible: | {{OBDtr| 0x1CC | int32 |0096C8| 00 00 00 00 | 0 | job ID; the following jobs are possible: | ||
:0 - none | :0 - none | ||
:1 - idle | :1 - idle | ||
Line 76: | Line 72: | ||
:3 - patrol | :3 - patrol | ||
:4 - teambattle (never used in Oni) | :4 - teambattle (never used in Oni) | ||
}} | }} | ||
{{OBDtr| 0x1D0 | int16 |FF80C0| 00 00 | 0 | patrol path ID (reference to the [[OBD:BINA/OBJC/PATR|Patrol_Path.BINA]] file) }} | {{OBDtr| 0x1D0 | int16 |FF80C0| 00 00 | 0 | patrol path ID (reference to the [[OBD:BINA/OBJC/PATR|Patrol_Path.BINA]] file) }} | ||
Line 93: | Line 87: | ||
{{OBDtr| 0x1E8 | int16 |FFFFA6| 00 00 | 0 | amount of phase cloaking that can be used (60 <nowiki>=</nowiki> 1 second) }} | {{OBDtr| 0x1E8 | int16 |FFFFA6| 00 00 | 0 | amount of phase cloaking that can be used (60 <nowiki>=</nowiki> 1 second) }} | ||
{{OBDtr| 0x1EA | int16 |FFFFA6| 00 00 | 0 | amount of phase cloaking that can be dropped }} | {{OBDtr| 0x1EA | int16 |FFFFA6| 00 00 | 0 | amount of phase cloaking that can be dropped }} | ||
{{OBDtr| 0x1EC | int16 |71FFB8| 00 00 | 0 | used "nci" (feature not used in Oni) }} | |||
{{OBDtr| 0x1EE | int16 |71FFB8| 00 00 | 0 | dropped "nci" (feature not used Oni) }} | |||
{{OBDtr| 0x1F0 | int32 |0000BF| 00 00 00 00 | 0 | team ID; the following teams are possible: | |||
:0 - Konoko | :0 - Konoko | ||
:1 - TCTF | :1 - TCTF | ||
Line 105: | Line 100: | ||
:6 - Switzerland | :6 - Switzerland | ||
:7 - SyndicateAccessory | :7 - SyndicateAccessory | ||
}} | }} | ||
{{OBDtr| 0x1F4 | int32 |804040| 64 00 00 00 | 100 | ammo filling in percent }} | {{OBDtr| 0x1F4 | int32 |804040| 64 00 00 00 | 100 | ammo filling in percent }} | ||
{{OBDtr| 0x1F8 | int32 |FF22FF| 00 00 00 00 | 0 | initial alert level; the following alert levels are possible: | {{OBDtr| 0x1F8 | int32 |FF22FF| 00 00 00 00 | 0 | initial alert level; the following alert levels are possible: | ||
:0 - lull | :0 - lull | ||
:1 - low | :1 - low | ||
Line 117: | Line 108: | ||
:3 - high | :3 - high | ||
:4 - combat | :4 - combat | ||
}} | }} | ||
{{OBDtr| 0x1FC | int32 |808080| 00 00 00 00 | 0 | minimal alert level }} | {{OBDtr| 0x1FC | int32 |808080| 00 00 00 00 | 0 | minimal alert level }} | ||
Line 124: | Line 113: | ||
{{OBDtr| 0x204 | int32 |00D900| 02 00 00 00 | 2 | alert level when investigating }} | {{OBDtr| 0x204 | int32 |00D900| 02 00 00 00 | 2 | alert level when investigating }} | ||
{{OBDtr| 0x208 | bitset32 |CACAFF| 00 00 00 00 | 0, 0, 0, 0 | alarm groups, see below this table }} | {{OBDtr| 0x208 | bitset32 |CACAFF| 00 00 00 00 | 0, 0, 0, 0 | alarm groups, see below this table }} | ||
{{OBDtr| 0x20C | int32 |F0F000| 04 00 00 00 | 4 | | {{OBDtr| 0x20C | int32 |F0F000| 04 00 00 00 | 4 | pursuit mode for strong awareness when alert level lull/low }} | ||
{{OBDtr| 0x210 | int32 |E7FFCE| 01 00 00 00 | 1 | | {{OBDtr| 0x210 | int32 |E7FFCE| 01 00 00 00 | 1 | pursuit mode for weak awareness when alert level lull/low }} | ||
{{OBDtr| 0x214 | int32 |4F7291| 04 00 00 00 | 4 | | {{OBDtr| 0x214 | int32 |4F7291| 04 00 00 00 | 4 | pursuit mode for strong awareness when alert level medium/high/combat }} | ||
{{OBDtr| 0x218 | int32 |FFD6C1| 04 00 00 00 | 4 | | {{OBDtr| 0x218 | int32 |FFD6C1| 04 00 00 00 | 4 | pursuit mode for weak awareness when alert level medium/high/combat }} | ||
{{OBDtr| 0x21C | int32 |FF5E5E| 00 00 00 00 | 0 | | {{OBDtr| 0x21C | int32 |FF5E5E| 00 00 00 00 | 0 | pursuit mode for lost contact (enemy was indentified, but then the enemy ran away) }} | ||
|} | |} | ||
Line 137: | Line 126: | ||
:(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) | :(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|Reactions]] and [[AI#Pursuit|Pursuit of enemy]] to learn about meaning of CHAR pursuit values. | |||
==Dialog from level0_Tools== | |||
<!--http://geyser.oni2.net/OBD/dialogs/dialog_character2_properties.png--> | |||
http://ssg.oni2.net/subfold/bluebox/images/215_character_properties2.png | |||
http://ssg.oni2.net/subfold/bluebox/images/ | |||
Also available is the following dialog, which is redundant of [[CMBT]] and apparently predates both CHAR and [[AISA]]: | |||
<!--http://geyser.oni2.net/OBD/dialogs/dialog_character_properties.png--> | |||
http://ssg.oni2.net/subfold/bluebox/images/211_character_properties.png | |||
{{OBD OBJC Footer | type=CHAR | prev=WEAP | next=CMBT | name=Character}} | {{OBD OBJC Footer | type=CHAR | prev=WEAP | next=CMBT | name=Character}} | ||
{{OBD}} |
Revision as of 19:20, 28 August 2020
|
File description
Basic setup - Appearance, weapon, position, misc spawn flags
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x00 | char[4] | 43 4A 42 4F | OBJC | objects |
0x04 | int32 | 2C 8B 00 00 | 35628 | size of the complete list from this position in bytes |
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 | character |
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 00991-konoko_generic.ONCC) | |
0x068 | char[32] | konoko | character name | |
0x088 | char[64] | w1_tap | weapon class name (reference to 03701-w1_tap.ONWC of level 0) |
Script functions - Called by engine when certain things happen to a character
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x0C8 | char[32] | unused | script function called when character is spawned | |
0x0E8 | char[32] | you_lose | script function called when character dies (health reaches 0); can work multiple times | |
0x108 | char[32] | unused | script function called when character notices an enemy; works only once | |
0x128 | char[32] | unused | alarm function; never used in Oni, it is called when character is alarmed | |
0x148 | char[32] | unused | script function called when character is hurt for the first time; works only once | |
0x168 | char[32] | unused | script function called when character is "defeated" (health reaches 1); works only once | |
0x188 | char[32] | unused | script function called when character runs out of ammo (reloads a weapon with the last clip/cell); works only once, and the character must have the ammo at spawn-time | |
0x1A8 | char[32] | unused | nopath function, some exotic script function call ("should" be called when a character has trouble pathfinding, but isn't) |
Less basic setup - Inventory, team, jobs, alert/pursuit
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x1C8 | int32 | 00 00 00 00 | 0 | additional health (the basic health is 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 Patrol_Path.BINA file) |
0x1D2 | int16 | 00 00 | 0 | combat ID (reference to the Combat.BINA file) |
0x1D4 | int16 | 00 00 | 0 | melee ID (reference to the Melee Profile.BINA file) |
0x1D6 | int16 | 00 00 | 0 | neutral ID (reference to the Neutral.BINA file) |
0x1D8 | int16 | 01 00 | 1 | amount of ammo (red clips) that can be used |
0x1DA | int16 | 00 00 | 0 | amount of ammo (red clips) that can be dropped |
0x1DC | int16 | 00 00 | 0 | amount of energy cells (green clips) that can be used |
0x1DE | int16 | 00 00 | 0 | amount of energy cells (green clips) 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 cloaking that can be used (60 = 1 second) |
0x1EA | int16 | 00 00 | 0 | amount of phase cloaking that can be dropped |
0x1EC | int16 | 00 00 | 0 | used "nci" (feature not used in Oni) |
0x1EE | int16 | 00 00 | 0 | dropped "nci" (feature not used Oni) |
0x1F0 | int32 | 00 00 00 00 | 0 | team ID; the following teams are possible:
|
0x1F4 | int32 | 64 00 00 00 | 100 | ammo filling in percent |
0x1F8 | int32 | 00 00 00 00 | 0 | initial alert level; the following alert levels are possible:
|
0x1FC | int32 | 00 00 00 00 | 0 | minimal 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 indentified, but then the enemy ran away) |
- 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 Reactions and Pursuit of enemy 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 |
[[OBD:File types/{{{family}}}|{{{family}}} file]] |