Oni Central Forum

A forum for the Oni community

You are not logged in.

#1 01/29/16 12:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Straightening out the Melee Profile mods

(This topic is mainly addressed to EdT and Samer since they are the primary creators of new characters with custom melee profiles.)

We haven't had a character with a new Melee Profile created in a while.  So when Scarlett made his Naomi character and wanted to provide MELE data for her, I had to refresh my memory on how we have modded BINACJBOMelee Profile in the past.  As we know, there's only one BINACJBOMelee Profile in vanilla Oni, and it's in level0_Final.  Some mods have had the habit of adding custom Melee Profiles in specific level folders such as level3_Final in order to override the global file without replacing it for all levels.  This made sense at the time, since we didn't really have patch mods fully working until mid-2013 and most new characters were created before that.  But it means that two mods cannot add new AI-controlled characters to the same level.  And there are a few mods that are replacing the level0 Melee Profile, which means that they overwrite each other.

I've been looking back at old discussions that touched on this subject to see what our intent was and if we had any plans to fix this.  The most relevant discussions were the Brutal AI/Smart Barabas thread, and the XML patching thread, where Samer brought up this topic, but the thread died an early death because s10k was still working on the advanced form of XML patching (custom JS code) that was needed for patching some kinds of data, such as MELE.  This improved patching came out in early 2014, and over the course of the year I finally ported over some old mods like Glass Breaking Moves that needed to be in patch form, but I don't think that we ever came back to the subject of Melee Profiles after that, probably because of the lack of new characters being made.

So to try to get a handle on exactly what we had done in the past, I searched every mod for a BINACJBOMelee Profile, and here's what I found (I'm not 100% sure this list is complete, but I think it is).  Below are all the mods with custom Profiles and the differences between those Profiles and the vanilla Profile from Oni:

21300 Guard Dogs
level0:
- Alters striker_easy_1 parameters and renames many of his techniques.
- Alters konoko_generic heavily (I cannot tell at a glance how many techniques are simply rearranged or renamed vs. being actually changed).
- Adds Motoko.
- Adds Guard Dog.

21500 Brutal Konoko
level0:
- Alters konoko_generic heavily, in different ways than 21300.

