20,132
edits
(removed a wtf from Loser's "bunch of small discoveries" edit of 2007 – there are no ONCCs with value 0x2 in this field and the engine makes no provision for any value besides 0 and 1) |
(gave section headers to sections, in place of simple bold text) |
||
| Line 3: | Line 3: | ||
[[Image:oncc_a.gif]] | [[Image:oncc_a.gif]] | ||
==Air settings== | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
| Line 42: | Line 43: | ||
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH | :if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH | ||
==Shadow settings== | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
| Line 57: | Line 56: | ||
|} | |} | ||
==Jump settings (unused)== | |||
These fields were deprecated at some point in Oni's development and do nothing. | These fields were deprecated at some point in Oni's development and do nothing. | ||
{{Table}} | {{Table}} | ||
| Line 68: | Line 66: | ||
|} | |} | ||
==Cover settings== | |||
These fields were deprecated at some point in Oni's development and do nothing. | These fields were deprecated at some point in Oni's development and do nothing. | ||
{{Table}} | {{Table}} | ||
| Line 79: | Line 76: | ||
|} | |} | ||
==Autofreeze settings== | |||
These fields were deprecated at some point in Oni's development and do nothing. | These fields were deprecated at some point in Oni's development and do nothing. | ||
{{Table}} | {{Table}} | ||
| Line 88: | Line 84: | ||
|} | |} | ||
==Inventory settings== | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
| Line 97: | Line 91: | ||
|} | |} | ||
==LOD settings== | |||
Squares of the distance from the camera at which each LOD kicks in; see {{SectionLink|XML:ONCC|<LODConstants>}} for an explanation of this table, and {{SectionLink|Graphics|LOD}} for the full calculation on which LOD to use. | Squares of the distance from the camera at which each LOD kicks in; see {{SectionLink|XML:ONCC|<LODConstants>}} for an explanation of this table, and {{SectionLink|Graphics|LOD}} for the full calculation on which LOD to use. | ||
{{Table}} | {{Table}} | ||
| Line 109: | Line 102: | ||
|} | |} | ||
==Hurt sound settings== | |||
The numbers below cannot be understood without some elaboration. See [[XML:ONCC#.3CHurtSoundConstants.3E|HERE]] for the full calculation of whether to play a hurt sound and which sound to play. | The numbers below cannot be understood without some elaboration. See [[XML:ONCC#.3CHurtSoundConstants.3E|HERE]] for the full calculation of whether to play a hurt sound and which sound to play. | ||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x07C | uint16 | {{OBDtr| 0x07C | uint16 |FFC8FF| 23 00 | 35 | minimum % chance of playing a pain sound if char. has not been hurt before (always 35) }} | ||
{{OBDtr| 0x07E | uint16 | {{OBDtr| 0x07E | uint16 |FFC8FF| 5A 00 | 90 | maximum % chance of playing a pain sound if char. has not been hurt before (always 90) }} | ||
{{OBDtr| 0x080 | uint16 | {{OBDtr| 0x080 | uint16 |FFC8FF| 0F 00 | 15 | damage threshold; used to calculate a percentage chance of pain sound between min % and max % (always 15) }} | ||
{{OBDtr| 0x082 | uint16 | {{OBDtr| 0x082 | uint16 |FFC8FF| 78 00 | 120 | time in ticks before the damage tracker used for this AI's pain sounds resets (always 120) }} | ||
{{OBDtr| 0x084 | uint16 | {{OBDtr| 0x084 | uint16 |FFC8FF| 23 00 | 35 | time in ticks that must pass between pain sounds being played (always 35) }} | ||
{{OBDtr| 0x086 | uint16 | {{OBDtr| 0x086 | uint16 |FFC8FF| 01 00 | 1 | number of times that AI will play light pain sound before "upgrading" to a medium pain sound (always 1) }} | ||
{{OBDtr| 0x088 | uint16 | {{OBDtr| 0x088 | uint16 |FFC8FF| 02 00 | 2 | number of times that AI will play medium pain sound before "upgrading" to a heavy pain sound (always 2) }} | ||
{{OBDtr| 0x08A | uint16 | {{OBDtr| 0x08A | uint16 |FFC8FF| 64 00 | 100 | chance of playing a death sound (always 100) }} | ||
{{OBDtr| 0x08C | uint16 | {{OBDtr| 0x08C | uint16 |FFC8FF| 0A 00 | 10 | minimum damage required for an AI to play the pain sound at maximum volume (always 10) }} | ||
{{OBDtr| 0x08E | uint16 | {{OBDtr| 0x08E | uint16 |FFC8FF| 0C 00 | 12 | cumulative damage before a light pain sound gets upgraded to a medium pain sound (always 12) }} | ||
{{OBDtr| 0x090 | uint16 | {{OBDtr| 0x090 | uint16 |FFC8FF| 16 00 | 22 | cumulative damage before a medium pain sound gets upgraded to a heavy pain sound (always 22) }} | ||
{{OBDtr| 0x092 | bool |FFC800| 00 | 0 | runtime only: if sound pointers have been set (if sounds are found) }} | {{OBDtr| 0x092 | bool |FFC800| 00 | 0 | runtime only: if sound pointers have been set (if sounds are found) }} | ||
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | padding }} | {{OBDtr| 0x093 | char[1] |C800C8| DE | dead | padding }} | ||
| Line 132: | Line 124: | ||
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | heavy hurt sound (reference to 08119-konoko_hurt_heavy.imp.OSBD of level 0) }} | {{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | heavy hurt sound (reference to 08119-konoko_hurt_heavy.imp.OSBD of level 0) }} | ||
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.imp.OSBD of level 0) }} | {{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.imp.OSBD of level 0) }} | ||
{{OBDtr| 0x118 | offset | {{OBDtr| 0x118 | offset |E7CEA5| 00 00 00 00 | 0 | runtime only: raw offset of light hurt sound }} | ||
{{OBDtr| 0x11C | offset | {{OBDtr| 0x11C | offset |E7CEA5| 00 00 00 00 | 0 | runtime only: raw offset of medium hurt sound }} | ||
{{OBDtr| 0x120 | offset | {{OBDtr| 0x120 | offset |E7CEA5| 00 00 00 00 | 0 | runtime only: raw offset of heavy hurt sound }} | ||
{{OBDtr| 0x124 | offset | {{OBDtr| 0x124 | offset |E7CEA5| 00 00 00 00 | 0 | runtime only: raw offset of death sound }} | ||
|} | |} | ||
==AI settings== | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
| Line 152: | Line 141: | ||
{{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 }} | {{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 }} | ||
|} | |} | ||
;AI options bitset | ;AI options bitset | ||
| Line 168: | Line 156: | ||
==AI targeting prediction== | |||
See [[XML:ONCC#.3CTargeting.3E|HERE]] for how the variables here interact to control the AI's target prediction. | See [[XML:ONCC#.3CTargeting.3E|HERE]] for how the variables here interact to control the AI's target prediction. | ||
{{Table}} | {{Table}} | ||
| Line 181: | Line 169: | ||
|} | |} | ||
==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: | This is an array of 13 sets of skill variables, one for each weapon. Below is the data for the first element: | ||
{{Table}} | {{Table}} | ||
| Line 230: | Line 217: | ||
|} | |} | ||
==Other AI behaviors== | |||
[[Image:oncc_m.gif]] | [[Image:oncc_m.gif]] | ||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x294 | uint32 | {{OBDtr| 0x294 | uint32 |00C8FF| 5A 00 00 00 | 90 | how long AI will continue shooting a dead body to make sure it's dead (always 90) }} | ||
{{OBDtr| 0x298 | uint32 | {{OBDtr| 0x298 | uint32 |00C8FF| F0 00 00 00 | 240 | how long AI will stand over dead body before returning to last job (always 240) }} | ||
{{OBDtr| 0x29C | uint32 | {{OBDtr| 0x29C | uint32 |00C8FF| B4 00 00 00 | 180 | how long after losing sight of target until AI engages pursuit mode (always 180) }} | ||
{{OBDtr| 0x2A0 | uint32 | {{OBDtr| 0x2A0 | uint32 |00C8FF| 28 00 00 00 | 40 | chance (as a percentage) of AI taunting a dead body }} | ||
{{OBDtr| 0x2A4 | uint32 | {{OBDtr| 0x2A4 | uint32 |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 }} | ||
{{OBDtr| 0x2A8 | uint32 | {{OBDtr| 0x2A8 | uint32 |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 }} | ||
{{OBDtr| 0x2AC | uint16 | {{OBDtr| 0x2AC | uint16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }} | ||
{{OBDtr| 0x2AE | uint16 | {{OBDtr| 0x2AE | uint16 |C80040| 16 00 | 22 | melee profile ID }} | ||
{{OBDtr| 0x2B0 | uint8 | {{OBDtr| 0x2B0 | uint8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }} | ||
{{OBDtr| 0x2B1 | uint8 | {{OBDtr| 0x2B1 | uint8 |FFCD96| 00 | 0 | "alert" sound probability (never) }} | ||
{{OBDtr| 0x2B2 | uint8 | {{OBDtr| 0x2B2 | uint8 |FFCD96| 00 | 0 | "startle" sound probability (never) }} | ||
{{OBDtr| 0x2B3 | uint8 | {{OBDtr| 0x2B3 | uint8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }} | ||
{{OBDtr| 0x2B4 | uint8 | {{OBDtr| 0x2B4 | uint8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }} | ||
{{OBDtr| 0x2B5 | uint8 | {{OBDtr| 0x2B5 | uint8 |FFCD96| 00 | 0 | "cower" sound probability (never) }} | ||
{{OBDtr| 0x2B6 | uint8 | {{OBDtr| 0x2B6 | uint8 |FFCD96| 64 | 100 | "superpunch" probability (always) }} | ||
{{OBDtr| 0x2B7 | uint8 | {{OBDtr| 0x2B7 | uint8 |FFCD96| 64 | 100 | "superkick" probability (always) }} | ||
{{OBDtr| 0x2B8 | uint8 | {{OBDtr| 0x2B8 | uint8 |FFCD96| 00 | 0 | "super3" sound probability (never) }} | ||
{{OBDtr| 0x2B9 | uint8 | {{OBDtr| 0x2B9 | uint8 |FFCD96| 00 | 0 | "super4" sound probability (never) }} | ||
{{OBDtr| 0x2BA | char[2] | {{OBDtr| 0x2BA | char[2] |C8C864| 00 00 | 0 | padding }} | ||
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }} | {{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 name }} | {{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound name }} | ||
| Line 264: | Line 250: | ||
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound name (only Mukade uses this slot) }} | {{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound name (only Mukade uses this slot) }} | ||
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound name (never used in game data) }} | {{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound name (never used in game data) }} | ||
{{OBDtrBK|The following 7 vision fields are used to detect if a character can be seen by AI; see Vision Field | {{OBDtrBK|The following 7 vision fields are used to detect if a character can be seen by AI; see {{SectionLink||Vision Field}} for explanation }} | ||
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision distance }} | {{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision distance }} | ||
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision distance }} | {{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision distance }} | ||
| Line 272: | Line 258: | ||
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | peripheral vision range }} | {{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | peripheral vision range }} | ||
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | peripheral vision max }} | {{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | peripheral vision max }} | ||
{{OBDtr| 0x418 | uint32 | {{OBDtr| 0x418 | uint32 |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 }} | ||
{{OBDtr| 0x41C | uint32 | {{OBDtr| 0x41C | uint32 |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 }} | ||
{{OBDtr| 0x420 | uint32 | {{OBDtr| 0x420 | uint32 |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) }} | ||
{{OBDtr| 0x424 | uint32 | {{OBDtr| 0x424 | uint32 |D0C0AF| 10 0E 00 00 | 3600 | decay time for dropping back from high alert to medium alert }} | ||
{{OBDtr| 0x428 | uint32 | {{OBDtr| 0x428 | uint32 |D0C0AF| 50 46 00 00 | 18000 | decay time for dropping back from medium alert to low alert }} | ||
{{OBDtr| 0x42C | uint32 | {{OBDtr| 0x42C | uint32 |D0C0AF| A0 8C 00 00 | 36000 | decay time for dropping back from low alert to no alert status }} | ||
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | hearing radius; defines size of the sound-detection sphere around an AI }} | {{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | hearing radius; defines size of the sound-detection sphere around an AI }} | ||
|} | |} | ||
===Vision field=== | |||
See [[XML:ONCC#.3CVisionConstants.3E|HERE]] for details on how this works. | See [[XML:ONCC#.3CVisionConstants.3E|HERE]] for details on how this works. | ||
==Body, health, immunities== | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
| Line 293: | Line 277: | ||
{{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| 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 | bool |C5FF8A| 00 | 0 | runtime: flag meaning that modifier type has been set by looking up modifier name and impact types have been set by looking up impact names; runtime only }} | {{OBDtr| 0x440 | bool |C5FF8A| 00 | 0 | runtime: flag meaning that modifier type has been set by looking up modifier name and impact types have been set by looking up impact names; runtime only }} | ||
{{OBDtr| 0x441 | uint8 |C5FF8A| 00 | {{OBDtr| 0x441 | uint8 |C5FF8A| 00 | 0 | padding }} | ||
{{OBDtr| 0x442 | uint16 |C5FF8A| 00 00 | {{OBDtr| 0x442 | uint16 |C5FF8A| 00 00 | 0 | runtime: modifier type }} | ||
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier name, used to look up modifier type }} | {{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier name, used to look up modifier type }} | ||
{{OBDtrBK|1=Array of 15 impact elements: first element }} | {{OBDtrBK|1=Array of 15 impact elements: first element }} | ||
{{OBDtr2|0x454 | char[128]|FF0080| Footstep_Walk | impact name, used to look up impact type (reference to 04124-Footstep_Walk.Impt of level 0); always the same; without the impacts you can't hear the steps of a character }} | {{OBDtr2|0x454 | char[128]|FF0080| Footstep_Walk | impact name, used to look up impact type (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 | uint16 |FF0080| FF FF | {{OBDtr| 0x4D4 | uint16 |FF0080| FF FF | 65536 | runtime: impact type (comes from 0x08 in [[OBD:Impt|Impt]]) }} | ||
{{OBDtrBK|1=End of array }} | {{OBDtrBK|1=End of array }} | ||
{{OBDtr| 0xBF2 | char[2] |FFFFA5| 00 00 | {{OBDtr| 0xBF2 | char[2] |FFFFA5| 00 00 | unused | padding (seen below) }} | ||
|} | |} | ||