OBD:BINA/OBJC/CHAR: Difference between revisions

m
→‎Script functions: bg color was too dark to read the text
m (→‎Script functions: bg color was too dark to read the text)
 
(36 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{OBD OBJC Header|align=center|type=CHAR|prev=WEAP|next=CMBT|name=Character|onistuff=b_ch}}
{{OBD OBJC Header | align=center | type=CHAR | prev=WEAP | next=CMBT | name=Character |stuff=b_ch}}


==File description==
===Basic setup===
The character's appearance, weapon, position, and misc. spawn flags.


----
[[Image:bin_r_ch.gif]]
----
==Screenshot==
http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/bin_r_ch.gif




==Basic setup==
{{Table}}
;APPEARANCE, WEAPON, POSITION, MISC SPAWN FLAGS
{{OBDth}}
{|{{OBDtable}}
{{OBDtr| 0x00 | char[4]  |FF0000| 43 4A 42 4F | OBJC      | wrapper tag }}
|align=center|
{{OBDtr| 0x04 | int32    |FFFF00| 2C 8B 00 00 | 35628      | size of the complete list in bytes from this position }}
{|{{OBDtable}}
{{OBDtr| 0x08 | int32    |00FF00| 27 00 00 00 | 39        | object list version }}
|- bgcolor="#FFDDBB" align="CENTER"
{{OBDtr| 0x0C | int32    |00FFFF| 20 02 00 00 | 544        | size of the following element in bytes }}
| width="15%" | '''Raw hex'''
{{OBDtrBK}}
| width="15%" | '''Value'''
{{OBDtr| 0x000 | char[4]  |FFC8C8| 52 41 48 43 | CHAR       | tag name }}
| width="70%" | '''Meaning'''
{{OBDtr| 0x004 | int32    |FFFFC8| 87 19 00 00 | 6535       | old file ID }}
|-
{{OBDtr| 0x008 | int32    |C8FFC8| 00 00 00 00 | 0         | unknown }}
| bgcolor="#FFC8C8" | 52 41 48 43
{{OBDtr| 0x00C | float    |C8FFFF| A5 7D 9D 43 | 314.981597 | x position of the character }}
| CHAR
{{OBDtr| 0x010 | float    |C8FFFF| 00 00 D8 C1 | -27.000000 | y position (height) of the character }}
| align="LEFT" | character
{{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 axis in degrees }}
| bgcolor="#FFFFC8" | 87 19 00 00
{{OBDtr| 0x01C | float    |FFC8FF| 00 00 87 43 | 270.000000 | rotation on the y axis in degrees }}
| 6535
{{OBDtr| 0x020 | float    |FFC8FF| 00 00 00 00 | 0.000000   | rotation on the z axis in degrees }}
| align="LEFT" | old file ID
{{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
| bgcolor="#C8FFC8" | 00 00 00 00
:0x '''02''' 00 00 00 - random skin
| 0
:0x '''04''' 00 00 00 - not pre-spawned
| align="LEFT" | unknown
:0x '''08''' 00 00 00 - non-combatant
|-
:0x '''10''' 00 00 00 - multi-spawnable
| bgcolor="#C8FFFF" |
:0x '''20''' 00 00 00 - unknown
A5 7D 9D 43
:0x '''40''' 00 00 00 - unkillable
| 314.981597
:0x '''80''' 00 00 00 - superammo
| align="LEFT" | x-position of the character
:0x 00 '''01''' 00 00 - omniscient
|-
:0x 00 '''02''' 00 00 - has [[LSI]]
| bgcolor="#C8FFFF" | 00 00 D8 C1
:0x 00 '''04''' 00 00 - boss
| -27.000000
:0x 00 '''08''' 00 00 - upgrade difficulty (spawns a stronger enemy if you play on medium or hard)
| align="LEFT" | y-position (height) of the character
:0x 00 '''10''' 00 00 - no auto-drop (doesn't drop "used" shield, "used" invisibility and LSI when killed)
|-
}}
| bgcolor="#C8FFFF" | 98 09 1E 42
{{OBDtr2|0x028 | char[64] |B0C3D4| konoko_generic           | character class name (reference to [[OBD:ONCC|ONCCkonoko_generic]]) }}
| 39.509368
{{OBDtr2|0x068 | char[32] |E7CEA5| konoko                   | character name }}
| align="LEFT" | z-position of the character
{{OBDtr2|0x088 | char[64] |FFDDDD| w1_tap                   | weapon class name (reference to [[OBD:ONWC|ONWCw1_tap]] of level 0) }}
|-
| bgcolor="#FFC8FF" | 00 00 00 00
| 0.000000
| align="LEFT" | rotation on the x-axis in degrees
|-
| bgcolor="#FFC8FF" | 00 00 87 43
| 270.000000
| align="LEFT" | rotation on the y-axis in degrees
|-
| bgcolor="#FFC8FF" | 00 00 00 00
| 0.000000
| align="LEFT" | rotation on the z-axis in degrees
|-
| bgcolor="#FFC800" | 01
| 1
| align="LEFT" |option bitset 1 (see below)
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#C800C8" | 00
| 0
| align="LEFT" |option bitset 2 (see below)
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#C87C64" | 00 00
| 0
| align="LEFT" | unknown; always zero
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| colspan="2" bgcolor="#B0C3D4" | <tt>konoko_generic</tt>
| align="LEFT" |link by name to character class (local, konoko_generic.[[OBD:ONCC|ONCC]])
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| colspan="2" bgcolor="#E7CEA5" | <tt>konoko</tt>
| align="LEFT" | name of the character
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| colspan="2" bgcolor="#FFDDDD" | <tt>w1_tap</tt>
| align="LEFT" |link by name to weapon class (global, w1_tap.[[OBD:ONWC|ONWC]])
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| colspan="2" bgcolor="#64AAAA" | not used
| align="LEFT" | unknown; never used in Oni (maybe second weapon)
|}
|}
|}
;Option bitset 1
:1 - player character
:2 - random skin
:4 - not prespawned
:8 - non-combatant
:16 - multi-spawnable
:32 - unknown
:64 - unkillable
:128 - superammo
;Option bitset 2
option 2; it's a bitset; the following options are possible (values in dec):
:1 - boss (whatever that means)
:2 - has LSI
:4 - no auto-drop (whatever that means)
:8 - upgrade difficulty (spawns a stronger enemy if you play on medium or hard)
:16 - omniscient (whatever that means)
:32 - unknown, never used
:64 - unknown, never used
:128 - unknown, never used