21501 Brutal AI
level0:
- The MELE tags seem to be completely out of order in this file, making a simple comparison impossible (my comparison tool gives me about 3700 differences because it can't make heads or tails out of the mess).  I'm guessing what happened is that this old Melee Profile is the product of hex-editing and so the tags remained in their native order, but that OniSplit exports the tags in numerical order by MELE ID.  This is just a guess; I don't know what order the tags were originally in.

21510 Smart Barabas
level3:
- This is the same file as 21501, with the same issues, except for the expected alterations to Barabas (but only BARABAS TCTF D, not BARABAS Rsrch D).
level8:
- Same file as in level3.

22006 Sam Mega Pack-Conversion
level11:
- Alters konoko_generic in same ways as 21500, but with some slight differences.  Adds Rayman, Casey, Hayate, Jester, Kojiro, Sarai, and Hammer.
level12, level13, level18, level19:
- Same file as in level11.

23901 Custom Chars Melee Profile
level0:
- Same file as in 22006.

23906 Sam Dream Lab-Conversion
level13:
- Same file as 22006 except that Rayman and Jester are slightly different, and Sarai and Hammer are absent.

77771 Obsolete-Zen Garden
level7:
- Same file as 22006.

80211 Junkyard-Zen Garden
level15:
- Same file as 22006.

80270 Boss Battle
level0:
- Same file as 21510 (this was used as the source for 21510).

80280 Old China
level24:
- Very similar to 23906, but Casey, Kojiro, and Jester are slightly different.

81000 City
level28:
- Identical to 21510 except that Rayman, Casey, Hayate, Jester, Kojiro, Sarai, Hammer, Motoko, Guard Dog, and the Iron Demon have been added to the end.

82000 SMP-FightClub
level25:
- Almost identical to 80280 except that Hayate is slightly different.
------------------------------------------------------

So as you can see, we have some issues here:
1. If a Brutal/Smart mod is installed, it will be overridden by Samer's character mods within his new levels where they appear since the Brutal mods install Melee Profile to level 0 and Samer's go to local levels.  Maybe this is the desired behavior?  I'll just note that Samer's mods are not marked as incompatible with the Brutal/Smart mods in their Mod_Info.cfgs (22006 does say in its description that it is not compatible with other mods that modify Melee Profile, but how is the user to know which those are?).
2. In turn, 80270 overrides all lower mods that also affect level 0, such as 21300, which was probably not intentional.
3. I might be missing Samer's intention here, but 23901 seems to be an unnecessary mod package.  It's not required by any other packages and the same file is included in 22006.
4. Almost no mods have the same Melee Profile unless you count 23901, 22006, 77771, and 80211.  New characters are frequently tweaked from one Profile to another.
5. Why is Motoko's melee profile only found in 21300 and 81000?
6. What was changed for the Easy Striker in 21300, and was he even supposed to be modified as part of this package?
7. How and why has Konoko been modified differently in 21300, 21500, and 22006?
8. If we're going to convert these Profiles into patches so they can be combined, we'll need a way to see what was changed in 21501, 21510, 80270, and 81000, which all seem to be based off the same hex-edited file I described under 21501.
9. 21510 modifies Barabas' melee AI for the second fight only (this was my fault, I should have copied the Smart Barabas MELE from Boss Battle to both Barabas IDs, not just his TCTF ID).

So maybe we can clean up some of these issues by converting the actual changed parts of the Profiles into XML patches.  Not all of these issues necessarily need to be corrected, because it doesn't probably matter if, say, Hayate's dodging stats change a little from one level to the next, but if we're going to convert the existing Melee Profiles into XML patches, it would be easy to also consistently use the same patch for multiple levels.  It would just be up to Samer to identify which MELE is actually the latest version for each character, and then a patch to add each character's MELE could be created easily.

Perhaps we could also make use of 23901 to supply the patches to Melee Profile that would actually be used by all of Samer's characters, instead of slight variations of the Profile being included in 22006, 23906, 80280, 81000, and 82000.  The MELE patches for characters created by other modders could come in the same 23901 package for simplicity's sake, or just come in the individual package that installs that character -- something that is currently not being done for many of EdT's characters.

10. As if that wasn't enough to take in all at once, I've also discovered that melee IDs are being re-used; at least, Konoko's is.  Here are the mods which used ID 8245 (konoko_generic) for other characters within the same Melee Profile:

21300 - Konoko, Motoko
22006, 23901 - Konoko, Casey, Sarai, Hammer
23906, 80280, 82000 - Konoko, Casey
81000 - Konoko, Casey, Sarai, Hammer, Motoko, Iron Demon

I'm not sure what effect this has on the game, but it seems to me that when the ONCC for a character specifies their melee ID, Oni is just going to use the first instance of that ID that it stumbles across in BINACJBOMelee Profile.  Wouldn't this kind of be a big problem?  But surely someone would have noticed if, say, the characters listed above for 81000 were not fighting correctly?  Or are the character classes specified in each MELE entry actually the real link between ONCC and MELE, instead of the MELE IDs specified in ONCC?  That would explain why Oni is not getting mixed up.

11. [Edit: Discovered later.] 80270 Boss Battle is missing the melee profiles for the Iron Demon and the Guard Dogs.

-----------------
I know this is a lot to respond to, but it's not an urgent situation since these problems have existed for years now, so maybe just reply to the individual numbered points above as you get the chance to compare these Profiles yourself.  At some point I can work on untangling the changes in 21501 if no one else has any ideas about that.

Last edited by Iritscen (02/28/16 14:02)


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#2 01/29/16 13:01

Scarlett
Member
From: Jamaica
Registered: 11/25/15

Re: Straightening out the Melee Profile mods

There is a Custom Character melee profile which is one of the core mods for AE. It is located in the package folder where the mods are kept. If you add your character melee profile to that then you don't have to go trough the trouble of adding them individually to a level because it is in a level0 folder which is for all levels in the game. From what I know so far about melee profiles is that you cannot add too much moves or else ONI will crash when your character get in combat.

Last edited by Scarlett (01/29/16 13:01)

Offline

#3 01/29/16 13:01

s10k
Member
Registered: 01/14/07
Website

Re: Straightening out the Melee Profile mods

Old China
level24:
- Very similar to 23906, but Casey, Kojiro, and Jester are slightly different.

I don't know nothing about these ones. I think Samer or Edt are the ones that can help here if there's any problem.

Not sure if there are versions of these ais (Melee profiles) more recent or if it necessary to the Old China mod to have these custom versions.

Offline

#4 01/29/16 16:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

Scarlett, I think you're referring to package 23901 that I mentioned above.  I don't recall seeing that this package is actually required by any other mods.  Now I'm away from my Mac, so I can't double-check that.  But if it were going to be used as the standard "extended Melee Profile" for all new characters, it would have to be mentioned in other mods' Mod_Info.cfg files using the DependsOn flag so that it would automatically be installed, and I don't think that's the case.  So, yes, it installs into level 0, but only if the player chooses it (and most probably would have no idea why they should).  Instead, similar-but-varying versions of the file are provided in level-specific folders in various mod packages that Samer has made.  So this thread is just an attempt to straighten things out so that we have a clear idea of what melee profiles are in effect for each character.  Then we can figure out where to put your Naomi profile.

s10k, Old China won't need its own Profile once we sort this out.  I can do a lot of the work myself, but I don't know which profile for each character is the latest one.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#5 01/29/16 19:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

Let's see if I can answer some questions
5) Motoko's melee profile in Guard Dogs was probably included since I was using that melee profile at the time. Her profile was in the City, since she would be an AI controlled character
6) I don't remember at all what changed for Easy Striker or why I changed it.  I will take a look at that package when I can.
7) I was probably playing around with the melee profile for Konoko and didn't think about using a clean melee profile to use for the Guard Dogs.
9) I think I only made new melee profiles for Guard Dogs, Iron Demon and Motoko.  I agree that for existing characters that there melee profiles would be added to 23901 and then any future ones could be installed with a patch.
10) I will need to review melee ids again and 21501, I have forgotten a lot!.

