XML:BINA/OBJC/MELE: Difference between revisions

added explanation of ThrowDanger, DazedMinFrames, DazedMaxFrames and Importance; added missing flags
mNo edit summary
(added explanation of ThrowDanger, DazedMinFrames, DazedMaxFrames and Importance; added missing flags)
 
(21 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{XML_OBJC_Header | type=MELE | prev=FURN | next=NEUT | name=Melee profiles }}
{{XML_OBJC_Header| prev=FLAG | type=MELE | next=NEUT | name=Melee Profile}}
{{finish}}
{{finish}}


===general information===
==General information==
* The xml code on this page is compatible with onisplit '''v0.9.61.0'''
* The XML on this page was tested with OniSplit v'''0.9.61.0'''.
* BINACJBOMelee Profile.oni is '''global''' (It's stored in '''level0_'''...)
* There is only one global "BINACJBOMelee Profile" stored in level0_Final in vanilla Oni.
* A local file can also be used (stored in level'xx'_Final) for level-specific melee profiles. However, please note that if a character is spawned and does not have a profile in the local file, the global one is NOT read. In other words, the local file completely replaces the level0_Final one.
* It was partly through MELE modding that Loser was able to create his famous video of [https://www.youtube.com/watch?v=NQE-LjM9GqM parkouring Mukade] (see [[Special:Permalink/13881|HERE]] and search for "taped" for the beginning of his technical explanation).


===file structure===
==File structure==
[...]


==Melee IDs==
{| class="wikitable" width="100%"
! Id
! Name
! Id
! Name
! Id
! Name
! Id
! Name
! Id
! Name
! Id
! Name
|-
| 0
| Security_Guard
| 10
| TANKER_Medium
| 20
| ELITE_Medium
| 30
| MURO_Final
| 40
| NINJABOT_Train2
| 50
| -
|-
| 1
| TCTF_Lite
| 11
| BLACKOPS_Lite
| 21
| ELITE_Hard
| 31
| MURO_Mutant
| 41
| NINJABOT_PowPlant
| 51
| -
|-
| 2
| STRIKER_Easy
| 12
| BLACKOPS_Swat
| 22
| KONOKO
| 32
| GRIFFIN
| 42
| -
| 52
| -
|-
| 3
| THUG_Air
| 13
| TCTF_Swat
| 23
| BARABAS Rsrch D
| 33
| STRIKER_Mini
| 43
| -
| 53
| -
|-
| 4
| COMGUY
| 14
| ELITE_Easy
| 24
| RED_Hard
| 34
| COP Male
| 44
| -
| 45
| -
|-
| 5
| STRIKER_Medium
| 15
| TANKER_Hard
| 25
| BARABAS TCTF D
| 35
| COP Female
| 45
| -
| 55
| TANKER_Easy2
|-
| 6
| STRIKER_Hard
| 16
| RED_Medium
| 26
| NINJA_Medium
| 36
| THUG_Mfg
| 46
| -
| 56
| TANKER_Medium2
|-
| 7
| TANKER_Easy
| 17
| MADBOMBER
| 27
| NINJA_Hard
| 37
| THUG_Neuro
| 47
| -
| 57
| TANKER_Hard2
|-
| 8
| RED_Easy
| 18
| NINJABOT_Train1
| 28
| NINJA_Super
| 38
| THUG_Pow
| 48
| -
| 58
| -
|-
| 9
| NINJA_Easy
| 19
| SNIPER
| 29
| MURO_Dream
| 39
| THUG_Wh
| 49
| -
| 59
| -
|}
===New IDs===
These IDs are available when Custom Characters Melee Profile (AE mod package 23901) is installed, which customizes the global melee file.


===tags===
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
! width=32px| ID
!width=120px| content type
! style="text-align:left"| Name
! description
|-
| 120 *
| Rayman
|-
| 121 *
| Casey
|-
| 122 *
| Hayate/Hanako
|-
| 123 *
| Jester
|-
| 124 *
| Kojiro
|-
|125*
| Sarai
|-
|-
| <?xml version="1.0" encoding="utf-8"?>
|126*
| float, flag
| BGI_Hammer
| Don't change this.
|-
|-
| <Oni>
|}
| -
 
|
==Tags==
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=120px| Content type
! Description
|-
|-
| <Objects>
| <Objects>
| -
| -
| Holds the melee profiles, starting with <MELE Id="..."> and ending with </MELE>
| Holds the melee profiles, starting with <MELE Id="..."> and ending with </MELE>.
|-
|-
| <MELE Id="...">
| <MELE Id="...">
Line 53: Line 223:
| <MeleeId>
| <MeleeId>
| integer
| integer
|
| Used by ONCC and CHAR.
|-
|-
| <Name>
| <Name>
|
| char[64]
|
| Space for notes.
|-
|-
| <CharacterClass>
| <CharacterClass>
|
| char[64]
|
| <font color="#777777">ONCC</font>file_name<font color="#777777">.oni</font> (without file suffix and prefix)
|-
|-
| <Notice>
| <Notice>
|
| integer
|
| Read as a percentage; how often the AI registers an incoming attack; without noticing it, the AI will not block or dodge.
|-
|-
| <Dodge>
| <Dodge>
| -
| -
|
|
|-
| <Base>
| int32
| Dodge base as percentage; determines how often AI tries to dodge incoming attacks.
|-
| <Extra>
| int32
| Dodge extra as percentage; adds extra chance to dodge incoming attack.
|-
| <ExtraDamageThreshold>
| int32
| Amount of damage dealt to character (or incoming in one strong attack) for Dodge extra activation.
|-
|-
| <BlockSkill>
| <BlockSkill>
|
| -
|
|
|-
|-
| <Single>
| <Single>
|
| int32
|
| One-on-one blocking skill as percentage; how often an AI blocks an incoming attack when facing one enemy.
|-
|-
| <Group>
| <Group>
|
| int32
|
| Group blocking skill as percentage; appears to be the chance that an AI will try to block attacks coming from multiple enemies.
|-
|-
| <NotBlocked>
| <NotBlocked>
|
| float
|
| AI's chance for choosing a technique that the target cannot block at the moment of the technique start (e.g. Striker's forward kick against a crouching enemy, finishing off a staggered enemy, or simply attacking a running enemy).
|-
|-
| <MustChangeStance>
| <MustChangeStance>
|
| float
|
| AI's chance to perform a technique which will force enemy to change his stance (stand/crouch) if he wants to defend against the technique.
|-
|-
| <BlockedButUnblockable>
| <BlockedButUnblockable>
|
| float
|
| AI's chance to use an attack which is unblockable attack even if the enemy is in the correct defensive stance to "guard" against it.
|-
|-
| <BlockedButHasStagger>
| <BlockedButHasStagger>
|
| float
|
| AI's chance to perform a technique which will stagger the target if the target blocks it.
|-
|-
| <BlockedButHasBlockstun>
| <BlockedButHasBlockstun>
|
| float
|
| AI's chance to perform technique which will block-stun target if the target blocks it (forced to stay in block pose for more than one cycle of the idle block animation).
|-
|-
| <Blocked>
| <Blocked>
|
| float
|
| AI's chance to perform a technique even though the target is in the correct to block it at the moment of the technique's start.
|-
|-
| <ThrowDanger>
| <ThrowDanger>
|
| float
|
| A throwing-into-danger weight multiplier; how many times more likely it is that the AI will want to throw its target if the throw will place the target into a danger square.
|-
|-
| <DazedMinFrames>
| <DazedMinFrames>
|
| int16
|
| Minimum "down" time when character is knocked down.
|-
|-
| <DazedMaxFrames>
| <DazedMaxFrames>
|
| int16
|
| Maximum "down" time when character is knocked down.
|-
|-
| <Attacks>
| <Attacks>
Line 125: Line 307:
<Maneuvers>
<Maneuvers>
| -
| -
| Use special single tags if you don't want content for one of those parts
| Use special single tags if you don't want content for one of these parts:
: <Attacks />
: <Attacks />
: <Evades />
: <Evades />
: <Maneuvers />
: <Maneuvers />
Use following order: Attacks, Evades and Maneuvers. Onisplit will not accept e.g. Maneuvers, Attacks, Evades.
You must use them in the above order; for instance OniSplit will not accept Maneuvers, Attacks, Evades.
|-
|-
| <Technique>
| <Technique>
|
| -
|
|
|-
|-
| <Name>
| <Name>
|
| char[64]
|
| Space for notes (used to hold technique's name)
|-
|-
| <Flags>
| <Flags>
Line 144: Line 326:
: None
: None
: Interruptible
: Interruptible
: Unknown2
: GenerousDir
: Fearless
 
See [[OBD:BINA/OBJC/MELE|OBD page]] for explanations.
|-
|-
| <Weight>
| <Weight>
|
| int32
 
| Techniques with higher weights are preferred by the engine, when there is more than one technique that can be used at the moment; when they have the same weight, the engine calls them in the order in which they're listed in MELE.
|
|-
|-
| <Importance>
| <Importance>
|
| int32
|
| Unused.
|-
|-
| <RepeatDelay>
| <RepeatDelay>
|
| int32
|
| In frames; after a technique is used, it is ignored by the engine for this time interval.
|-
|-
| <Moves>
| <Moves>
|
| -
| Can holds position, attack, throw, maneuver, evade tags
| Can hold Position, Attack, Throw, Maneuver and Evade tags.
|}
|}


 
===<Moves> tags===
====tags of <Moves>====
The parameters of Maneuver and Position are float values.


* <Attack Type="..." />
* <Attack Type="..." />
Line 253: Line 437:
JR_P
JR_P
JR_K
JR_K
</pre>
Labels:
<pre>
P = punch
K = kick
F = forward
B = backward
L = left
R = right
J = jumping
H = heavy (i.e., super move)
C = crouching
CS = crouch start (starting from a crouch)
D = downward?
GETUP, SLIDE = self-explanatory
R = running
</pre>
</pre>


Line 280: Line 481:
</pre>
</pre>


* <Maneuver Type="..." Chance="..." />
* <Maneuver Type="..." Duration="..." />
* <Maneuver Type="..." Duration="..." MinRange="..." ThresholdRange="..." />
* <Maneuver Type="..." Duration="..." MaxRange="..." ThresholdRange="..." />
* <Maneuver Type="..." Duration="..." MinAngle="..." MaxAngle="..." />
<pre>
<pre>
Advance
<Maneuver Type="Advance" Duration="..." MinRange="..." ThresholdRange="..." />
Retreat
<Maneuver Type="Retreat" Duration="..." MaxRange="..." ThresholdRange="..." />
CircleLeft
<Maneuver Type="CircleLeft" Duration="..." MinAngle="..." MaxAngle="..." />
CircleRight
<Maneuver Type="CircleRight" Duration="..." MinAngle="..." MaxAngle="..." />
Pause
<Maneuver Type="Pause" Duration="..." />
Crouch
<Maneuver Type="Crouch" Duration="..." />
Jump
<Maneuver Type="Jump" Duration="..." />
Taunt
<Maneuver Type="Taunt" Duration="..." />
RandomStop
<Maneuver Type="RandomStop" Chance="..." />
GetUpForward
<Maneuver Type="GetUpForward" Duration="..." />
GetUpBackward
<Maneuver Type="GetUpBackward" Duration="..." />
GetUpRollLeft
<Maneuver Type="GetUpRollLeft" Duration="..." />
GetUpRollRight
<Maneuver Type="GetUpRollRight" Duration="..." />
BarabasWave
<Maneuver Type="BarabasWave" MaxRange="..." />
</pre>
</pre>


Line 331: Line 526:
</pre>
</pre>


* <Position Type="..." />
* <Position Type="..." MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<pre>
<pre>
RunForward
<Position Type="RunForward" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunLeft
<Position Type="RunLeft" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunRight
<Position Type="RunRight" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunBack
<Position Type="RunBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
JumpUp
<Position Type="JumpUp" />
JumpForward
<Position Type="JumpForward" />
JumpLeft
<Position Type="JumpLeft" />
JumpRight
<Position Type="JumpRight" />
JumpBack
<Position Type="JumpBack" />
StartToCrouch
<Position Type="StartToCrouch" />
Crouch
<Position Type="Crouch" />
Stand
<Position Type="Stand" />
CloseForward
<Position Type="CloseForward" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
CloseLeft
<Position Type="CloseLeft" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
CloseRight
<Position Type="CloseRight" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
CloseBack
<Position Type="CloseBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunJumpForward
<Position Type="RunJumpForward" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunJumpLeft
<Position Type="RunJumpLeft" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunJumpRight
<Position Type="RunJumpRight" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
RunJumpBack
<Position Type="RunJumpBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
</pre>
</pre>


{{XML}}
{{XML}}