XML:BINA/OBJC/MELE: Difference between revisions
Jump to navigation
Jump to search
Script 10k (talk | contribs) (if a character is spawn and does not have a profile in the local file the global one (stored in level0_Final) is NOT read) |
(added explanation of ThrowDanger, DazedMinFrames, DazedMaxFrames and Importance; added missing flags) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{XML_OBJC_Header | type=MELE | {{XML_OBJC_Header| prev=FLAG | type=MELE | next=NEUT | name=Melee Profile}} | ||
{{finish}} | {{finish}} | ||
== | ==General information== | ||
* The | * The XML on this page was tested with OniSplit v'''0.9.61.0'''. | ||
* | * There is only one global "BINACJBOMelee Profile" stored in level0_Final in vanilla Oni. | ||
* A | * 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== | ||
[...] | |||
==Melee IDs== | |||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
! Id | ! Id | ||
Line 155: | Line 157: | ||
|} | |} | ||
===New IDs=== | |||
These IDs are available when Custom Characters Melee Profile (AE mod package 23901) is installed, which customizes the global melee file. | |||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
! width=32px| | ! width=32px| ID | ||
! style="text-align:left"| Name | ! style="text-align:left"| Name | ||
|- | |- | ||
Line 171: | Line 171: | ||
|- | |- | ||
| 122 * | | 122 * | ||
| Hayate | | Hayate/Hanako | ||
|- | |- | ||
| 123 * | | 123 * | ||
Line 180: | Line 180: | ||
|- | |- | ||
|125* | |125* | ||
|Sarai | | Sarai | ||
|- | |- | ||
|126* | |126* | ||
|BGI_Hammer | | BGI_Hammer | ||
|- | |- | ||
|} | |} | ||
== | ==Tags== | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !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 235: | Line 227: | ||
| <Name> | | <Name> | ||
| char[64] | | char[64] | ||
| | | Space for notes. | ||
|- | |- | ||
| <CharacterClass> | | <CharacterClass> | ||
Line 243: | Line 235: | ||
| <Notice> | | <Notice> | ||
| integer | | 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> | ||
Line 251: | Line 243: | ||
| <Base> | | <Base> | ||
| int32 | | int32 | ||
| Dodge base | | Dodge base as percentage; determines how often AI tries to dodge incoming attacks. | ||
|- | |- | ||
| <Extra> | | <Extra> | ||
| int32 | | int32 | ||
| Dodge extra | | Dodge extra as percentage; adds extra chance to dodge incoming attack. | ||
|- | |- | ||
| <ExtraDamageThreshold> | | <ExtraDamageThreshold> | ||
Line 267: | Line 259: | ||
| <Single> | | <Single> | ||
| int32 | | int32 | ||
| | | 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 | | 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 | ||
| | | 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 | ||
| | | 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 | ||
| | | 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 | ||
| | | AI's chance to perform a technique which will stagger the target if the target blocks it. | ||
|- | |- | ||
| <BlockedButHasBlockstun> | | <BlockedButHasBlockstun> | ||
| float | | 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 | | 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 | | 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 | | int16 | ||
| | | Minimum "down" time when character is knocked down. | ||
|- | |- | ||
| <DazedMaxFrames> | | <DazedMaxFrames> | ||
| int16 | | int16 | ||
| | | Maximum "down" time when character is knocked down. | ||
|- | |- | ||
| <Attacks> | | <Attacks> | ||
Line 315: | Line 307: | ||
<Maneuvers> | <Maneuvers> | ||
| - | | - | ||
| Use special single tags if you don't want content for one of | | Use special single tags if you don't want content for one of these parts: | ||
: <Attacks /> | : <Attacks /> | ||
: <Evades /> | : <Evades /> | ||
: <Maneuvers /> | : <Maneuvers /> | ||
You must use them in the above order; for instance OniSplit will not accept Maneuvers, Attacks, Evades. | |||
|- | |- | ||
| <Technique> | | <Technique> | ||
Line 327: | Line 319: | ||
| <Name> | | <Name> | ||
| char[64] | | char[64] | ||
| | | Space for notes (used to hold technique's name) | ||
|- | |- | ||
| <Flags> | | <Flags> | ||
Line 333: | Line 325: | ||
| | | | ||
: None | : None | ||
: Interruptible | : Interruptible | ||
: | : GenerousDir | ||
: Fearless | |||
See [[OBD:BINA/OBJC/MELE|OBD page]] for explanations. | |||
|- | |- | ||
| <Weight> | | <Weight> | ||
| int32 | | int32 | ||
| Techniques with higher | | 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 | ||
| | | In frames; after a technique is used, it is ignored by the engine for this time interval. | ||
|- | |- | ||
| <Moves> | | <Moves> | ||
| - | | - | ||
| Can | | Can hold Position, Attack, Throw, Maneuver and Evade tags. | ||
|} | |} | ||
===<Moves> tags=== | |||
=== | The parameters of Maneuver and Position are float values. | ||
* <Attack Type="..." /> | * <Attack Type="..." /> | ||
Line 554: | 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
AKEV << Other file types >> CONS TMBD << Other BINA >> ONIE FLAG << Other OBJC >> NEUT |
This page is unfinished. Can you fill in any missing information? |
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:
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 |
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="..." />