Thanks for discovering this issue.

Offline

#6 01/29/16 19:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

Okay, thanks for looking into these things.  In my case, I'm also having to re-learn some things, but most of this is totally new to me since I never worked with melee profiles myself!

Although it doesn't do any harm by itself when a Melee Profile contains the MELE of a character that is not being used, my main concern is the unexpected replacing of one Melee Profile with another that overwrites or clears a specific MELE.  My secondary concern is that it's not always clear what changes are being made, and why.

The changes in 21501 could be probably be analyzed easily if one first sorts the MELE tags in the XML by ID, then uses a file-comparison tool against a modern XML export of the vanilla Melee Profile.  I just haven't taken the time to do it yet, and I'm not even sure at the moment how to sort XML by tag ID without coding a small tool myself.

Does anyone know where the renamed techniques for Konoko came from, in Melee Profiles such as 21300?  Was that you, EdT?  It seems like someone was trying to clarify what each technique does, since some of the original names were pretty unhelpful, such as "Dragon Punch".


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#7 01/29/16 19:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

It was probably Loser, who first hacked the melee profile in hex and then I converted it to xml.

Offline

#8 01/29/16 21:01

Scarlett
Member
From: Jamaica
Registered: 11/25/15

Re: Straightening out the Melee Profile mods

The reason why it is useful to add your character melee to the melee profile in package 23901, is that when you are working with existing level that doesn't have a melee profile, it goes for the level0 melee profile. And you won't have to go through the trouble of adding your character melee profile in newer levels because the will just use the level0 melee profile. Here is how I think the game works with melee profile; it's searches for level0 melee profile and use them instead of its own level melee profile, and if it doesn't find a melee profile for that character in level0 then it search its level folder for a melee profile. If it doesn't find a melee profile for any of the two, then you character will stand in combat stance and not do anything

Offline

#9 01/29/16 22:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

21501 Came from here: http://oni.bungie.org/forum/viewtopic.php?id=2161 
I took the time to sort it, here it is: https://www.dropbox.com/s/xgqqgp77v64yn … d.xml?dl=0

For 21500, I'm not sure where exactly that came from, there are 2 versions that can be found here: http://oni.bungie.org/forum/viewtopic.php?id=597  But they don't match the one found in 21500

I have no idea about the renamed techniques in 21300, though I haven't look at it yet.

Finally, for the melee id being duplicated, according to this page: http://wiki.oni2.net/XML:BINA/OBJC/MELE
<MELE Id="..."> can be ignored.
<MeleeId> is used by the ONCC

That's all for now

Offline

#10 01/29/16 22:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

