OBD:ONCC: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (saving... next: splitting)
m (wording and linking for shield types)
 
(53 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}
{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}


 
[[Image:oncc_a.gif]]
[[image:oncc_a.gif]]
 


{{Table}}
{{Table}}
Line 9: Line 7:
{{OBDtr| 0x000 | res_id  |FF0000| 01 DF 03 00 | 991        | 00991-konoko_generic.ONCC }}
{{OBDtr| 0x000 | res_id  |FF0000| 01 DF 03 00 | 991        | 00991-konoko_generic.ONCC }}
{{OBDtr| 0x004 | lev_id  |FFFF00| 01 00 00 06 | 0          | level 3 }}
{{OBDtr| 0x004 | lev_id  |FFFF00| 01 00 00 06 | 0          | level 3 }}
{{OBDtr| 0x008 | float    |00FF00| CD CC 0C 3F | 0.550000    | downwards velocity? (unknown, always 0.55) }}
{{OBDtr| 0x008 | float    |00FF00| CD CC 0C 3F | 0.550000    | fall speed (always 0.55) (mostly unused, see below) }}
{{OBDtr| 0x00C | float    |00FF00| 8F C2 75 3D | 0.060000    | downward gravity acceleration }}
{{OBDtr| 0x00C | float    |00FF00| 8F C2 75 3D | 0.060000    | strength of gravity for this character }}
{{OBDtr| 0x010 | float    |00FF00| CD CC 8C 3F | 1.100000    | starting velocity for a simple (tap) JUMP }}
{{OBDtr| 0x010 | float    |00FF00| CD CC 8C 3F | 1.100000    | starting velocity for a simple (tap) JUMP }}
{{OBDtr| 0x014 | float    |00FF00| 00 00 80 C0 | -4.000000  | limit velocity for jumping and gravity flight }}
{{OBDtr| 0x014 | float    |00FF00| 00 00 80 C0 | -4.000000  | maximum velocity for jumping and falling }}
{{OBDtr| 0x018 | float    |00FF00| 8F C2 F5 3C | 0.030000    | upward acceleration (jetpack) if you hold JUMP }}
{{OBDtr| 0x018 | float    |00FF00| 8F C2 F5 3C | 0.030000    | upward acceleration as long as you hold JUMP }}
{{OBDtr| 0x01C | int16    |00FFFF| 07 00      | 7          | gravity timer? (unknown, always 7) }}
{{OBDtr| 0x01C | int16    |00FFFF| 07 00      | 7          | fall timer (always 7) (mostly unused, see below) }}
{{OBDtr| 0x01E | int16    |00FFFF| 14 00      | 20          | jetpack timer; time during which you can use the jetpack }}
{{OBDtr| 0x01E | int16    |00FFFF| 14 00      | 20          | how long you can continue holding down JUMP to increase the height of your jump }}
{{OBDtr| 0x020 | float    |FF00FF| 00 00 34 42 | 45.000000  | maximal falling height without damage }}
{{OBDtr| 0x020 | float    |FF00FF| 00 00 34 42 | 45.000000  | maximum falling height without damage }}
{{OBDtr| 0x024 | float    |FF00FF| 00 00 07 43 | 135.000000  | maximal falling height with damage }}
{{OBDtr| 0x024 | float    |FF00FF| 00 00 07 43 | 135.000000  | maximum falling height with damage }}
{{OBDtr| 0x028 | link    |FF8000| 01 F8 03 00 | 1016        | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}
{{OBDtr| 0x02C | float    |FF8000| 00 00 40 41 | 12.000000  | height where the shadow fades out completely }}
{{OBDtr| 0x030 | float    |FF8000| 00 00 00 41 | 8.000000    | height where the diameter of the shadow decreases and the shadow fades out half }}
{{OBDtr| 0x034 | float    |FF8000| 00 00 C0 40 | 6.000000    | height where the diameter of the shadow decreases }}
{{OBDtr| 0x038 | float    |FF8000| 00 00 90 40 | 4.500000    | height where the diameter of the shadow decreases }}
{{OBDtr| 0x03C | float    |FF8000| 00 00 40 40 | 3.000000    | height where the diameter of the shadow decreases }}
{{OBDtr| 0x040 | int16    |FF8000| 30 00      | 48          | transparency of the shadow for the first part of a jump }}
{{OBDtr| 0x042 | int16    |FF8000| 30 00      | 48          | transparency of the shadow for the second part of a jump }}
{{OBDtr| 0x044 | float    |FF0080| 00 00 C8 41 | 25.000000  | unknown; always the same }}
{{OBDtr| 0x048 | int8    |FFC8C8| 16          |  22        | unknown }}
{{OBDtr| 0x049 | int8    |FFC8C8| 06          |  6          | unknown; always the same }}
{{OBDtr| 0x04A | char[2]  |FFC8C8| AD DE      | dead        | unused; always the same }}
{{OBDtr| 0x04C | float    |FFFFC8| 00 00 20 42 | 40.000000  | unknown; always the same }}
{{OBDtr| 0x050 | float    |FFFFC8| 00 00 96 43 | 300.000000  | unknown; always the same }}
{{OBDtr| 0x054 | float    |FFFFC8| 35 FA 8E 3C | 0.017453    | unknown; always the same }}
{{OBDtr| 0x058 | float    |FFFFC8| DB 0F C9 3F | 1.570796    | unknown; always the same (1.57 <nowiki>=</nowiki> pi/2) }}
{{OBDtr| 0x05C | float    |FFFFC8| 00 00 A0 40 | 5.000000    | unknown; always the same }}
{{OBDtr| 0x060 | float    |FFFFC8| 00 00 80 3F | 1.000000    | unknown; always the same }}
{{OBDtr| 0x064 | int16    |C8FFC8| 06 00      | 6          | (inverse) hypo regeneration rate in frames per hitpoint }}
{{OBDtr| 0x066 | char[2]  |C8FFC8| AD DE      | dead        | unused }}
{{OBDtr| 0x068 | float    |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same }}
{{OBDtr| 0x06C | float    |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same }}
{{OBDtr| 0x070 | float    |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same }}
{{OBDtr| 0x074 | float    |C8FFFF| 00 00 00 00 | 0.000000    | unknown; always the same }}
{{OBDtr| 0x078 | float    |C8FFFF| 00 00 00 00 | 0.000000    | unknown; always the same }}
{{OBDtr| 0x07C | int16    |FFC8FF| 23 00      | 35          | unknown; always the same }}
{{OBDtr| 0x07E | int16    |FFC8FF| 5A 00      | 90          | unknown; always the same }}
{{OBDtr| 0x080 | int16    |FFC8FF| 0F 00      | 15          | unknown; always the same }}
{{OBDtr| 0x082 | int16    |FFC8FF| 78 00      | 120        | unknown; always the same }}
{{OBDtr| 0x084 | int16    |FFC8FF| 23 00      | 35          | unknown; always the same }}
{{OBDtr| 0x086 | int16    |FFC8FF| 01 00      | 1          | unknown; always the same }}
{{OBDtr| 0x088 | int16    |FFC8FF| 02 00      | 2          | unknown; always the same }}
{{OBDtr| 0x08A | int16    |FFC8FF| 64 00      | 100        | unknown; always the same }}
{{OBDtr| 0x08C | int16    |FFC8FF| 0A 00      | 10          | unknown; always the same }}
{{OBDtr| 0x08E | int16    |FFC8FF| 0C 00      | 12          | unknown; always the same }}
{{OBDtr| 0x090 | int16    |FFC8FF| 16 00      | 22          | unknown; always the same }}
{{OBDtr| 0x092 | int8    |FFC800| 00          | 0          | used at runtime only: if one sound pointers have been set }}
{{OBDtr| 0x093 | char[1]  |C800C8| DE          | dead        | unused; always the same }}
{{OBDtr| 0x094 | float    |C87C64| 00 00 00 3F | 0.500000    | unknown; always the same (sound volume?) }}
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light        | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium        | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy        | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death              | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}
{{OBDtr| 0x118 | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to hurt light sound }}
{{OBDtr| 0x11C | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to hurt medium sound }}
{{OBDtr| 0x120 | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to hurt heavy sound }}
{{OBDtr| 0x124 | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to death sound }}
{{OBDtr| 0x128 | bitsets  |E7CEA5| 17 00 00 00 | 23          | general AI option bitset collection ; see below }}
{{OBDtr| 0x12C | float    |FFDDDD| 00 00 80 3F | 1.000000    | AI rotation speed factor }}
{{OBDtr| 0x130 | int16    |64AAAA| 06 00      | 6          | minimal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned }}
{{OBDtr| 0x132 | int16    |64AAAA| 18 00      | 24          | maximal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned }}
{{OBDtr| 0x134 | int16    |EBEBEB| 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) }}
{{OBDtr| 0x136 | int16    |EBEBEB| 00 00      | 0          | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}
{{OBDtr| 0x138 | float    |8C8CCC| 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) }}
{{OBDtr| 0x13C | float    |8C8CCC| 00 00 80 3F | 1.000000    | maximal firingspread dodge amount; IMO similar to maneouvre variable }}
{{OBDtr| 0x140 | float    |8C8CCC| 00 00 00 3F | 0.500000    | unknown; always the same }}
{{OBDtr| 0x144 | float    |8C8CCC| 00 00 C8 41 | 25.000000  | unknown; always the same }}
{{OBDtr| 0x148 | float    |8C8CCC| 00 00 80 3F | 1.000000    | unknown }}
{{OBDtr| 0x14C | int32    |FF00C8| 00 00 00 00 | 0          | unknown }}
{{OBDtr| 0x150 | int32    |FF00C8| 05 00 00 00 | 5          | unknown }}
{{OBDtr| 0x154 | int32    |FF00C8| 0F 00 00 00 | 15          | unknown }}
{{OBDtr| 0x158 | int32    |FF00C8| 3C 00 00 00 | 60          | unknown }}
{{OBDtrBK|1=First of 13 elements (grey outline) }}
{{OBDtr| 0x15C | float    |F0F096| 00 00 00 00 | 0.000000    | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}
{{OBDtr| 0x160 | float    |F0F096| 00 00 00 00 | 0.000000    | best aiming angle in radians }}
{{OBDtr| 0x164 | float    |F0F096| 00 00 00 00 | 0.000000    | shot grouping error }}
{{OBDtr| 0x168 | float    |F0F096| 00 00 80 3F | 1.000000    | shot grouping decay }}
{{OBDtr| 0x16C | float    |F0F096| 00 00 80 3F | 1.000000    | shooting inaccuracy multiplier }}
{{OBDtr| 0x170 | int16    |00C864| 00 00      | 0          | minimum delay between shots in frames }}
{{OBDtr| 0x172 | int16    |00C864| 00 00      | 0          | maximum delay between shots in frames }}
|}
|}




