OBD:ONCC: Difference between revisions

20 bytes added ,  Yesterday at 19:53
gave section headers to sections, in place of simple bold text
(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==
;Shadow Constants
 
{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
Line 57: Line 56:
|}
|}


 
==Jump settings (unused)==
;Jump Constants
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==
;Cover Constants
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==
;Autofreeze Constants
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==
;Inventory Constants
 
{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
Line 97: Line 91:
|}
|}


 
==LOD settings==
;LOD Constants
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==
;Hurt Sound Constants
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   |FFC8FF| 23 00      | 35          | minimum % chance of playing a pain sound if char. has not been hurt before (always 35) }}
{{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   |FFC8FF| 5A 00      | 90          | maximum % chance of playing a pain sound if char. has not been hurt before (always 90) }}
{{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   |FFC8FF| 0F 00      | 15          | damage threshold; used to calculate a percentage chance of pain sound between min % and max % (always 15) }}
{{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   |FFC8FF| 78 00      | 120        | time in ticks before the damage tracker used for this AI's pain sounds resets (always 120) }}
{{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   |FFC8FF| 23 00      | 35          | time in ticks that must pass between pain sounds being played (always 35) }}
{{OBDtr| 0x084 | uint16   |FFC8FF| 23 00      | 35          | time in ticks that must pass between pain sounds being played (always 35) }}
{{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| 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   |FFC8FF| 02 00      | 2          | number of times that AI will play medium pain sound before "upgrading" to a heavy pain sound (always 2) }}
{{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   |FFC8FF| 64 00      | 100        | chance of playing a death sound (always 100) }}
{{OBDtr| 0x08A | uint16   |FFC8FF| 64 00      | 100        | chance of playing a death sound (always 100) }}
{{OBDtr| 0x08C | uint16   |FFC8FF| 0A 00      | 10          | minimum damage required for an AI to play the pain sound at maximum volume (always 10) }}
{{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   |FFC8FF| 0C 00      | 12          | cumulative damage before a light pain sound gets upgraded to a medium pain sound (always 12) }}
{{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   |FFC8FF| 16 00      | 22          | cumulative damage before a medium pain sound gets upgraded to a heavy pain sound (always 22) }}
{{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   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of light hurt sound }}
{{OBDtr| 0x118 | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of light hurt sound }}
{{OBDtr| 0x11C | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of medium hurt sound }}
{{OBDtr| 0x11C | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of medium hurt sound }}
{{OBDtr| 0x120 | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of heavy hurt sound }}
{{OBDtr| 0x120 | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of heavy hurt sound }}
{{OBDtr| 0x124 | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of death sound }}
{{OBDtr| 0x124 | offset   |E7CEA5| 00 00 00 00 | 0          | runtime only: raw offset of death sound }}
|}
|}


 
==AI settings==
 
;AI Constants
 
