OBD:ONCC
ONI BINARY DATA |
---|
OFGA << Other file types >> ONCP |
ONCC : Oni Character Class |
Character file |
Struct def for OUP |
Overview @ Oni Stuff |
TXT overviews (672 kB each) : "," decimals or "." decimals |
0x00 - 0x27
The examples provided are konoko_generic.ONCC from level3_Final
Offset | Hex | Translation | Meaning |
---|---|---|---|
0x00 | 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC |
0x04 | 01 00 00 06 | 3 | level 3 |
0x08 | CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) |
0x0C | 8F C2 75 3D | 0.060000 | downward gravity acceleration |
0x10 | CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP |
0x14 | 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight |
0x18 | 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP |
0x1C | 07 00 | 7 | gravity timer? (unknown, always 7) |
0x1E | 14 00 | 20 | jetpack timer; time during which you can use the jetpack |
0x20 | 00 00 34 42 | 45.000000 | maximal falling height without damage |
0x24 | 00 00 07 43 | 135.000000 | maximal falling height with damage |
- Units
- times are in frames
- heights are in world units
- velocities are in world units per frames
- accelerations are in world units per frames squared
- Downwards velocity
- could correspond to the steady push experienced when neither jumping nor falling
- would be roughly equivalent to the starting velocity of a fall
- although the value .55 seems right, the "sinking" seems to be hardcoded now
- Gravity timer
- Seems to be hardcoded now (could be the time until gravity switches on)
- Jetpack timer
- You can press JUMP multiple times during the time window (quite fun!)
- Falling height
- let FH1 be the height at 0x20
- let FH2 be the height at 0x24
- let BH be the base health of the character
- let FH be the actual falling height
- then, if FH > FH2, the character is killed
- if FH < FH1, the character takes no damage
- if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH
0x28-0x4B
0x28 | 01 F8 03 00 | 1016 | link to 01016-shadow1.TXMP |
0x2C | 00 00 40 41 | 12.000000 | height where the shadow fades out completely |
0x30 | 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half |
0x34 | 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases |
0x38 | 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases |
0x3C | 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases |
0x40 | 30 00 | 48 | transparency of the shadow for the first part of a jump |
0x42 | 30 00 | 48 | transparency of the shadow for the second part of a jump |
0x44 | 00 00 C8 41 | 25.000000 | unknown; always the same |
0x48 | 16 | 22 | unknown |
0x49 | 06 | 6 | unknown; always the same |
0x4A | AD DE | dead | blank filler (always there) |
0x4C-0x67
0x4C | 00 00 20 42 | 40.000000 | unknown; always the same |
0x50 | 00 00 96 43 | 300.000000 | unknown; always the same |
0x54 | 35 FA 8E 3C | 0.017453 | unknown; always the same |
0x58 | DB 0F C9 3F | 1.570796 | unknown; always the same |
0x5C | 00 00 A0 40 | 5.000000 | unknown; always the same |
0x60 | 00 00 80 3F | 1.000000 | unknown; always the same |
0x64 | 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint |
0x66 | AD DE | dead | blank filler (always there) |
- Hypo regeneration
- 1 hitpoint per 6 frames is 10 hitpoints per second
- (same setting for all characters)
0x68-0x91
0x68 | 00 10 3D 48 | 193600.000000 | unknown; always the same |
0x6C | 00 10 3D 47 | 48400.000000 | unknown; always the same |
0x70 | 00 10 3D 46 | 12100.000000 | unknown; always the same |
0x74 | 00 00 00 00 | 0.000000 | unknown; always the same |
0x78 | 00 00 00 00 | 0.000000 | unknown; always the same |
0x7C | 23 00 | 35 | unknown; always the same |
0x7E | 5A 00 | 90 | unknown; always the same |
0x80 | 0F 00 | 15 | unknown; always the same |
0x82 | 78 00 | 120 | unknown; always the same |
0x84 | 23 00 | 35 | unknown; always the same |
0x86 | 01 00 | 1 | unknown; always the same |
0x88 | 02 00 | 2 | unknown; always the same |
0x8A | 64 00 | 100 | unknown; always the same |
0x8C | 0A 00 | 10 | unknown; always the same |
0x8E | 0C 00 | 12 | unknown; always the same |
0x90 | 16 00 | 22 | unknown; always the same |
0x92-0x127
0x92 | 00 | 0 | runtime only: if 1 sound pointers have been set |
0x93 | DE | dead | blank filler (always there) |
0x94 | 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) |
0x98 | konoko_hurt_light + null char + blank filler |
hurt light sound (08121-konoko_hurt_light.imp.OSBD of level 0) | |
0xB8 | konoko_hurt_medium + null char + blank filler |
hurt medium sound (08123-konoko_hurt_medium.imp.OSBD of level 0) | |
0xD8 | konoko_hurt_heavy + null char + blank filler |
hurt heavy sound (08119-konoko_hurt_heavy.imp.OSBD of level 0) | |
0xF8 | konoko_death + null char + blank filler |
death sound (08115-konoko_death.imp.OSBD of level 0) | |
0x118 | 00 00 00 00 | 0 | runtime only: pointer to hurt light sound |
0x11C | 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound |
0x120 | 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound |
0x124 | 00 00 00 00 | 0 | runtime only: pointer to death sound |
0x128-0x137
0x128 | 17 00 00 00 | 23 | general AI options; see below |
0x12C | 00 00 80 3F | 1.000000 | AI rotation speed factor |
0x130 | 06 00 | 6 | minimal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned |
0x132 | 18 00 | 24 | maximal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned |
0x134 | 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) |
0x136 | 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) |
- AI rotation speed factor
- reference rotation speed is about 1 turn (360�) per second
- the setting is only effective if the AI is in control
- so it's a bit like the AI's mouse sensitivity :)
- General AI options
maybe it affects more things but I know only these: startle animation play (yes/no), gunfire dodge (of yourse there has to be firing spread) when melee (yes/no) or when armed (yes/no), ability of backfire when dodging and have weapon (I knew it was somewhere mwhaha ^_^)
- none unknown
- 01 unknown
- 02 civmale, civfemale - Startle anim played, dodging enabled, dodging backfire disabled
- 03
- 04
- 05
- 06 mad_bomber -
- 07 TCTF_swat_blackops -
- 08
- 09
- 0a thugs, security_guard, striker_easy/med, tanker_easy/med/hard, elite_easy/med/hard, Copmale, TCTF_swat_1 -
- 0b sniper_generic -
- 0c
- 0d
- 0e
- 0f
- 10 barabus -
- 11
- 12
- 13
- 14
- 15
- 16 comguy, TCTF_lite_blackops, red_easy/med/hard -
- 17 Konokos, griffin_generic, griffin_swat, super_ninja - startle anim NOT played, dodging enabled,dodging backfire enabled
- 18
- 19
- 1a TCTF_lite_1, Copfem, striker_hard -
- 1b ninja_easy/med/hard -
0x138 - 0x15B
0x138 | 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) |
0x13C | 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable |
0x140 | 00 00 00 3F | 0.500000 | unknown; always the same |
0x144 | 00 00 C8 41 | 25.000000 | unknown; always the same |
0x148 | 00 00 80 3F | 1.000000 | unknown; |
0x14C | 00 00 00 00 | 0 | unknown |
0x150 | 05 00 00 00 | 5 | unknown |
0x154 | 0F 00 00 00 | 15 | unknown |
0x158 | 3C 00 00 00 | 60 | unknown |
0x15C - 0x293
- SHOOTING SKILLS
These can be reviewed with e.g. ai2_skill_select konoko_generic w1_tap and then either ai2_skill_show (prints to console) or ai2_skill_save (prints to file)
- Fields
- recoil compensation amount, between 0 and 1 (float)
- best aiming angle, in radians (float)
- shot grouping error (float)
- shot grouping decay (float)
- shooting inaccuracy multiplier (float)
- minimum delay between shots, in frames (short)
- maximum delay between shots, in frames (short)
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except w10_sni is still available) (w12_ba2 and w11_ba1 are a bit mixed up : the beam is made of w12_ba2 particles, and the grenade is a w11_ba1 particle...)
See screenshot for the raw hex (example is konoko_generic from level3_Final)
Weapon | Offset | recoil | bestangle | error | decay | inaccuracy | delays |
---|---|---|---|---|---|---|---|
w0_sec | 0x15C/0x173 | 0.0 | 0.000000 | 0.00 | 1.0 | 1.0 | 0 - 0 |
w1_tap | 0x174/0x18B | 0.0 | 0.000000 | 0.40 | 0.4 | 0.0 | 30 - 45 |
w2_sap | 0x18C/0x193 | 0.3 | 0.013962 | 0.13 | 1.0 | 1.0 | 0 - 0 |
w3_phr | 0x194/0x20B | 0.3 | 0.010472 | 0.05 | 0.5 | 1.0 | 0 - 0 |
w4_psm | 0x20C/0x213 | 0.3 | 0.015707 | 0.03 | 0.2 | 1.0 | 0 - 0 |
w5_sbg | 0x214/0x22B | 0.3 | 0.001745 | 0.00 | 0.1 | 1.0 | 0 - 0 |
w6_vdg | 0x22C/0x233 | 0.3 | 0.001745 | 0.13 | 0.9 | 1.0 | 0 - 0 |
w7_scc | 0x234/0x24B | 0.3 | 0.001745 | 0.05 | 0.1 | 1.0 | 0 - 0 |
w8_mbo | 0x24C/0x253 | 0.3 | 0.005236 | 0.01 | 0.5 | 1.0 | 0 - 0 |
w9_scr | 0x254/0x26B | 0.3 | 0.010472 | 0.04 | 0.5 | 1.0 | 0 - 0 |
w10_sni | 0x26C/0x273 | 0.0 | 0.000000 | 0.00 | 1.00 | 1.00 | 0 - 0 |
w11_ba1 | 0x274/0x28B | 0.0 | 0.000000 | 0.00 | 1.0 | 1.0 | 0 - 0 |
w12_ba2 | 0x28B/0x293 | 0.0 | 0.000000 | 0.00 | 1.0 | 1.0 | 0 - 0 |
0x294 - 0x2AF
0x294 | 5A 00 00 00 | 90 | unknown; always the same |
0x298 | F0 00 00 00 | 240 | unknown; always the same |
0x29C | B4 00 00 00 | 180 | unknown; always the same |
0x2A0 | 28 00 00 00 | 40 | unknown; always the same |
0x2A4 | 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command |
0x2A8 | 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon |
0x2AC | 00 00 | 0 | CMBT profile ID; for example it is *0D* for Mutant Muro |
0x2AE | 16 00 | 22 | MELE profile ID; |
0x2B0-0x3FB
0x2B0 | 64 | 100 | "taunt" sound slot is used |
0x2B1 | 00 | 0 | "alert" sound slot is empty |
0x2B2 | 00 | 0 | "startle" sound slot is empty |
0x2B3 | 00 | 0 | "checkbody" sound slot is empty |
0x2B4 | 00 | 0 | "pursue" sound slot is empty |
0x2B5 | 00 | 0 | "cower" sound slot is empty |
0x2B6 | 64 | 100 | "superpunch" sound slot is used |
0x2B7 | 64 | 100 | "superkick" sound slot is used |
0x2B8 | 00 | 0 | "super3" sound slot is empty |
0x2B9 | 00 | 0 | "super4" sound slot is empty (always the same) |
0x2BA | 00 00 | 0 | probably a blank filler (always the same) |
0x2BC | c17_99_28konoko | "taunt" sound (04760-c17_99_28konoko.aif.SNDD of level 0) | |
0x2DC | not used | "alert" sound | |
0x2FC | not used | "startle" sound | |
0x31C | not used | "checkbody" sound | |
0x33C | not used | "pursue" sound | |
0x35C | not used | "cower" sound | |
0x37C | c18_79_14konoko | "superpunch" sound (04766-c18_79_14konoko.aif.SNDD of level 0) | |
0x39C | c18_79_15konoko | "superkick" sound (04767-c18_79_15konoko.aif.SNDD of level 0) | |
0x3BC | not used | "super3" sound (only the superninja uses this slot) | |
0x3DC | not used | "super4" sound (never used in Oni) |
0x3FC
00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command ai2_showvision = 1 (light blue one) |
00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command ai2_showvision = 1 (dark blue one) |
7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye). Works for both vision fields. |
F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder. This value affect central angle of that. The higher this value is, the more is this field wrapped in order to achieve shaper angle. When set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right). |
E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field |
D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field |
6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field |
B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) |
84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command |
10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command |
10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) |
50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command |
A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command |
00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI |
01 FB 03 00 | 1019 | link to 01019-konoko.ONCV : defines variants and upgrades |
01 F9 03 00 | 1017 | link to 01017-.ONCP : lists the particles available for this character (trails, flashes, etc) |
01 FA 03 00 | 1018 | link to 01018-.ONIA : lists the special impact sounds (used for special combat moves) |
00 00 00 00 | 0 | unknown; always the same |
Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0) edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types | |
Footstep_Walk | walk impact (04124-Footstep_Walk.Impt of level 0); always the same; without the impacts you can't hear the steps of a character | |
FF FF | 65535 | unknown; always the same |
Footstep_RunMain | run impact (04129-Footstep_RunMain.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_Crouch | crouch impact (04123-Footstep_Crouch.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Fall_Slide | fall slide impact (04122-Fall_Slide.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Fall_Land | fall land impact (04119-Fall_Land.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Fall_LandHard | land hard impact (04120-Fall_LandHard.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Fall_Knockdown | fall knockdown impact (04118-Fall_Knockdown.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Fall_Knockdown | fall knockdown impact (04118-Fall_Knockdown.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Fall_Knockdown | fall knockdown impact (04118-Fall_Knockdown.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_Turn | turn impact (04135-Footstep_Turn.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_RunStart | run start impact (04131-Footstep_RunStart.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_SingleStep | single step impact (04134-Footstep_SingleStep.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_RunStop | run stop impact (04133-Footstep_RunStop.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_WalkStop | walk stop impact (04137-Footstep_WalkStop.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
Footstep_RunSprint | run fast impact (04130-Footstep_RunSprint.Impt of level 0); always the same | |
FF FF | 65535 | unknown; always the same |
00 00 | 0 | unknown; always the same |
not used | special death particles; only the mad bomber use it | |
00 00 00 00 | 0 | unknown; always the same |
00 00 00 00 | 0 | unknown; always the same |
01 E6 03 00 | 998 | link to 00998-konoko_body_high.TRBS |
01 E7 03 00 | 999 | link to 00999-konoko002_high_texture_generic.TRMA |
01 E8 03 00 | 1000 | link to 01000-.CBPM |
01 EC 03 00 | 1004 | link to 01004-.CBPI |
2C 01 00 00 | 300 | fight mode timer in 1/60 seconds |
30 75 00 00 | 30000 | 1st idle animation timer in 1/60 seconds (Thanks to Loser for this info.) |
30 75 00 00 | 30000 | 2nd idle animation timer in 1/60 seconds (Thanks to Loser for this info.) |
C8 00 00 00 | 200 | basic health of the character model; extra health informations for every unique character you'll find in the Character.BINA file |
48 00 00 00 | 72 | unknown; always the same |
00 00 80 3F | 1.000000 | minimal body size factor (Thanks to geyser for this info.) |
00 00 80 3F | 1.000000 | maximal body size factor (Thanks to geyser for this info.) |
00 00 00 00 | 0.000000 | unknown; always the same |
00 00 00 00 | 0.000000 | unknown; always the same |
00 00 00 3F | 0.500000 | unknown |
00 00 80 3E | 0.250000 | unknown |
00 00 00 00 | 0.000000 | unknown; always the same |
00 00 00 00 | 0.000000 | unknown; always the same |
00 00 00 00 | 0.000000 | unknown; always the same |
00 00 00 3F | 0.500000 | unknown |
01 F6 03 00 | 1014 | link to 01014-konoko_animations.TRAC |
01 F7 03 00 | 1015 | link to 01015-konoko_screens.TRSC |
1E 00 | 30 | unknown; always the same |
00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) |
00 | 0 | unknown |
01 | 1 | unknown |
00 | 0 | unknown |
00 | 0 | unknown |
AD DE AD DE | dead | not used; always the same |
- Last 4 bytes before the blank filler
- Something to do with left-hand/right-hand aiming (must be consistent with TRSC link)
Overview table
Maybe split it up and insert the pieces after every section's header.
ONI BINARY DATA |
---|
OFGA << Other file types >> ONCP |
ONCC : Oni Character Class |