[[image:oncc_m.gif]]
;Units
:times are in frames
:heights are in world units (0.1m or 4")
:velocities are in world units per tick (1/60s)
:accelerations are in world units per tick squared
 
 
;Fall speed and timer
:These two fields are only looked at when predicting whether an attack will hit a target while the attacker is in midair. They are probably a development relic that is looked at in error, as the actual falling speed is determined by 0x00C and the actual fall timer is 0x01E.
 
 
;Jetpack timer
:You can press JUMP multiple times during the time window when it's large enough. See the [http://mods.oni2.net/node/83 Barabas Jetpack mod] for an application of this principle.
 
 
;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
 


;Shadow Constants


{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
{{OBDtr| 0x294 | int32    |00C8FF| 5A 00 00 00 | 90          | unknown; always the same }}
{{OBDtr| 0x028 | link     |FF8000| 01 F8 03 00 | 1016        | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}
{{OBDtr| 0x298 | int32    |00C8FF| F0 00 00 00 | 240        | unknown; always the same }}
{{OBDtr| 0x02C | float    |FF8000| 00 00 40 41 | 12.000000   | height where the diameter of the shadow shrinks to 0x03C }}
{{OBDtr| 0x29C | int32    |00C8FF| B4 00 00 00 | 180        | unknown; always the same }}
{{OBDtr| 0x030 | float    |FF8000| 00 00 00 41 | 8.000000   | height range over which the diameter of the shadow decreases from 0x034 to 0x038 and the shadow starts to fades out from 0x040 to 0x042 }}
{{OBDtr| 0x2A0 | int32    |00C8FF| 28 00 00 00 | 40          | unknown; always the same }}
{{OBDtr| 0x034 | float    |FF8000| 00 00 C0 40 | 6.000000   | maximum diameter of the shadow }}
{{OBDtr| 0x2A4 | int32    |00C8FF| 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 }}
{{OBDtr| 0x038 | float    |FF8000| 00 00 90 40 | 4.500000   | diameter that the shadow shrinks to when 0x030 is reached }}
{{OBDtr| 0x2A8 | int32    |00C8FF| 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 }}
{{OBDtr| 0x03C | float    |FF8000| 00 00 40 40 | 3.000000    | minimum diameter of the shadow }}
{{OBDtr| 0x2AC | int16    |C80040| 00 00      | 0          | combat profile ID; for example *0D* is for Mutant Muro }}
{{OBDtr| 0x040 | int16    |FF8000| 30 00       | 48          | starting transparency of the shadow as the character rises towards 0x030 }}
{{OBDtr| 0x2AE | int16    |C80040| 16 00      | 22          | melee profile ID }}
{{OBDtr| 0x042 | int16    |FF8000| 30 00       | 48          | starting transparency of the shadow when the character begins to get above 0x030 }}
{{OBDtr| 0x2B0 | int8     |FFCD96| 64          | 100        | "taunt" sound slot is used }}
{{OBDtr| 0x2B1 | int8    |FFCD96| 00         | 0          | "alert" sound slot is empty }}
{{OBDtr| 0x2B2 | int8    |FFCD96| 00          | 0          | "startle" sound slot is empty }}
{{OBDtr| 0x2B3 | int8    |FFCD96| 00          | 0          | "checkbody" sound slot is empty }}
{{OBDtr| 0x2B4 | int8    |FFCD96| 00          | 0          | "pursue" sound slot is empty }}
{{OBDtr| 0x2B5 | int8    |FFCD96| 00          | 0          | "cower" sound slot is empty }}
{{OBDtr| 0x2B6 | int8    |FFCD96| 64          | 100        | "superpunch" sound slot is used }}
{{OBDtr| 0x2B7 | int8    |FFCD96| 64          | 100        | "superkick" sound slot is used }}
{{OBDtr| 0x2B8 | int8    |FFCD96| 00          | 0          | "super3" sound slot is empty }}
{{OBDtr| 0x2B9 | int8    |FFCD96| 00          | 0          | "super4" sound slot is empty (always the same) }}
{{OBDtr| 0x2BA | int16    |C8C864| 00 00      | 0          | probably a blank filler (always the same) }}
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko          | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}
{{OBDtr2|0x2DC | char[32] |0096C8| unused                    | "alert" sound }}
{{OBDtr2|0x2FC | char[32] |0096C8| unused                    | "startle" sound }}
{{OBDtr2|0x31C | char[32] |0096C8| unused                    | "checkbody" sound }}
{{OBDtr2|0x33C | char[32] |0096C8| unused                    | "pursue" sound }}
{{OBDtr2|0x35C | char[32] |0096C8| unused                    | "cower" sound }}
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko          | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko          | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}
{{OBDtr2|0x3BC | char[32] |0096C8| unused                    | "super3" sound (only the superninja uses this slot) }}
{{OBDtr2|0x3DC | char[32] |0096C8| unused                    | "super4" sound (never used in Oni) }}
{{OBDtr| 0x3FC | float    |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}
{{OBDtr| 0x400 | float    |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}
{{OBDtr| 0x404 | float    |FF80C0| 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 }}
{{OBDtr| 0x408 | float    |FF80C0| 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) }}
{{OBDtr| 0x40C | float    |FF80C0| E8 D5 12 3F | 0.573576   | vertical angle between eye-rays in one couple; this is for central vision field }}
{{OBDtr| 0x410 | float    |FF80C0| D5 D0 31 3E | 0.173648    | vision field curve for peripheral vision field }}
{{OBDtr| 0x414 | float    |FF80C0| 6B 61 D8 BE | 0.422618    | vertical angle between eye-rays in one couple; this is for peripheral vision field }}
{{OBDtr| 0x418 | int32    |D0C0AF| 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) }}
{{OBDtr| 0x41C | int32   |D0C0AF| 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 }}
{{OBDtr| 0x420 | int32    |D0C0AF| 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 }}
{{OBDtr| 0x424 | int32    |D0C0AF| 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) }}
{{OBDtr| 0x428 | int32    |D0C0AF| 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 }}
{{OBDtr| 0x42C | int32    |D0C0AF| 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 }}
{{OBDtr| 0x430 | float    |EEDDFF| 00 00 80 3F | 1.000000    | earshot radius; defines size of the sound-collision sphere around AI }}
{{OBDtr| 0x434 | link    |C5FF8A| 01 FB 03 00 | 1019        | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}
{{OBDtr| 0x438 | link    |C5FF8A| 01 F9 03 00 | 1017        | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}
{{OBDtr| 0x43C | link    |C5FF8A| 01 FA 03 00 | 1018        | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}
{{OBDtr| 0x440 | link    |C5FF8A| 00 00 00 00 | unused      | unknwon; always the same; maybe an unsed link? }}
{{OBDtr2|0x444 | char[16] |C0C0C0| 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 }}
{{OBDtrBK|1=First of 15 impact elements. Every element ends always with FF FF.}}
{{OBDtr2|0x454 | char[32] |FF0080| Footstep_Walk            | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}
|}
|}




[[image:oncc_e.gif]]
;Jump Constants


{{Table}}
{{OBDth}}
{{OBDtr| 0x044 | float    |FF0080| 00 00 C8 41 | 25.000000  | unused (always 25) }}
{{OBDtr| 0x048 | int8    |FFC8C8| 16          |  22        | unused (always 22) }}
{{OBDtr| 0x049 | int8    |FFC8C8| 06          |  6          | unused (always 6) }}
{{OBDtr| 0x04A | char[2]  |FFC8C8| AD DE      | dead        | pad }}
|}
;Cover Constants


{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
{{OBDtr| 0xBF2 | int16    |FFFFA6| 00 00      | 0          | unknown; always the same; maybe only a filler }}
{{OBDtr| 0x04C | float    |FFFFC8| 00 00 20 42 | 40.000000   | unused (always 40) }}
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused                    | special death particle; only the mad bomber use it }}
{{OBDtr| 0x050 | float    |FFFFC8| 00 00 96 43 | 300.000000 | unused (always 300) }}
{{OBDtr| 0xC34 | link    |0000BF| 00 00 00 00 | unused      | unknown; always the same; maybe an unused link? }}
{{OBDtr| 0x054 | float    |FFFFC8| 35 FA 8E 3C | 0.017453   | unused (always π/180) }}
{{OBDtr| 0xC38 | link    |0000BF| 00 00 00 00 | unused      | unknown; always the same; maybe an unused link? }}
{{OBDtr| 0x058 | float    |FFFFC8| DB 0F C9 3F | 1.570796   | unused (always π/2) }}
{{OBDtr| 0xC3C | link    |0000BF| 01 E6 03 00 | 998        | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}
{{OBDtr| 0xC40 | link    |0000BF| 01 E7 03 00 | 999        | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}
{{OBDtr| 0xC44 | link    |0000BF| 01 E8 03 00 | 1000        | link to [[OBD:CBPM|01000-.CBPM]] }}
{{OBDtr| 0xC48 | link    |0000BF| 01 EC 03 00 | 1004        | link to [[OBD:CBPI|01004-.CBPI]] }}
{{OBDtr| 0xC4C | int32    |804040| 2C 01 00 00 | 300        | fight mode timer in 1/60 seconds }}
{{OBDtr| 0xC50 | int32    |804040| 30 75 00 00 | 30000      | first idle animation timer in 1/60 seconds }}
{{OBDtr| 0xC54 | int32    |804040| 30 75 00 00 | 30000      | second idle animation timer in 1/60 seconds }}
{{OBDtr| 0xC58 | int32    |804040| C8 00 00 00 | 200        | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHARCharacter.BINA]] file}}
{{OBDtr| 0xC5C | int32    |804040| 48 00 00 00 | 72          | unknown; always the same }}
{{OBDtr| 0xC60 | float    |FF22FF| 00 00 80 3F | 1.000000   | minimal body size factor }}
{{OBDtr| 0xC64 | float    |FF22FF| 00 00 80 3F | 1.000000    | maximal body size factor }}
{{OBDtr| 0xC68 | float    |FF22FF| 00 00 00 00 | 0.000000    | unknown; always the same }}  
{{OBDtr| 0xC6C | float    |FF22FF| 00 00 00 00 | 0.000000   | unknown; always the same }}  
{{OBDtr| 0xC70 | float    |FF22FF| 00 00 00 3F | 0.500000   | unknown }}
{{OBDtr| 0xC74 | float    |FF22FF| 00 00 80 3E | 0.250000    | unknown }}
{{OBDtr| 0xC78 | float    |FF22FF| 00 00 00 00 | 0.000000    | unknown; always the same }}
{{OBDtr| 0xC7C | float    |FF22FF| 00 00 00 00 | 0.000000    | unknown; always the same }}
{{OBDtr| 0xC80 | float    |FF22FF| 00 00 00 00 | 0.000000    | unknown; always the same }}  
{{OBDtr| 0xC84 | float    |FF22FF| 00 00 00 3F | 0.500000   | unknown }}
{{OBDtr| 0xC88 | link    |808080| 01 F6 03 00 | 1014        | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }}
{{OBDtr| 0xC8C | link    |808080| 01 F6 03 00 | 1015        | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }}
{{OBDtr| 0xC90 | int16    |FFAA82| 1E 00      | 30          | unknown; always the same }}
{{OBDtr| 0xC92 | int16    |FFAA82| 00 00      | 0          | time between death and deletion, in frames (about 3 seconds for mad bomber) }}
{{OBDtr| 0xC94 | bitset  |00D900| 00          | 0          | unknown }}
{{OBDtr| 0xC95 | bitset  |00D900| 01          | 1          | unknown }}
{{OBDtr| 0xC96 | bitset  |00D900| 00          | 0          | unknown }}
{{OBDtr| 0xC97 | bitset  |00D900| 00          | 0          | unknown }}
{{OBDtr| 0xC98 | char[8]  |CACAFF| AD DE      | dead        | unused }}  
|}
|}




{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}
;Autofreeze Constants


{{Table}}
{{OBDth}}
{{OBDtr| 0x05C | float    |FFFFC8| 00 00 A0 40 | 5.000000    | unused (always 5) }}
{{OBDtr| 0x060 | float    |FFFFC8| 00 00 80 3F | 1.000000    | unused (always 1) }}
|}




;Inventory Constants