{{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 Constants
==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==
;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==
;Other AI Behaviors
[[Image:oncc_m.gif]]
[[Image:oncc_m.gif]]
{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
{{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| 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   |00C8FF| F0 00 00 00 | 240        | how long AI will stand over dead body before returning to last job (always 240) }}
{{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   |00C8FF| B4 00 00 00 | 180        | how long after losing sight of target until AI engages pursuit mode (always 180) }}
{{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   |00C8FF| 28 00 00 00 | 40          | chance (as a percentage) of AI taunting a dead body }}
{{OBDtr| 0x2A0 | uint32   |00C8FF| 28 00 00 00 | 40          | chance (as a percentage) of AI taunting a dead body }}
{{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| 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   |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| 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   |C80040| 00 00      | 0          | combat profile ID; for example *0D* is for Mutant Muro }}
{{OBDtr| 0x2AC | uint16   |C80040| 00 00      | 0          | combat profile ID; for example *0D* is for Mutant Muro }}
{{OBDtr| 0x2AE | uint16   |C80040| 16 00      | 22          | melee profile ID }}
{{OBDtr| 0x2AE | uint16   |C80040| 16 00      | 22          | melee profile ID }}
{{OBDtr| 0x2B0 | uint8     |FFCD96| 64          | 100        | "taunt" sound probability (always) }}
{{OBDtr| 0x2B0 | uint8   |FFCD96| 64          | 100        | "taunt" sound probability (always) }}
{{OBDtr| 0x2B1 | uint8     |FFCD96| 00          | 0          | "alert" sound probability (never) }}
{{OBDtr| 0x2B1 | uint8   |FFCD96| 00          | 0          | "alert" sound probability (never) }}
{{OBDtr| 0x2B2 | uint8     |FFCD96| 00          | 0          | "startle" sound probability (never) }}
{{OBDtr| 0x2B2 | uint8   |FFCD96| 00          | 0          | "startle" sound probability (never) }}
{{OBDtr| 0x2B3 | uint8     |FFCD96| 00          | 0          | "checkbody" sound probability (never) }}
{{OBDtr| 0x2B3 | uint8   |FFCD96| 00          | 0          | "checkbody" sound probability (never) }}
{{OBDtr| 0x2B4 | uint8     |FFCD96| 00          | 0          | "pursue" sound probability (never) }}
{{OBDtr| 0x2B4 | uint8   |FFCD96| 00          | 0          | "pursue" sound probability (never) }}
{{OBDtr| 0x2B5 | uint8     |FFCD96| 00          | 0          | "cower" sound probability (never) }}
{{OBDtr| 0x2B5 | uint8   |FFCD96| 00          | 0          | "cower" sound probability (never) }}
{{OBDtr| 0x2B6 | uint8     |FFCD96| 64          | 100        | "superpunch" probability (always) }}
{{OBDtr| 0x2B6 | uint8   |FFCD96| 64          | 100        | "superpunch" probability (always) }}
{{OBDtr| 0x2B7 | uint8     |FFCD96| 64          | 100        | "superkick" probability (always) }}
{{OBDtr| 0x2B7 | uint8   |FFCD96| 64          | 100        | "superkick" probability (always) }}
{{OBDtr| 0x2B8 | uint8     |FFCD96| 00          | 0          | "super3" sound probability (never) }}
{{OBDtr| 0x2B8 | uint8   |FFCD96| 00          | 0          | "super3" sound probability (never) }}
{{OBDtr| 0x2B9 | uint8     |FFCD96| 00          | 0          | "super4" sound probability (never) }}
{{OBDtr| 0x2B9 | uint8   |FFCD96| 00          | 0          | "super4" sound probability (never) }}
{{OBDtr| 0x2BA | char[2]   |C8C864| 00 00      | 0          | padding }}
{{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 below for explanation }}
{{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   |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| 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   |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| 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   |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| 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   |D0C0AF| 10 0E 00 00 | 3600        | decay time for dropping back from high alert to medium alert }}
{{OBDtr| 0x424 | uint32   |D0C0AF| 10 0E 00 00 | 3600        | decay time for dropping back from high alert to medium alert }}
{{OBDtr| 0x428 | uint32   |D0C0AF| 50 46 00 00 | 18000      | decay time for dropping back from medium alert to low alert }}
{{OBDtr| 0x428 | uint32   |D0C0AF| 50 46 00 00 | 18000      | decay time for dropping back from medium alert to low alert }}
{{OBDtr| 0x42C | uint32   |D0C0AF| A0 8C 00 00 | 36000      | decay time for dropping back from low alert to no alert status }}
{{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===
;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==
;File Links
{{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         | 0          | padding }}
{{OBDtr| 0x441 | uint8    |C5FF8A| 00         | 0          | padding }}
{{OBDtr| 0x442 | uint16  |C5FF8A| 00 00     | 0          | runtime: modifier type }}
{{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     | 65536      | runtime: impact type (comes from 0x08 in [[OBD:Impt|Impt]]) }}
{{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     | unused      | padding (seen below) }}
{{OBDtr| 0xBF2 | char[2]  |FFFFA5| 00 00       | unused      | padding (seen below) }}
|}
|}