19,279
edits
(clarified <AIConstants>, caught big oops with "friendly" timers) |
(→Variants, geometry, health, etc.: moved supershield info to new Shields page) |
||
(13 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
* ONCP, ONIA, OBPI and OBPM are part of '''ONCC*.oni''' files. | * ONCP, ONIA, OBPI and OBPM are part of '''ONCC*.oni''' files. | ||
* ONCC files are global; they can be found in AE/AEInstaller/vanilla/level0_Final.dat. | * ONCC files are global; they can be found in AE/AEInstaller/vanilla/level0_Final.dat. | ||
==<AirConstants>== | ==<AirConstants>== | ||
Line 23: | Line 18: | ||
! Description | ! Description | ||
|- | |- | ||
|<FallGravity> | | <FallGravity> | ||
| float | | float | ||
| | | Always 0.55. Used as the speed of a fall when predicting if an attack will hit a target when the attacker is in midair. It seems to be a bug that this is looked at, as <JumpGravity> actually controls the character's gravity while going up <u>and</u> down. | ||
|- | |- | ||
| <JumpGravity> | | <JumpGravity> | ||
| float | | float | ||
| | | Always in range 0.05-0.07. The strength of gravity (as acceleration per frame) for the entire duration of a jump. | ||
|- | |- | ||
| <JumpStartVelocity> | | <JumpStartVelocity> | ||
Line 41: | Line 36: | ||
| <JetpackAcceleration> | | <JetpackAcceleration> | ||
| float | | float | ||
| Upward acceleration | | Upward acceleration for the duration of time that you hold down JUMP | ||
|- | |- | ||
| <FramesFallGravity> | | <FramesFallGravity> | ||
| int16 | | int16 | ||
| | | Always 7. After this many frames, <FallGravity> is used for the deceleration of a jump when predicting if an attack will hit a target when the attacker is in midair; before that many frames, <JumpGravity> is used for the prediction. It seems to be a bug that this is field is looked at, as <JumpGravity> controls a character's gravity while going up <u>and</u> down. | ||
|- | |- | ||
| <JetpackTimer> | | <JetpackTimer> | ||
| int16 | | int16 | ||
| | | Standard value is 14, but ranges from 4 (Elite Striker) to 20 (Konoko). This misleadingly-named field is the number of frames for which you can continue holding down JUMP to increase the height of your jump. [http://mods.oni2.net/node/83 This mod] vastly increases the value of this field for Barabas. When shapeshifted to him, you can keep ascending by holding JUMP; pressing JUMP multiple times during the time window is also allowed. | ||
|- | |- | ||
| <MaxNoDamageFallingHeight> | | <MaxNoDamageFallingHeight> | ||
| float | | float | ||
| Maximum falling height without damage (see below) | | Maximum falling height without taking damage (see below) | ||
|- | |- | ||
| <MaxDamageFallingHeight> | | <MaxDamageFallingHeight> | ||
Line 179: | Line 174: | ||
==<LODConstants>== | ==<LODConstants>== | ||
Distances from camera used to choose which [[XML:TRBS|LOD]] (level of detail) to use for a character model. | Distances from camera used to choose which [[XML:TRBS|LOD]] (level of detail) to use for a character model. The numbers are stored as squares of the distance in order to be compared quickly against the square of the current distance from the camera without having to perform any square root operations. | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
Line 187: | Line 183: | ||
| <Float> | | <Float> | ||
| float | | float | ||
| Always 193,600 (440 | | Always 193,600 (440<sup>2</sup>). Threshold for Super-Low LOD. If the camera is more than 440 world units (147ft or 44m) from a character, this LOD is selected. | ||
|- | |- | ||
| <Float> | | <Float> | ||
| float | | float | ||
| Always 48,400 (220 | | Always 48,400 (220<sup>2</sup>). Threshold for Low LOD. If the camera is more than 220 world units (73ft or 22m) from a character, this LOD is selected. | ||
|- | |- | ||
| <Float> | | <Float> | ||
| float | | float | ||
| Always 12,100 (110 | | Always 12,100 (110<sup>2</sup>). Threshold for Medium LOD. If the camera is more than 110 world units (37ft or 11m) from a character, this LOD is selected. | ||
|- | |- | ||
| <Float> | | <Float> | ||
| float | | float | ||
| Always 0 | | Always 0. This means that the High LOD will always be selected if the camera is 110wu or less from a character. | ||
|- | |- | ||
| <Float> | | <Float> | ||
| float | | float | ||
| Always 0 | | Always 0. This Super-High LOD is never reached by only looking at camera distance, but continue reading below. | ||
|} | |} | ||
After the above distance-from-camera filter is applied, Oni performs additional calculations which could end up raising or lowering the LOD for this character. See the Graphics article's [[Graphics#LOD|LOD section]] for the details of the logic. | |||
==<HurtSoundConstants>== | ==<HurtSoundConstants>== | ||
Line 242: | Line 240: | ||
| <DeathChance> | | <DeathChance> | ||
| int16 | | int16 | ||
| Always 100; | | Always 100; chance of playing a death sound | ||
|- | |- | ||
| <VolumeTreshold> | | <VolumeTreshold> | ||
Line 396: | Line 394: | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !width=120px| Content type | ||
! | ! Description | ||
|- | |- | ||
| <StartleMissAngle> | | <StartleMissAngle> | ||
| float | | float | ||
| | | Always has value 0.5 for TURR and ONCC; multiplied against target's distance to get error in AI's/turret's first wild shot | ||
|- | |- | ||
| <StartleMissDistance> | | <StartleMissDistance> | ||
| float | | float | ||
| | | Always has value 25 for TURR and ONCC; max value for result of multiplication above | ||
|- | |- | ||
| <PredictAmount> | | <PredictAmount> | ||
| float | | float | ||
| | | Always has value 1 for TURR and ONCC; accuracy multiplier for prediction of target's position | ||
|- | |- | ||
| <PredictPositionDelayFrames> | | <PredictPositionDelayFrames> | ||
| int32 | | int32 | ||
| | | Always has value 0 for TURR and ONCC; max value for how many frames of lookback can be used to predict target's position | ||
|- | |- | ||
| <PredictDelayFrames> | | <PredictDelayFrames> | ||
| int32 | | int32 | ||
| | | Always has value 5 for TURR and ONCC; number of frames delay in recognizing target's current position | ||
|- | |- | ||
| <PredictVelocityFrames> | | <PredictVelocityFrames> | ||
| int32 | | int32 | ||
| | | Always has value 15 for TURR and ONCC; number of frames over which AI can average target's velocity to help predict position | ||
|- | |- | ||
| <PredictTrendFrames> | | <PredictTrendFrames> | ||
| int32 | | int32 | ||
| | | Always has value 60 for TURR and ONCC; size in frames of location buffer for target | ||
|} | |} | ||
The higher <PredictPositionDelayFrames> is, the further back the AI will look in the position buffer which contains past location information for the target, however this value is always 0 in Oni's data, meaning the current location is used. The recognition of the target's current position is delayed by <PredictDelayFrames>, always 5/60 of a second, which represents something like "reaction time when tracking target". <PredictAmount> can be used to add inaccuracy to this prediction by choosing a value below 1.0, but in Oni's data it is always 1.0. | |||
===<WeaponSkills>=== | ===<WeaponSkills>=== | ||
Note that all the following tags are declared for each specific weapon in the game. | |||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !width=120px| Content type | ||
! | ! Description | ||
|- | |- | ||
| <RecoilCompensation> | | <RecoilCompensation> | ||
| float | | float | ||
| | | Ranges from 0.0 to 1.0; 1.0 means the weapon will not have any recoil when used by this AI | ||
|- | |- | ||
| <BestAimingAngle> | | <BestAimingAngle> | ||
| float | | float | ||
| | | A floor value in radians for aiming inaccuracy so that an AI never has perfect aim | ||
|- | |- | ||
| <ShotGroupError> | | <ShotGroupError> | ||
| float | | float | ||
| | | An error percentage that is multiplied against the AI's final aim | ||
|- | |- | ||
| <ShotGroupDecay> | | <ShotGroupDecay> | ||
| float | | float | ||
| shot | | Ranges from 0.0 to 1.0; how quickly the starting shot error decreases or increases (in other words, the middle of this range is desirable for natural-looking weapons handling) | ||
|- | |- | ||
| <ShootingInaccuracyMultiplier> | | <ShootingInaccuracyMultiplier> | ||
| float | | float | ||
| | | Inaccuracy multiplier indicating AI's skill with this weapon; usually just 1 (no effect on weapon handling), but sometimes 0 (cancels out inaccuracy) | ||
|- | |- | ||
| <MinShotDelay> | | <MinShotDelay> | ||
| uint16 | | uint16 | ||
| | | Minimum delay in ticks before pulling the trigger again | ||
|- | |- | ||
| <MaxShotDelay> | | <MaxShotDelay> | ||
| uint16 | | uint16 | ||
| | | Maximum delay in ticks before pulling the trigger again | ||
|} | |} | ||
;Shooting skills | |||
These can be viewed 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). Sample skill settings for one ONCC are shown below. | |||
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. | |||
The first weapon (weapon 0) is not in the game anymore, whatever | {| class="wikitable" style="text-align:center" | ||
|- bgcolor="#e9e9e9" | |||
!Weapon ||recoil||best angle||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 | |||
|} | |} | ||
===<VisionConstants>=== | ===<VisionConstants>=== | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !width=120px| Content type | ||
! | ! Description | ||
|- | |- | ||
| <CentralDistance> | | <CentralDistance> | ||
| float | | float | ||
| | | Central vision distance | ||
|- | |- | ||
| <PeripheralDistance> | | <PeripheralDistance> | ||
| float | | float | ||
| | | Peripheral vision distance | ||
|- | |- | ||
| <VerticalRange> | | <VerticalRange> | ||
| float | | float | ||
| | | Vertical vision range | ||
|- | |- | ||
| <CentralRange> | | <CentralRange> | ||
| float | | float | ||
| | | Central vision range | ||
|- | |- | ||
| <CentralMax> | | <CentralMax> | ||
| float | | float | ||
| | | Central vision max | ||
|- | |- | ||
| <PeripheralRange> | | <PeripheralRange> | ||
| float | | float | ||
| | | Peripheral vision range | ||
|- | |- | ||
| <PeripheralMax> | | <PeripheralMax> | ||
| float | | float | ||
| | | Peripheral vision max | ||
|} | |} | ||
;Vision field | |||
An AI's vision field is composed of a central area and peripheral area. See [[AI#Vision_and_hearing|HERE]] for details and illustrations. Put in terms of the data fields above, a character is visible if the distance between the AI and the character is less than the "distance" field. Between each area's "range" and "max" settings, the visibility distance decreases gradually towards 0. The vision field can be seen with the scripting command '''ai2_showvision=1''', but it should be noted that the visualization of the peripheral vision field is missing its central segment. | |||
The "range" and "max" values are angles, but stored as cosines of the angles for performance reasons. Here are some sample angles converted from cosine to 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° | |||
|} | |||
== | ==Variants, geometry, health, etc.== | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !width=120px| Content type | ||
! | ! Description | ||
|- | |- | ||
| <Variant> | | <Variant> | ||
Line 586: | Line 576: | ||
|valign=top| <ImpactModifierName> | |valign=top| <ImpactModifierName> | ||
|valign=top| flag | |valign=top| flag | ||
| | | Used to choose the correct effect from [[XML:BINA/ONIE#List_of_tags.2C_types.2C_and_flags|ONIE]]; impact name -> material name -> modifier (<Component> probably has to be "Impact") | ||
: Any | : Any | ||
: Light | : Light | ||
Line 594: | Line 584: | ||
| <Impacts> | | <Impacts> | ||
| link | | link | ||
| | | Holds a lot of links of the format <ONCCImpact><Name><font color="#777777">Impt</font>name<font color="#777777">.oni</font></Name></ONCCImpact> for character-environment collision (see [[XML:BINA/ONIE#Visual_guides:_weapon.2C_melee.2C_environment|HERE]] to learn about that). This seems to be a series of slots for specific animation types so that those animations inherit the Impt value (name). See for example <ONCCImpact><Name>"Fall_LandHard"</Name></ONCCImpact> and the StNA anim type Fall_LandHard. | ||
|- | |- | ||
| <DeathParticle> | | <DeathParticle> | ||
| link | | link | ||
| | | Only used by the Mad Bomber (his smoking foot) | ||
|- | |- | ||
| <BodySet> | | <BodySet> | ||
Line 620: | Line 608: | ||
| <FightModeTimer> | | <FightModeTimer> | ||
| int32 | | int32 | ||
| fight mode, | | After fight mode is initiated, the character's COMidle animations will play for at least this many ticks. The character will then return to his non-COM idle animations as soon after that as an animation plays which has no COM variant, such as running, so that the COMidle loop has a reason to break. You can see the fight mode timer with '''chr_debug_characters=1'''. | ||
COMidle animations will play | |||
|- | |- | ||
| <IdleAnimation1Timer> | | <IdleAnimation1Timer> | ||
| int32 | | int32 | ||
| minimum | | Always 30,000 (= 8.333 minutes). The minimum ticks before an Idle type animation can be played (the engine will add a few frames to the counter, so the exact time is always different). Idle type animation are rarely seen by players because of the long wait time, and are not to be confused with typical idle animations, which use Stand as their type. Idle type animations can be seen in [https://www.youtube.com/watch?v=qbo2Q-VD6dc this video]. | ||
: | |||
|- | |- | ||
| <IdleAnimation2Timer> | | <IdleAnimation2Timer> | ||
| int32 | | int32 | ||
| | | Always 30,000 (= 8.333 minutes). The time in ticks before an idle animation is played again. | ||
|- | |- | ||
| <Health> | | <Health> | ||
| int32 | | int32 | ||
| | | Base health of the character class; additional health information for each unique character spawned from a class is stored in the [[XML:BINA/OBJC/CHAR#XML_structure|BINACJBOCharacter.oni]] file. If playing on Hard, non-player characters also receive a boost of +25% max HP (this number comes from the [[OBD:ONGS|ONGS]]). | ||
|- | |- | ||
|valign=top| <FeetBones> | |valign=top| <FeetBones> | ||
|valign=top| flag | |valign=top| flag | ||
| | | | ||
Unused. Can be: | |||
: LeftFoot | : LeftFoot | ||
: RightFoot | : RightFoot | ||
Line 648: | Line 631: | ||
| <MinBodySizeFactor> | | <MinBodySizeFactor> | ||
| float | | float | ||
| | | Minimum body size factor (for an explanation of body size scaling, see the "Body size factor" on [[OBD:ONCC]]) | ||
|- | |- | ||
| <MaxBodySizeFactor> | | <MaxBodySizeFactor> | ||
| float | | float | ||
| | | Maximum body size factor | ||
|- | |- | ||
| <DamageFactors> | | <DamageFactors> | ||
| | | | ||
| | | See [[#<DamageFactors>|HERE]] | ||
|- | |- | ||
| <BossShieldProtectAmount> | | <BossShieldProtectAmount> | ||
| float | | float | ||
| | | Damage reducer, multiplied against all incoming DamageTypes (can also be applied with '''chr_boss_shield(ai_name)''') | ||
|- | |- | ||
| <Animations> | | <Animations> | ||
Line 672: | Line 655: | ||
| <AIRateOfFire> | | <AIRateOfFire> | ||
| int16 | | int16 | ||
| | | Unused | ||
|- | |- | ||
| <DeathDeleteDelay> | | <DeathDeleteDelay> | ||
| int16 | | int16 | ||
| time between death and deletion | | Always 0 except for Mad Bomber, who is 190. The time in ticks that must pass between the character's death and their deletion (replacement by corpse model). | ||
|- | |- | ||
|valign=top| <WeaponHand> | |valign=top| <WeaponHand> | ||
|valign=top| flag | |valign=top| flag | ||
| | | Which hand a character uses to hold their weapon. Only ninjas (including Mukade and the ninjabots) are lefthanded. | ||
: 0 (right) | : 0 (right) | ||
: 1 (left) | : 1 (left) | ||
Line 686: | Line 669: | ||
| <HasDaodanPowers> | | <HasDaodanPowers> | ||
| int8 | | int8 | ||
| | | When set to 1, the character has Daodan powers (can overheal with hypos, and do more damage in this overpower mode) | ||
|- | |- | ||
|valign=top| <HasSupershield> | |valign=top| <HasSupershield> | ||
|valign=top| int8 | |valign=top| int8 | ||
| | | | ||
Only used by Mutant Muro. When set to 1, the character has a [[supershield]]. | |||
[[ | |||
|- | |- | ||
| <CantTouchThis> | | <CantTouchThis> | ||
| int8 | | int8 | ||
| | | Only used by Mutant Muro. When set to 1, forces on the [[Cheats|"canttouchthis" cheat]] for this character. | ||
|} | |} | ||
===<DamageFactors>=== | ===<DamageFactors>=== | ||
The | The float values in these seven tags correspond to damage types (see [[Particle damage types]] for details). Each one is a multiplier against the StunDamage and Knockback parameters of the DamageBlast and DamageChar PAR3 actions, which utilize these DamageTypes. The values range from 0.0-1.0, where 1.0 totally cancels out damage of that type. | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !width=120px| Content type | ||
! | ! Description | ||
|- | |- | ||
| <Float> | | <Float> | ||
Line 743: | Line 718: | ||
|} | |} | ||
== | ==ONCP: Oni Character Particle (Array)== | ||
* ONCP is used for | * [[OBD:ONCP|ONCPs]] is used for attaching particles to animations. Search for the "Particles" tag in a TRAM XML to see this array. | ||
Line 759: | Line 734: | ||
</ONCP> | </ONCP> | ||
: <Name> is | : <Name> is used for linking from a TRAM; here are the names available in Oni's data: | ||
:: | :: acid - for Konoko's death event in Vago Biotech (level 3) | ||
:: barabwave - for | :: barabwave - for Barabas' earthquaker | ||
:: blanka - for | :: blanka - for Mutant Muro's repelling lightning attack | ||
:: | :: contrail - for attacks that use colored contrails (character specific <Type>) | ||
:: daodan - Konoko's | :: daodan - for the blast from Konoko's Daodan super-surge | ||
:: daodan2 - Konoko's | :: daodan2 - for the blast from Konoko's final Daodan super-surge at the end of the game | ||
:: | :: death - the dust-like death particle | ||
:: | :: dust - the ground-level particle when player lands from a great height | ||
:: fireball - Mukade's | :: fireball - Mukade's Devil Star | ||
:: flash - attack impact flash | :: flash - attack impact flash | ||
:: | :: glow - colored glow particle for attacks | ||
:: murowave - for | :: murowave - for Mutant Muro's ''ass bomb'' | ||
:: ' | :: snap - for Muro's neck snap move? | ||
:: teleport - for Mukade's teleport animation | :: teleport - for Mukade's teleport animation | ||
:: | :: thud | ||
:: thunderbolt - for | :: thunderbolt - for Mutant Muro's attraction lightning attack | ||
:: | :: trail - white-colored contrail for standard attacks | ||
:: rocket - for | :: rocket - for Barabas' jetpack | ||
:: super_attractor - for MutantMuro | :: super_attractor - for MutantMuro | ||
:: super_glow - | :: super_glow - Daodan glow particle for body | ||
:: super_l_hand - left hand | :: super_l_hand - Daodan glow particle for left hand (<BodyPart>LeftFist) | ||
:: super_r_hand - right hand | :: super_r_hand - Daodan glow particle for right hand (<BodyPart>RightFist) | ||
: <Type> | : <Type> provides the particle class (file name without prefix BINA3RAP and without suffix .oni) | ||
: <BodyPart> means bone | : <BodyPart> means the bone ID; see [[OBD:TRIA#Bones|TRIA]] and [[XML:TRBS]] | ||
:: The bones | :: The bones have these names in XML: | ||
Pelvis | Pelvis | ||
LeftThigh | LeftThigh | ||
Line 808: | Line 782: | ||
None | None | ||
==ONIA: Oni Character Impact Array== | |||
== | * [[OBD:ONIA|ONIAs]] are used for special attacks, as a kind of extension to [[#CBPI:_Character_Body_Part_Impacts|CBPI]] in ONIEs. See [[XML:BINA/ONIE|ONIE]] for more information. | ||
* ONIA | * <Name> is used for linking from a TRAM. <Type> and <Modifier> are for links to ONIE. "Light", "Medium" and "Heavy" are the possible choices for <Modifier>. | ||
* <Name> is | |||
'''XML structure''' | '''XML structure''' | ||
Line 825: | Line 796: | ||
[...] | [...] | ||
</ONIA> | </ONIA> | ||
==CBPM: Character Body Part Materials== | ==CBPM: Character Body Part Materials== | ||
* [[OBD:CBPM|CBPMs]] link to [[XML:Mtrl| | * [[OBD:CBPM|CBPMs]] link to [[XML:Mtrl|Mtrls]] which are used by [[XML:BINA/ONIE|ONIEs]]. | ||
'''XML structure''' | '''XML structure''' | ||
The link | The link ID lines up with the bone list in [[OBD:TRIA#Bones|TRIA]]. For example, the eleventh material links to the character's head. | ||
<CBPM id="7"> | <CBPM id="7"> | ||
Line 859: | Line 828: | ||
</CBPM> | </CBPM> | ||
==CBPI: Character Body Part Impacts== | |||
== | * [[OBD:CBPI|CBPIs]] link to [[XML:Impt|Impts]] which are used by [[XML:BINA/ONIE|ONIEs]]. | ||
* | * Special attacks have their own Impts. See [[#ONIA:_Oni_Character_Impact_Array|ONIA]]. | ||
* Special attacks have | |||
'''XML structure''' | '''XML structure''' | ||
The link | The link ID lines up with the bone list in [[OBD:TRIA#Bones|TRIA]]. For example, the eleventh impact links to the character's head. | ||
<CBPI id="8"> | <CBPI id="8"> | ||
<HitImpacts> | <HitImpacts> | ||
Line 934: | Line 901: | ||
</CBPI> | </CBPI> | ||
== | ==List of all ONCCs== | ||
barabus | barabus | ||
bdfem_1 | bdfem_1 | ||
Line 1,059: | Line 1,026: | ||
thug_wh_5 | thug_wh_5 | ||
==New character balance== | |||
==character balance== | To know if a character you're creating is sufficiently balanced, you should compare Oni's vanilla characters against it. Factors that could be taken into account: | ||
* Basic: | |||
** Health | |||
** Block chances (melee profile) | |||
** Attack strength (per combat TRAM) | |||
** Attack speed (frame count per combat TRAM) | |||
* | * Advanced: | ||
* | ** Damage multipliers (<DamageFactors>) | ||
* | ** Average damage of combat animation set | ||
* | ** Average damage per second (DPS) | ||
* | |||
* | |||
* | |||
{{XML}} | {{XML}} |