{|align=right
{{Table}}
![[OBD:Oni Binary Data|ONI BINARY DATA]]
{{OBDth}}
|-
{{OBDtr| 0x064 | int16    |C8FFC8| 06 00      | 6          | hypo regeneration rate in ticks per hit point restored }}
![[OBD:OFGA|OFGA]] << [[OBD:File types|Other file types]] >> [[OBD:ONCP|ONCP]]
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE      | dead        | ignored }}
|-
!<FONT SIZE=5>ONCC : Oni Character Class</FONT>
|-
![[OBD:File types/Character|Character file]]
|-
![http://geyser.oni2.net/OUP/ONCC.txt Struct def for OUP]
|-
![http://www6.fh-eberswalde.de/user/dkriesch/onistuff/oni_oncc.htm Overview @ Oni Stuff]
|-
!TXT overviews (672 kB each) :<br>[http://www6.fh-eberswalde.de/user/dkriesch/onistuff/subfold/text/oni_oncc_dc.txt "," decimals] or [http://www6.fh-eberswalde.de/user/dkriesch/onistuff/subfold/text/oni_oncc_dp.txt "." decimals]
|}
|}


==0x00 - 0x27==
 
The examples provided are '''konoko_generic.ONCC''' from '''level3_Final'''
;LOD Constants
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
Squares of the distance from the camera at which each LOD kicks in ([[LOD|this article]] has the full calculation for arriving at the LOD to use)
|- BGCOLOR="#FFDDBB"
{{Table}}
!Offset
{{OBDth}}
!Hex
{{OBDtr| 0x068 | float    |C8FFFF| 00 10 3D 48 |193600.000000| always 440 squared }}
!Translation
{{OBDtr| 0x06C | float    |C8FFFF| 00 10 3D 47 | 48400.000000| always 220 squared }}
!Meaning
{{OBDtr| 0x070 | float    |C8FFFF| 00 10 3D 46 | 12100.000000| always 110 squared }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x074 | float    |C8FFFF| 00 00 00 00 | 0.000000   | always 0 }}
| 0x00
{{OBDtr| 0x078 | float    |C8FFFF| 00 00 00 00 | 0.000000   | always 0 }}
| BGCOLOR="#FF0000" | 01 '''DF 03''' 00
| 991
| ALIGN=LEFT | 00991-konoko_generic.ONCC
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x04
| BGCOLOR="#FFFF00" | 01 00 00 '''06'''
| 3
| ALIGN=LEFT | level 3
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x08
| BGCOLOR="#00FF00" | CD CC 0C 3F
| 0.550000
| ALIGN=LEFT | downwards velocity? (unknown, always 0.55)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x0C
| BGCOLOR="#00FF00" | 8F C2 75 3D
| 0.060000
| ALIGN=LEFT | downward gravity acceleration
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x10
| BGCOLOR="#00FF00" | CD CC 8C 3F
| 1.100000
| ALIGN=LEFT | starting velocity for a simple (tap) JUMP
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x14
| BGCOLOR="#00FF00" | 00 00 80 C0
| -4.000000
| ALIGN=LEFT | limit velocity for jumping and gravity flight
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x18
| BGCOLOR="#00FF00" | 8F C2 F5 3C
| 0.030000
| ALIGN=LEFT | upward acceleration (jetpack) if you hold JUMP
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x1C
| BGCOLOR="#00FFFF" | 07 00
| 7
| ALIGN=LEFT | gravity timer? (unknown, always 7)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x1E
| BGCOLOR="#00FFFF" | 14 00
| 20
| ALIGN=LEFT | jetpack timer; time during which you can use the jetpack
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x20
| BGCOLOR="#FFC8C8" | 00 00 34 42
| 45.000000
| ALIGN=LEFT | maximal falling height without damage
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x24
| BGCOLOR="#FFC8C8" | 00 00 07 43
| 135.000000
| ALIGN=LEFT | 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==
 
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
;Hurt Sound Constants
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
 
| 0x28
See [[XML:ONCC#.3CHurtSoundConstants.3E|HERE]] for the full calculation of whether to play a hurt sound and which sound to play.
| BGCOLOR="#FF5E5E" | 01 '''F8 03''' 00
 
| 1016
{{Table}}
| ALIGN=LEFT | link to 01016-shadow1.[[OBD:TXMP|TXMP]]
{{OBDth}}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x07C | int16    |FFC8FF| 23 00       | 35          | minimum chance of playing a pain sound (always 35) }}
| 0x2C
{{OBDtr| 0x07E | int16    |FFC8FF| 5A 00      | 90          | maximum chance of playing a pain sound (always 90) }}
| BGCOLOR="#FFEBEB" | 00 00 40 41
{{OBDtr| 0x080 | int16    |FFC8FF| 0F 00       | 15          | at least this much damage must be done to play a pain sound (always 15) }}
| 12.000000
{{OBDtr| 0x082 | int16    |FFC8FF| 78 00      | 120        | time in ticks before the damage tracker used for this AI's pain sounds resets (always 120) }}
| ALIGN=LEFT | height where the shadow fades out completely
{{OBDtr| 0x084 | int16    |FFC8FF| 23 00       | 35          | time in ticks that must pass between pain sounds being played (always 35) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x086 | int16    |FFC8FF| 01 00      | 1          | number of times that AI will play light pain sound before "upgrading" to a medium pain sound (always 1) }}
| 0x30
{{OBDtr| 0x088 | int16    |FFC8FF| 02 00       | 2          | number of times that AI will play medium pain sound before "upgrading" to a heavy pain sound (always 2) }}
| BGCOLOR="#FFEBEB" | 00 00 00 41
{{OBDtr| 0x08A | int16    |FFC8FF| 64 00       | 100        | chance of playing a death sound (always 100) }}
| 8.000000
{{OBDtr| 0x08C | int16    |FFC8FF| 0A 00       | 10          | minimum damage required for an AI to play the pain sound at maximum volume (always 10) }}
| ALIGN=LEFT | height where the diameter of the shadow decreases and the shadow fades out half
{{OBDtr| 0x08E | int16    |FFC8FF| 0C 00       | 12          | cumulative damage before a light pain sound gets upgraded to a medium pain sound (always 12) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x090 | int16    |FFC8FF| 16 00      | 22          | cumulative damage before a medium pain sound gets upgraded to a heavy pain sound (always 22) }}
| 0x34
{{OBDtr| 0x092 | int8    |FFC800| 00         | 0          | runtime only: if sound pointers have been set }}
| BGCOLOR="#FFEBEB" | 00 00 C0 40
{{OBDtr| 0x093 | char[1]  |C800C8| DE          | dead        | ignored }}
| 6.000000
{{OBDtr| 0x094 | float    |C87C64| 00 00 00 3F | 0.500000    | minimum volume of pain sound (before 0x08C is reached and volume becomes 100%) }}
| ALIGN=LEFT | height where the diameter of the shadow decreases
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light        | light hurt sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium        | medium hurt sound (reference to 08123-konoko_hurt_medium.imp.OSBD of level 0) }}
| 0x38
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy        | heavy hurt sound (reference to 08119-konoko_hurt_heavy.imp.OSBD of level 0) }}
| BGCOLOR="#FFEBEB" | 00 00 90 40
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death              | death sound (reference to 08115-konoko_death.imp.OSBD of level 0) }}
| 4.500000
{{OBDtr| 0x118 | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to light hurt sound }}
| ALIGN=LEFT | height where the diameter of the shadow decreases
{{OBDtr| 0x11C | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to medium hurt sound }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x120 | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to heavy hurt sound }}
| 0x3C
{{OBDtr| 0x124 | int32    |E7CEA5| 00 00 00 00 | 0          | runtime only: pointer to death sound }}
| BGCOLOR="#FFEBEB" | 00 00 40 40
| 3.000000
| ALIGN=LEFT | height where the diameter of the shadow decreases
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x40
| BGCOLOR="#FF9696" | 30 00
| 48
| ALIGN=LEFT | transparency of the shadow for the first part of a jump
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x42
| BGCOLOR="#FF9696" | 30 00
| 48
| ALIGN=LEFT | transparency of the shadow for the second part of a jump
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x44
| BGCOLOR="#DD0000" | 00 00 C8 41
| 25.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x48
| BGCOLOR="#FFFFC8" | 16
| 22
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x49
| BGCOLOR="#FFFFC8" | 06
| 6
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x4A
| BGCOLOR="#C8FFC8" | AD DE
| dead
| ALIGN=LEFT | blank filler (always there)
|}
|}


==0x4C-0x67==
 
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
;AI Constants
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
 
|0x4C
{{Table}}
| BGCOLOR="#C8FFFF" | 00 00 20 42
{{OBDth}}
| 40.000000
{{OBDtr| 0x128 | bitset  |E7CEA5| 17 00 00 00 | 23          | AI options bitset; see below }}
| ALIGN=LEFT | unknown; always the same
{{OBDtr| 0x12C | float    |FFDDDD| 00 00 80 3F | 1.000000   | AI rotation speed factor }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x130 | int16    |64AAAA| 06 00      | 6          | minimum number of frames AI remains in fallen position when it is knocked down }}
|0x50
{{OBDtr| 0x132 | int16    |64AAAA| 18 00      | 24          | maximum number of frames AI remains in fallen position when it is knocked down }}
| BGCOLOR="#C8FFFF" | 00 00 96 43
{{OBDtr| 0x134 | uint32  |EBEBEB| 0F 00 00 00 | 15          | number of frames after which AI realizes that it is in the firing spread and it starts dodging }}
| 300.000000
{{OBDtr| 0x138 | float    |8C8CCC| 00 00 80 3F | 1.000000   | minimum dodge time; how long AI should perform dodging/hiding in response to being inside a firing spread (the higher it is, the longer he will hide/dodge even after firing spread disappears) }}
| ALIGN=LEFT | unknown; always the same
{{OBDtr| 0x13C | float    |8C8CCC| 00 00 80 3F | 1.000000   | dodge priority dampening; the higher it is, the lower priority the AI gives to dodging }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x54
| BGCOLOR="#C8FFFF" | 35 FA 8E 3C
| 0.017453
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x58
| BGCOLOR="#C8FFFF" | DB 0F C9 3F
| 1.570796
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x5C
| BGCOLOR="#C8FFFF" | 00 00 A0 40
| 5.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x60
| BGCOLOR="#C8FFFF" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x64
| BGCOLOR="#FFC8FF" | 06 00
| 6
| ALIGN=LEFT | (inverse) hypo regeneration rate in frames per hitpoint
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|0x66
| BGCOLOR="#FFC8FF" | AD DE
| dead
| ALIGN=LEFT | blank filler (always there)
|}
|}
;Hypo regeneration
:1 hitpoint per 6 frames is 10 hitpoints per second
:(same setting for all characters)


==0x68-0x91==
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x68
| BGCOLOR="#FFC800" | 00 10 3D 48
| 193600.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x6C
| BGCOLOR="#FFC800" | 00 10 3D 47
| 48400.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x70
| BGCOLOR="#FFC800" | 00 10 3D 46
| 12100.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x74
| BGCOLOR="#FFC800" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x78
| BGCOLOR="#FFC800" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x7C
| BGCOLOR="#C800C8" | 23 00
| 35
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x7E
| BGCOLOR="#C800C8" | 5A 00
| 90
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x80
| BGCOLOR="#C800C8" | 0F 00
| 15
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x82
| BGCOLOR="#C800C8" | 78 00
| 120
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x84
| BGCOLOR="#C800C8" | 23 00
| 35
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x86
| BGCOLOR="#C800C8" | 01 00
| 1
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x88
| BGCOLOR="#C800C8" | 02 00
| 2
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x8A
| BGCOLOR="#C800C8" | 64 00
| 100
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x8C
| BGCOLOR="#C800C8" | 0A 00
| 10
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x8E
| BGCOLOR="#C800C8" | 0C 00
| 12
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x90
| BGCOLOR="#C800C8" | 16 00
| 22
| ALIGN=LEFT | unknown; always the same
|}


