XML:ONCC: Difference between revisions

From OniGalore
Jump to navigation Jump to search
mNo edit summary
(some copy paste)
Line 12: Line 12:
* ONCP, ONIA, OBPI and OBPM are part of '''ONCC*.oni''' files.
* ONCP, ONIA, OBPI and OBPM are part of '''ONCC*.oni''' files.
* ONCC files can be found in Edition/GameDataFolder/level0_Final
* ONCC files can be found in Edition/GameDataFolder/level0_Final
* The XML tags are more or less self-explanatory - if not, look at the [[OBD:ONCC|hex page]].<br>Things that still need deeper explanation:
: <CoverConstants>
: <AutoFreezeConstants>
: <LODConstants>
==<AirConstants>==
{|
{{table}}
|width=200px|<FallGravity>
| downwards velocity? (always 0.55)
|-
| <JumpGravity>
| downward gravity acceleration
|-
| <JumpStartVelocity>
| starting velocity for a simple (tap) JUMP
|-
| <MaxVelocity>
| limit velocity for jumping and gravity flight
|-
| <JetpackAcceleration>
| upward acceleration (jetpack) if you hold JUMP
|-
| <FramesFallGravity>
| upward acceleration (jetpack) if you hold JUMP
|-
| <JetpackTimer>
| time during which you can use the jetpack
|-
| <MaxNoDamageFallingHeight>
| maximal falling height without damage
|-
| <MaxDamageFallingHeight>
| maximal falling height with damage
|}
;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 the height at 0x20
:let FH2 be the height at 0x24
: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
==<ShadowConstants>==
{|
{{table}}
|width=200px| <Texture>
| shadow texture (TXMP)
|-
| <MaxHeight>
| height where the shadow fades out completely
|-
| <FadeHeight>
|
|-
| <SizeMax>
|
|-
| <SizeFade>
|
|-
| <SizeMin>
|
|-
| <AlphaMax>
| transparency of the shadow for the first part of a jump
|-
| <AlphaFade>
| transparency of the shadow for the second part of a jump
|}
==<JumpConstants>==
{|
{{table}}
|width=200px| <JumpDistance>
|
|-
| <JumpHeight>
|
|-
| <JumpDistanceSquares>
|
|}
==<CoverConstants>==
{|
{{table}}
|width=200px| <RayIncrement>
|always the same (40)
|-
| <RayMax>
| always the same (300)
|-
| <RayAngle>
| always the same (0.017453 = PI/180)
|-
| <RayAngleMax>
| always the same (1.57 = PI/2)
|}
==<AutoFreezeConstants>==
{|
{{table}}
|width=200px| <DistanceXZ>
| always the same (5)
|-
| <DistanceY>
| always the same (1)
|}
==<InventoryConstants>==
{|
{{table}}
|width=200px| <HypoRegenerationRate>
| (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)<br>
if rate = 6; if a hypo restores 50HP then we get 6/1 * 50 = 300 frames (5s)<br>
if rate = 0 it becomes rate = 1 at runtime, so regeneration will still take 50 frames (< 1s)
|}
==<LODConstants>==
{|
{{table}}
|width=200px| <Float>
| always the same; (193600) this is 440 squared
|-
| <Float>
| always the same; (48400) this is 220 squared
|-
| <Float>
| always the same; (12100) this is 110 squared
|-
| <Float>
| always the same; (0)
|-
| <Float>
| always the same; (0)
|}
==<HurtSoundConstants>==
{|
{{table}}
|width=200px| <BasePercentage>
|
|-
| <MaxPercentage>
|
|-
| <PercentageThreshold>
|
|-
| <Timer>
|
|-
| <MinTimer>
|
|-
| <MaxLight>
|
|-
| <MaxMedium>
|
|-
| <DeathChance>
|
|-
| <VolumeTreshold>
|
|-
| <MediumTreshold>
|
|-
| <HeavyTreshold>
|
|-
| <MinVolume>
|
|-
| <LightSound>
|
|-
| <MediumSound>
|
|-
| <HeavySound>
|
|-
| <DeathSound>
|
|}
==<AIConstants>==
{|
{{table}}
|width=200px| <Flags>
|
: NoStartleAnim
: EnableMeleeFireDodge
: ShootDodge
: RunAwayDodge
: NotUsed
|-
| <RotationSpeed>
|
|-
| <DazedMinFrames>
|
|-
| <DazedMaxFrames>
|
|-
| <DodgeReactFrames>
|
|-
| <DodgeTimeScale>
|
|-
| <DodgeWeightScale>
|
|-
| see [[#<Targeting>|<Targeting>]]
|
|-
| see [[#<WeaponSkills>|<WeaponSkills>]]
|
|-
| <DeadMakeSureDelay>
|
|-
| <InvestigateBodyDelay>
|
|-
| <LostContactDelay>
|
|-
| <DeadTauntChance>
|
|-
| <GoForGunChance>
|
|-
| <RunPickupChance>
|
|-
| <CombatId>
|
|-
| <MeleeId>
|
|-
| see [[OBD_talk:SNDD#step_1:_preparing_the_TRAM|SNDD talk page]]
|
|-
| <HostileThreatDefiniteTimer>
|
|-
| <HostileThreatStrongTimer>
|
|-
| <HostileThreatWeakTimer>
|
|-
| <FriendlyThreatDefiniteTimer>
|
|-
| <FriendlyThreatStrongTimer>
|
|-
| <FriendlyThreatWeakTimer>
|
|-
| <EarshotRadius>
|
|}
===<Targeting>===
{|
{{table}}
|width=200px| <StartleMissAngle>
|
|-
| <StartleMissDistance>
|
|-
| <PredictAmount>
|
|-
| <PredictPositionDelayFrames>
|
|-
| <PredictDelayFrames>
|
|-
| <PredictVelocityFrames>
|
|-
| <PredictTrendFrames>
|
|}
===<WeaponSkills>===
{|
{{table}}
|width=200px| <RecoilCompensation>
|
|-     
| <BestAimingAngle>
|
|-
| <ShotGroupError>
|
|-
| <ShotGroupDecay>
|
|-
| <ShootingInaccuracyMultiplier>
|
|-
| <MinShotDelay>
|
|-
| <MaxShotDelay>
|
|}
===<VisionConstants>===
{|
{{table}}
|width=200px| <CentralDistance>
|
|-
| <PeripheralDistance>
|
|-
| <VerticalRange>
|
|-
| <CentralRange>
|
|-
| <CentralMax>
|
|-
| <PeripheralRange>
|
|-
| <PeripheralMax>
|
|}
==ONCV, death particle, TRBS, TRMA, TRAC, TRAS, health, daodan, etc.==
{|
{{table}}
|width=200px| <Variant>
| ONCV name
|-
| <Particles>
| ONCP instance number
|-
| <Impacts>
| ONIA instance number
|-
| <ImpactModifierName>
|
|-
| <Impacts>
| Holds a lot <ONCCImpact><Name>...</Name></ONCCImpact>
|-
| <DeathParticle>
|
|-
| <BodySet>
| TRBS file
|-
| <BodyTextures>
| TRMA file
|-
| <BodyMaterials>
| [[#CBPM: character body part materials|CBPM]] instance number
|-
| <BodyImpacts>
| [[#CBPI: character body part impacts|CBPI]] instance number
|-
| <FightModeTimer>
|
|-
| <IdleAnimation1Timer>
|
|-
| <IdleAnimation2Timer>
|
|-
| <Health>
|
|-
| <FeetBones>
|
|-
| <MinBodySizeFactor>
|
|-
| <MaxBodySizeFactor>
|
|-
| <DamageFactors>
|
|-
| <BossShieldProtectAmount>
|
|-
| <Animations>
|
|-
| <AimingScreens>
|
|-
| <AIRateOfFire>
|
|-
| <DeathDeleteDelay>
|
|-
| <WeaponHand>
|
|-
| <HasDaodanPowers>
|
|-
| <HasSupershield>
|
|-
| <CantTouchThis>
|
|}





Revision as of 09:42, 10 April 2012


Template:XMLModdingHints

The xml code on this page is based on onisplit v0.9.61.0


ONCC: Oni character class

general information

  • ONCP, ONIA, OBPI and OBPM are part of ONCC*.oni files.
  • ONCC files can be found in Edition/GameDataFolder/level0_Final
  • The XML tags are more or less self-explanatory - if not, look at the hex page.
    Things that still need deeper explanation:
<CoverConstants>
<AutoFreezeConstants>
<LODConstants>


<AirConstants>

<FallGravity> downwards velocity? (always 0.55)
<JumpGravity> downward gravity acceleration
<JumpStartVelocity> starting velocity for a simple (tap) JUMP
<MaxVelocity> limit velocity for jumping and gravity flight
<JetpackAcceleration> upward acceleration (jetpack) if you hold JUMP
<FramesFallGravity> upward acceleration (jetpack) if you hold JUMP
<JetpackTimer> time during which you can use the jetpack
<MaxNoDamageFallingHeight> maximal falling height without damage
<MaxDamageFallingHeight> maximal falling height with damage


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 the height at 0x20
let FH2 be the height at 0x24
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


<ShadowConstants>

<Texture> shadow texture (TXMP)
<MaxHeight> height where the shadow fades out completely
<FadeHeight>
<SizeMax>
<SizeFade>
<SizeMin>
<AlphaMax> transparency of the shadow for the first part of a jump
<AlphaFade> transparency of the shadow for the second part of a jump


<JumpConstants>

<JumpDistance>
<JumpHeight>
<JumpDistanceSquares>


<CoverConstants>

<RayIncrement> always the same (40)
<RayMax> always the same (300)
<RayAngle> always the same (0.017453 = PI/180)
<RayAngleMax> always the same (1.57 = PI/2)


<AutoFreezeConstants>

<DistanceXZ> always the same (5)
<DistanceY> always the same (1)


<InventoryConstants>

<HypoRegenerationRate> (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)
if rate = 6; if a hypo restores 50HP then we get 6/1 * 50 = 300 frames (5s)
if rate = 0 it becomes rate = 1 at runtime, so regeneration will still take 50 frames (< 1s)


<LODConstants>

<Float> always the same; (193600) this is 440 squared
<Float> always the same; (48400) this is 220 squared
<Float> always the same; (12100) this is 110 squared
<Float> always the same; (0)
<Float> always the same; (0)


<HurtSoundConstants>

<BasePercentage>
<MaxPercentage>
<PercentageThreshold>
<Timer>
<MinTimer>
<MaxLight>
<MaxMedium>
<DeathChance>
<VolumeTreshold>
<MediumTreshold>
<HeavyTreshold>
<MinVolume>
<LightSound>
<MediumSound>
<HeavySound>
<DeathSound>


<AIConstants>

<Flags>
NoStartleAnim
EnableMeleeFireDodge
ShootDodge
RunAwayDodge
NotUsed
<RotationSpeed>
<DazedMinFrames>
<DazedMaxFrames>
<DodgeReactFrames>
<DodgeTimeScale>
<DodgeWeightScale>
see <Targeting>
see <WeaponSkills>
<DeadMakeSureDelay>
<InvestigateBodyDelay>
<LostContactDelay>
<DeadTauntChance>
<GoForGunChance>
<RunPickupChance>
<CombatId>
<MeleeId>
see SNDD talk page
<HostileThreatDefiniteTimer>
<HostileThreatStrongTimer>
<HostileThreatWeakTimer>
<FriendlyThreatDefiniteTimer>
<FriendlyThreatStrongTimer>
<FriendlyThreatWeakTimer>
<EarshotRadius>


<Targeting>

<StartleMissAngle>
<StartleMissDistance>
<PredictAmount>
<PredictPositionDelayFrames>
<PredictDelayFrames>
<PredictVelocityFrames>
<PredictTrendFrames>


<WeaponSkills>

<RecoilCompensation>
<BestAimingAngle>
<ShotGroupError>
<ShotGroupDecay>
<ShootingInaccuracyMultiplier>
<MinShotDelay>
<MaxShotDelay>


<VisionConstants>

<CentralDistance>
<PeripheralDistance>
<VerticalRange>
<CentralRange>
<CentralMax>
<PeripheralRange>
<PeripheralMax>


ONCV, death particle, TRBS, TRMA, TRAC, TRAS, health, daodan, etc.

<Variant> ONCV name
<Particles> ONCP instance number
<Impacts> ONIA instance number
<ImpactModifierName>
<Impacts> Holds a lot <ONCCImpact><Name>...</Name></ONCCImpact>
<DeathParticle>
<BodySet> TRBS file
<BodyTextures> TRMA file
<BodyMaterials> CBPM instance number
<BodyImpacts> CBPI instance number
<FightModeTimer>
<IdleAnimation1Timer>
<IdleAnimation2Timer>
<Health>
<FeetBones>
<MinBodySizeFactor>
<MaxBodySizeFactor>
<DamageFactors>
<BossShieldProtectAmount>
<Animations>
<AimingScreens>
<AIRateOfFire>
<DeathDeleteDelay>
<WeaponHand>
<HasDaodanPowers>
<HasSupershield>
<CantTouchThis>


ONCP: character particle

  • 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

  • CBPM link to Mtrl files which are used by ONIE.


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>

special ONCC overview

"Here you can download the complete overview of all used different ONCC files as a text file.
Copy it to a spreadsheet calculation program like Excel." - ssg