Thanks for the sorted XML, EdT.  How did you do it?  Unfortunately, it looks like the order of the techniques under each ID has also been altered, compared to the XML that OniSplit generates (is OniSplit sorting the techniques too?!  And by what?  It's not <Name>...).

Thanks for pointing out the page that says MELE ID doesn't matter.  I thought it must not be crucial since we hadn't seen any large-scale issues, but I wanted to make sure.

Scarlett, my assumption was that Oni treated the collection of MELEs known as BINACJBOMelee Profile as a single resource, in which case it won't hunt for more MELEs in a specific level folder if they're not in the level 0 Melee Profile.  But now you have me wondering if I was wrong.  I will try to test a setup where there is a Melee Profile in level 0 that is lacking a new character and another Profile in some level's folder that does have the character, and see if it finds their MELE data when I run that level.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#11 01/30/16 00:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

Thanks for the sorted XML, EdT.  How did you do it?

Manual cut and paste!  Now that was Brutal!

(is OniSplit sorting the techniques too?!  And by what?  It's not <Name>...)

I don't think so, OniSplit, merely converts the data into xml. If you look at the BINACJBOMelee Profile.oni with a hexeditor, it should be the data should be in the same order as the xml.  So the order is how Loser added the techniques.

Offline

#12 01/30/16 18:01

Scarlett
Member
From: Jamaica
Registered: 11/25/15

Re: Straightening out the Melee Profile mods

Brutal AI is a perfect example of what I am talking about. It contains only a new melee profile of character in the game. When it is installed, the game chose its melee profile instead of what is included in the levels themselves

Offline

#13 01/30/16 20:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

Hi Scarlett, try this, go to the package for Brutal AI, AE/AEInstaller/packages/21501Brutal_AI inside the oni folder, change the folder from level0_Final to level2_Final.  Now uncheck all the mods except for Brutal AI and reinstall.  Play level 2, do you see the AIs using the vanilla melee profile from level 0 or the Brutal AI melee in level 2.

I see the Strikers using the Brutal AI profile, for example using they dive headfirst at you, or when you try to move away from the striker, he grabs you and throws you down.

Offline

#14 01/30/16 23:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

Yes, EdT's post demonstrates that Oni will use the local (level 2) Profile in place of the global (level 0) Profile for a character that has his profile in both places.  That's why it does matter which Profile all these mods are using in their local level folders.

I think an easier way to see this is to download the Brutal Barabas mod, then move the package's custom Melee Profile from its level8_Final folder to its level0_Final folder, and then place Oni's original Melee Profile in level8_Final.  When you install this altered mod and play the fight at TCTF HQ SP 4, you'll see that Barabas is not in his Smart form; that's because his Smart form was installed to level 0 and was overridden by level 8's vanilla Profile (actually, he will still have a jetpack-jump move, because of some TRAM modifications that also come in the Smart Barabas mod, but that's the only difference from his normal melee style).

This is in keeping with Oni's overall behavior that we've observed, which is that local always overrides global.  Also, you stated that the Brutal AI mod will be in effect for other mods such as new levels, if I understood you correctly.  The key point here is to look at my description of each mod's Melee Profile in my original post.  Note that 80270 Boss Battle, for instance, uses a Profile based on 21510 Smart Barabas, which in turn is based on 21501 Brutal AI!  So what actually happened was that modders wanted the Brutal AI to be used in their levels, so they included it in their mods.  That's why you see Brutal AI in those levels, not because you might have the Brutal AI mod installed too.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#15 01/31/16 13:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

In conclusion, if I wanted Motoko's melee profile to be available globally, then I should make a patch for the level0 melee profile.

Now if I wanted to install the Brutal AI package, will the Motoko patch be added to the Brutal AI? In other words, the level0 melee profile will be Brutal AI plus Motoko?

Can someone provide a sample melee profile patch? In addition, if I wanted to add Motoko to the BINACJBOCharacter file for each level, what would the patch look like?

Is this the best way to add new characters along with their melee profile? Or is there a better way?

Offline

#16 01/31/16 14:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

EdT and I discovered an additional problem last night:

11. 80270 Boss Battle is missing the melee profiles for the Iron Demon and the Guard Dogs.  I couldn't originally see this when comparing files because this Melee Profile is based on the mixed-up 21501.  One way to see the profile issue is to turn on chr_debug_characters, then press Ctrl-Shift-B to add melee information to the debug display.  When fighting the Guard Dogs, the display tells me that no melee is running (they can still use their weapons).  When fighting the Iron Demon up close, the display tells me that it is using the profile "BARABAS TCTF D".  This threw me for a loop at first, because I expected to see no melee profile at all, but I looked at the Iron Demon's ONCC, and it has a melee profile ID of 25, which is in fact BARABAS TCTF D, as opposed to the ID of 52 that is used for the Iron Demon where its MELE data actually appears in 81000's Melee Profile.  So the BB ID is still able to fight, but it's using the wrong ID!

-----------
As far as how to create melee patches, I will provide a sample later today.  An additional question is where these patches should go.  In hindsight, it seems to me that all level mods should have had dependencies set for the packages of the characters they use, instead of including the characters again in the level mod.  That way, all changes pertaining to that character, such as a melee patch, could be included once, in the character mod, avoiding duplication of data.  Some mods may be doing this -- Wilderness Preserve has a dependency on the Hasegawas package, but it also seems to include another copy of an ONCC for James and Jamie.  There might be some reason for that which I don't understand.  Boss Battle, on the other hand, contains all sorts of ONCCs that are also found in standalone character mod packages.  So maybe those could be removed and the package could depend on the character mods, which would contain the melee patches.  This is contrary to my earlier suggestion that we use 23901 for all melee additions.  That's not really a better solution once we are delivering small .oni-patch files for each new character, because it's easier to just include one of those in that character's package than to edit a separate collection of melee patches each time a new character is made.  Melee patch sample coming later....


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#17 01/31/16 16:01

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

Now that I think about it, I probably was not satisfied with the melee profile I made for the Iron Demon, so that's why I used Barabas' melee profile instead.  Not having the melee profile for the guard dogs was a mistake, but I noticed that one of the guard dogs was using the melee id of 22, why, I have no idea...  Also, I never made a melee profile for the Sentry Droid, but gave it the melee id of 22.

One day I should cleanup that package... smile

Offline

#18 01/31/16 21:01

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

You seem to have a fondness for ID 22 -- that's Konoko herself.  I just discovered, while testing the addition of Motoko's MELE data to Melee Profile, that Motoko's actual ONCCs in 25000 Motoko are also set to melee ID 22 instead of her own melee ID of 50 (at least, the MELE data I found in 21300's Melee Profile for Motoko uses ID 50).  So the patch below adds the MELE data correctly, but it is not used by Motoko.

