XML:ONCC: Difference between revisions

m
→‎LODConstants: formatting
m (image was duplicate upload; switching to original upload before deleting it)
m (→‎LODConstants: formatting)
 
(5 intermediate revisions by 2 users not shown)
Line 183: Line 183:
| <Float>
| <Float>
| float
| float
| 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.
| Always 193,600 (440²). 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<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.
| Always 48,400 (220²). Threshold for Low LOD. If the camera is more than 220 wu (73ft or 22m) from a character, this LOD is selected.
|-
|-
| <Float>
| <Float>
| float
| float
| 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.
| Always 12,100 (110²). Threshold for Medium LOD. If the camera is more than 110 wu (37ft or 11m) from a character, this LOD is selected.
|-
|-
| <Float>
| <Float>
| float
| float
| Always 0. This means that the High LOD will always be selected if the camera is 110wu or less from a character.
| Always 0. This means that the High LOD will always be selected if the camera is 110 wu or less from a character.
|-
|-
| <Float>
| <Float>
Line 202: Line 202:
|}
|}


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.
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 {{SectionLink|Graphics|LOD}} for the details of the logic.


==<HurtSoundConstants>==
==<HurtSoundConstants>==
Line 220: Line 220:
| <PercentageThreshold>
| <PercentageThreshold>
| int16
| int16
| Always 15; at least this much damage must be done to play a pain sound
| Always 15; minimum damage needed to have maximum chance of playing pain sound (see below for elaboration)
|-
|-
| <Timer>
| <Timer>
Line 275: Line 275:
|}
|}


If the AI is in an alerted state, has not been hurt within the last <Timer> ticks, and the damage being done is at least <PercentageThreshold>, the chance of playing a pain sound is <BasePercentage> + (damage done * (<MaxPercentage> - <BasePercentage>)) / <PercentageThreshold>. If the AI is alerted and has already received damage within the last <Timer> ticks, they will not play a hurt sound. If the AI is ''not'' in an alerted state, they will always play a hurt sound.
If the AI is in an alerted state and has not been hurt within the last <Timer> ticks, the odds of playing a pain sound are as follows: if damage being done is at least <PercentageThreshold>, the chance of playing a pain sound is <MaxPercentage>; if less than <PercentageThreshold>, then the chance is <BasePercentage> + (damage done * (<MaxPercentage> - <BasePercentage>)) / <PercentageThreshold>. This ramps up the odds of the pain sound from <BasePercentage> to <MaxPercentage> as the damage runs from 1 HP (38% chance) to 14 HP (86% chance). If the AI is alerted but has already received damage within the last <Timer> ticks, they will not play a pain sound. If the AI was ''not'' in an alerted state before being hit, they will always play a pain sound.


==<AIConstants>==
==<AIConstants>==
Line 294: Line 294:
| <RotationSpeed>
| <RotationSpeed>
| float
| 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 :)
| 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 :) In the vanilla data, it's set to 1 for all ONCCs except for Ninjabots, Ninjas and Mukade, who have the value 2.
|-
|-
| <DazedMinFrames>
| <DazedMinFrames>
Line 576: 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")
| 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"). This appears to have been set in the vanilla data based on the approx. mass of the character, so that Konoko and female cops have "Light", Muro and Thugs have "Medium", and Barabas, Elite Strikers and TCTF SWAT have "Heavy". However some unusual exceptions have been made, as Tankers are set to "Medium" and regular Strikers are "Heavy".
: Any
: Any
: Light
: Light
Line 673: Line 673:
|valign=top| <HasSupershield>
|valign=top| <HasSupershield>
|valign=top| int8
|valign=top| int8
| [[Image:HasSupershield 1.png|thumb|200px|Super shield]]
|
Only used by Mutant Muro. When set to 1, the character has a supershield, which:
Only used by Mutant Muro. When set to 1, the character has a [[supershield]].
* is visible as a red shield when the character is overpowered
* needs the <HasDaodanPowers> flag above and over 50% overpower to be enabled (the "chenille" cheat works too)
* when enabled, blocks damage from weapons and melee (with the exception of throws)
* when impacted by a melee attack, flares up with orange instead of showing a blue "blocked" hitflash
|-
|-
| <CantTouchThis>
| <CantTouchThis>
Line 1,032: Line 1,028:
==New character balance==
==New 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:
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:
* Health
* Basic:
* Attack strength (per TRAM)
** Health
* Attack speed (frame count) (per TRAM)
** Block chances (melee profile)
* Average damage of movement set
** Attack strength (per combat TRAM)
* Max attack damage per minute
** Attack speed (frame count per combat TRAM)
* Damage multipliers (<DamageFactors>)
* Advanced:
* Block chances (melee profile)
** Damage multipliers (<DamageFactors>)
** Average damage of combat animation set
** Average damage per second (DPS)


{{XML}}
{{XML}}