8,018
edits
Paradox-01 (talk | contribs) (some copy paste) |
Paradox-01 (talk | contribs) (and the rest of it) |
||
Line 19: | Line 19: | ||
==<AirConstants>== | ==<AirConstants>== | ||
;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 [http://mods.oni2.net/node/83 (quite fun!)] | |||
;Falling height: let FH1 be the height at <MaxNoDamageFallingHeight> | |||
:let FH2 be the height at <MaxDamageFallingHeight> | |||
: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 | |||
{| | {| | ||
{{table}} | {{table}} | ||
|width=200px|<FallGravity> | |width=200px|<FallGravity> | ||
|width=40px| float | |||
| downwards velocity? (always 0.55) | | downwards velocity? (always 0.55) | ||
|- | |- | ||
| <JumpGravity> | | <JumpGravity> | ||
| float | |||
| downward gravity acceleration | | downward gravity acceleration | ||
|- | |- | ||
| <JumpStartVelocity> | | <JumpStartVelocity> | ||
| float | |||
| starting velocity for a simple (tap) JUMP | | starting velocity for a simple (tap) JUMP | ||
|- | |- | ||
| <MaxVelocity> | | <MaxVelocity> | ||
| float | |||
| limit velocity for jumping and gravity flight | | limit velocity for jumping and gravity flight | ||
|- | |- | ||
| <JetpackAcceleration> | | <JetpackAcceleration> | ||
| float | |||
| upward acceleration (jetpack) if you hold JUMP | | upward acceleration (jetpack) if you hold JUMP | ||
|- | |- | ||
| <FramesFallGravity> | | <FramesFallGravity> | ||
| | | int16 | ||
| gravity timer? (always 7) | |||
|- | |- | ||
| <JetpackTimer> | | <JetpackTimer> | ||
| int16 | |||
| time during which you can use the jetpack | | time during which you can use the jetpack | ||
|- | |- | ||
| <MaxNoDamageFallingHeight> | | <MaxNoDamageFallingHeight> | ||
| float | |||
| maximal falling height without damage | | maximal falling height without damage | ||
|- | |- | ||
| <MaxDamageFallingHeight> | | <MaxDamageFallingHeight> | ||
| float | |||
| maximal falling height with damage | | maximal falling height with damage | ||
|} | |} | ||
Line 72: | Line 80: | ||
{{table}} | {{table}} | ||
|width=200px| <Texture> | |width=200px| <Texture> | ||
| | |width=40px| float | ||
| <font color="#777777">TXMP</font>file<font color="#777777">.oni</font> | |||
|- | |- | ||
| <MaxHeight> | | <MaxHeight> | ||
| float | |||
| height where the shadow fades out completely | | height where the shadow fades out completely | ||
|- | |- | ||
| <FadeHeight> | | <FadeHeight> | ||
| | | float | ||
| height where the diameter of the shadow decreases and the shadow fades out half | |||
|- | |- | ||
| <SizeMax> | | <SizeMax> | ||
| | | float | ||
| height where the diameter of the shadow decreases | |||
|- | |- | ||
| <SizeFade> | | <SizeFade> | ||
| | | float | ||
| height where the diameter of the shadow decreases | |||
|- | |- | ||
| <SizeMin> | | <SizeMin> | ||
| | | float | ||
| height where the diameter of the shadow decreases | |||
|- | |- | ||
| <AlphaMax> | | <AlphaMax> | ||
| int16 | |||
| transparency of the shadow for the first part of a jump | | transparency of the shadow for the first part of a jump | ||
|- | |- | ||
| <AlphaFade> | | <AlphaFade> | ||
| int16 | |||
| transparency of the shadow for the second part of a jump | | transparency of the shadow for the second part of a jump | ||
|} | |} | ||
Line 101: | Line 117: | ||
{{table}} | {{table}} | ||
|width=200px| <JumpDistance> | |width=200px| <JumpDistance> | ||
| | |width=40px| float | ||
| always the same (25) | |||
|- | |- | ||
| <JumpHeight> | | <JumpHeight> | ||
| | | int8 | ||
| always the same (22) | |||
|- | |- | ||
| <JumpDistanceSquares> | | <JumpDistanceSquares> | ||
| | | int 8 | ||
| always the same (6) | |||
|} | |} | ||
Line 115: | Line 134: | ||
{{table}} | {{table}} | ||
|width=200px| <RayIncrement> | |width=200px| <RayIncrement> | ||
|width=40px| float | |||
|always the same (40) | |always the same (40) | ||
|- | |- | ||
| <RayMax> | | <RayMax> | ||
| float | |||
| always the same (300) | | always the same (300) | ||
|- | |- | ||
| <RayAngle> | | <RayAngle> | ||
| float | |||
| always the same (0.017453 = PI/180) | | always the same (0.017453 = PI/180) | ||
|- | |- | ||
| <RayAngleMax> | | <RayAngleMax> | ||
| float | |||
| always the same (1.57 = PI/2) | | always the same (1.57 = PI/2) | ||
|} | |} | ||
Line 132: | Line 155: | ||
{{table}} | {{table}} | ||
|width=200px| <DistanceXZ> | |width=200px| <DistanceXZ> | ||
|width=40px| float | |||
| always the same (5) | | always the same (5) | ||
|- | |- | ||
| <DistanceY> | | <DistanceY> | ||
| float | |||
| always the same (1) | | always the same (1) | ||
|} | |} | ||
Line 143: | Line 168: | ||
{{table}} | {{table}} | ||
|width=200px| <HypoRegenerationRate> | |width=200px| <HypoRegenerationRate> | ||
|width=40px| int16 | |||
| (inverse) hypo regeneration rate in frames per health point; overhealth regeneration rate is not affected by this | | (inverse) hypo regeneration rate in frames per health point; overhealth regeneration rate is not affected by this | ||
Line 154: | Line 180: | ||
{| | {| | ||
{{table}} | {{table}} | ||
|width=200px| | |width=200px| | ||
| always the same | |width=40px| float | ||
| always the same (193600); this is 440 squared | |||
|- | |- | ||
| <Float> | | <Float> | ||
| always the same | | float | ||
| always the same (48400); this is 220 squared | |||
|- | |- | ||
| <Float> | | <Float> | ||
| always the same | | float | ||
| always the same (12100); this is 110 squared | |||
|- | |- | ||
| <Float> | | <Float> | ||
| always the same | | float | ||
| always the same (0) | |||
|- | |- | ||
| <Float> | | <Float> | ||
| always the same | | float | ||
| always the same (0) | |||
|} | |} | ||
Line 175: | Line 206: | ||
{{table}} | {{table}} | ||
|width=200px| <BasePercentage> | |width=200px| <BasePercentage> | ||
| | |width=40px|int16 | ||
| hurt_base_percentage; always the same (35) | |||
|- | |- | ||
| <MaxPercentage> | | <MaxPercentage> | ||
| | | int16 | ||
| hurt_max_percentage; always the same (90) | |||
|- | |- | ||
| <PercentageThreshold> | | <PercentageThreshold> | ||
| | | int16 | ||
| hurt_percentage_threshold; always the same (15) | |||
|- | |- | ||
| <Timer> | | <Timer> | ||
| | | int16 | ||
| hurt_timer; always the same (120) | |||
|- | |- | ||
| <MinTimer> | | <MinTimer> | ||
| | | int16 | ||
| hurt_min_timer; always the same (35) | |||
|- | |- | ||
| <MaxLight> | | <MaxLight> | ||
| | | int16 | ||
| always the same (1) | |||
|- | |- | ||
| <MaxMedium> | | <MaxMedium> | ||
| | | int16 | ||
| always the same (2) | |||
|- | |- | ||
| <DeathChance> | | <DeathChance> | ||
| | | int16 | ||
| always the same (100) | |||
|- | |- | ||
| <VolumeTreshold> | | <VolumeTreshold> | ||
| | | int16 | ||
| hurt_volume_threshold; always the same (10) | |||
|- | |- | ||
| <MediumTreshold> | | <MediumTreshold> | ||
| | | int16 | ||
| hurt_medium_threshold; always the same (12) | |||
|- | |- | ||
| <HeavyTreshold> | | <HeavyTreshold> | ||
| | | int16 | ||
| hurt_heavy_threshold; always the same (22) | |||
|- | |- | ||
| <MinVolume> | | <MinVolume> | ||
| | | float | ||
| minimal sound volume | |||
|- | |- | ||
| <LightSound> | | <LightSound> | ||
| | | char[32] | ||
| <font color="#777777">OSBD</font>file<font color="#777777">.imp.oni</font> (only the file name) | |||
|- | |- | ||
| <MediumSound> | | <MediumSound> | ||
| | | char[32] | ||
| <font color="#777777">OSBD</font>file<font color="#777777">.imp.oni</font> (only the file name) | |||
|- | |- | ||
| <HeavySound> | | <HeavySound> | ||
| | | char[32] | ||
| <font color="#777777">OSBD</font>file<font color="#777777">.imp.oni</font> (only the file name) | |||
|- | |- | ||
| <DeathSound> | | <DeathSound> | ||
| | | char[32] | ||
| <font color="#777777">OSBD</font>file<font color="#777777">.imp.oni</font> (only the file name) | |||
|} | |} | ||
Line 228: | Line 275: | ||
{{table}} | {{table}} | ||
|width=200px| <Flags> | |width=200px| <Flags> | ||
|width=40|flag | |||
| | | | ||
: NoStartleAnim | : NoStartleAnim | ||
: EnableMeleeFireDodge | : EnableMeleeFireDodge | ||
: ShootDodge | : ShootDodge (requires EnableMeleeFireDodge; AI tries to face shooter and shoot back while dodging) | ||
: RunAwayDodge | : RunAwayDodge (requires EnableMeleeFireDodge; overrides ShootDodge; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter) | ||
: NotUsed | : NotUsed | ||
|- | |- | ||
| <RotationSpeed> | | <RotationSpeed> | ||
| | | float | ||
| 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 :) | |||
|- | |- | ||
| <DazedMinFrames> | | <DazedMinFrames> | ||
| | | int16 | ||
| minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned | |||
|- | |- | ||
| <DazedMaxFrames> | | <DazedMaxFrames> | ||
| | | int16 | ||
| maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned | |||
|- | |- | ||
| <DodgeReactFrames> | | <DodgeReactFrames> | ||
| | | uint32 | ||
| number of frames after which AI realizes that it is in the firing spread and it starts dodging | |||
|- | |- | ||
| <DodgeTimeScale> | | <DodgeTimeScale> | ||
| | | float | ||
| 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) | |||
|- | |- | ||
| <DodgeWeightScale> | | <DodgeWeightScale> | ||
| | | float | ||
| maximal firingspread dodge amount; IMO similar to maneouvre variable | |||
|- | |- | ||
| | | <Targeting> | ||
| | | | ||
| see [[#<Targeting>|HERE]] | |||
|- | |- | ||
| | | <WeaponSkills> | ||
| | | | ||
| see [[#<WeaponSkills>|HERE]] | |||
|- | |- | ||
| <DeadMakeSureDelay> | | <DeadMakeSureDelay> | ||
| | | int32 | ||
| always the same (90), AI waits at the corpse for some time? | |||
|- | |- | ||
| <InvestigateBodyDelay> | | <InvestigateBodyDelay> | ||
| | | int32 | ||
| always the same (240), unused ? | |||
|- | |- | ||
| <LostContactDelay> | | <LostContactDelay> | ||
| | | int32 | ||
| always the same (180) | |||
|- | |- | ||
| <DeadTauntChance> | | <DeadTauntChance> | ||
| | | int32 | ||
| chance of AI doing a taunt when player or AI's of another team dies | |||
|- | |- | ||
| <GoForGunChance> | | <GoForGunChance> | ||
| | | int32 | ||
| determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command | |||
|- | |- | ||
| <RunPickupChance> | | <RunPickupChance> | ||
| | | int32 | ||
| 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 | |||
|- | |- | ||
| <CombatId> | | <CombatId> | ||
| | | int16 | ||
| [[OBD_talk:BINA/OBJC/CMBT|combat profile ID]] | |||
|- | |- | ||
| <MeleeId> | | <MeleeId> | ||
| | | int16 | ||
| [[OBD_talk:BINA/OBJC/MELE|melee profile ID]] | |||
|- | |- | ||
| | | <SoundConstants> | ||
| | | | ||
| see [[OBD_talk:SNDD#step_1:_preparing_the_TRAM|HERE]] | |||
|- | |- | ||
| <HostileThreatDefiniteTimer> | | <HostileThreatDefiniteTimer> | ||
| | | int32 | ||
| 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) | |||
|- | |- | ||
| <HostileThreatStrongTimer> | | <HostileThreatStrongTimer> | ||
| | | int32 | ||
| 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 | |||
|- | |- | ||
| <HostileThreatWeakTimer> | | <HostileThreatWeakTimer> | ||
| | | int32 | ||
| 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 | |||
|- | |- | ||
| <FriendlyThreatDefiniteTimer> | | <FriendlyThreatDefiniteTimer> | ||
| | | int32 | ||
| 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) | |||
|- | |- | ||
| <FriendlyThreatStrongTimer> | | <FriendlyThreatStrongTimer> | ||
| | | int32 | ||
| 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 | |||
|- | |- | ||
| <FriendlyThreatWeakTimer> | | <FriendlyThreatWeakTimer> | ||
| | | int32 | ||
| how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command | |||
|- | |- | ||
| <EarshotRadius> | | <EarshotRadius> | ||
| | | float | ||
| earshot radius; defines size of the sound-collision sphere around AI | |||
|} | |} | ||
Line 313: | Line 385: | ||
{{table}} | {{table}} | ||
|width=200px| <StartleMissAngle> | |width=200px| <StartleMissAngle> | ||
| | | width=40px| float | ||
| always the same for TURR and ONCC (0.5) | |||
|- | |- | ||
| <StartleMissDistance> | | <StartleMissDistance> | ||
| | | float | ||
| always the same for TURR and ONCC (25) | |||
|- | |- | ||
| <PredictAmount> | | <PredictAmount> | ||
| | | float | ||
| always the same for TURR | |||
|- | |- | ||
| <PredictPositionDelayFrames> | | <PredictPositionDelayFrames> | ||
| | | int32 | ||
| always the same for TURR | |||
|- | |- | ||
| <PredictDelayFrames> | | <PredictDelayFrames> | ||
| | | int32 | ||
| always the same for TURR | |||
|- | |- | ||
| <PredictVelocityFrames> | | <PredictVelocityFrames> | ||
| | | int32 | ||
| always the same for TURR | |||
|- | |- | ||
| <PredictTrendFrames> | | <PredictTrendFrames> | ||
| | | int32 | ||
| always the same for TURR | |||
|} | |} | ||
===<WeaponSkills>=== | ===<WeaponSkills>=== | ||
{|width=100%| | |||
|valign=top| | |||
{{Table|width=""|align="left"}} | |||
|-BGCOLOR="#E9E9E9" ALIGN=CENTER | |||
!Weapon ||recoil||bestangle||error||decay||inaccuracy||delays | |||
|-ALIGN=CENTER | |||
|'''w0_sec''' || 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w1_tap''' || 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45 | |||
|-ALIGN=CENTER | |||
|'''w2_sap''' || 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w3_phr''' || 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w4_psm''' || 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w5_sbg''' || 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w6_vdg''' || 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w7_scc''' || 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w8_mbo''' || 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w9_scr''' || 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w10_sni'''|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w11_ba1'''|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | |||
|-ALIGN=CENTER | |||
|'''w12_ba2'''|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0 | |||
|} | |||
|valign=top| | |||
{| | {| | ||
{{table}} | {{table}} | ||
|width=200px| <RecoilCompensation> | |width=200px| <RecoilCompensation> | ||
| | |width=40px| float | ||
| (float; 0.0 = min, 1.0 = max) | |||
|- | |- | ||
| <BestAimingAngle> | | <BestAimingAngle> | ||
| | | float | ||
| best aiming angle in radians | |||
|- | |- | ||
| <ShotGroupError> | | <ShotGroupError> | ||
| | | float | ||
| shot grouping error | |||
|- | |- | ||
| <ShotGroupDecay> | | <ShotGroupDecay> | ||
| | | float | ||
| shot grouping decay | |||
|- | |- | ||
| <ShootingInaccuracyMultiplier> | | <ShootingInaccuracyMultiplier> | ||
| | | float | ||
| shooting inaccuracy multiplier | |||
|- | |- | ||
| <MinShotDelay> | | <MinShotDelay> | ||
| | | uint16 | ||
| minimum delay between shots in frames | |||
|- | |- | ||
| <MaxShotDelay> | | <MaxShotDelay> | ||
| uint16 | |||
| maximum delay between shots in frames | |||
|} | |||
;AI 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) | |||
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...) | |||
|} | |||
===<VisionConstants>=== | |||
;Vision Field | |||
The "range" and "max" values are logically angles but the cosine of the angle is stored instead for performace reasons. We have the following angles (in degrees): | |||
{| | |||
| | | | ||
: <VerticalRange>0.766044438</VerticalRange> | |||
: <CentralRange>0.819152057</CentralRange> | |||
: <CentralMax>0.57357645 </CentralMax> | |||
: <PeripheralRange>0.1736482</PeripheralRange> | |||
: <PeripheralMax>-0.42261824</PeripheralMax> | |||
| | |||
: = 40° | |||
: = 35° | |||
: = 55° | |||
: = 80° | |||
: = 115° | |||
|} | |} | ||
Within "range" the "distance" field is used to compute visibility (character is visible if the distance between AI and character is < "distance" field). Between "range" and "max" the visibility distance decreases gradually towards 0. The vision field can be made visible with the script command *ai2_showvision =1* but it should be noted that the rendering might not be accurate. In particular the peripheral vision field it's missing the central segment. | |||
{| | {| | ||
{{table}} | {{table}} | ||
|width=200px| <CentralDistance> | |width=200px| <CentralDistance> | ||
| | |width=40px| float | ||
| central vision distance | |||
|- | |- | ||
| <PeripheralDistance> | | <PeripheralDistance> | ||
| | | float | ||
| peripheral vision distance | |||
|- | |- | ||
| <VerticalRange> | | <VerticalRange> | ||
| | | float | ||
| vertical vision range | |||
|- | |- | ||
| <CentralRange> | | <CentralRange> | ||
| | | float | ||
| central vision range | |||
|- | |- | ||
| <CentralMax> | | <CentralMax> | ||
| | | float | ||
| central vision max | |||
|- | |- | ||
| <PeripheralRange> | | <PeripheralRange> | ||
| | | float | ||
| peripheral vision range | |||
|- | |- | ||
| <PeripheralMax> | | <PeripheralMax> | ||
| | | float | ||
| peripheral vision max | |||
|} | |} | ||
Line 391: | Line 549: | ||
{{table}} | {{table}} | ||
|width=200px| <Variant> | |width=200px| <Variant> | ||
| ONCV | |width=40px|string | ||
| <font color="#777777">ONCV</font>file<font color="#777777">.oni</font>, defines variants and upgrades | |||
|- | |- | ||
| <Particles> | | <Particles> | ||
| ONCP instance number | | string | ||
| [[#ONCP: character particle|ONCP]] instance number | |||
|- | |- | ||
| <Impacts> | | <Impacts> | ||
| ONIA instance number | | string | ||
| [[#ONIA: Oni character impact array|ONIA]] instance number | |||
|- | |- | ||
| <ImpactModifierName> | | <ImpactModifierName> | ||
| | | flag | ||
| used to choose correct effect from [[OBD_talk:BINA/ONIE#XML_flags|ONIE]]; impact name -> material name -> modifier (<Component> must be probably "Impact") | |||
: Any | |||
: Light | |||
: Medium | |||
: Heavy | |||
|- | |- | ||
| <Impacts> | | <Impacts> | ||
| | | string | ||
| holds a lot <ONCCImpact><Name><font color="#777777">Impt</font>name<font color="#777777">.oni</font> for character-environment collision; see [[OBD_talk:BINA/ONIE#Visual_guides:_weapon.2C_melee.2C_environment|... ONIE in relation to characters]] | |||
|- | |- | ||
| <DeathParticle> | | <DeathParticle> | ||
| | | link | ||
| in vanilla Oni only Mad Bomber uses it | |||
|- | |- | ||
| <BodySet> | | <BodySet> | ||
| TRBS file | | link | ||
| <font color="#777777">TRBS</font>file<font color="#777777">.oni</font> | |||
|- | |- | ||
| <BodyTextures> | | <BodyTextures> | ||
| TRMA file | | link | ||
| <font color="#777777">TRMA</font>file<font color="#777777">.oni</font> | |||
|- | |- | ||
| <BodyMaterials> | | <BodyMaterials> | ||
| string | |||
| [[#CBPM: character body part materials|CBPM]] instance number | | [[#CBPM: character body part materials|CBPM]] instance number | ||
|- | |- | ||
| <BodyImpacts> | | <BodyImpacts> | ||
| string | |||
| [[#CBPI: character body part impacts|CBPI]] instance number | | [[#CBPI: character body part impacts|CBPI]] instance number | ||
|- | |- | ||
| <FightModeTimer> | | <FightModeTimer> | ||
| | | int32 | ||
| fight mode timer in 1/60 seconds | |||
|- | |- | ||
| <IdleAnimation1Timer> | | <IdleAnimation1Timer> | ||
| | | int32 | ||
| first idle animation timer in 1/60 seconds | |||
|- | |- | ||
| <IdleAnimation2Timer> | | <IdleAnimation2Timer> | ||
| | | int32 | ||
| second idle animation timer in 1/60 seconds | |||
|- | |- | ||
| <Health> | | <Health> | ||
| | | int32 | ||
| basic health of the character model; extra health information for every unique character are stored in the [[OBD_talk:BINA/OBJC/CHAR#XML|BINACJBOCharacter.oni]] file | |||
|- | |- | ||
| <FeetBones> | | <FeetBones> | ||
| flag | |||
| | | | ||
: LeftFoot | |||
: RightFoot | |||
|- | |- | ||
| <MinBodySizeFactor> | | <MinBodySizeFactor> | ||
| | | float | ||
| minimal body size factor | |||
|- | |- | ||
| <MaxBodySizeFactor> | | <MaxBodySizeFactor> | ||
| | | float | ||
| maximal body size factor | |||
|- | |- | ||
| <DamageFactors> | | <DamageFactors> | ||
| | | | ||
| see [[#<DamageFactors>|HERE]] | |||
|- | |- | ||
| <BossShieldProtectAmount> | | <BossShieldProtectAmount> | ||
| | | float | ||
| BossShield Protect Amount | |||
|- | |- | ||
| <Animations> | | <Animations> | ||
| | | link | ||
| <font color="#777777">TRAC</font>file<font color="#777777">.oni</font> | |||
|- | |- | ||
| <AimingScreens> | | <AimingScreens> | ||
| | | link | ||
| <font color="#777777">TRAS</font>file<font color="#777777">.oni</font> | |||
|- | |- | ||
| <AIRateOfFire> | | <AIRateOfFire> | ||
| | | int16 | ||
| AI Rate of Fire | |||
|- | |- | ||
| <DeathDeleteDelay> | | <DeathDeleteDelay> | ||
| | | int16 | ||
| time between death and deletion, in frames (about 3 seconds for mad bomber) | |||
|- | |- | ||
| <WeaponHand> | | <WeaponHand> | ||
| flag | |||
| | | | ||
: 0 - right | |||
: 1 - left | |||
|- | |- | ||
| <HasDaodanPowers> | | <HasDaodanPowers> | ||
| | | int8 | ||
| when set to 1 indicates that character has daodan powers (character does more damage in overpower mode) | |||
|- | |- | ||
| <HasSupershield> | | <HasSupershield> | ||
| | | int8 | ||
| when set to 1 indicates that character has supershield | |||
* is visible as red shield when overpowered | |||
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too | |||
* now it prevents damage from weapon fire and melee (exception are throws) | |||
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE]) | |||
|- | |- | ||
| <CantTouchThis> | | <CantTouchThis> | ||
| | | int8 | ||
| when set to 1, generically turns on canttouchthis cheat for this ONCC (used by ONCCMutantMuro) | |||
|} | |||
===<DamageFactors>=== | |||
The following 7 float values corespond to damage types. | |||
{| | |||
{{table}} | |||
|width=200px| <Float> | |||
|width=40px| float | |||
| somthing with normal damage ? | |||
|- | |||
| <Float> | |||
| float | |||
| something with minor stun ? | |||
|- | |||
| <Float> | |||
| float | |||
| major 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 field 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) | |||
|- | |||
| <Float> | |||
| float | |||
| something with minor knockdown ? | |||
|- | |||
| <Float> | |||
| float | |||
| something with major knockdown ? | |||
|- | |||
| <Float> | |||
| float | |||
| something with blownup ? | |||
|- | |||
| <Float> | |||
| float | |||
| something with pickup ? | |||
|} | |} | ||
edits