OBD:ONCC: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
mNo edit summary |
||
Line 86: | Line 86: | ||
{{Table}} | {{Table}} | ||
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }} | {{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }} | ||
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | | {{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | ignored }} | ||
|} | |} | ||
Line 117: | Line 117: | ||
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | hurt_medium_threshold; always the same }} | {{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | hurt_medium_threshold; always the same }} | ||
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | hurt_heavy_threshold; always the same }} | {{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | hurt_heavy_threshold; always the same }} | ||
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | | {{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | runtime only: if 1 sound pointers have been set }} | ||
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | | {{OBDtr| 0x093 | char[1] |C800C8| DE | dead | ignored }} | ||
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | | {{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | 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|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|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }} | ||
Line 138: | Line 138: | ||
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }} | {{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }} | ||
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }} | {{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }} | ||
{{OBDtr| 0x134 | uint32 |EBEBEB| 0F 00 00 00 | 15 | | {{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 }} | ||
{{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| 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| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }} |
Revision as of 14:42, 10 October 2010
|
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 | downwards velocity? (unknown, always 0.55) |
0x00C | float | 8F C2 75 3D | 0.060000 | downward gravity acceleration |
0x010 | float | CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP |
0x014 | float | 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight |
0x018 | float | 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP |
0x01C | int16 | 07 00 | 7 | gravity timer? (unknown, always 7) |
0x01E | int16 | 14 00 | 20 | jetpack timer; time during which you can use the jetpack |
0x020 | float | 00 00 34 42 | 45.000000 | maximal falling height without damage |
0x024 | float | 00 00 07 43 | 135.000000 | maximal falling height with damage |
- Units
- times are in frames
- heights are in world units
- velocities are in world units per frames
- accelerations are in world units per frames squared
- Downwards velocity
- could correspond to the steady push experienced when neither jumping nor falling
- would be roughly equivalent to the starting velocity of a fall
- although the value .55 seems right, the "sinking" seems to be hardcoded now
- Gravity timer
- Seems to be hardcoded now (could be the time until gravity switches on)
- Jetpack timer
- You can press JUMP multiple times during the time window (quite fun!)
- Falling height
- let FH1 be the height at 0x20
- let FH2 be the height at 0x24
- let BH be the base health of the character
- let FH be the actual falling height
- then, if FH > FH2, the character is killed
- if FH < FH1, the character takes no damage
- if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH
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 shadow fades out completely |
0x030 | float | 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half |
0x034 | float | 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases |
0x038 | float | 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases |
0x03C | float | 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases |
0x040 | int16 | 30 00 | 48 | transparency of the shadow for the first part of a jump |
0x042 | int16 | 30 00 | 48 | transparency of the shadow for the second part of a jump |
- Jump Constants
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x044 | float | 00 00 C8 41 | 25.000000 | jumpDistance? ; always the same |
0x048 | int8 | 16 | 22 | jumpHeight? ; always the same |
0x049 | int8 | 06 | 6 | jumpDistanceSquares?!?! ; always the same |
0x04A | char[2] | AD DE | dead | pad |
- Cover Constants
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x04C | float | 00 00 20 42 | 40.000000 | rayIncrement; always the same |
0x050 | float | 00 00 96 43 | 300.000000 | rayMax; always the same |
0x054 | float | 35 FA 8E 3C | 0.017453 | rayAngle; always the same (0.017453 = PI/180) |
0x058 | float | DB 0F C9 3F | 1.570796 | rayAngleMax; always the same (1.57 = PI/2) |
- Autofreeze Constants (unused)
0x05C | float | 00 00 A0 40 | 5.000000 | distance_xz; always the same |
0x060 | float | 00 00 80 3F | 1.000000 | distance_y; always the same |
- Inventory Constants (unused?)
0x064 | int16 | 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint |
0x066 | char[2] | AD DE | dead | ignored |
- LOD Constants
Distances from Camera to render certain LODs
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x068 | float | 00 10 3D 48 | 193600.000000 | always the same; this is 440 squared |
0x06C | float | 00 10 3D 47 | 48400.000000 | always the same; this is 220 squared |
0x070 | float | 00 10 3D 46 | 12100.000000 | always the same; this is 110 squared |
0x074 | float | 00 00 00 00 | 0.000000 | always the same |
0x078 | float | 00 00 00 00 | 0.000000 | always the same |
- Hurt sound paramters
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x07C | int16 | 23 00 | 35 | hurt_base_percentage; always the same |
0x07E | int16 | 5A 00 | 90 | hurt_max_percentage; always the same |
0x080 | int16 | 0F 00 | 15 | hurt_percentage_threshold; always the same |
0x082 | int16 | 78 00 | 120 | hurt_timer; always the same |
0x084 | int16 | 23 00 | 35 | hurt_min_timer; always the same |
0x086 | int16 | 01 00 | 1 | hurt_max_light; always the same |
0x088 | int16 | 02 00 | 2 | hurt_max_medium; always the same |
0x08A | int16 | 64 00 | 100 | hurt_death_chance; always the same |
0x08C | int16 | 0A 00 | 10 | hurt_volume_threshold; always the same |
0x08E | int16 | 0C 00 | 12 | hurt_medium_threshold; always the same |
0x090 | int16 | 16 00 | 22 | hurt_heavy_threshold; always the same |
0x092 | int8 | 00 | 0 | runtime only: if 1 sound pointers have been set |
0x093 | char[1] | DE | dead | ignored |
0x094 | float | 00 00 00 3F | 0.500000 | sound volume |
0x098 | char[32] | konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.imp.OSBD of level 0) | |
0x0B8 | char[32] | konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.imp.OSBD of level 0) | |
0x0D8 | char[32] | konoko_hurt_heavy | hurt heavy 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 hurt light sound |
0x11C | int32 | 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound |
0x120 | int32 | 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound |
0x124 | int32 | 00 00 00 00 | 0 | runtime only: pointer to death sound |
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x128 | bitsets | 17 00 00 00 | 23 | general AI option bitset collection ; see below |
0x12C | float | 00 00 80 3F | 1.000000 | AI rotation speed factor |
0x130 | int16 | 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned |
0x132 | int16 | 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned |
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 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) |
0x13C | float | 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable |
- AI rotation speed factor
- reference rotation speed is about 1 turn (360�) per second
- the setting is only effective if the AI is in control
- so it's a bit like the AI's mouse sensitivity :)
- General AI options bitset
- allows or disables some parts of the AI behavior
- NONE - startle anim is enabled, rest is disabled
- 0x01 - startle anim disabled
- 0x02 - firingspread/projectile dodge enabled for melee
- 0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging
- 0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter
- 0x10 - bit not used
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x140 | float | 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC |
0x144 | float | 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC |
0x148 | float | 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR |
0x14C | int32 | 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR |
0x150 | int32 | 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR |
0x154 | int32 | 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR |
0x158 | int32 | 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR |
First of 13 elements (grey outline) | ||||
0x15C | float | 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 = min, 1.0 = max) |
0x160 | float | 00 00 00 00 | 0.000000 | best aiming angle in radians |
0x164 | float | 00 00 00 00 | 0.000000 | shot grouping error |
0x168 | float | 00 00 80 3F | 1.000000 | shot grouping decay |
0x16C | float | 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier |
0x170 | int16 | 00 00 | 0 | minimum delay between shots in frames |
0x172 | int16 | 00 00 | 0 | maximum delay between shots in frames |
- SHOOTING SKILLS
These can be reviewed with e.g. ai2_skill_select konoko_generic w1_tap and then either ai2_skill_show (prints to console) or ai2_skill_save (prints to file)
- Fields
- recoil compensation amount, between 0 and 1 (float)
- best aiming angle, in radians (float)
- shot grouping error (float)
- shot grouping decay (float)
- shooting inaccuracy multiplier (float)
- minimum delay between shots, in frames (short)
- maximum delay between shots, in frames (short)
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except w10_sni is still available) (w12_ba2 and w11_ba1 are a bit mixed up : the beam is made of w12_ba2 particles, and the grenade is a w11_ba1 particle...)
See screenshot for the raw hex (example is konoko_generic from level3_Final)
Weapon | Offset | recoil | bestangle | error | decay | inaccuracy | delays |
---|---|---|---|---|---|---|---|
w0_sec | 0x15C/0x173 | 0.0 | 0.000000 | 0.00 | 1.0 | 1.0 | 0 - 0 |
w1_tap | 0x174/0x18B | 0.0 | 0.000000 | 0.40 | 0.4 | 0.0 | 30 - 45 |
w2_sap | 0x18C/0x193 | 0.3 | 0.013962 | 0.13 | 1.0 | 1.0 | 0 - 0 |
w3_phr | 0x194/0x20B | 0.3 | 0.010472 | 0.05 | 0.5 | 1.0 | 0 - 0 |
w4_psm | 0x20C/0x213 | 0.3 | 0.015707 | 0.03 | 0.2 | 1.0 | 0 - 0 |
w5_sbg | 0x214/0x22B | 0.3 | 0.001745 | 0.00 | 0.1 | 1.0 | 0 - 0 |
w6_vdg | 0x22C/0x233 | 0.3 | 0.001745 | 0.13 | 0.9 | 1.0 | 0 - 0 |
w7_scc | 0x234/0x24B | 0.3 | 0.001745 | 0.05 | 0.1 | 1.0 | 0 - 0 |
w8_mbo | 0x24C/0x253 | 0.3 | 0.005236 | 0.01 | 0.5 | 1.0 | 0 - 0 |
w9_scr | 0x254/0x26B | 0.3 | 0.010472 | 0.04 | 0.5 | 1.0 | 0 - 0 |
w10_sni | 0x26C/0x273 | 0.0 | 0.000000 | 0.00 | 1.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 |
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x294 | int32 | 5A 00 00 00 | 90 | unknown; always the same |
0x298 | int32 | F0 00 00 00 | 240 | unknown; always the same |
0x29C | int32 | B4 00 00 00 | 180 | unknown; always the same |
0x2A0 | int32 | 28 00 00 00 | 40 | taunt chance (40%) |
0x2A4 | int32 | 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command |
0x2A8 | int32 | 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon |
0x2AC | 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 | |
0x2FC | char[32] | unused | "startle" sound | |
0x31C | char[32] | unused | "checkbody" sound | |
0x33C | char[32] | unused | "pursue" sound | |
0x35C | char[32] | unused | "cower" sound | |
0x37C | char[32] | c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.amb.OSBD of level 0) | |
0x39C | char[32] | c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.amb.OSBD of level 0) | |
0x3BC | char[32] | unused | "super3" sound (only the superninja uses this slot) | |
0x3DC | char[32] | unused | "super4" sound (never used in Oni) | |
0x3FC | float | 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision =1* |
0x400 | float | 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision = 1* |
0x404 | float | 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 |
0x408 | float | 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) |
0x40C | float | E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field |
0x410 | float | D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field |
0x414 | float | 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field |
0x418 | int32 | 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) |
0x41C | int32 | 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 |
0x420 | int32 | 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 |
0x424 | int32 | 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) |
0x428 | int32 | 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 |
0x42C | int32 | 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 |
0x430 | float | 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI |
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 | |
First of 15 impact elements. | ||||
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 |
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0xBF2 | int16 | 00 00 | 0 | unknown; always the same; maybe only a filler |
0xBF4 | char[64] | unused | special death particle; only the mad bomber use it | |
0xC34 | link | 00 00 00 00 | unused | runtime only |
0xC38 | link | 00 00 00 00 | unused | runtime only |
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 | fight mode timer in 1/60 seconds |
0xC50 | int32 | 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds |
0xC54 | int32 | 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds |
0xC58 | int32 | C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the Character.BINA file |
0xC5C | int32 | 48 00 00 00 | 72 | feetBits (these bits mark the characters feet) |
0xC60 | float | 00 00 80 3F | 1.000000 | minimal body size factor |
0xC64 | float | 00 00 80 3F | 1.000000 | maximal body size factor |
the following 7 float values corespond to damage types (see the PAR3 page for the 7 possible types of damage) | ||||
0xC68 | float | 00 00 00 00 | 0.000000 | unknown; always the same |
0xC6C | float | 00 00 00 00 | 0.000000 | unknown; always the same |
0xC70 | float | 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) |
0xC74 | float | 00 00 80 3E | 0.250000 | unknown |
0xC78 | float | 00 00 00 00 | 0.000000 | unknown; always the same |
0xC7C | float | 00 00 00 00 | 0.000000 | unknown; always the same |
0xC80 | float | 00 00 00 00 | 0.000000 | unknown; always the same |
0xC84 | float | 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) |
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 | AI Rate of Fire (testme) |
0xC92 | int16 | 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) |
0xC94 | bitset | 00 | 0 | TRSC bitset; see below |
0xC95 | int8 | 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode) |
0xC96 | int8 | 00 | 0 | when set to 1 indicates that character has supershield
|
0xC97 | int8 | 00 | 0 | when set to 1, generically turns on canttouchthis cheat for this ONCC (used by MutantMuro.ONCC |
0xC98 | char[8] | AD DE | dead | unused |
- Body size factor
- 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.
- TRSC bitset
- determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with 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)
ONI BINARY DATA |
---|
OFGA << Other file types >> ONCP |
ONCC : Oni Character Class |
Character file |