Anyway, here's how to add a character's MELE data to a Melee Profile with XML patching, using Motoko's data as an example.  First of all, I think it makes the most sense to just add everything to the original, global Melee Profile and do away with these local versions of the file in every level.  So in accordance with the wiki's instructions for making a package, you would make a patches/ folder inside the mod package folder (at the same level as oni/ or bsl/), then common/ inside of that, and level0_Final/ inside of that.

Then you name a new file "BINACJBOMelee Profile.oni-patch" and give it these contents:

@XML_TOOLS Version "2.0"

@ADD_INSIDE_NODES ElementName "Objects"
<xml>
<MELE Id="8244">
    <Header>
        <Flags></Flags>
        <Position>0 0 0</Position>
        <Rotation>0 0 0</Rotation>
    </Header>
    <OSD>
        <MeleeId>50</MeleeId>
        <Name>MOTOKO</Name>
        <CharacterClass>motoko</CharacterClass>
        <Notice>100</Notice>
        <Dodge>
            <Base>100</Base>
            <Extra>5</Extra>
            <ExtraDamageThreshold>50</ExtraDamageThreshold>
        </Dodge>
        <BlockSkill>
            <Single>100</Single>
            <Group>50</Group>
        </BlockSkill>
        <NotBlocked>1</NotBlocked>
        <MustChangeStance>1</MustChangeStance>
        <BlockedButUnblockable>1</BlockedButUnblockable>
        <BlockedButHasStagger>1</BlockedButHasStagger>
        <BlockedButHasBlockstun>1</BlockedButHasBlockstun>
        <Blocked>0.875</Blocked>
        <ThrowDanger>2048</ThrowDanger>
        <DazedMinFrames>1</DazedMinFrames>
        <DazedMaxFrames>1</DazedMaxFrames>
        <Attacks>
            <Technique>
                <Name>Punch Combo</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>180</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="10" ToleranceRange="4.5" />
                    <Attack Type="P" />
                    <Attack Type="PP" />
                    <Attack Type="PPP" />
                    <Attack Type="PPPP" />
                    <Maneuver Type="Pause" Duration="0.19" />
                </Moves>
            </Technique>
            <Technique>
                <Name>CrescentMoon</Name>
                <Flags>GenerousDir</Flags>
                <Weight>60</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="4.5" />
                    <Attack Type="K" />
                    <Attack Type="KK" />
                    <Attack Type="KKKF" />
                </Moves>
            </Technique>
            <Technique>
                <Name>TwisterKickRight</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>100</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="8" ToleranceRange="16" />
                    <Maneuver Type="CircleRight" Duration="0.009" MinAngle="180" MaxAngle="-180" />
                    <Attack Type="KF" />
                </Moves>
            </Technique>
            <Technique>
                <Name>TwisterKickLeft</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>100</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="8" ToleranceRange="16" />
                    <Maneuver Type="CircleLeft" Duration="0.009" MinAngle="180" MaxAngle="-180" />
                    <Attack Type="KF" />
                </Moves>
            </Technique>
            <Technique>
                <Name>WillowKick</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="8" ToleranceRange="16" />
                    <Maneuver Type="Retreat" Duration="0.009" MaxRange="0" ThresholdRange="40" />
                    <Attack Type="KF" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Throw_bk_k</Name>
                <Flags>Interruptible</Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="2" />
                    <Throw Type="K_Behind" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Tackle</Name>
                <Flags>Interruptible</Flags>
                <Weight>90</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="RunForward" MinRunInDist="0" MaxRunInDist="32" ToleranceRange="20" />
                    <Throw Type="Tackle" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Getup_k_fw</Name>
                <Flags>GenerousDir</Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Attack Type="R_P" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Getup_bk</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="GetUpBackward" Duration="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Disarm_k_fw</Name>
                <Flags>GenerousDir</Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="15" />
                    <Throw Type="K_FrontDisarm" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Disarm_p_fw</Name>
                <Flags>GenerousDir</Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="15" />
                    <Throw Type="P_FrontDisarm" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Punch_bk</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseBack" MinRunInDist="0" MaxRunInDist="2" ToleranceRange="1.25" />
                    <Attack Type="PB" />
                    <Maneuver Type="CircleLeft" Duration="0.21875" MinAngle="0.25" MaxAngle="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Kick_rt</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseRight" MinRunInDist="0" MaxRunInDist="4" ToleranceRange="2.75" />
                    <Attack Type="KR" />
                    <Maneuver Type="CircleRight" Duration="0.21875" MinAngle="0.25" MaxAngle="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Punch_lt</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseLeft" MinRunInDist="0" MaxRunInDist="2" ToleranceRange="1.25" />
                    <Attack Type="PL" />
                    <Maneuver Type="CircleLeft" Duration="0.21875" MinAngle="0.25" MaxAngle="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Kick_bk</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseBack" MinRunInDist="0" MaxRunInDist="4" ToleranceRange="2.75" />
                    <Attack Type="KB" />
                    <Maneuver Type="CircleRight" Duration="0.21875" MinAngle="0.25" MaxAngle="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Punch_rt</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseRight" MinRunInDist="0" MaxRunInDist="2" ToleranceRange="1.25" />
                    <Attack Type="PR" />
                    <Maneuver Type="CircleLeft" Duration="0.21875" MinAngle="0.25" MaxAngle="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Kick_lt</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseLeft" MinRunInDist="0" MaxRunInDist="4" ToleranceRange="2.75" />
                    <Attack Type="KL" />
                    <Maneuver Type="CircleRight" Duration="0.21875" MinAngle="0.25" MaxAngle="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Run_k_rt</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="RunRight" MinRunInDist="4.5" MaxRunInDist="200" ToleranceRange="2.524355E-29" />
                    <Attack Type="J_P" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Run_k_lt</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="RunLeft" MinRunInDist="4.5" MaxRunInDist="200" ToleranceRange="2.524355E-29" />
                    <Attack Type="RR_K" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Throw_fw_p</Name>
                <Flags>Interruptible</Flags>
                <Weight>90</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="12" />
                    <Throw Type="P_Front" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Throw_fw_k</Name>
                <Flags>Interruptible</Flags>
                <Weight>90</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="15" />
                    <Throw Type="K_Front" />
                </Moves>
            </Technique>
            <Technique>
                <Name>P_P_P combo</Name>
                <Flags>Interruptible</Flags>
                <Weight>30</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="4.5" />
                    <Attack Type="P" />
                    <Attack Type="PP" />
                    <Attack Type="PPP" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Crouch_punch_fw</Name>
                <Flags>Interruptible</Flags>
                <Weight>30</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="Crouch" />
                    <Attack Type="C_K2" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Kick_fw</Name>
                <Flags>Interruptible</Flags>
                <Weight>30</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="4.5" />
                    <Attack Type="KF" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Kick_low</Name>
                <Flags>Interruptible</Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="2" />
                    <Attack Type="KD" />
                </Moves>
            </Technique>
            <Technique>
                <Name>P_P_K combo</Name>
                <Flags>Interruptible</Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="4.5" />
                    <Attack Type="P" />
                    <Attack Type="PP" />
                    <Attack Type="PPK" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Crouch_kick</Name>
                <Flags>Interruptible</Flags>
                <Weight>30</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="Crouch" />
                    <Attack Type="GETUP_KF" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Punch_low</Name>
                <Flags>Interruptible</Flags>
                <Weight>10</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="CloseForward" MinRunInDist="0" MaxRunInDist="16" ToleranceRange="4.5" />
                    <Attack Type="PD" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Run_throw_p_fw</Name>
                <Flags>GenerousDir</Flags>
                <Weight>40</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="RunForward" MinRunInDist="0.5" MaxRunInDist="200" ToleranceRange="0.5" />
                    <Throw Type="RP_Front" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Run_slide</Name>
                <Flags>Interruptible</Flags>
                <Weight>40</Weight>
                <Importance>10</Importance>
                <RepeatDelay>1000</RepeatDelay>
                <Moves>
                    <Position Type="RunForward" MinRunInDist="6" MaxRunInDist="200" ToleranceRange="2.524355E-29" />
                    <Attack Type="J_K" />
                    <Attack Type="C_P2" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Run_throw_k_fw</Name>
                <Flags>GenerousDir</Flags>
                <Weight>40</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Position Type="RunForward" MinRunInDist="0.5" MaxRunInDist="200" ToleranceRange="0.9375" />
                    <Throw Type="RK_Front" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Kick_heavy</Name>
                <Flags>GenerousDir</Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>500</RepeatDelay>
                <Moves>
                    <Position Type="StartToCrouch" />
                    <Maneuver Type="BarabasWave" MaxRange="12.5" />
                </Moves>
            </Technique>
        </Attacks>
        <Evades>
            <Technique>
                <Name>Dodge_bk</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="RollBackward" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Dodge_lt</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="RollLeft" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Dodge_rt</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="RollRight" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Dodge_fw</Name>
                <Flags></Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="RollForward" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Slide_bk</Name>
                <Flags></Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="SlideBack" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Slide_lt</Name>
                <Flags></Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="SlideLeft" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Slide_rt</Name>
                <Flags></Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="SlideRight" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Slide_fw</Name>
                <Flags></Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Evade Type="SlideForward" />
                </Moves>
            </Technique>
        </Evades>
        <Maneuvers>
            <Technique>
                <Name>Advance</Name>
                <Flags>Interruptible</Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="Advance" Duration="0.265625" MinRange="0.5" ThresholdRange="32" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Retreat</Name>
                <Flags>Interruptible</Flags>
                <Weight>25</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="Retreat" Duration="0.1914063" MaxRange="0.265625" ThresholdRange="10" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Getup_bk</Name>
                <Flags></Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="GetUpBackward" Duration="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Getup_roll_lt</Name>
                <Flags></Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="GetUpRollLeft" Duration="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Getup_roll_rt</Name>
                <Flags></Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="GetUpRollRight" Duration="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Getup_fw</Name>
                <Flags></Flags>
                <Weight>100</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="GetUpForward" Duration="0" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Stand</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="Pause" Duration="0.1914063" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Crouch</Name>
                <Flags>Interruptible</Flags>
                <Weight>75</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="Crouch" Duration="0.1914063" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Circle_lt</Name>
                <Flags>Interruptible</Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="CircleLeft" Duration="0.1914063" MinAngle="0.265625" MaxAngle="16" />
                </Moves>
            </Technique>
            <Technique>
                <Name>Circle_rt</Name>
                <Flags>Interruptible</Flags>
                <Weight>50</Weight>
                <Importance>10</Importance>
                <RepeatDelay>0</RepeatDelay>
                <Moves>
                    <Maneuver Type="CircleRight" Duration="0.1914063" MinAngle="0.265625" MaxAngle="16" />
                </Moves>
            </Technique>
        </Maneuvers>
    </OSD>
