XML:ONCC: Difference between revisions
Paradox-01 (talk | contribs) (+ temp + cat) |
Paradox-01 (talk | contribs) (table style) |
||
Line 30: | Line 30: | ||
: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 | ||
{| | |||
{| class="wikitable" width="100%" | |||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
|<FallGravity> | |||
| float | |||
| downwards velocity? (always 0.55) | | downwards velocity? (always 0.55) | ||
|- | |- | ||
Line 71: | Line 75: | ||
==<ShadowConstants>== | ==<ShadowConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <Texture> | |||
| link | |||
| TXMPfile<font color="#777777">.oni (file suffix not used)</font> | | TXMPfile<font color="#777777">.oni (file suffix not used)</font> | ||
|- | |- | ||
Line 108: | Line 115: | ||
==<JumpConstants>== | ==<JumpConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <JumpDistance> | |||
| float | |||
| always the same (25) | | always the same (25) | ||
|- | |- | ||
Line 125: | Line 135: | ||
==<CoverConstants>== | ==<CoverConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|always the same (40) | |- | ||
| <RayIncrement> | |||
| float | |||
| always the same (40) | |||
|- | |- | ||
| <RayMax> | | <RayMax> | ||
Line 146: | Line 159: | ||
==<AutoFreezeConstants>== | ==<AutoFreezeConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <DistanceXZ> | |||
| float | |||
| always the same (5) | | always the same (5) | ||
|- | |- | ||
Line 159: | Line 175: | ||
==<InventoryConstants>== | ==<InventoryConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
| | !width=120px| content type | ||
| | ! description | ||
|- | |||
|valign=top| <HypoRegenerationRate> | |||
|valign=top| 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 173: | Line 192: | ||
==<LODConstants>== | ==<LODConstants>== | ||
Distances from camera to render certain [[XML:TRBS|LODs]] (level of detail). | Distances from camera to render certain [[XML:TRBS|LODs]] (level of detail). | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <Float> | |||
| float | |||
| always the same (193600); this is 440 squared | | always the same (193600); this is 440 squared | ||
|- | |- | ||
Line 198: | Line 220: | ||
==<HurtSoundConstants>== | ==<HurtSoundConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <BasePercentage> | |||
| int16 | |||
| hurt_base_percentage; always the same (35) | | hurt_base_percentage; always the same (35) | ||
|- | |- | ||
Line 267: | Line 292: | ||
==<AIConstants>== | ==<AIConstants>== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
| | !width=120px| content type | ||
| | ! description | ||
|- | |||
|valign=top| <Flags> | |||
|valign=top| flag | |||
| | | | ||
: NoStartleAnim | : NoStartleAnim | ||
Line 294: | Line 322: | ||
| number of frames after which AI realizes that it is in the firing spread and it starts dodging | | number of frames after which AI realizes that it is in the firing spread and it starts dodging | ||
|- | |- | ||
| <DodgeTimeScale> | |valign=top| <DodgeTimeScale> | ||
| float | |valign=top| 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) | | 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) | ||
|- | |- | ||
Line 346: | Line 374: | ||
| see [[XML:SNDD#step_1:_preparing_the_TRAM|HERE]] | | see [[XML:SNDD#step_1:_preparing_the_TRAM|HERE]] | ||
|- | |- | ||
| <HostileThreatDefiniteTimer> | |valign=top| <HostileThreatDefiniteTimer> | ||
| int32 | |valign=top| 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) | | 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> | |valign=top| <HostileThreatStrongTimer> | ||
| int32 | |valign=top| 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 | | 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> | |valign=top| <HostileThreatWeakTimer> | ||
| int32 | |valign=top| 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 | | 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> | |valign=top| <FriendlyThreatDefiniteTimer> | ||
| int32 | |valign=top| 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) | | 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> | |valign=top| <FriendlyThreatStrongTimer> | ||
| int32 | |valign=top| 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 | | 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> | |valign=top| <FriendlyThreatWeakTimer> | ||
| int32 | |valign=top| int32 | ||
| how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command | | how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command | ||
|- | |- | ||
Line 377: | Line 405: | ||
===<Targeting>=== | ===<Targeting>=== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <StartleMissAngle> | |||
| float | |||
| always the same for TURR and ONCC (0.5) | | always the same for TURR and ONCC (0.5) | ||
|- | |- | ||
Line 410: | Line 441: | ||
===<WeaponSkills>=== | ===<WeaponSkills>=== | ||
{|width=100%| | {|class="wikitable width=100%| | ||
|valign=top| | |valign=top| | ||
{ | {| class="wikitable" style="text-align:center" | ||
|-BGCOLOR="#E9E9E9" | |-BGCOLOR="#E9E9E9" | ||
!Weapon ||recoil||bestangle||error||decay||inaccuracy||delays | !Weapon ||recoil||bestangle||error||decay||inaccuracy||delays | ||
|-ALIGN=CENTER | |-ALIGN=CENTER | ||
Line 446: | Line 477: | ||
|valign=top| | |valign=top| | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <RecoilCompensation> | |||
| float | |||
| min = 0.0, max = 1.0 | | min = 0.0, max = 1.0 | ||
|- | |- | ||
Line 508: | Line 542: | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <CentralDistance> | |||
| float | |||
| central vision distance | | central vision distance | ||
|- | |- | ||
Line 541: | Line 578: | ||
==ONCV, death particle, TRBS, TRMA, TRAC, TRAS, health, daodan, etc.== | ==ONCV, death particle, TRBS, TRMA, TRAC, TRAS, health, daodan, etc.== | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
|- | |||
| <Variant> | |||
| link | |||
| <font color="#777777">ONCV</font>file<font color="#777777">.oni</font>, defines variants and upgrades | | <font color="#777777">ONCV</font>file<font color="#777777">.oni</font>, defines variants and upgrades | ||
|- | |- | ||
Line 555: | Line 595: | ||
| [[#ONIA: Oni Character Impact Array|ONIA]] instance number (#N) | | [[#ONIA: Oni Character Impact Array|ONIA]] instance number (#N) | ||
|- | |- | ||
| <ImpactModifierName> | |valign=top| <ImpactModifierName> | ||
| flag | |valign=top| flag | ||
| used to choose correct effect from [[XML:BINA/ONIE#list_of_tags.2C_types.2C_and_flags|ONIE]]; impact name -> material name -> modifier (<Component> must be probably "Impact") | | used to choose correct effect from [[XML:BINA/ONIE#list_of_tags.2C_types.2C_and_flags|ONIE]]; impact name -> material name -> modifier (<Component> must be probably "Impact") | ||
: Any | : Any | ||
Line 603: | Line 643: | ||
| basic health of the character model; extra health information for every unique character are stored in the [[XML:BINA/OBJC/CHAR#XML|BINACJBOCharacter.oni]] file | | basic health of the character model; extra health information for every unique character are stored in the [[XML:BINA/OBJC/CHAR#XML|BINACJBOCharacter.oni]] file | ||
|- | |- | ||
| <FeetBones> | |valign=top| <FeetBones> | ||
| flag | |valign=top| flag | ||
| | | | ||
: LeftFoot | : LeftFoot | ||
Line 641: | Line 681: | ||
| time between death and deletion, in frames (about 3 seconds for mad bomber) | | time between death and deletion, in frames (about 3 seconds for mad bomber) | ||
|- | |- | ||
| <WeaponHand> | |valign=top| <WeaponHand> | ||
| flag | |valign=top| flag | ||
| | | | ||
: 0 (right) | : 0 (right) | ||
Line 651: | Line 691: | ||
| when set to 1 indicates that character has daodan powers (character does more damage in overpower mode) | | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode) | ||
|- | |- | ||
| <HasSupershield> | |valign=top| <HasSupershield> | ||
| int8 | |valign=top| int8 | ||
| when set to 1 indicates that character has supershield | | when set to 1 indicates that character has supershield | ||
* is visible as red shield when overpowered | * is visible as red shield when overpowered | ||
Line 667: | Line 707: | ||
===<DamageFactors>=== | ===<DamageFactors>=== | ||
The following 7 float values corespond to damage types. | The following 7 float values corespond to damage types. | ||
{| | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | |||
!width=120px| content type | |||
! description | |||
| | |- | ||
| <Float> | |||
| float | |||
| something with normal damage ? | |||
|- | |- | ||
| <Float> | | <Float> |
Revision as of 13:50, 9 November 2012
ONCC : Oni Character Class | ||
---|---|---|
XML
OBAN << Other file types >> ONCV |
general information
- The xml code on this page is compatible with onisplit v0.9.61.0
- ONCP, ONIA, OBPI and OBPM are part of ONCC*.oni files.
- ONCC files can be found in Edition/GameDataFolder/level0_Final
- Things that still need deeper explanation:
- <DamageFactors>
- <CoverConstants>
- <AutoFreezeConstants>
- <LODConstants>
<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 (quite fun!)
- Falling height
- let FH1 be <MaxNoDamageFallingHeight>
- let FH2 be <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
XML tag | content type | description |
---|---|---|
<FallGravity> | float | downwards velocity? (always 0.55) |
<JumpGravity> | float | downward gravity acceleration |
<JumpStartVelocity> | float | starting velocity for a simple (tap) JUMP |
<MaxVelocity> | float | limit velocity for jumping and gravity flight |
<JetpackAcceleration> | float | upward acceleration (jetpack) if you hold JUMP |
<FramesFallGravity> | int16 | gravity timer? (always 7) |
<JetpackTimer> | int16 | time during which you can use the jetpack |
<MaxNoDamageFallingHeight> | float | maximal falling height without damage |
<MaxDamageFallingHeight> | float | maximal falling height with damage |
<ShadowConstants>
XML tag | content type | description |
---|---|---|
<Texture> | link | TXMPfile.oni (file suffix not used) |
<MaxHeight> | float | height where the shadow fades out completely |
<FadeHeight> | float | height where the diameter of the shadow decreases and the shadow fades out half |
<SizeMax> | float | height where the diameter of the shadow decreases |
<SizeFade> | float | height where the diameter of the shadow decreases |
<SizeMin> | float | height where the diameter of the shadow decreases |
<AlphaMax> | int16 | transparency of the shadow for the first part of a jump |
<AlphaFade> | int16 | transparency of the shadow for the second part of a jump |
<JumpConstants>
XML tag | content type | description |
---|---|---|
<JumpDistance> | float | always the same (25) |
<JumpHeight> | int8 | always the same (22) |
<JumpDistanceSquares> | int8 | always the same (6) |
<CoverConstants>
XML tag | content type | description |
---|---|---|
<RayIncrement> | float | always the same (40) |
<RayMax> | float | always the same (300) |
<RayAngle> | float | always the same (0.017453 = PI/180) |
<RayAngleMax> | float | always the same (1.57 = PI/2) |
<AutoFreezeConstants>
XML tag | content type | description |
---|---|---|
<DistanceXZ> | float | always the same (5) |
<DistanceY> | float | always the same (1) |
<InventoryConstants>
XML tag | content type | description |
---|---|---|
<HypoRegenerationRate> | int16 | (inverse) hypo regeneration rate in frames per health point; overhealth regeneration rate is not affected by this
if rate = 60; if a hypo restores 50HP then we get 60/1 * 50 = 3000 frames (50s) |
<LODConstants>
Distances from camera to render certain LODs (level of detail).
XML tag | content type | description |
---|---|---|
<Float> | float | always the same (193600); this is 440 squared |
<Float> | float | always the same (48400); this is 220 squared |
<Float> | float | always the same (12100); this is 110 squared |
<Float> | float | always the same (0) |
<Float> | float | always the same (0) |
<HurtSoundConstants>
XML tag | content type | description |
---|---|---|
<BasePercentage> | int16 | hurt_base_percentage; always the same (35) |
<MaxPercentage> | int16 | hurt_max_percentage; always the same (90) |
<PercentageThreshold> | int16 | hurt_percentage_threshold; always the same (15) |
<Timer> | int16 | hurt_timer; always the same (120) |
<MinTimer> | int16 | hurt_min_timer; always the same (35) |
<MaxLight> | int16 | always the same (1) |
<MaxMedium> | int16 | always the same (2) |
<DeathChance> | int16 | always the same (100) |
<VolumeTreshold> | int16 | hurt_volume_threshold; always the same (10) |
<MediumTreshold> | int16 | hurt_medium_threshold; always the same (12) |
<HeavyTreshold> | int16 | hurt_heavy_threshold; always the same (22) |
<MinVolume> | float | minimal sound volume |
<LightSound> | char[32] | OSBDfile.imp.oni (only the file name) |
<MediumSound> | char[32] | OSBDfile.imp.oni (only the file name) |
<HeavySound> | char[32] | OSBDfile.imp.oni (only the file name) |
<DeathSound> | char[32] | OSBDfile.imp.oni (only the file name) |
<AIConstants>
XML tag | content type | description |
---|---|---|
<Flags> | flag |
|
<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> | int16 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned |
<DazedMaxFrames> | int16 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned |
<DodgeReactFrames> | uint32 | number of frames after which AI realizes that it is in the firing spread and it starts dodging |
<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> | float | maximal firingspread dodge amount; IMO similar to maneouvre variable |
<Targeting> | see HERE | |
<WeaponSkills> | see HERE | |
<DeadMakeSureDelay> | int32 | always the same (90), AI waits at the corpse for some time? |
<InvestigateBodyDelay> | int32 | always the same (240), unused ? |
<LostContactDelay> | int32 | always the same (180) |
<DeadTauntChance> | int32 | chance of AI doing a taunt when player or AI's of another team dies |
<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> | 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> | int16 | combat profile ID |
<MeleeId> | int16 | melee profile ID |
<SoundConstants> | see HERE | |
<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> | 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> | 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> | 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> | 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> | int32 | how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command |
<EarshotRadius> | float | earshot radius; defines size of the sound-collision sphere around AI |
<Targeting>
XML tag | content type | description |
---|---|---|
<StartleMissAngle> | float | always the same for TURR and ONCC (0.5) |
<StartleMissDistance> | float | always the same for TURR and ONCC (25) |
<PredictAmount> | float | always the same for TURR |
<PredictPositionDelayFrames> | int32 | always the same for TURR |
<PredictDelayFrames> | int32 | always the same for TURR |
<PredictVelocityFrames> | int32 | always the same for TURR |
<PredictTrendFrames> | int32 | always the same for TURR |
<WeaponSkills>
|
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):
|
|
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.
XML tag | content type | description |
---|---|---|
<CentralDistance> | float | central vision distance |
<PeripheralDistance> | float | peripheral vision distance |
<VerticalRange> | float | vertical vision range |
<CentralRange> | float | central vision range |
<CentralMax> | float | central vision max |
<PeripheralRange> | float | peripheral vision range |
<PeripheralMax> | float | peripheral vision max |
ONCV, death particle, TRBS, TRMA, TRAC, TRAS, health, daodan, etc.
XML tag | content type | description |
---|---|---|
<Variant> | link | ONCVfile.oni, defines variants and upgrades |
<Particles> | link | ONCP instance number (#N) |
<Impacts> | link | ONIA instance number (#N) |
<ImpactModifierName> | flag | used to choose correct effect from ONIE; impact name -> material name -> modifier (<Component> must be probably "Impact")
|
<Impacts> | link | holds a lot <ONCCImpact><Name>Imptname.oni</Name></ONCCImpact> for character-environment collision; see ... ONIE in relation to characters |
<DeathParticle> | link | in vanilla Oni only Mad Bomber uses it |
<BodySet> | link | TRBSfile.oni |
<BodyTextures> | link | TRMAfile.oni |
<BodyMaterials> | link | CBPM instance number (#N) |
<BodyImpacts> | link | CBPI instance number (#N) |
<FightModeTimer> | int32 | fight mode timer in 1/60 seconds |
<IdleAnimation1Timer> | int32 | first idle animation timer in 1/60 seconds |
<IdleAnimation2Timer> | int32 | second idle animation timer in 1/60 seconds |
<Health> | int32 | basic health of the character model; extra health information for every unique character are stored in the BINACJBOCharacter.oni file |
<FeetBones> | flag |
|
<MinBodySizeFactor> | float | minimal body size factor |
<MaxBodySizeFactor> | float | maximal body size factor |
<DamageFactors> | see HERE | |
<BossShieldProtectAmount> | float | BossShield Protect Amount |
<Animations> | link | TRACfile.oni |
<AimingScreens> | link | TRASfile.oni |
<AIRateOfFire> | int16 | AI Rate of Fire |
<DeathDeleteDelay> | int16 | time between death and deletion, in frames (about 3 seconds for mad bomber) |
<WeaponHand> | flag |
|
<HasDaodanPowers> | int8 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode) |
<HasSupershield> | int8 | when set to 1 indicates that character has supershield
|
<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.
XML tag | content type | description |
---|---|---|
<Float> | float | something 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 ? |
ONCP: Oni Character Particle (Array)
- ONCP is used for giving particle to animations. Search for "Particles" tag in TRAM file.
XML structure
<ONCP id="3"> <Particles> <ONCPParticle> <Name>...</Name> <Type>...</Type> <BodyPart>...</BodyPart> </ONCPParticle> [...] </Particles> </ONCP>
- <Name> is anchor for TRAM link; vanilla names:
- acid - for death event in bio lab (level 3)
- barabwave - for Baraba's earthquaker
- blanka - for one of MutantMuro's special attacks
- contrail - for colored heavy attacks (character specific <Type>)
- daodan - Konoko's daodan blow
- daodan2 - Konoko's daodan blow (last level)
- death
- dust
- fireball - Mukade's devil star
- flash - attack impact flash
- glow - colored glow particle for attacks
- murowave - for MutantMuro's ass bomb
- snap - health indicator particle ?
- teleport - for Mukade's teleport animation
- thud
- thunderbolt - for one of MutantMuro's special attacks
- trail - white color contrail for standard attacks
- rocket - for Baraba's jetpack
- super_attractor - for MutantMuro
- super_glow - body daodan glow particle
- super_l_hand - left hand daodan glow particle (<BodyPart>LeftFist)
- super_r_hand - right hand daodan glow particle (<BodyPart>RightFist)
- <Type> provide particle (file name without prefix BINA3RAP and without suffix .oni)
- <BodyPart> means bone Id, see TRIA; also allowed: "KillImpact"
ONIA: Oni Character Impact Array
- ONIA is used for special attacks as kind of extension to CBPI in ONIE.
- <Name> is anchor for TRAM link, <Type> and <Modifier> are links for ONIE. "Light", "Medium" and "Heavy" are possible modifier.
- See ONIE for more information.
XML structure
<ONIA id="4"> <Impacts> <ONIAImpact> <Name>...</Name> <Type>Bar_Super_Punch</Type> <Modifier>Heavy</Modifier> </ONIAImpact> [...] </ONIA>
CBPM: Character Body Part Materials
XML structure
The link Id is equal to bone list in TRIA. For example: eleventh material links to character's head.
<CBPM id="7"> <Materials> <Link>MtrlCloth</Link> <Link>MtrlCloth</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlCloth</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlCloth</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> <Link>MtrlArmor</Link> </Materials> </CBPM>
CBPI: Character Body Part Impacts
- They link to Impt files which are used by ONIE.
- Special attacks have there own Impt files. See ONIA.
XML structure
The link Id is equal to bone list in TRIA. For example: eleventh material links to character's head.
<CBPI id="8"> <HitImpacts> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptKick_Hit</Link> <Link>ImptPunch_Hit</Link> <Link>ImptHead_Hit</Link> <Link>ImptHead_Hit</Link> <Link>ImptHead_Hit</Link> <Link>ImptPunch_Hit</Link> <Link>ImptPunch_Hit</Link> <Link>ImptPunch_Hit</Link> <Link>ImptHead_Hit</Link> <Link>ImptPunch_Hit</Link> <Link>ImptPunch_Hit</Link> <Link>ImptPunch_Hit</Link> </HitImpacts> <BlockedImpacts> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptKick_Blocked</Link> <Link>ImptPunch_Blocked</Link> <Link>ImptHead_Blocked</Link> <Link>ImptHead_Blocked</Link> <Link>ImptHead_Blocked</Link> <Link>ImptPunch_Blocked</Link> <Link>ImptPunch_Blocked</Link> <Link>ImptPunch_Blocked</Link> <Link>ImptHead_Blocked</Link> <Link>ImptPunch_Blocked</Link> <Link>ImptPunch_Blocked</Link> <Link>ImptPunch_Blocked</Link> </BlockedImpacts> <KilledImpacts> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptKick_Killed</Link> <Link>ImptPunch_Killed</Link> <Link>ImptHead_Killed</Link> <Link>ImptHead_Killed</Link> <Link>ImptHead_Killed</Link> <Link>ImptPunch_Killed</Link> <Link>ImptPunch_Killed</Link> <Link>ImptPunch_Killed</Link> <Link>ImptHead_Killed</Link> <Link>ImptPunch_Killed</Link> <Link>ImptPunch_Killed</Link> <Link>ImptPunch_Killed</Link> </KilledImpacts> </CBPI>