XML:BINA/OBJC/MELE: Difference between revisions

From OniGalore
< XML:BINA‎ | OBJC
Jump to navigation Jump to search
(note about localizing melee profiles to clarify that it's not only a global level0_Final file. (Can use some paraphrasing))
(added explanation of ThrowDanger, DazedMinFrames, DazedMaxFrames and Importance; added missing flags)
 
(14 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.
* Custom BINACJBOMelee Profile.oni can be localized in specific levels (levelx_Final) and thus will only affect the melee profiles of the characters in that level, while the characters in other levels will still use the one in level0_Final.
* 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===
==Melee IDs==
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
! Id
! Id
Line 156: Line 157:
|}
|}


 
===New IDs===
'''new Ids'''
These IDs are available when Custom Characters Melee Profile (AE mod package 23901) is installed, which customizes the global melee file.
 
<nowiki>*</nowiki> can be used by using the BINACJBOMelee Profile file found in "SMP - Fight Club" (pkg #82000) or "SMP - Conversion" (pkg #22006)


{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
! width=32px| Id
! width=32px| ID
! style="text-align:left"| Name
! style="text-align:left"| Name
|-
|-
Line 172: Line 171:
|-
|-
| 122 *
| 122 *
| Hayate
| Hayate/Hanako
|-
|-
| 123 *
| 123 *
Line 179: Line 178:
| 124 *
| 124 *
| Kojiro
| Kojiro
|-
|125*
| Sarai
|-
|126*
| BGI_Hammer
|-
|}
|}


 
==Tags==
===tags===
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
| <?xml version="1.0" encoding="utf-8"?>
| float, flag
| Don't change this.
|-
| <Oni>
| -
|
|-
|-
| <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 230: Line 227:
| <Name>
| <Name>
| char[64]
| char[64]
| space for notes
| Space for notes.
|-
|-
| <CharacterClass>
| <CharacterClass>
Line 238: Line 235:
| <Notice>
| <Notice>
| integer
| integer
| Notice in percent; how often AI registeres incoming attack; without noticing it, AI will not block or dodge.
| Read as a percentage; how often the AI registers an incoming attack; without noticing it, the AI will not block or dodge.
|-
|-
| <Dodge>
| <Dodge>
Line 246: Line 243:
| <Base>
| <Base>
| int32
| int32
| Dodge base in percent; determines how often AI tries to dodge incoming attacks.
| Dodge base as percentage; determines how often AI tries to dodge incoming attacks.
|-
|-
| <Extra>
| <Extra>
| int32
| int32
| Dodge extra in percent; adds extra chance to dodge incoming attack.
| Dodge extra as percentage; adds extra chance to dodge incoming attack.
|-
|-
| <ExtraDamageThreshold>
| <ExtraDamageThreshold>
Line 262: Line 259:
| <Single>
| <Single>
| int32
| int32
| 1 vs 1 blocking skill in percent; specifies how often AI blocks incoming attack when blocking one enemy.
| One-on-one blocking skill as percentage; how often an AI blocks an incoming attack when facing one enemy.
|-
|-
| <Group>
| <Group>
| int32
| int32
| Group blocking skill in percent; looks like amount of possibility that AI will try to block attacks incoming from more enemies.
| 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
| float
| Modifier of an AI2 chance for performing such a technique against its target that target is not able to block at the moment of the technique start (striker's kick forward aganist crouching enemy or finishing off staggered enemy or simply attacking running enemy).
| 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
| float
| Modifier for a chance to perform technique which will force enemy to change his stance if he wants to defend the technique (stand/crouch).
| 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
| float
| Modifier for a chance to perform technique which contains unblockable attack even if enemy is in correct defensive stance to "guard" the technique.
| 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
| float
| Blocked but has stagger; modifier for a chance to perform technique which will get blocked but target will be block-staggered.
| AI's chance to perform a technique which will stagger the target if the target blocks it.
|-
|-
| <BlockedButHasBlockstun>
| <BlockedButHasBlockstun>
| float
| float
| Modifier for a chance to perform technique which will get blocked, but target will be block-stunned (will be forced to stay in block pose for more than one cycle of idle block animation).
| 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
| float
| Modifier for a chance to perform a technique even tough this technique aims for target which is in correct stance and ready to block this technique at the moment of the technique's start.
| 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
| float
| Still unknown but it has something to do with probability of being thrown; when set very high, AI2 with this MELE is almost unthrowable.
| 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
| int16
| ?
| Minimum "down" time when character is knocked down.
|-
|-
| <DazedMaxFrames>
| <DazedMaxFrames>
| int16
| int16
| ?
| Maximum "down" time when character is knocked down.
|-
|-
| <Attacks>
| <Attacks>
Line 310: 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>
Line 322: Line 319:
| <Name>
| <Name>
| char[64]
| char[64]
| space for notes (technique's name)
| Space for notes (used to hold technique's name)
|-
|-
| <Flags>
| <Flags>
Line 328: Line 325:
|
|
: None
: None
: Interruptible (?)
: Interruptible
: Unknown2 (?)
: GenerousDir
: Fearless
 
See [[OBD:BINA/OBJC/MELE|OBD page]] for explanations.
|-
|-
| <Weight>
| <Weight>
| int32
| int32
| Techniques with higher weight are preferred by engine, if more techniques that can be used at one moment; have same weight, engine calls them in order as they are listed in MELE.
| 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
| int32
| ?
| Unused.
|-
|-
| <RepeatDelay>
| <RepeatDelay>
| int32
| int32
| Repeat delay in frames; after technique is used, it is ignored by engine for this time interval.
| 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.
Parameters of maneuver and position are float values.


* <Attack Type="..." />
* <Attack Type="..." />
Line 438: 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 532: Line 548:
<Position Type="RunJumpBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunJumpBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
</pre>
</pre>


{{XML}}
{{XML}}

Latest revision as of 21:47, 11 March 2024

MELE : Melee Profile
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

AKEV << Other file types >> CONS

TMBD << Other BINA >> ONIE

FLAG << Other OBJC >> NEUT

switch to OBD page

Unfinished building-60px.jpg

This page is unfinished. Can you fill in any missing information?
If it is not clear which part of the page is unfinished, ask on the talk page.

General information

  • The XML on this page was tested with OniSplit v0.9.61.0.
  • 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 parkouring Mukade (see HERE and search for "taped" for the beginning of his technical explanation).

File structure

[...]

Melee IDs

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.

ID Name
120 * Rayman
121 * Casey
122 * Hayate/Hanako
123 * Jester
124 * Kojiro
125* Sarai
126* BGI_Hammer

Tags

XML tag Content type Description
<Objects> - Holds the melee profiles, starting with <MELE Id="..."> and ending with </MELE>.
<MELE Id="..."> integer Ignore this.
<Header> -
<Flags> flag Ignore this.
<Position> float x3 Ignore this.
<Rotation> float x3 Ignore this.
<OSD> -
<MeleeId> integer Used by ONCC and CHAR.
<Name> char[64] Space for notes.
<CharacterClass> char[64] ONCCfile_name.oni (without file suffix and prefix)
<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> -
<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> -
<Single> int32 One-on-one blocking skill as percentage; how often an AI blocks an incoming attack when facing one enemy.
<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> 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> 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> 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> float AI's chance to perform a technique which will stagger the target if the target blocks it.
<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> 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> 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> int16 Minimum "down" time when character is knocked down.
<DazedMaxFrames> int16 Maximum "down" time when character is knocked down.
<Attacks>

<Evades>


<Maneuvers>

- Use special single tags if you don't want content for one of these parts:
<Attacks />
<Evades />
<Maneuvers />

You must use them in the above order; for instance OniSplit will not accept Maneuvers, Attacks, Evades.

<Technique> -
<Name> char[64] Space for notes (used to hold technique's name)
<Flags> flag
None
Interruptible
GenerousDir
Fearless

See OBD page for explanations.

<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> int32 Unused.
<RepeatDelay> int32 In frames; after a technique is used, it is ignored by the engine for this time interval.
<Moves> - Can hold Position, Attack, Throw, Maneuver and Evade tags.

<Moves> tags

The parameters of Maneuver and Position are float values.

  • <Attack Type="..." />
P
PP
PPP
PPPP
PF
PL
PR
PB
PD
PF_PF
PF_PF_PF
PL_PL
PL_PL_PL
PR_PR
PR_PR_PR
PB_PB
PB_PB_PB
PD_PD
PD_PD_PD
K
KK
KKK
KKKF
KF
KL
KR
KB
KD
KF_KF
KF_KF_KF
KL_KL
KL_KL_KL
KR_KR
KR_KR_KR
KB_KB
KB_KB_KB
KD_KD
KD_KD_KD
PPK
PKK
PKP
KPK
KPP
KKP
PK
KP
PPKK
PPKKK
PPKKKK
HP
HPF
HK
HKF
CS_P
CS_K
C_P1
C_P2
C_PF
C_K1
C_K2
C_KF
GETUP_KF
GETUP_KB
R_P
R_K
RB_P
RB_K
RL_P
RL_K
RR_P
RR_K
R_SLIDE
J_P
J_K
JF_P
JF_PB
JF_K
JF_KB
JB_P
JB_K
JL_P
JL_K
JR_P
JR_K

Labels:

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


  • <Evade Type="..." />
JumpForward
JumpForward2
JumpBack
JumpBack2
JumpLeft
JumpLeft2
JumpRight
JumpRight2
RunJumpForward
RunJumpForward2
RunJumpBack
RunJumpBack2
RunJumpLeft
RunJumpLeft2
RunJumpRight
RunJumpRight2
RollForward
RollBackward
RollLeft
RollRight
<Maneuver Type="Advance" Duration="..." MinRange="..." ThresholdRange="..." />
<Maneuver Type="Retreat" Duration="..." MaxRange="..." ThresholdRange="..." />
<Maneuver Type="CircleLeft" Duration="..." MinAngle="..." MaxAngle="..." />
<Maneuver Type="CircleRight" Duration="..." MinAngle="..." MaxAngle="..." />
<Maneuver Type="Pause" Duration="..." />
<Maneuver Type="Crouch" Duration="..." />
<Maneuver Type="Jump" Duration="..." />
<Maneuver Type="Taunt" Duration="..." />
<Maneuver Type="RandomStop" Chance="..." />
<Maneuver Type="GetUpForward" Duration="..." />
<Maneuver Type="GetUpBackward" Duration="..." />
<Maneuver Type="GetUpRollLeft" Duration="..." />
<Maneuver Type="GetUpRollRight" Duration="..." />
<Maneuver Type="BarabasWave" MaxRange="..." />


  • <Throw Type="..." />
P_Front
K_Front
P_Behind
K_Behind
RP_Front
RK_Front
RP_Behind
RK_Behind
P_FrontDisarm
K_FrontDisarm
P_BehindDisarm
K_BehindDisarm
RP_FrontDisarm
RK_FrontDisarm
P_FrontRifDisarm
K_FrontRifDisarm
P_BehiindRifDisarm
K_BehiindRifDisarm
RP_FrontRifDisarm
RK_FrontRifDisarm
RP_BehindRifDisarm
RK_BehindRifDisarm
Tackle
<Position Type="RunForward" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunLeft" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunRight" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="JumpUp" />
<Position Type="JumpForward" />
<Position Type="JumpLeft" />
<Position Type="JumpRight" />
<Position Type="JumpBack" />
<Position Type="StartToCrouch" />
<Position Type="Crouch" />
<Position Type="Stand" />
<Position Type="CloseForward" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="CloseLeft" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="CloseRight" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="CloseBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunJumpForward" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunJumpLeft" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunJumpRight" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />
<Position Type="RunJumpBack" MinRunInDist="..." MaxRunInDist="..." ToleranceRange="..." />