</MELE>
</xml>

Besides playing the game and using chr_debug_characters/Ctrl-Shift-B to see if the profile is in use when fighting the character who is supposed to be using it, I recommend double-checking that the data was added to Melee Profile correctly (I always did this when making XML patch mods).  Call:

onisplit -export:"BINACJBOMelee Profile" /somefolder/ /Games/Oni/AE/GameDataFolder/level0_Final.dat

Extract the resulting .oni to XML, and then use your file-comparison tool of choice to compare it to the vanilla Melee Profile.  If the patch worked, the new MELE data should be found added at the bottom of the list of MELEs.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#19 02/01/16 00:02

Scarlett
Member
From: Jamaica
Registered: 11/25/15

Re: Straightening out the Melee Profile mods

When I made Naomi, I wanted her to be a fast fighter which is one of the reasons I gave her out combat idle , Fan Zi which is a Chinese fighting style for fast attacking. Also I made her 4 hit combo today which is pretty fast. I had to modify Muro's 4 combo punch to make it give it a more smoother end when switching to the 4 punch in Naomi's combo and I had to make the 4 combo punch animation because the existing ones didnt fit my taste. I gave her melee id 127 because in every other melee profile, no character uses melee id 127. The way I can tell she is using her correct melee id is by the way she fights and how she uses her attacks and how often she use some attacks and combos. The best way for me to really know she is using her own melee profile is whenever she does Airball (back, forward kick) which is the copy of MK trilogy Kano-ball from classic Kano. So if you know how your character should behave in combat, there is no need to double check the melee profile being used