===Script functions===
These are the names of the functions in the level script to call when certain things happen to a character.


----
{{Table}}
----
{{OBDth}}
==Script functions==
{{OBDtr2|0x0C8 | char[32] |EBEBEB| unused                  | called when character is spawned }}
;ARE CALLED BY THE SCRIPT ENGINE WHEN CERTAN THINGS HAPPEN TO A CHARACTER
{{OBDtr2|0x0E8 | char[32] |8C8CCC| you_lose                 | called when character dies (health reaches 0); can work multiple times }}
{|{{OBDtable}}
{{OBDtr2|0x108 | char[32] |FF00C8| unused                  | called when character notices an enemy; works only once }}
|align=center|
{{OBDtr2|0x128 | char[32] |F0F096| unused                  | never used in the game data, but it should be called when character is alarmed }}
{|{{OBDtable}}
{{OBDtr2|0x148 | char[32] |00C864| unused                  | called when character is hurt for the first time; works only once }}
|- bgcolor="#FFDDBB" align="CENTER"
{{OBDtr2|0x168 | char[32] |00C8FF| unused                  | called when character is "defeated" (health reaches 1); works only once }}
| width="15%" | '''Raw hex'''
{{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 }}
| width="15%" | '''Value'''
{{OBDtr2|0x1A8 | char[32] |989898| unused                  | "nopath" function (meant to be called when a character has trouble pathfinding, but isn't) }}
| width="70%" | '''Meaning'''
|-
| colspan="2" bgcolor="#EBEBEB" | not used
| align="LEFT" | script function called when character is spawned
|-
| colspan="2" bgcolor="#8C8CCC" | <tt>you_lose</tt>
| align="LEFT" | script function called when character dies (health reaches 0); can work multiple times
|-
| colspan="2" bgcolor="#FF00C8" | not used
| align="LEFT" | script function called when character notices an enemy; works only once
|-
| colspan="2" bgcolor="#F0F096" | not used
| align="LEFT" | alarm function; never used in Oni, "should" be called when this character is alarmed. Dunno if this one isn't working or alarm calling isn't working...
|-
| colspan="2" bgcolor="#00C864" | not used
| align="LEFT" | script function called when character is hurt for the first time; works only once
|-
| colspan="2" bgcolor="#00C8FF" | not used
| align="LEFT" | script function called when character is "defeated" (health reaches 1); works only once
|-
| colspan="2" bgcolor="#C80040" | not used
| align="LEFT" | 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
|-
| colspan="2" bgcolor="#FFCD96" | not used
| align="LEFT" | 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 behavior.


----
{{Table}}
----
{{OBDth}}
 
{{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) }}
==Less basic setup==
{{OBDtr| 0x1CC | int32    |0096C8| 00 00 00 00 | 0         | job ID; the following jobs are possible:
;INVENTORY, TEAM, JOBS, ALERT/PURSUIT
{|{{OBDtable}}
|align=center|
{|{{OBDtable}}
|- bgcolor="#FFDDBB" align="CENTER"
| width="15%" | '''Raw hex'''
| width="15%" | '''Value'''
| width="70%" | '''Meaning'''
|-
| bgcolor="#C8C864" | 00 00 00 00
| 0
| align="LEFT" |
additional health (the basic health you'll find in the [[OBD:ONCC|ONCC]] file of the character)
|-
| bgcolor="#0096C8" | 00 00 00 00
| 0
| align="LEFT" |job ID (see below)
|-
| bgcolor="#FF80C0" | 00 00
| 0
| align="LEFT" | patrol path ID (looked up in local [[OBD:BINA/OBJC/PATR|CJBO'''Patrol_Path'''.BINA]])
|-
| bgcolor="#FF80C0" | 00 00
| 0
| align="LEFT" | combat ID (looked up in global [[OBD:BINA/OBJC/CMBT|CJBO'''Combat'''.BINA]])
|-
| bgcolor="#D0C0AF" | 00 00
| 0
| align="LEFT" | melee ID (looked up in global [[OBD:BINA/OBJC/MELE|CJBO'''Melee Profile'''.BINA]])
|-
| bgcolor="#D0C0AF" | 00 00
| 0
| align="LEFT" | neutral ID (looked up in local [[OBD:BINA/OBJC/NEUT|CJBO'''Neutral'''.BINA]])
|-
| bgcolor="#EEDDFF" | 01 00
| 1
| align="LEFT" | amount of ammo (red clips) that can be used
|-
| bgcolor="#EEDDFF" | 00 00
| 0
| align="LEFT" | amount of ammo (red clips) that can be dropped
|-
| bgcolor="#C5FF8A" | 00 00
| 0
| align="LEFT" | amount of energy cells (green clips) that can be used
|-
| bgcolor="#C5FF8A" | 00 00
| 0
| align="LEFT" | amount of energy cells (green clips) that can be dropped
|-
| bgcolor="#C0C0C0" | 00 00
| 0
| align="LEFT" | amount of hypos that can be used
|-
| bgcolor="#C0C0C0" | 00 00
| 0
| align="LEFT" | amount of hypos that can be dropped
|-
| bgcolor="#FF0080" | 00 00
| 0
| align="LEFT" | amount of force shields that can be used
|-
| bgcolor="#FF0080" | 00 00
| 0
| align="LEFT" | amount of force shields that can be dropped
|-
| bgcolor="#FFFFA6" | 00 00
| 0
| align="LEFT" | amount of phase cloaking that can be used (60 = 1 second)
|-
| bgcolor="#FFFFA6" | 00 00
| 0
| align="LEFT" | amount of phase cloaking that can be dropped
|-
| bgcolor="#71FFB8" | 00 00 00 00
| 0
| align="LEFT" | unknown; always zero
|-
| bgcolor="#0000BF" | 00 00 00 00
| 0
| align="LEFT" |team ID (see below)
|-
| bgcolor="#804040" | 64 00 00 00
| 100
| align="LEFT" | ammo filling in percent
|-
| bgcolor="#FF22FF" | 00 00 00 00
| 0
| align="LEFT" |initial alert level (see below)
|-
| bgcolor="#808080" | 00 00 00 00
| 0
| align="LEFT" | minimal alert level
|-
| bgcolor="#FFAA82" | 01 00 00 00
| 1
| align="LEFT" | alert level when starting a job
|-
| bgcolor="#00D900" | 02 00 00 00
| 2
| align="LEFT" | alert level when investigating
|-
| bgcolor="#CACAFF" | 00
| 0
| align="LEFT" | unknown
|-
| bgcolor="#CACAFF" | 00
| 0
| align="LEFT" | unknown
|-
| bgcolor="#CACAFF" | 00
| 0
| align="LEFT" | unknown
|-
| bgcolor="#CACAFF" | 00
| 0
| align="LEFT" | unknown
|-
| bgcolor="#F0F000" | 04 00 00 00
| 4
| align="LEFT" | unknown (pm_pursue_strong?)
|-
| bgcolor="#E7FFCE" | 01 00 00 00
| 1
| align="LEFT" | unknown (pm_pursue_weak?)
|-
| bgcolor="#4F7291" | 04 00 00 00
| 4
| align="LEFT" | unknown (pm_pursue_strong_seen?)
|-
| bgcolor="#FFD6C1" | 04 00 00 00
| 4
| align="LEFT" | unknown (pm_pursue_weak_seen?)
|-
| bgcolor="#FF5E5E" | 00 00 00 00
| 0
| align="LEFT" | unknown (pm_pursue_lost?)
|}
|}
;Job ID
:0 - none
:0 - none
:1 - idle
:1 - idle
Line 289: Line 71:
:3 - patrol
:3 - patrol
:4 - teambattle (never used in Oni)
:4 - teambattle (never used in Oni)
;Team ID
}}
{{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|BINACJBOCombat]] file) }}
{{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|BINACJBONeutral]] file) }}
{{OBDtr| 0x1D8 | int16    |EEDDFF| 01 00      | 1          | amount of ballistic ammo that can be used }}
{{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 that can be used }}
{{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| 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| 0x1E6 | int16    |FF0080| 00 00      | 0          | amount of force shields that can be dropped }}
{{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          | will drop phase cloak (true if any value above zero) }}
 
