18,700
edits
m (→Dialog from level0_Tools: localized images) |
(copy-edit, corrections and a missing field added, though it's not clear to me if Oni uses it) |
||
Line 2: | Line 2: | ||
==File description== | ==File description== | ||
===Basic setup | ===Basic setup=== | ||
The character's appearance, weapon, position, and misc. spawn flags. | |||
[[Image:bin_r_ch.gif]] | |||
[[ | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x00 | char[4] |FF0000| 43 4A 42 4F | OBJC | | {{OBDtr| 0x00 | char[4] |FF0000| 43 4A 42 4F | OBJC | wrapper tag }} | ||
{{OBDtr| 0x04 | int32 |FFFF00| 2C 8B 00 00 | 35628 | size of the complete list from this position | {{OBDtr| 0x04 | int32 |FFFF00| 2C 8B 00 00 | 35628 | size of the complete list in bytes from this position }} | ||
{{OBDtr| 0x08 | int32 |00FF00| 27 00 00 00 | 39 | object list version }} | {{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 }} | {{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 | | {{OBDtr| 0x000 | char[4] |FFC8C8| 52 41 48 43 | CHAR | tag name }} | ||
{{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 | unknown }} | {{OBDtr| 0x008 | int32 |C8FFC8| 00 00 00 00 | 0 | unknown }} | ||
{{OBDtr| 0x00C | float |C8FFFF| A5 7D 9D 43 | 314.981597 | x | {{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 | {{OBDtr| 0x010 | float |C8FFFF| 00 00 D8 C1 | -27.000000 | y position (height) of the character }} | ||
{{OBDtr| 0x014 | float |C8FFFF| 98 09 1E 42 | 39.509368 | z | {{OBDtr| 0x014 | float |C8FFFF| 98 09 1E 42 | 39.509368 | z position of the character }} | ||
{{OBDtr| 0x018 | float |FFC8FF| 00 00 00 00 | 0.000000 | rotation on the x | {{OBDtr| 0x018 | float |FFC8FF| 00 00 00 00 | 0.000000 | rotation on the x axis in degrees }} | ||
{{OBDtr| 0x01C | float |FFC8FF| 00 00 87 43 | 270.000000 | rotation on the y | {{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 | {{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 following bits are used: | {{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 | ||
Line 39: | Line 39: | ||
:0x 00 '''10''' 00 00 - no auto-drop (doesn't drop "used" shield, "used" invisibility and LSI when killed) | :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| | {{OBDtr2|0x028 | char[64] |B0C3D4| konoko_generic | character class name (reference to [[OBD:ONCC|ONCCkonoko_generic]]) }} | ||
{{OBDtr2|0x068 | char[32] |E7CEA5| konoko | character name }} | {{OBDtr2|0x068 | char[32] |E7CEA5| konoko | character name }} | ||
{{OBDtr2|0x088 | char[64] |FFDDDD| w1_tap | weapon class name (reference to [[OBD:ONWC| | {{OBDtr2|0x088 | char[64] |FFDDDD| w1_tap | weapon class name (reference to [[OBD:ONWC|ONWCw1_tap]] of level 0) }} | ||
|} | |} | ||
===Script functions | ===Script functions=== | ||
These are the names of the functions in the level script to call when certain things happen to a character. | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr2|0x0C8 | char[32] |EBEBEB| unused | | {{OBDtr2|0x0C8 | char[32] |EBEBEB| unused | called when character is spawned }} | ||
{{OBDtr2|0x0E8 | char[32] |8C8CCC| you_lose | | {{OBDtr2|0x0E8 | char[32] |8C8CCC| you_lose | called when character dies (health reaches 0); can work multiple times }} | ||
{{OBDtr2|0x108 | char[32] |FF00C8| unused | | {{OBDtr2|0x108 | char[32] |FF00C8| unused | called when character notices an enemy; works only once }} | ||
{{OBDtr2|0x128 | char[32] |F0F096| unused | | {{OBDtr2|0x128 | char[32] |F0F096| unused | never used in the game data, but it should be called when character is alarmed }} | ||
{{OBDtr2|0x148 | char[32] |00C864| unused | | {{OBDtr2|0x148 | char[32] |00C864| unused | called when character is hurt for the first time; works only once }} | ||
{{OBDtr2|0x168 | char[32] |00C8FF| unused | | {{OBDtr2|0x168 | char[32] |00C8FF| unused | called when character is "defeated" (health reaches 1); works only once }} | ||
{{OBDtr2|0x188 | char[32] |C80040| unused | | {{OBDtr2|0x188 | char[32] |C80040| 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 }} | ||
{{OBDtr2|0x1A8 | char[32] | | {{OBDtr2|0x1A8 | char[32] |000000| unused | "nopath" function (meant to be called when a character has trouble pathfinding, but isn't) }} | ||
|} | |} | ||
===Less basic setup | ===Less basic setup=== | ||
Inventory, team, jobs, alert/pursuit behavior. | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x1C8 | int32 |C8C864| 00 00 00 00 | 0 | | {{OBDtr| 0x1C8 | int32 |C8C864| 00 00 00 00 | 0 | +/- delta to the class's base health (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 | ||
Line 73: | Line 73: | ||
: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| | {{OBDtr| 0x1D0 | int16 |FF80C0| 00 00 | 0 | patrol path ID (reference to the [[OBD:BINA/OBJC/PATR|BINACJBOPatrol_Path]] file) }} | ||
{{OBDtr| 0x1D2 | int16 |FF80C0| 00 00 | 0 | combat ID (reference to the [[OBD:BINA/OBJC/CMBT| | {{OBDtr| 0x1D2 | int16 |FF80C0| 00 00 | 0 | combat ID (reference to the [[OBD:BINA/OBJC/CMBT|BINACJBOCombat]] file) }} | ||
{{OBDtr| 0x1D4 | int16 |D0C0AF| 00 00 | 0 | melee ID (reference to the [[OBD:BINA/OBJC/MELE| | {{OBDtr| 0x1D4 | int16 |D0C0AF| 00 00 | 0 | melee ID (reference to the [[OBD:BINA/OBJC/MELE|BINACJBOMelee Profile]] file) }} | ||
{{OBDtr| 0x1D6 | int16 |D0C0AF| 00 00 | 0 | neutral ID (reference to the [[OBD:BINA/OBJC/NEUT| | {{OBDtr| 0x1D6 | int16 |D0C0AF| 00 00 | 0 | neutral ID (reference to the [[OBD:BINA/OBJC/NEUT|BINACJBONeutral]] file) }} | ||
{{OBDtr| 0x1D8 | int16 |EEDDFF| 01 00 | 1 | amount of ammo | {{OBDtr| 0x1D8 | int16 |EEDDFF| 01 00 | 1 | amount of ballistic ammo that can be used }} | ||
{{OBDtr| 0x1DA | int16 |EEDDFF| 00 00 | 0 | amount of ammo | {{OBDtr| 0x1DA | int16 |EEDDFF| 00 00 | 0 | amount of ballistic ammo that can be dropped }} | ||
{{OBDtr| 0x1DC | int16 |C5FF8A| 00 00 | 0 | amount of energy cells | {{OBDtr| 0x1DC | int16 |C5FF8A| 00 00 | 0 | amount of energy cells that can be used }} | ||
{{OBDtr| 0x1DE | int16 |C5FF8A| 00 00 | 0 | amount of energy cells | {{OBDtr| 0x1DE | int16 |C5FF8A| 00 00 | 0 | amount of energy cells that can be dropped }} | ||
{{OBDtr| 0x1E0 | int16 |C0C0C0| 00 00 | 0 | amount of hypos that can be used }} | {{OBDtr| 0x1E0 | int16 |C0C0C0| 00 00 | 0 | amount of hypos that can be used }} | ||
{{OBDtr| 0x1E2 | int16 |C0C0C0| 00 00 | 0 | amount of hypos that can be dropped }} | {{OBDtr| 0x1E2 | int16 |C0C0C0| 00 00 | 0 | amount of hypos that can be dropped }} | ||
{{OBDtr| 0x1E4 | int16 |FF0080| 00 00 | 0 | amount of force shields that can be used }} | {{OBDtr| 0x1E4 | int16 |FF0080| 00 00 | 0 | amount of force shields that can be used }} | ||
{{OBDtr| 0x1E6 | int16 |FF0080| 00 00 | 0 | amount of force shields that can be dropped }} | {{OBDtr| 0x1E6 | int16 |FF0080| 00 00 | 0 | amount of force shields that can be dropped }} | ||
{{OBDtr| 0x1E8 | int16 |FFFFA6| 00 00 | 0 | amount of phase | {{OBDtr| 0x1E8 | int16 |FFFFA6| 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" }} | ||
{{OBDtr| 0x1EA | int16 |FFFFA6| 00 00 | 0 | | {{OBDtr| 0x1EA | int16 |FFFFA6| 00 00 | 0 | will drop phase cloak (true if any value above zero) }} | ||
{{OBDtr| 0x1EC | int16 |71FFB8| 00 00 | 0 | | {{OBDtr| 0x1EC | int16 |71FFB8| 00 00 | 0 | unused }} | ||
{{OBDtr| 0x1EE | int16 |71FFB8| 00 00 | 0 | | {{OBDtr| 0x1EE | int16 |71FFB8| 00 00 | 0 | unused }} | ||
{{OBDtr| 0x1F0 | int32 |0000BF| 00 00 00 00 | 0 | team ID; the following teams are possible: | {{OBDtr| 0x1F0 | int32 |0000BF| 00 00 00 00 | 0 | team ID; the following teams are possible: | ||
Line 101: | Line 101: | ||
:7 - SyndicateAccessory | :7 - SyndicateAccessory | ||
}} | }} | ||
{{OBDtr| 0x1F4 | int32 |804040| 64 00 00 00 | 100 | ammo | {{OBDtr| 0x1F4 | int32 |804040| 64 00 00 00 | 100 | fullness of current ammo clip as a percentage }} | ||
{{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 | ||
Line 109: | Line 109: | ||
:4 - combat | :4 - combat | ||
}} | }} | ||
{{OBDtr| 0x1FC | int32 |808080| 00 00 00 00 | 0 | | {{OBDtr| 0x1FC | int32 |808080| 00 00 00 00 | 0 | minimum alert level }} | ||
{{OBDtr| 0x200 | int32 |FFAA82| 01 00 00 00 | 1 | alert level when starting a job }} | {{OBDtr| 0x200 | int32 |FFAA82| 01 00 00 00 | 1 | alert level when starting a job }} | ||
{{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 }} | ||
Line 117: | Line 117: | ||
{{OBDtr| 0x214 | int32 |4F7291| 04 00 00 00 | 4 | pursuit mode for strong awareness when alert level medium/high/combat }} | {{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 | pursuit mode for weak awareness when alert level medium/high/combat }} | {{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 | pursuit mode for lost contact (enemy was | {{OBDtr| 0x21C | int32 |FF5E5E| 00 00 00 00 | 0 | pursuit mode for lost contact (enemy was identified but then the enemy ran away) }} | ||
{{OBDtr| 0x220 | float |FF5E5E| 20 02 00 00 | ? | "facing; internal use only"; used? }} | |||
|} | |} | ||
;Alarm groups | ;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.) | |||
:(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: | ;Pursuit modes: | ||
See | See {{SectionLink|AI|Reactions and awareness}} and {{SectionLink|AI|Pursuit}} to learn about meaning of CHAR pursuit values. | ||
==Dialog from level0_Tools== | ==Dialog from level0_Tools== |