18,700
edits
(update part 2) |
(final update to match XML page) |
||
Line 153: | Line 153: | ||
{{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 162: | Line 163: | ||
*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 | *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 | *0x10 - bit not used | ||
;AI rotation speed factor | ;AI rotation speed factor | ||
Line 169: | Line 171: | ||
;AI Targeting Constants | ;AI Targeting Prediction Constants | ||
See [[XML:ONCC#.3CTargeting.3E|HERE]] for how the variables here interact to control the AI's target prediction. | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | | {{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) }} | ||
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | | {{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | max value for result of multiplication above (always 25) }} | ||
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | | {{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | accuracy multiplier for prediction of target's position (always 1) }} | ||
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | | {{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | maximum allowed frames of lookback to be used for predicting target's position (always 0) }} | ||
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | | {{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | frames of delay in recognizing target's current position (always 5) }} | ||
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | | {{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) }} | ||
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | | {{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | size in frames of target's history location buffer (always 60) }} | ||
{{ | |} | ||
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= | |||
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | | |||
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }} | ;AI Weapon Skills | ||
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | | |||
This is an array of 13 sets of skill variables, one for each weapon. Below is the data for the first element: | |||
{{Table}} | |||
{{OBDth}} | |||
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= no compensation, 1.0 =</nowiki> no recoil) }} | |||
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | minimum aiming error as an angle in radians }} | |||
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error as a percentage }} | |||
{{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) }} | |||
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }} | {{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }} | ||
{{OBDtr| 0x170 | uint16 | {{OBDtr| 0x170 | uint16 |00C864| 00 00 | 0 | minimum delay in ticks before pulling the trigger again }} | ||
{{OBDtr| 0x172 | uint16 | {{OBDtr| 0x172 | uint16 |00C864| 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 | 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. | ||
{{Table | {{Table}} | ||
|- | |- bgcolor="#E9E9E9" align=center | ||
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays | !Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays | ||
|- | |- align=center | ||
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | |'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45 | |'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45 | ||
|- | |- align=center | ||
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0 | |'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0 | |'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0 | |'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0 | |'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0 | |'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0 | |'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0 | |'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0 | |'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | |'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | ||
|- | |- align=center | ||
|'''w11_ba1'''||0x274/0x28B|| 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 | ||
|- | |- align=center | ||
|'''w12_ba2'''||0x28B/0x293|| 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 | ||
[[Image:oncc_m.gif]] | |||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | | {{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) }} | ||
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | | {{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | how long AI will stand over dead body before returning to last job (always 240) }} | ||
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | | {{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | how long after losing sight of target until AI engages pursuit mode (always 180) }} | ||
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | | {{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | chance (as a percentage) of AI taunting a dead body }} | ||
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | | {{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 }} | ||
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | | {{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 }} | ||
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }} | {{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }} | ||
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }} | {{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }} | ||
Line 251: | Line 263: | ||
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (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|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|0x2DC | char[32] |0096C8| unused | "alert" sound name }} | ||
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }} | {{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound name }} | ||
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }} | {{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound name }} | ||
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }} | {{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound name }} | ||
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }} | {{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound name }} | ||
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }} | {{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound name (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|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound name (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }} | ||
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only | {{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound name (only Mukade uses this slot) }} | ||
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in | {{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound name (never used in game data) }} | ||
{{OBDtrBK| | {{OBDtrBK|The following 7 vision fields are used to detect if a character can be seen by AI; see Vision Field below 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 268: | Line 280: | ||
{{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 | int32 |D0C0AF| B4 00 00 00 | 180 | | {{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 }} | ||
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | | {{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 }} | ||
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | | {{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) }} | ||
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | | {{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | decay time for dropping back from high alert to medium alert }} | ||
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | | {{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | decay time for dropping back from medium alert to low alert }} | ||
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | | {{OBDtr| 0x42C | int32 |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 | | {{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. | |||
; | ;File Links | ||
{{Table}} | {{Table}} | ||
Line 311: | Line 317: | ||
{{Table}} | {{Table}} | ||
{{OBDth}} | {{OBDth}} | ||
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | | {{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | padding }} | ||
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the | {{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 only }} | {{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }} | ||
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }} | {{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }} | ||
Line 319: | Line 325: | ||
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }} | {{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| 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 | {{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 | first | {{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 | | {{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 | | {{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 | | {{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| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | | {{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximum body size factor }} | ||
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | | |||
{{Anchor|DamageTypes}} | {{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> | {{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> | ||
Line 337: | Line 342: | ||
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | "Blownup" 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| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | "Pickup" DamageType multiplier }} | ||
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | | {{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| 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| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} | ||
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | | {{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | unused }} | ||
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames ( | {{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| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} | ||
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | | {{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | character has Daodan powers (can overheal with hypos, do more damage in overpower mode)}} | ||
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | | {{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | character has supershield (see [[XML:ONCC]] for details) }} | ||
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | turns on '''canttouchthis''' cheat (used by MutantMuro.ONCC) }} | |||
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | | |||
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} | {{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} | ||
|} | |} | ||
;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=right | {|align=right | ||
|[[File:ONCC_body_size_factor-original.jpg|120px]] | |[[File:ONCC_body_size_factor-original.jpg|120px]] | ||
Line 360: | Line 368: | ||
|[[File:ONCC_body_size_factor-spawn_order_change.jpg|120px]] | |[[File: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 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]]). | :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]]). | :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): | :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 { | func main | ||
{ | |||
ai2_allpassive 1 | ai2_allpassive 1 | ||
ai2_spawn a_v3 | ai2_spawn a_v3 | ||
Line 376: | Line 385: | ||
ai2_lookatme | 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. | :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_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}} | ||
{{OBD}} | {{OBD}} |