Offline

#20 02/01/16 10:02

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

Unfortunately, it's not that simple.  Any profile can be "mapped" onto another character.  For instance, if you fight the Iron Demon in EdT's Boss Battle level, it fights back appropriately using its electric foot stomp when at melee distance, despite having the profile of Barabas.  The techniques in MELE data all boil down to sequences of key presses.  So a melee profile can be designed for one kind of character yet accidentally work for a totally different one.  If you watch the debug display with melee status turned on while fighting the Iron Demon, you'll see that it's attempting all sorts of techniques that do nothing, and occasionally it will pick a move that equates to the foot stomp (some kind of throw technique, I think).  The same thing will happen with Naomi if she is using the wrong profile.  You might think that you can tell if she is fighting properly according to the profile you made, but the only way to be sure of the profile in use is chr_debug_characters/Ctrl-Shift-B.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#21 02/01/16 13:02

Scarlett
Member
From: Jamaica
Registered: 11/25/15

Re: Straightening out the Melee Profile mods

Well I think you're right still. In every level I add Naomi to she uses her own profile but in the zen garden roof, she uses fury's profile and I wonder what's causing it

Offline

#22 02/01/16 17:02

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

Made a patch for Motoko and it works.  Though I have some inconsistent errors with AEInstaller when patching other characters. Sometimes, AEInstaller works other times not.