{{OBDtr| 0x1EC | int16    |71FFB8| 00 00      | 0          | unused }}
{{OBDtr| 0x1EE | int16    |71FFB8| 00 00      | 0          | unused }}
 
{{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 298: Line 99:
:6 - Switzerland
:6 - Switzerland
:7 - SyndicateAccessory
:7 - SyndicateAccessory
;Alert level
}}
{{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:
:0 - lull
:0 - lull
:1 - low
:1 - low
Line 304: Line 107:
:3 - high
:3 - high
:4 - combat
:4 - combat
}}
{{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| 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| 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          | pursuit mode for weak awareness when alert level lull/low }}
{{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| 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
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 {{SectionLink|AI|Reactions and awareness}} and {{SectionLink|AI|Pursuit}} to learn about meaning of CHAR pursuit values.
==Dialog from level0_Tools==
[[Image:Tool dialog - Character Properties 2.png]]
Also available is the following dialog, which is redundant of [[CMBT]] and apparently predates both CHAR and [[AISA]]:


[[Image:Tool dialog - Character Properties 1.png]]


----
----
==Blue Box Beta WMDD==
http://www6.fh-eberswalde.de/user/dkriesch/oni/bina_chara.gif


{{OBD OBJC Footer | type=CHAR | prev=WEAP | next=CMBT | name=Character | family=Level}}


----
{{OBD}}
----
{{OBD OBJC Footer|type=CHAR|prev=WEAP|next=CMBT|name=Character}}