==0x92-0x127==
;AI options bitset
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
:allows or disables some parts of the AI behavior
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
*no flags - startle anim is enabled, rest is disabled
| 0x92
*0x01 - startle anim disabled
| BGCOLOR="#C87C64" | 00
*0x02 - firing spread/projectile dodge enabled for melee
| 0
*0x04 - requires 0x02; firing spread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging
| ALIGN=LEFT | runtime only: if 1 sound pointers have been set
*0x08 - requires 0x02, overrides 0x04 if both are set; firing spread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
*0x10 - bit not used
| 0x93
 
| BGCOLOR="#C87C64" | DE
| dead
| ALIGN=LEFT | blank filler (always there)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x94
| BGCOLOR="#B0C3D4" | 00 00 00 3F
| 0.500000
| ALIGN=LEFT | unknown; always the same (sound volume?)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x98
| BGCOLOR="#E7CEA5" COLSPAN=2 | <TT>konoko_hurt_light</TT><BR>+ null char + blank filler
| ALIGN=LEFT | hurt light sound<BR>(08121-konoko_hurt_light.imp.[[OBD:OSBD|OSBD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0xB8
| BGCOLOR="#E7CEA5" COLSPAN=2 | <TT>konoko_hurt_medium</TT><BR>+ null char + blank filler
| ALIGN=LEFT | hurt medium sound<BR>(08123-konoko_hurt_medium.imp.[[OBD:OSBD|OSBD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0xD8
| BGCOLOR="#E7CEA5" COLSPAN=2 | <TT>konoko_hurt_heavy</TT><BR>+ null char + blank filler
| ALIGN=LEFT | hurt heavy sound<BR>(08119-konoko_hurt_heavy.imp.[[OBD:OSBD|OSBD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0xF8
| BGCOLOR="#E7CEA5" COLSPAN=2 | <TT>konoko_death</TT><BR>+ null char + blank filler
| ALIGN=LEFT | death sound<BR>(08115-konoko_death.imp.[[OBD:OSBD|OSBD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x118
| BGCOLOR="#FFDDDD" | 00 00 00 00
| 0
| ALIGN=LEFT | runtime only: pointer to hurt light sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x11C
| BGCOLOR="#FFDDDD" | 00 00 00 00
| 0
| ALIGN=LEFT | runtime only: pointer to hurt medium sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x120
| BGCOLOR="#FFDDDD" | 00 00 00 00
| 0
| ALIGN=LEFT | runtime only: pointer to hurt heavy sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x124
| BGCOLOR="#FFDDDD" | 00 00 00 00
| 0
| ALIGN=LEFT | runtime only: pointer to death sound
|}


==0x128-0x137==
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x128
| BGCOLOR="#FFDDDD" | 17 00 00 00
| 23
| ALIGN=LEFT | general AI option bitset; see below
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x12C
| BGCOLOR="#64AAAA" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | AI rotation speed factor
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x130
| BGCOLOR="#EBEBEB" | 06 00
| 6
| ALIGN=LEFT | minimal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x132
| BGCOLOR="#EBEBEB" | 18 00
| 24
| ALIGN=LEFT | maximal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x134
| BGCOLOR="#EBEBEB" | 0F 00
| 15
| ALIGN=LEFT | 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)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x136
| BGCOLOR="#EBEBEB" | 00 00
| 0
| ALIGN=LEFT | maximal realize firingspread time; (???number of frames???time in miliseconds???)
|}
;AI rotation speed factor
;AI rotation speed factor
:reference rotation speed is about 1 turn (360&#65533;) per second
:reference rotation speed is about 1 turn (360°) per second
:the setting is only effective if the AI is in control
:the setting is only effective if the AI is in control
:so it's a bit like the AI's mouse sensitivity :)
:so it's a bit like the AI's mouse sensitivity :)
;General AI options bitset
: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 ^_^)  [[User:Loser|Loser]]
*0x01 disable startle anim? used by TCTF_swat_blackops, sniper_generic, Konokos, Griffins, Ninjas.
*0x02 enable dodge when melee? used by everyone except Barabas.
*0x04 enable dodge when armed? used by bomber, Black Ops, Comguys, Furies, Konokos, Griffins, Mukade.
*0x08 ? NOT used by Barabas, civilians, bomber, Black Ops, Comguys, Furies, Konokos, Griffins, Mukade.
*0x10 enable dodging backfire? used by Barabas, Comguys, Ninjas, Furies, Konokos, Griffins, TCTF Lites, female cops, hard Strikers.
:Observations
:*02 startle anim played, dodging enabled, dodging backfire disabled
:*17 startle anim NOT played, dodging enabled, dodging backfire enabled


==0x138 - 0x15B==
 
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
;AI Targeting Prediction Constants
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
 
| 0x138
See [[XML:ONCC#.3CTargeting.3E|HERE]] for how the variables here interact to control the AI's target prediction.
| BGCOLOR="#8C8CCC" | 00 00 80 3F
 
| 1.000000
{{Table}}
| ALIGN=LEFT | 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)
{{OBDth}}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x140 | float    |8C8CCC| 00 00 00 3F | 0.500000   | multiplied against target's distance to get error in AI's/turret's first wild shot (always 0.5) }}
| 0x13C
{{OBDtr| 0x144 | float    |8C8CCC| 00 00 C8 41 | 25.000000   | max value for result of multiplication above (always 25) }}
| BGCOLOR="#8C8CCC" | 00 00 80 3F
{{OBDtr| 0x148 | float    |8C8CCC| 00 00 80 3F | 1.000000   | accuracy multiplier for prediction of target's position (always 1) }}
| 1.000000
{{OBDtr| 0x14C | int32    |FF00C8| 00 00 00 00 | 0           | maximum allowed frames of lookback to be used for predicting target's position (always 0) }}
| ALIGN=LEFT | maximal firingspread dodge amount; IMO similar to maneouvre variable
{{OBDtr| 0x150 | int32    |FF00C8| 05 00 00 00 | 5           | frames of delay in recognizing target's current position (always 5) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x154 | int32    |FF00C8| 0F 00 00 00 | 15         | number of frames over which AI can average target's velocity to help predict position (always 15) }}
| 0x140
{{OBDtr| 0x158 | int32    |FF00C8| 3C 00 00 00 | 60         | size in frames of target's history location buffer (always 60) }}
| BGCOLOR="#8C8CCC" | 00 00 00 3F
| 0.500000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x144
| BGCOLOR="#8C8CCC" | 00 00 C8 41
| 25.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x148
| BGCOLOR="#8C8CCC" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | unknown;
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x14C
| BGCOLOR="#FF00C8" | 00 00 00 00
| 0
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x150
| BGCOLOR="#FF00C8" | 05 00 00 00
| 5
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x154
| BGCOLOR="#FF00C8" | 0F 00 00 00
| 15
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x158
| BGCOLOR="#FF00C8" | 3C 00 00 00
| 60
| ALIGN=LEFT | 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''')
;AI Weapon Skills
{| BORDER=1 CELLPADDING=2 CELLSPACING=0
 
|-BGCOLOR="#FFDDBB"
This is an array of 13 sets of skill variables, one for each weapon. Below is the data for the first element:
!Weapon
 
!Offset
{{Table}}
!recoil
{{OBDth}}
!bestangle
{{OBDtr| 0x15C | float    |F0F096| 00 00 00 00 | 0.000000   | recoil compensation amount (0.0 <nowiki>= no compensation, 1.0 =</nowiki> no recoil) }}
!error
{{OBDtr| 0x160 | float    |F0F096| 00 00 00 00 | 0.000000    | minimum aiming error as an angle in radians }}
!decay
{{OBDtr| 0x164 | float    |F0F096| 00 00 00 00 | 0.000000    | shot grouping error as a percentage }}
!inaccuracy
{{OBDtr| 0x168 | float    |F0F096| 00 00 80 3F | 1.000000    | how quickly aiming inaccuracy decreases or increases while shooting (ranges from 0.0 to 1.0) }}
!delays
{{OBDtr| 0x16C | float    |F0F096| 00 00 80 3F | 1.000000    | shooting inaccuracy multiplier }}
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x170 | uint16  |00C864| 00 00       | 0           | minimum delay in ticks before pulling the trigger again }}
!w0_sec
{{OBDtr| 0x172 | uint16  |00C864| 00 00       | 0           | maximum delay in ticks before pulling the trigger again }}
|0x15C/0x173
| 0.0
| 0.000000
| 0.00
| 1.0
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w1_tap
|0x174/0x18B
| 0.0
| 0.000000
| 0.40
| 0.4
| 0.0
| 30 - 45
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w2_sap
|0x18C/0x193
| 0.3
| 0.013962
| 0.13
| 1.0
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w3_phr
|0x194/0x20B
| 0.3
| 0.010472
| 0.05
| 0.5
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w4_psm
|0x20C/0x213
| 0.3
| 0.015707
| 0.03
| 0.2
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w5_sbg
|0x214/0x22B
| 0.3
| 0.001745
| 0.00
| 0.1
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w6_vdg
|0x22C/0x233
| 0.3
| 0.001745
| 0.13
| 0.9
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w7_scc
|0x234/0x24B
| 0.3
| 0.001745
| 0.05
| 0.1
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w8_mbo
|0x24C/0x253
| 0.3
| 0.005236
| 0.01
| 0.5
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w9_scr
|0x254/0x26B
| 0.3
| 0.010472
| 0.04
| 0.5
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w10_sni
|0x26C/0x273
| 0.0
| 0.000000
| 0.00
| 1.00
| 1.00
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w11_ba1
|0x274/0x28B
| 0.0
| 0.000000
| 0.00
| 1.0
| 1.0
| 0 - 0
|-ALIGN=CENTER BGCOLOR="#FFEEDD"
!w12_ba2
|0x28B/0x293
| 0.0
| 0.000000
| 0.00
| 1.0
| 1.0
| 0 - 0
|}
|}


==0x294 - 0x2AF==
AI weapon skills 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).
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
 
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
The first weapon (weapon 0) is not in the game anymore, whatever it was. Mutant Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's Devil Star, except '''w10_sni''' is still available). Barabas' Wave Motion Cannon is a bit mixed up since the beam is made of '''w12_ba2''' particles and the grenade is a '''w11_ba1''' particle.
| 0x294
 
| BGCOLOR="#C80040" | 5A 00 00 00
{{Table}}
| 90
|- bgcolor="#E9E9E9" align=center
| ALIGN=LEFT | unknown; always the same
!Weapon      ||Offset    ||recoil||bestangle||error||decay||inaccuracy||delays
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|- align=center   
| 0x298
|'''w0_sec''' ||0x15C/0x173|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0
| BGCOLOR="#C80040" | F0 00 00 00
|- align=center   
| 240
|'''w1_tap''' ||0x174/0x18B|| 0.0  || 0.000000|| 0.40|| 0.4 || 0.0      || 30 - 45
| ALIGN=LEFT | unknown; always the same
|- align=center   
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|'''w2_sap''' ||0x18C/0x193|| 0.3  || 0.013962|| 0.13|| 1.0 || 1.0      || 0 - 0
| 0x29C
|- align=center   
| BGCOLOR="#C80040" | B4 00 00 00
|'''w3_phr''' ||0x194/0x20B|| 0.3  || 0.010472|| 0.05|| 0.5 || 1.0      || 0 - 0
| 180
|- align=center   
| ALIGN=LEFT | unknown; always the same
|'''w4_psm''' ||0x20C/0x213|| 0.3  || 0.015707|| 0.03|| 0.2 || 1.0      || 0 - 0
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|- align=center   
| 0x2A0
|'''w5_sbg''' ||0x214/0x22B|| 0.3  || 0.001745|| 0.00|| 0.1 || 1.0      || 0 - 0
| BGCOLOR="#C80040" | 28 00 00 00
|- align=center   
| 40
|'''w6_vdg''' ||0x22C/0x233|| 0.3  || 0.001745|| 0.13|| 0.9 || 1.0      || 0 - 0
| ALIGN=LEFT | unknown; always the same
|- align=center   
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|'''w7_scc''' ||0x234/0x24B|| 0.3  || 0.001745|| 0.05|| 0.1 || 1.0      || 0 - 0
| 0x2A4
|- align=center   
| BGCOLOR="#C80040" | 37 00 00 00
|'''w8_mbo''' ||0x24C/0x253|| 0.3  || 0.005236|| 0.01|| 0.5 || 1.0      || 0 - 0
| 55
|- align=center   
| ALIGN=LEFT | 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
|'''w9_scr''' ||0x254/0x26B|| 0.3  || 0.010472|| 0.04|| 0.5 || 1.0      || 0 - 0
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|- align=center   
| 0x2A8
|'''w10_sni'''||0x26C/0x273|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0
| BGCOLOR="#C80040" | 3C 00 00 00
|- align=center   
| 60
|'''w11_ba1'''||0x274/0x28B|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0     || 0 - 0
| ALIGN=LEFT | 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
|- align=center   
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
|'''w12_ba2'''||0x28B/0x293|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0
| 0x2AC
| BGCOLOR="#FFCD96" | 00 00
| 0
| ALIGN=LEFT | CMBT profile ID; for example it is *0D* for Mutant Muro
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x2AE
| BGCOLOR="#FFCD96" | 16 00
| 22
| ALIGN=LEFT | MELE profile ID;
|}
|}


==0x2B0-0x3FB==
 
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
;Other AI Behaviors
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
[[Image:oncc_m.gif]]
| 0x2B0
 
| BGCOLOR="#C8C864" | 64
{{Table}}
| 100
{{OBDth}}
| ALIGN=LEFT | "taunt" sound slot is used
{{OBDtr| 0x294 | int32    |00C8FF| 5A 00 00 00 | 90          | how long AI will continue shooting a dead body to make sure it's dead (always 90) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x298 | int32    |00C8FF| F0 00 00 00 | 240        | how long AI will stand over dead body before returning to last job (always 240) }}
| 0x2B1
{{OBDtr| 0x29C | int32    |00C8FF| B4 00 00 00 | 180        | how long after losing sight of target until AI engages pursuit mode (always 180) }}
| BGCOLOR="#C8C864" | 00
{{OBDtr| 0x2A0 | int32    |00C8FF| 28 00 00 00 | 40          | chance (as a percentage) of AI taunting a dead body }}
| 0
{{OBDtr| 0x2A4 | int32    |00C8FF| 37 00 00 00 | 55          | chance (as a percentage) of AI running to some weapon to pick it up; can be checked in Dev Mode with the '''debug_gun_behavior''' command }}
| ALIGN=LEFT | "alert" sound slot is empty
{{OBDtr| 0x2A8 | int32    |00C8FF| 3C 00 00 00 | 60          | chance (as a percentage) of AI performing a running weapon pickup (including acrobatics moves, slides) instead of the normal "stop and pick up"; this is calculated after the engine decides that the AI will go for a gun }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x2AC | int16    |C80040| 00 00      | 0          | combat profile ID; for example *0D* is for Mutant Muro }}
| 0x2B2
{{OBDtr| 0x2AE | int16    |C80040| 16 00       | 22          | melee profile ID }}
| BGCOLOR="#C8C864" | 00
{{OBDtr| 0x2B0 | int8    |FFCD96| 64          | 100        | "taunt" sound probability (always) }}
| 0
{{OBDtr| 0x2B1 | int8    |FFCD96| 00          | 0          | "alert" sound probability (never) }}
| ALIGN=LEFT | "startle" sound slot is empty
{{OBDtr| 0x2B2 | int8    |FFCD96| 00         | 0           | "startle" sound probability (never) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x2B3 | int8    |FFCD96| 00         | 0           | "checkbody" sound probability (never) }}
| 0x2B3
{{OBDtr| 0x2B4 | int8    |FFCD96| 00         | 0           | "pursue" sound probability (never) }}
| BGCOLOR="#C8C864" | 00
{{OBDtr| 0x2B5 | int8    |FFCD96| 00         | 0           | "cower" sound probability (never) }}
| 0
{{OBDtr| 0x2B6 | int8    |FFCD96| 64         | 100         | "superpunch" probability (always) }}
| ALIGN=LEFT | "checkbody" sound slot is empty
{{OBDtr| 0x2B7 | int8    |FFCD96| 64         | 100         | "superkick" probability (always) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x2B8 | int8    |FFCD96| 00         | 0           | "super3" sound probability (never) }}
| 0x2B4
{{OBDtr| 0x2B9 | int8    |FFCD96| 00         | 0           | "super4" sound probability (never) }}
| BGCOLOR="#C8C864" | 00
{{OBDtr| 0x2BA | int16    |C8C864| 00 00       | 0           | probably a blank filler (always the same) }}
| 0
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko           | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}
| ALIGN=LEFT | "pursue" sound slot is empty
{{OBDtr2|0x2DC | char[32] |0096C8| unused                    | "alert" sound name }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr2|0x2FC | char[32] |0096C8| unused                    | "startle" sound name }}
| 0x2B5
{{OBDtr2|0x31C | char[32] |0096C8| unused                    | "checkbody" sound name }}
| BGCOLOR="#C8C864" | 00
{{OBDtr2|0x33C | char[32] |0096C8| unused                    | "pursue" sound name }}
| 0
{{OBDtr2|0x35C | char[32] |0096C8| unused                    | "cower" sound name }}
| ALIGN=LEFT | "cower" sound slot is empty
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko           | "superpunch" sound name (reference to 08110-c17_99_28konoko.amb.OSBD of level 0) }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko           | "superkick" sound name (reference to 08112-c17_99_28konoko.amb.OSBD of level 0) }}
| 0x2B6
{{OBDtr2|0x3BC | char[32] |0096C8| unused                    | "super3" sound name (only Mukade uses this slot) }}
| BGCOLOR="#C8C864" | 64
{{OBDtr2|0x3DC | char[32] |0096C8| unused                    | "super4" sound name (never used in game data) }}
| 100
{{OBDtrBK|The following 7 vision fields are used to detect if a character can be seen by AI; see Vision Field below for explanation }}
| ALIGN=LEFT | "superpunch" sound slot is used
{{OBDtr| 0x3FC | float    |FF80C0| 00 80 ED 43 | 475.000000  | central vision distance }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x400 | float    |FF80C0| 00 00 16 43 | 150.000000  | peripheral vision distance }}
| 0x2B7
{{OBDtr| 0x404 | float    |FF80C0| 7D 1B 44 3F | 0.766044    | vertical vision range }}
| BGCOLOR="#C8C864" | 64
{{OBDtr| 0x408 | float    |FF80C0| F3 B3 51 3F | 0.819152    | central vision range }}
| 100
{{OBDtr| 0x40C | float    |FF80C0| E8 D5 12 3F | 0.573576    | central vision max }}
| ALIGN=LEFT | "superkick" sound slot is used
{{OBDtr| 0x410 | float    |FF80C0| D5 D0 31 3E | 0.173648    | peripheral vision range }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x414 | float    |FF80C0| 6B 61 D8 BE | 0.422618    | peripheral vision max }}
| 0x2B8
{{OBDtr| 0x418 | int32    |D0C0AF| B4 00 00 00 | 180        | how long will AI know exactly where its enemy is even if it can't see him with central vision field, and attempt to attack him }}
| BGCOLOR="#C8C864" | 00
{{OBDtr| 0x41C | int32    |D0C0AF| 84 03 00 00 | 900        | how long will AI remain strongly convinced that there is an enemy, but will investigate his presence rather than attack him }}
| 0
{{OBDtr| 0x420 | int32    |D0C0AF| 10 0E 00 00 | 3600        | how long an AI will remain weakly convinced of an enemy's presence, looking around aimlessly to find him (Glance pursuit mode) }}
| ALIGN=LEFT | "super3" sound slot is empty
{{OBDtr| 0x424 | int32    |D0C0AF| 10 0E 00 00 | 3600        | decay time for dropping back from high alert to medium alert }}
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
{{OBDtr| 0x428 | int32    |D0C0AF| 50 46 00 00 | 18000      | decay time for dropping back from medium alert to low alert }}
| 0x2B9
{{OBDtr| 0x42C | int32    |D0C0AF| A0 8C 00 00 | 36000      | decay time for dropping back from low alert to no alert status }}
| BGCOLOR="#C8C864" | 00
{{OBDtr| 0x430 | float    |EEDDFF| 00 00 80 3F | 1.000000    | hearing radius; defines size of the sound-detection sphere around an AI }}
| 0
| ALIGN=LEFT | "super4" sound slot is empty (always the same)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x2BA
| BGCOLOR="#0096C8" | 00 00
| 0
| ALIGN=LEFT | probably a blank filler (always the same)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x2BC
| BGCOLOR="#FF80C0" COLSPAN=2 | <TT>c17_99_28konoko</TT>
| ALIGN=LEFT | "taunt" sound (04760-c17_99_28konoko.aif.[[OBD:SNDD|SNDD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x2DC
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "alert" sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x2FC
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "startle" sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x31C
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "checkbody" sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x33C
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "pursue" sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x35C
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "cower" sound
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x37C
| BGCOLOR="#FF80C0" COLSPAN=2 | <TT>c18_79_14konoko</TT>
| ALIGN=LEFT | "superpunch" sound (04766-c18_79_14konoko.aif.[[OBD:SNDD|SNDD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x39C
| BGCOLOR="#FF80C0" COLSPAN=2 | <TT>c18_79_15konoko</TT>
| ALIGN=LEFT | "superkick" sound (04767-c18_79_15konoko.aif.[[OBD:SNDD|SNDD]] of level 0)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x3BC
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "super3" sound (only the superninja uses this slot)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| 0x3DC
| BGCOLOR="#FF80C0" COLSPAN=2 | not used
| ALIGN=LEFT | "super4" sound (never used in Oni)
|}
|}


==0x3FC==
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0 BGCOLOR="#000000"
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | 00 80 ED 43
| 475.000000
| ALIGN=LEFT | central vision field range; you can make it visible with the script command <FONT COLOR="#0000FF">ai2_showvision = 1</FONT> (light blue one)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | 00 00 16 43
| 150.000000
| ALIGN=LEFT | peripheral vision field range; you can make it visible with the script command <FONT COLOR="#0000FF">ai2_showvision = 1</FONT> (dark blue one)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | 7D 1B 44 3F
| 0.766044
| ALIGN=LEFT | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye). Works for both vision fields.
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | F3 B3 51 3F
| 0.819152
| ALIGN=LEFT | 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).
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | E8 D5 12 3F
| 0.573576
| ALIGN=LEFT | vertical angle between eye-rays in one couple; this is for central vision field
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | D5 D0 31 3E
| 0.173648
| ALIGN=LEFT | vision field curve for peripheral vision field
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#D0C0AF" | 6B 61 D8 BE
| 0.422618
| ALIGN=LEFT | vertical angle between eye-rays in one couple; this is for peripheral vision field
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#EEDDFF" | B4 00 00 00
| 180
| ALIGN=LEFT | 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)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#EEDDFF" | 84 03 00 00
| 900
| ALIGN=LEFT | 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
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#EEDDFF" | 10 0E 00 00
| 3600
| ALIGN=LEFT | 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
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#EEDDFF" | 10 0E 00 00
| 3600
| ALIGN=LEFT | 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)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#EEDDFF" | 50 46 00 00
| 18000
| ALIGN=LEFT | 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
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#EEDDFF" | A0 8C 00 00
| 36000
| ALIGN=LEFT | 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
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#C5FF8A" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | earshot radius; defines size of the sound-collision sphere around AI
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#C0C0C0" | 01 '''FB 03''' 00
| 1019
| ALIGN=LEFT | link to 01019-konoko.[[OBD:ONCV|ONCV]] : defines variants and upgrades
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#C0C0C0" | 01 '''F9 03''' 00
| 1017
| ALIGN=LEFT | link to 01017-.[[OBD:ONCP|ONCP]] : lists the particles available for this character (trails, flashes, etc)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#C0C0C0" | 01 '''FA 03''' 00
| 1018
| ALIGN=LEFT | link to 01018-.[[OBD:ONIA|ONIA]] : lists the special impact sounds (used for special combat moves)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FF0080" | 00 00 00 00
| 0
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FFFFA6" COLSPAN=2 | <TT>Light</TT>
| ALIGN=LEFT | modifier; either hardcoded or defunct (only visible in '''pm_mod_type.WMM_''', level 0)<BR>edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_Walk</TT>
| ALIGN=LEFT | walk impact (04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same;<BR>without the impacts you can't hear the steps of a character
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_RunMain</TT>
| ALIGN=LEFT | run impact (04129-Footstep_RunMain.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_Crouch</TT>
| ALIGN=LEFT | crouch impact (04123-Footstep_Crouch.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Fall_Slide</TT>
| ALIGN=LEFT | fall slide impact (04122-Fall_Slide.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Fall_Land</TT>
| ALIGN=LEFT | fall land impact (04119-Fall_Land.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Fall_LandHard</TT>
| ALIGN=LEFT | land hard impact (04120-Fall_LandHard.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Fall_Knockdown</TT>
| ALIGN=LEFT | fall knockdown impact (04118-Fall_Knockdown.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Fall_Knockdown</TT>
| ALIGN=LEFT | fall knockdown impact (04118-Fall_Knockdown.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Fall_Knockdown</TT>
| ALIGN=LEFT | fall knockdown impact (04118-Fall_Knockdown.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_Turn</TT>
| ALIGN=LEFT | turn impact (04135-Footstep_Turn.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_RunStart</TT>
| ALIGN=LEFT | run start impact (04131-Footstep_RunStart.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_SingleStep</TT>
| ALIGN=LEFT | single step impact (04134-Footstep_SingleStep.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_RunStop</TT>
| ALIGN=LEFT | run stop impact (04133-Footstep_RunStop.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_WalkStop</TT>
| ALIGN=LEFT | walk stop impact (04137-Footstep_WalkStop.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" COLSPAN=2 | <TT>Footstep_RunSprint</TT>
| ALIGN=LEFT | run fast impact (04130-Footstep_RunSprint.[[OBD:Impt|Impt]] of level 0); always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#71FFB8" | FF FF
| 65535
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#0000BF" | 00 00
| 0
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#804040" COLSPAN=2 | not used
| ALIGN=LEFT | special death particles; only the mad bomber use it
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FF22FF" | 00 00 00 00
| 0
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FF22FF" | 00 00 00 00
| 0
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#808080" | 01 '''E6 03''' 00
| 998
| ALIGN=LEFT | link to 00998-konoko_body_high.[[OBD:TRBS|TRBS]]
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#808080" | 01 '''E7 03''' 00
| 999
| ALIGN=LEFT | link to 00999-konoko002_high_texture_generic.[[OBD:TRMA|TRMA]]
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#808080" | 01 '''E8 03''' 00
| 1000
| ALIGN=LEFT | link to 01000-.[[OBD:CBPM|CBPM]]
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#808080" | 01 '''EC 03''' 00
| 1004
| ALIGN=LEFT | link to 01004-.[[OBD:CBPI|CBPI]]
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FFAA82" | 2C 01 00 00
| 300
| ALIGN=LEFT | fight mode timer in 1/60 seconds
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FFAA82" | 30 75 00 00
| 30000
| ALIGN=LEFT | 1st idle animation timer in 1/60 seconds (Thanks to Loser for this info.)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FFAA82" | 30 75 00 00
| 30000
| ALIGN=LEFT | 2nd idle animation timer in 1/60 seconds (Thanks to Loser for this info.)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FFAA82" | C8 00 00 00
| 200
| ALIGN=LEFT | basic health of the character model; extra health informations for every unique character you'll find in the [[OBD:BINA/Character|Character.BINA]] file
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#FFAA82" | 48 00 00 00
| 72
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | minimal body size factor (Thanks to geyser for this info.)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | maximal body size factor (Thanks to geyser for this info.)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 3F
| 0.500000
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 80 3E
| 0.250000
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#00D900" | 00 00 00 3F
| 0.500000
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#CACAFF" | 01 ''F6 03'' 00
| 1014
| ALIGN=LEFT | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]]
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#CACAFF" | 01 ''F7 03'' 00
| 1015
| ALIGN=LEFT | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]]
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#F0F000" | 1E 00
| 30
| ALIGN=LEFT | unknown; always the same
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#F0F000" | 00 00
| 0
| ALIGN=LEFT | time between death and deletion, in frames (about 3 seconds for mad bomber)
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#E7FFCE" | 00
| 0
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#E7FFCE" | 01
| 1
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#E7FFCE" | 00
| 0
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#E7FFCE" | 00
| 0
| ALIGN=LEFT | unknown
|- VALIGN=TOP ALIGN=CENTER BGCOLOR="#FFEEDD"
| BGCOLOR="#4F7291" | AD DE AD DE
| dead
| ALIGN=LEFT | 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)


;Vision Field
See [[XML:ONCC#.3CVisionConstants.3E|HERE]] for details on how this works.


----


==Overview table==
;File Links
Maybe split it up and insert the pieces after every section's header.


http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/oncc_a.gif
{{Table}}
{{OBDth}}
{{OBDtr| 0x434 | link    |C5FF8A| 01 FB 03 00 | 1019        | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}
{{OBDtr| 0x438 | link    |C5FF8A| 01 F9 03 00 | 1017        | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}
{{OBDtr| 0x43C | link    |C5FF8A| 01 FA 03 00 | 1018        | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}
{{OBDtr| 0x440 | int8    |C5FF8A| 00          | unused      | runtime only }}
{{OBDtr| 0x441 | int8    |C5FF8A| 00          | unused      | padding }}
{{OBDtr| 0x442 | int16    |C5FF8A| 00 00      | unused      | runtime only }}
{{OBDtr2|0x444 | char[16] |C0C0C0| 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 }}
{{OBDtrBK|1=Array of 15 impact elements: first element }}
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk            | walk impact (reference to 04124-Footstep_Walk.Impt of level 0); always the same; without the impacts you can't hear the steps of a character }}
{{OBDtr| 0x4D4 | int16    |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}
{{OBDtrBK|1=End of array }}
{{OBDtr| 0xBF2 | char[2]  |FFFFA5| 00 00 | unused | padding (seen below) }}
|}
<br>
<br>


[[Image:oncc_e.gif]]


http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/oncc_m.gif


{{Table}}
{{OBDth}}
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused                    | special death particle; only the Mad Bomber uses it }}
{{OBDtr| 0xC34 | link    |0000BF| 00 00 00 00 | unused      | runtime: link to death particle class }}
{{OBDtr| 0xC38 | link    |0000BF| 00 00 00 00 | unused      | runtime: cache of derived information on body model geometry }}
{{OBDtr| 0xC3C | link    |0000BF| 01 E6 03 00 | 998        | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}
{{OBDtr| 0xC40 | link    |0000BF| 01 E7 03 00 | 999        | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}
{{OBDtr| 0xC44 | link    |0000BF| 01 E8 03 00 | 1000        | link to [[OBD:CBPM|01000-.CBPM]] }}
{{OBDtr| 0xC48 | link    |0000BF| 01 EC 03 00 | 1004        | link to [[OBD:CBPI|01004-.CBPI]] }}
{{OBDtr| 0xC4C | int32    |804040| 2C 01 00 00 | 300        | how long in ticks before character can leave fight mode }}
{{OBDtr| 0xC50 | int32    |804040| 30 75 00 00 | 30000      | how long in ticks before the Idle animation can be played the first time }}
{{OBDtr| 0xC54 | int32    |804040| 30 75 00 00 | 30000      | how long in ticks before the Idle animation can be played another time }}
{{OBDtr| 0xC58 | int32    |804040| C8 00 00 00 | 200        | base health of the character model; specific health information for every unique character is stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}}
{{OBDtr| 0xC5C | int32    |804040| 48 00 00 00 | 72          | unused }}
{{OBDtr| 0xC60 | float    |FF22FF| 00 00 80 3F | 1.000000    | minimum body size factor }}
{{OBDtr| 0xC64 | float    |FF22FF| 00 00 80 3F | 1.000000    | maximum body size factor }}
{{Anchor|DamageTypes}}
{{OBDtrBK|The following 7 float values are ONCC-specific multipliers for each of the 7 PAR3 DamageTypes. See [[Particle damage types]] for an explanation of DamageTypes. Values range from 0.0-1.0, with 0 meaning "no immunity" and 1 meaning "total immunity".<br>
Note: These multipliers only affect the stun damage and knockback components of a PAR3 action, not the HP damage dealt.}}
{{OBDtr| 0xC68 | float    |FF22FF| 00 00 00 00 | 0.000000    | "Normal" DamageType multiplier }}
{{OBDtr| 0xC6C | float    |FF22FF| 00 00 00 00 | 0.000000    | "MinorStun" DamageType multiplier }}
{{OBDtr| 0xC70 | float    |FF22FF| 00 00 00 3F | 0.500000    | "MajorStun" DamageType multiplier }}
{{OBDtr| 0xC74 | float    |FF22FF| 00 00 80 3E | 0.250000    | "MinorKnockdown" DamageType multiplier }}
{{OBDtr| 0xC78 | float    |FF22FF| 00 00 00 00 | 0.000000    | "MajorKnockdown" DamageType multiplier }}
{{OBDtr| 0xC7C | float    |FF22FF| 00 00 00 00 | 0.000000    | "Blownup" DamageType multiplier }}
{{OBDtr| 0xC80 | float    |FF22FF| 00 00 00 00 | 0.000000    | "Pickup" DamageType multiplier }}
{{OBDtr| 0xC84 | float    |FF22FF| 00 00 00 3F | 0.500000    | damage reducer, employed when the character has a [[boss shield]] (0.0-1.0 <nowiki>=</nowiki> 0%-100%) }}
{{OBDtr| 0xC88 | link    |808080| 01 F6 03 00 | 1014        | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }}
{{OBDtr| 0xC8C | link    |808080| 01 F6 03 00 | 1015        | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }}
{{OBDtr| 0xC90 | int16    |FFAA82| 1E 00      | 30          | unused (formerly an AI's rate of fire) }}
{{OBDtr| 0xC92 | int16    |FFAA82| 00 00      | 0          | time between death and deletion, in frames (0 for all characters except Mad Bomber, who is 190 ticks) }}
{{OBDtr| 0xC94 | bitset  |00D900| 00          | 0          | TRSC bitset; see below }}
{{OBDtr| 0xC95 | int8    |00D900| 01          | 1          | character has Daodan powers (can overheal with hypos, do more damage in overpower mode) and can display a Daodan aura particle)}}
{{OBDtr| 0xC96 | int8    |00D900| 00          | 0          | character has [[supershield]] }}
{{OBDtr| 0xC97 | int8    |00D900| 00          | 0          | knockdown resistant (used by MutantMuro.ONCC) }}
|}


http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/oncc_e.gif


;TRSC bitset
:Determines whether character is left-handed or right-handed (weapon is attached to left or right fist bone). Must be consistent with character's TRSC or glitches appear. Possibilities are:
:NONE - Character is right-hander with both pistols and rifles
:0x01 - Character is left-hander with both pistols and rifles
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)


----
 
----
;Body size factor
{|align=center
{|align=right
![[OBD:Oni Binary Data|ONI BINARY DATA]]
|[[Image:ONCC_body_size_factor-original.jpg|120px]]
|-
![[OBD:OFGA|OFGA]] << [[OBD:File types|Other file types]] >> [[OBD:ONCP|ONCP]]
|-
|-
!ONCC : Oni Character Class
|[[Image:ONCC_body_size_factor-spawn_order_change.jpg|120px]]
|}
|}
:The geometry specified in a character's [[TRBS]] (Totoro body set) can be multiplied by a scale factor. For example, the '''minime''' and '''behemoth''' [[cheats]] set that factor to 0.25 or 1.8, and back to 1. The size can be used for specific purposes (mini-Strikers, Mutant Muro, giant Shinatama), or it can be used to add generic variety to Oni's characters, as a complement to "character variants" ([[ONCV]]).
:The floats at 0xC60 and 0xC64 define a range in which Oni can pick a random body size factor (if the two values are identical, then the body size factor is effectively fixed instead of random). Konoko, Shinatama (both regular and zombified), Griffin (both variants) and Muro all have a fixed body size of 1. Mini-Strikers have 0.5 and giant Shinatama has 7 (yes, [[seven]]).
:Everybody else (including Barabas, Mukade and Kerr) has a random body size within 5% of 1 (i.e., the floats at 0xC60 and 0xC64 are 0.95 and 1.05). Mutant Muro is a bit odd because his "minimum" body size 1.75 and the "maximum" is 1.74 (the difference is barely noticeable anyway). In the [[Anniversary Edition]], some characters have altered factors (e.g., [[Shinatama Too]]).
:The random value is different every time the [[ONCC]] is looked up (e.g., when a character is spawned or shapeshifted) and is not reproducible. Here is a simple script for {{C|6}} a.k.a. [[IGMD/tctf]] (remove all BSL files and leave only the one below):
func main
{
  ai2_allpassive 1
  ai2_spawn a_v3
  ai2_spawn Lv_40
  ai2_spawn lobby_victim05
  chr_location 1 -1255 -1.5 50
  chr_location 2 -1255 -1.5 60
  chr_location 3 -1255 -1.5 70
  chr_location 4 -1255 -1.5 80
  ai2_lookatme
}
:This script lines up four "usual suspects" against a wall in the parking lot of the TCTF HQ. Load the level repeatedly and note how their heights vary.
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}
{{OBD}}

Latest revision as of 19:08, 29 February 2024

ONI BINARY DATA
OFGA << Other file types >> ONCP
ONCC : Oni Character Class
switch to XML:ONCC page
Overview @ Oni Stuff
OBD.png

Oncc a.gif

Offset Type Raw Hex Value Description
0x000 res_id 01 DF 03 00 991 00991-konoko_generic.ONCC
0x004 lev_id 01 00 00 06 0 level 3
0x008 float CD CC 0C 3F 0.550000 fall speed (always 0.55) (mostly unused, see below)
0x00C float 8F C2 75 3D 0.060000 strength of gravity for this character
0x010 float CD CC 8C 3F 1.100000 starting velocity for a simple (tap) JUMP
0x014 float 00 00 80 C0 -4.000000 maximum velocity for jumping and falling
0x018 float 8F C2 F5 3C 0.030000 upward acceleration as long as you hold JUMP
0x01C int16 07 00 7 fall timer (always 7) (mostly unused, see below)
0x01E int16 14 00 20 how long you can continue holding down JUMP to increase the height of your jump
0x020 float 00 00 34 42 45.000000 maximum falling height without damage
0x024 float 00 00 07 43 135.000000 maximum falling height with damage


Units
times are in frames
heights are in world units (0.1m or 4")
velocities are in world units per tick (1/60s)
accelerations are in world units per tick squared


Fall speed and timer
These two fields are only looked at when predicting whether an attack will hit a target while the attacker is in midair. They are probably a development relic that is looked at in error, as the actual falling speed is determined by 0x00C and the actual fall timer is 0x01E.


Jetpack timer
You can press JUMP multiple times during the time window when it's large enough. See the Barabas Jetpack mod for an application of this principle.


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


Shadow Constants
Offset Type Raw Hex Value Description
0x028 link 01 F8 03 00 1016 link to 01016-shadow1.TXMP
0x02C float 00 00 40 41 12.000000 height where the diameter of the shadow shrinks to 0x03C
0x030 float 00 00 00 41 8.000000 height range over which the diameter of the shadow decreases from 0x034 to 0x038 and the shadow starts to fades out from 0x040 to 0x042
0x034 float 00 00 C0 40 6.000000 maximum diameter of the shadow
0x038 float 00 00 90 40 4.500000 diameter that the shadow shrinks to when 0x030 is reached
0x03C float 00 00 40 40 3.000000 minimum diameter of the shadow
0x040 int16 30 00 48 starting transparency of the shadow as the character rises towards 0x030
0x042 int16 30 00 48 starting transparency of the shadow when the character begins to get above 0x030


Jump Constants
Offset Type Raw Hex Value Description
0x044 float 00 00 C8 41 25.000000 unused (always 25)
0x048 int8 16 22 unused (always 22)
0x049 int8 06 6 unused (always 6)
0x04A char[2] AD DE dead pad


Cover Constants
Offset Type Raw Hex Value Description
0x04C float 00 00 20 42 40.000000 unused (always 40)
0x050 float 00 00 96 43 300.000000 unused (always 300)
0x054 float 35 FA 8E 3C 0.017453 unused (always π/180)
0x058 float DB 0F C9 3F 1.570796 unused (always π/2)


Autofreeze Constants
Offset Type Raw Hex Value Description
0x05C float 00 00 A0 40 5.000000 unused (always 5)
0x060 float 00 00 80 3F 1.000000 unused (always 1)


Inventory Constants
Offset Type Raw Hex Value Description
0x064 int16 06 00 6 hypo regeneration rate in ticks per hit point restored
0x066 char[2] AD DE dead ignored


LOD Constants

Squares of the distance from the camera at which each LOD kicks in (this article has the full calculation for arriving at the LOD to use)

Offset Type Raw Hex Value Description
0x068 float 00 10 3D 48 193600.000000 always 440 squared
0x06C float 00 10 3D 47 48400.000000 always 220 squared
0x070 float 00 10 3D 46 12100.000000 always 110 squared
0x074 float 00 00 00 00 0.000000 always 0
0x078 float 00 00 00 00 0.000000 always 0


Hurt Sound Constants

See HERE for the full calculation of whether to play a hurt sound and which sound to play.

Offset Type Raw Hex Value Description
0x07C int16 23 00 35 minimum chance of playing a pain sound (always 35)
0x07E int16 5A 00 90 maximum chance of playing a pain sound (always 90)
0x080 int16 0F 00 15 at least this much damage must be done to play a pain sound (always 15)
0x082 int16 78 00 120 time in ticks before the damage tracker used for this AI's pain sounds resets (always 120)
0x084 int16 23 00 35 time in ticks that must pass between pain sounds being played (always 35)
0x086 int16 01 00 1 number of times that AI will play light pain sound before "upgrading" to a medium pain sound (always 1)
0x088 int16 02 00 2 number of times that AI will play medium pain sound before "upgrading" to a heavy pain sound (always 2)
0x08A int16 64 00 100 chance of playing a death sound (always 100)
0x08C int16 0A 00 10 minimum damage required for an AI to play the pain sound at maximum volume (always 10)
0x08E int16 0C 00 12 cumulative damage before a light pain sound gets upgraded to a medium pain sound (always 12)
0x090 int16 16 00 22 cumulative damage before a medium pain sound gets upgraded to a heavy pain sound (always 22)
0x092 int8 00 0 runtime only: if sound pointers have been set
0x093 char[1] DE dead ignored
0x094 float 00 00 00 3F 0.500000 minimum volume of pain sound (before 0x08C is reached and volume becomes 100%)
0x098 char[32] konoko_hurt_light light hurt sound (reference to 08121-konoko_hurt_light.imp.OSBD of level 0)
0x0B8 char[32] konoko_hurt_medium medium hurt sound (reference to 08123-konoko_hurt_medium.imp.OSBD of level 0)
0x0D8 char[32] konoko_hurt_heavy heavy hurt sound (reference to 08119-konoko_hurt_heavy.imp.OSBD of level 0)
0x0F8 char[32] konoko_death death sound (reference to 08115-konoko_death.imp.OSBD of level 0)
0x118 int32 00 00 00 00 0 runtime only: pointer to light hurt sound
0x11C int32 00 00 00 00 0 runtime only: pointer to medium hurt sound
0x120 int32 00 00 00 00 0 runtime only: pointer to heavy hurt sound
0x124 int32 00 00 00 00 0 runtime only: pointer to death sound


AI Constants
Offset Type Raw Hex Value Description
0x128 bitset 17 00 00 00 23 AI options bitset; see below
0x12C float 00 00 80 3F 1.000000 AI rotation speed factor
0x130 int16 06 00 6 minimum number of frames AI remains in fallen position when it is knocked down
0x132 int16 18 00 24 maximum number of frames AI remains in fallen position when it is knocked down
0x134 uint32 0F 00 00 00 15 number of frames after which AI realizes that it is in the firing spread and it starts dodging
0x138 float 00 00 80 3F 1.000000 minimum dodge time; how long AI should perform dodging/hiding in response to being inside a firing spread (the higher it is, the longer he will hide/dodge even after firing spread disappears)
0x13C float 00 00 80 3F 1.000000 dodge priority dampening; the higher it is, the lower priority the AI gives to dodging


AI options bitset
allows or disables some parts of the AI behavior
  • no flags - startle anim is enabled, rest is disabled
  • 0x01 - startle anim disabled
  • 0x02 - firing spread/projectile dodge enabled for melee
  • 0x04 - requires 0x02; firing spread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging
  • 0x08 - requires 0x02, overrides 0x04 if both are set; firing spread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter
  • 0x10 - bit not used


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 :)


AI Targeting Prediction Constants

See HERE for how the variables here interact to control the AI's target prediction.

Offset Type Raw Hex Value Description
0x140 float 00 00 00 3F 0.500000 multiplied against target's distance to get error in AI's/turret's first wild shot (always 0.5)
0x144 float 00 00 C8 41 25.000000 max value for result of multiplication above (always 25)
0x148 float 00 00 80 3F 1.000000 accuracy multiplier for prediction of target's position (always 1)
0x14C int32 00 00 00 00 0 maximum allowed frames of lookback to be used for predicting target's position (always 0)
0x150 int32 05 00 00 00 5 frames of delay in recognizing target's current position (always 5)
0x154 int32 0F 00 00 00 15 number of frames over which AI can average target's velocity to help predict position (always 15)
0x158 int32 3C 00 00 00 60 size in frames of target's history location buffer (always 60)


AI Weapon Skills

This is an array of 13 sets of skill variables, one for each weapon. Below is the data for the first element:

Offset Type Raw Hex Value Description
0x15C float 00 00 00 00 0.000000 recoil compensation amount (0.0 = no compensation, 1.0 = no recoil)
0x160 float 00 00 00 00 0.000000 minimum aiming error as an angle in radians
0x164 float 00 00 00 00 0.000000 shot grouping error as a percentage
0x168 float 00 00 80 3F 1.000000 how quickly aiming inaccuracy decreases or increases while shooting (ranges from 0.0 to 1.0)
0x16C float 00 00 80 3F 1.000000 shooting inaccuracy multiplier
0x170 uint16 00 00 0 minimum delay in ticks before pulling the trigger again
0x172 uint16 00 00 0 maximum delay in ticks before pulling the trigger again

AI weapon skills 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).

The first weapon (weapon 0) is not in the game anymore, whatever it was. Mutant Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's Devil Star, except w10_sni is still available). Barabas' Wave Motion Cannon is a bit mixed up since the beam is made of w12_ba2 particles and the grenade is a w11_ba1 particle.

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.0 1.0 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


Other AI Behaviors

Oncc m.gif

Offset Type Raw Hex Value Description
0x294 int32 5A 00 00 00 90 how long AI will continue shooting a dead body to make sure it's dead (always 90)
0x298 int32 F0 00 00 00 240 how long AI will stand over dead body before returning to last job (always 240)
0x29C int32 B4 00 00 00 180 how long after losing sight of target until AI engages pursuit mode (always 180)
0x2A0 int32 28 00 00 00 40 chance (as a percentage) of AI taunting a dead body
0x2A4 int32 37 00 00 00 55 chance (as a percentage) of AI running to some weapon to pick it up; can be checked in Dev Mode with the debug_gun_behavior command
0x2A8 int32 3C 00 00 00 60 chance (as a percentage) of AI performing a running weapon pickup (including acrobatics moves, slides) instead of the normal "stop and pick up"; this is calculated after the engine decides that the AI will go for a gun
0x2AC int16 00 00 0 combat profile ID; for example *0D* is for Mutant Muro
0x2AE int16 16 00 22 melee profile ID
0x2B0 int8 64 100 "taunt" sound probability (always)
0x2B1 int8 00 0 "alert" sound probability (never)
0x2B2 int8 00 0 "startle" sound probability (never)
0x2B3 int8 00 0 "checkbody" sound probability (never)
0x2B4 int8 00 0 "pursue" sound probability (never)
0x2B5 int8 00 0 "cower" sound probability (never)
0x2B6 int8 64 100 "superpunch" probability (always)
0x2B7 int8 64 100 "superkick" probability (always)
0x2B8 int8 00 0 "super3" sound probability (never)
0x2B9 int8 00 0 "super4" sound probability (never)
0x2BA int16 00 00 0 probably a blank filler (always the same)
0x2BC char[32] c17_99_28konoko "taunt" sound (reference to 08108-c17_99_28konoko.amb.OSBD of level 0)
0x2DC char[32] unused "alert" sound name
0x2FC char[32] unused "startle" sound name
0x31C char[32] unused "checkbody" sound name
0x33C char[32] unused "pursue" sound name
0x35C char[32] unused "cower" sound name
0x37C char[32] c18_79_14konoko "superpunch" sound name (reference to 08110-c17_99_28konoko.amb.OSBD of level 0)
0x39C char[32] c18_79_15konoko "superkick" sound name (reference to 08112-c17_99_28konoko.amb.OSBD of level 0)
0x3BC char[32] unused "super3" sound name (only Mukade uses this slot)
0x3DC char[32] unused "super4" sound name (never used in game data)
The following 7 vision fields are used to detect if a character can be seen by AI; see Vision Field below for explanation
0x3FC float 00 80 ED 43 475.000000 central vision distance
0x400 float 00 00 16 43 150.000000 peripheral vision distance
0x404 float 7D 1B 44 3F 0.766044 vertical vision range
0x408 float F3 B3 51 3F 0.819152 central vision range
0x40C float E8 D5 12 3F 0.573576 central vision max
0x410 float D5 D0 31 3E 0.173648 peripheral vision range
0x414 float 6B 61 D8 BE 0.422618 peripheral vision max
0x418 int32 B4 00 00 00 180 how long will AI know exactly where its enemy is even if it can't see him with central vision field, and attempt to attack him
0x41C int32 84 03 00 00 900 how long will AI remain strongly convinced that there is an enemy, but will investigate his presence rather than attack him
0x420 int32 10 0E 00 00 3600 how long an AI will remain weakly convinced of an enemy's presence, looking around aimlessly to find him (Glance pursuit mode)
0x424 int32 10 0E 00 00 3600 decay time for dropping back from high alert to medium alert
0x428 int32 50 46 00 00 18000 decay time for dropping back from medium alert to low alert
0x42C int32 A0 8C 00 00 36000 decay time for dropping back from low alert to no alert status
0x430 float 00 00 80 3F 1.000000 hearing radius; defines size of the sound-detection sphere around an AI


Vision Field

See HERE for details on how this works.


File Links
Offset Type Raw Hex Value Description
0x434 link 01 FB 03 00 1019 link to 01019-konoko.ONCV; defines variants and upgrades
0x438 link 01 F9 03 00 1017 link to 01017-.ONCP; lists the particles available for this character (trails, flashes, etc)
0x43C link 01 FA 03 00 1018 link to 01018-.ONIA; lists the special impact sounds (used for special combat moves)
0x440 int8 00 unused runtime only
0x441 int8 00 unused padding
0x442 int16 00 00 unused runtime only
0x444 char[16] 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

Array of 15 impact elements: first element
0x454 char[128] Footstep_Walk walk impact (reference to 04124-Footstep_Walk.Impt of level 0); always the same; without the impacts you can't hear the steps of a character
0x4D4 int16 FF FF -1 set at runtime to the value stored at 0x08 in Impt
End of array
0xBF2 char[2] 00 00 unused padding (seen below)



Oncc e.gif


Offset Type Raw Hex Value Description
0xBF4 char[64] unused special death particle; only the Mad Bomber uses it
0xC34 link 00 00 00 00 unused runtime: link to death particle class
0xC38 link 00 00 00 00 unused runtime: cache of derived information on body model geometry
0xC3C link 01 E6 03 00 998 link to 00998-konoko_body_high.TRBS
0xC40 link 01 E7 03 00 999 link to 00999-konoko002_high_texture_generic.TRMA
0xC44 link 01 E8 03 00 1000 link to 01000-.CBPM
0xC48 link 01 EC 03 00 1004 link to 01004-.CBPI
0xC4C int32 2C 01 00 00 300 how long in ticks before character can leave fight mode
0xC50 int32 30 75 00 00 30000 how long in ticks before the Idle animation can be played the first time
0xC54 int32 30 75 00 00 30000 how long in ticks before the Idle animation can be played another time
0xC58 int32 C8 00 00 00 200 base health of the character model; specific health information for every unique character is stored in the Character.BINA file
0xC5C int32 48 00 00 00 72 unused
0xC60 float 00 00 80 3F 1.000000 minimum body size factor
0xC64 float 00 00 80 3F 1.000000 maximum body size factor

The following 7 float values are ONCC-specific multipliers for each of the 7 PAR3 DamageTypes. See Particle damage types for an explanation of DamageTypes. Values range from 0.0-1.0, with 0 meaning "no immunity" and 1 meaning "total immunity".

Note: These multipliers only affect the stun damage and knockback components of a PAR3 action, not the HP damage dealt.

0xC68 float 00 00 00 00 0.000000 "Normal" DamageType multiplier
0xC6C float 00 00 00 00 0.000000 "MinorStun" DamageType multiplier
0xC70 float 00 00 00 3F 0.500000 "MajorStun" DamageType multiplier
0xC74 float 00 00 80 3E 0.250000 "MinorKnockdown" DamageType multiplier
0xC78 float 00 00 00 00 0.000000 "MajorKnockdown" DamageType multiplier
0xC7C float 00 00 00 00 0.000000 "Blownup" DamageType multiplier
0xC80 float 00 00 00 00 0.000000 "Pickup" DamageType multiplier
0xC84 float 00 00 00 3F 0.500000 damage reducer, employed when the character has a boss shield (0.0-1.0 = 0%-100%)
0xC88 link 01 F6 03 00 1014 link to 01014-konoko_animations.TRAC
0xC8C link 01 F6 03 00 1015 link to 01015-konoko_screens.TRSC
0xC90 int16 1E 00 30 unused (formerly an AI's rate of fire)
0xC92 int16 00 00 0 time between death and deletion, in frames (0 for all characters except Mad Bomber, who is 190 ticks)
0xC94 bitset 00 0 TRSC bitset; see below
0xC95 int8 01 1 character has Daodan powers (can overheal with hypos, do more damage in overpower mode) and can display a Daodan aura particle)
0xC96 int8 00 0 character has supershield
0xC97 int8 00 0 knockdown resistant (used by MutantMuro.ONCC)


TRSC bitset
Determines whether character is left-handed or right-handed (weapon is attached to left or right fist bone). Must be consistent with character's TRSC or glitches appear. Possibilities are:
NONE - Character is right-hander with both pistols and rifles
0x01 - Character is left-hander with both pistols and rifles
0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)


Body size factor
ONCC body size factor-original.jpg
ONCC body size factor-spawn order change.jpg
The geometry specified in a character's TRBS (Totoro body set) can be multiplied by a scale factor. For example, the minime and behemoth cheats set that factor to 0.25 or 1.8, and back to 1. The size can be used for specific purposes (mini-Strikers, Mutant Muro, giant Shinatama), or it can be used to add generic variety to Oni's characters, as a complement to "character variants" (ONCV).
The floats at 0xC60 and 0xC64 define a range in which Oni can pick a random body size factor (if the two values are identical, then the body size factor is effectively fixed instead of random). Konoko, Shinatama (both regular and zombified), Griffin (both variants) and Muro all have a fixed body size of 1. Mini-Strikers have 0.5 and giant Shinatama has 7 (yes, seven).
Everybody else (including Barabas, Mukade and Kerr) has a random body size within 5% of 1 (i.e., the floats at 0xC60 and 0xC64 are 0.95 and 1.05). Mutant Muro is a bit odd because his "minimum" body size 1.75 and the "maximum" is 1.74 (the difference is barely noticeable anyway). In the Anniversary Edition, some characters have altered factors (e.g., Shinatama Too).
The random value is different every time the ONCC is looked up (e.g., when a character is spawned or shapeshifted) and is not reproducible. Here is a simple script for CHAPTER 06 . COUNTERATTACK a.k.a. IGMD/tctf (remove all BSL files and leave only the one below):
func main
{
  ai2_allpassive 1
  ai2_spawn a_v3
  ai2_spawn Lv_40
  ai2_spawn lobby_victim05
  chr_location 1 -1255 -1.5 50
  chr_location 2 -1255 -1.5 60
  chr_location 3 -1255 -1.5 70
  chr_location 4 -1255 -1.5 80
  ai2_lookatme
}
This script lines up four "usual suspects" against a wall in the parking lot of the TCTF HQ. Load the level repeatedly and note how their heights vary.
ONI BINARY DATA
OFGA << Other file types >> ONCP
ONCC : Oni Character Class
Character file