NY_melee_test.jpg

(If you don't see the screenshot, that means Photobucket is having some maintenance issues)

Pop quiz, can you name the location of this mod???  I wanted a new place to test the the melee profiles of my characters.

Offline

#23 02/01/16 18:02

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

Scarlett and EdT, please share a link to the files of the mods you are attempting to create that don't work properly.

That looks like an interesting new location smile  If you're asking me to name the stadium, though, I have no idea.  Can you go anywhere besides the field?


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#24 02/01/16 19:02

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: Straightening out the Melee Profile mods

Iron Demon and Guard Dogs.  It seems I can't make the patches correctly.  I duplicated the patch for Motoko and then replaced her melee info with the Iron Demon and the Guard Dogs.  Sometimes the window Applying xml patches, appears for a brief moment, then AEInstaller stops.  other times, the process goes through with Motoko, Iron Demon and the Guard Dogs installed.  But Iron Demon and the Guard Dogs don't appear in the game, even if I shapeshift, they are not there and Motoko does not fight.

You can go up to the seats, but it is only texture.

Offline

#25 02/01/16 19:02

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: Straightening out the Melee Profile mods

I was hoping you'd post what you made, so I could troubleshoot it.  I could make the patches from scratch, which isn't hard, but then you wouldn't learn what you did wrong smile  Btw, when you suspect that a mod installation has failed, be sure to check Installation.log in AEInstaller/ to see if there is any useful information.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

Board footer

Powered by FluxBB