<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hedgedocs.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=King+Galactix</id>
	<title>HedgeDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://hedgedocs.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=King+Galactix"/>
	<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php/Special:Contributions/King_Galactix"/>
	<updated>2026-05-19T07:11:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1444</id>
		<title>Creating &amp; Customizing Attack Actions (Combo Routes)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1444"/>
		<updated>2026-04-27T21:56:24Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ActionList is a compilation of different ‘Actions’. Actions work together like a family tree, with individual attacks being stems and their connections being branches. All combos are just multiple branches of other moves, spawning a wide range of moveset paths. Here’s an example:&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=example|content=NSA &amp;gt; NSB &amp;gt; NSC &amp;gt; NSD &amp;gt; NSE (YYYYY) = Feral/Normal Were-Hammer&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; JF &amp;gt; JKC (Y-XX) = Double Kick Combo&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; NSB &amp;gt; SC &amp;gt; SC2 &amp;gt; SD (YY-XXX) = Donkey Kick Combo}}&lt;br /&gt;
&lt;br /&gt;
We’ll go over making custom actions, combinations of the variables and parameters, several cases of Action’s variables, unique methods of move-set inputs, and combining them into one whole move.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;9547&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;MOVE_A&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt;&lt;br /&gt;
      &amp;lt;ValidCommon&amp;gt;true&amp;lt;/ValidCommon&amp;gt;&lt;br /&gt;
      &amp;lt;ValidBerserker&amp;gt;true&amp;lt;/ValidBerserker&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;NSB&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JF&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__Land&amp;gt;&amp;lt;/KEY__Land&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AirCombo /&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__End&amp;gt;&amp;lt;/KEY__End&amp;gt;&lt;br /&gt;
      &amp;lt;Guard&amp;gt;true&amp;lt;/Guard&amp;gt;&lt;br /&gt;
      &amp;lt;Avoid&amp;gt;true&amp;lt;/Avoid&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__StartFrame&amp;gt;2&amp;lt;/KEY__StartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__EndFrame&amp;gt;9&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;22&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;1&amp;lt;/WaitEndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndMotionSpeed&amp;gt;1&amp;lt;/EndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;LandStartFrame&amp;gt;-1&amp;lt;/LandStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Names: ==&lt;br /&gt;
Making a custom action is pretty simple. Let’s try making an action called “MOVE_A”, based on the previous Motion “MOVE_A”. We’d start by making the main Action variable and writing down the Action/Motion Name. It’s important to know there’s a few combinations.&lt;br /&gt;
&lt;br /&gt;
* Same Action, Same Motion: This is the default setting for most moves, with an exact Motion translating into an Action.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;MOVE_A&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Different Action, Same Motion: This is generally used in two situations…  a) This divides one large move into a few separate pieces of a larger move. A good example is the Werewheel Rush (YYYY-XXXX), a.k.a. the cartwheel move.  b) This makes a separate combo but with the same attributes as another. You’d see a couple of examples from ‘Foreign Input System’.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;MOVE_A2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Same Action, Different Motion: This is self-explanatory, since a similar move within a combo, however, has different properties or even entirely different… EVERYTHING!  But within the base game, Unleashed Knuckle Sandwich /Wild Combo is a strong example of the same actions but with different properties (which is found in the Unleashed Infinite)&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;MOVE_A&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A3&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* This here is a very unique situation. We will refer to these as “Root Actions”, which are used for beginning attacks (Ground/Aerial) or Special Attacks within the game. You can add different Motions, but you cannot fully customize OR make a custom “Root Action” without code-modding.&lt;br /&gt;
Ground, Straight&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_YButtonUP&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt;&lt;br /&gt;
      &amp;lt;ValidCommon&amp;gt;true&amp;lt;/ValidCommon&amp;gt;&lt;br /&gt;
      &amp;lt;ValidBerserker&amp;gt;true&amp;lt;/ValidBerserker&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;NSB&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JF&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__Land&amp;gt;&amp;lt;/KEY__Land&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AirCombo /&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__End&amp;gt;&amp;lt;/KEY__End&amp;gt;&lt;br /&gt;
      &amp;lt;Guard&amp;gt;true&amp;lt;/Guard&amp;gt;&lt;br /&gt;
      &amp;lt;Avoid&amp;gt;true&amp;lt;/Avoid&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__StartFrame&amp;gt;2&amp;lt;/KEY__StartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__EndFrame&amp;gt;10&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;22&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;1&amp;lt;/WaitEndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndMotionSpeed&amp;gt;1&amp;lt;/EndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;LandStartFrame&amp;gt;-1&amp;lt;/LandStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Aerial (, Hook&lt;br /&gt;
&lt;br /&gt;
Special Attacks&lt;br /&gt;
&lt;br /&gt;
== Common Values: ==&lt;br /&gt;
Now it’s time to look at the next few Action variables:&lt;br /&gt;
&lt;br /&gt;
* ValidLevel_Min determines at what level a combo is enabled/unlocked&lt;br /&gt;
* ValidLevel_Max determines what level a combo is disabled/locked&lt;br /&gt;
* We set the respective values at Level 1 (Beginner) and Level 99, unless you want 99 combos or something.&lt;br /&gt;
&lt;br /&gt;
* The top images show the beginner’s Were-Hammer (YYYY), which its finisher had a knockback. At Level 15, this move will be deactivated because of one reason…&lt;br /&gt;
* … Level 16 is when Feral Were-Hammer unlocks (YYYY-Y)! The new finisher has knockback and the original now has normal damage! Plus, it allows for new combo avenues!&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other variables, then. These are fairly important.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode&lt;br /&gt;
* ValidBerserker determines if a move works in Unleash Mode&lt;br /&gt;
&lt;br /&gt;
A few combinations of the two allow for the creation of moves meant ONLY for Normal or Unleash Mode. The Unleash Infinites primarily use this, but you can also make regular infinite attacks.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable them for ground moves, and disable them for Aerial moves.&lt;br /&gt;
&lt;br /&gt;
== Creating Combo Routes: ==&lt;br /&gt;
Making a combo route is simple, as shown in the example below. Here are MoveA and MoveB, which we want to connect into a consecutive move. It’s as simple as putting the ID for “MOVE_B” into one of the following KEY variables.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Down&#039;&#039;&#039; transitions to another move by pressing the Y, X, A, or B buttons.&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;UP&#039;&#039;&#039; transitions to another move by releasing the Y, X, A, or B buttons, usually before the next input (a.k.a very quickly).&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Ing&#039;&#039;&#039; is an unused input system that is activated by holding inputs for a given length of time, and can overridden ButtonDown and ButtonUp inputs (with bugged limitations).&lt;br /&gt;
* &#039;&#039;&#039;KEY__Land&#039;&#039;&#039; activates a move when the player lands on/falls to the ground.&lt;br /&gt;
* &#039;&#039;&#039;KEY__AirCombo&#039;&#039;&#039; activates when the player is in the air and when the player makes contact with the enemy hitbox.&lt;br /&gt;
* &#039;&#039;&#039;KEY__End&#039;&#039;&#039; activates a move when inputs are no longer received, meaning that you stop pressing ANYTHING.&lt;br /&gt;
&lt;br /&gt;
== Input Registration: ==&lt;br /&gt;
While this is all good, it doesn’t matter if the game can’t register our inputs. We should fix that so you can execute your combo effectively! Let’s focus on the following three variables, which allows you to register the input for the next move:&lt;br /&gt;
&lt;br /&gt;
* KEY__StartFrame is the start value of the input range (inclusive). Any inputs pressed before this value will not result in the next input.&lt;br /&gt;
* KEY__EndFrame is the end value of the input range (inclusive). Any inputs pressed after this value will not result in the next input, unless WaitEndMotionEndFrame is set to a value higher than 0.&lt;br /&gt;
* WaitEndMotionEndFrame (WEMEF) extends the range time where you can input a combo. This is found in almost all combos besides finishers and certain attacks.&lt;br /&gt;
&lt;br /&gt;
The three parameters below allow you to register the input while holding down on a button.&lt;br /&gt;
&lt;br /&gt;
* KEY__IngStartFrame is the start value of holding the button input.&lt;br /&gt;
* KEY__IngEndFrame is the end value of holding the button input. This value is only unresponsive when its value is greater than the EndFrame and/or WEMEF value.&lt;br /&gt;
* KEY__IngFrameTIme is how long you hold the button for.&lt;br /&gt;
&lt;br /&gt;
The following variables assist with attack speed and more:&lt;br /&gt;
&lt;br /&gt;
* WaitEndMotionSpeed (WEMS) is the speed of WEMEF, which works inversely proportionately.&lt;br /&gt;
* EndMotionSpeed is just the general speed of the whole action.&lt;br /&gt;
* LandStartFrame is self-explanatory, so most moves have a ‘-1’ value… with exception.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.  a) Ground moves have a value of -1, so they work on the ground and maybe in the air.  b) Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&lt;br /&gt;
Aerial Attacks follow the same principle but with two new variables:&lt;br /&gt;
&lt;br /&gt;
* AirCatchStartFrame is the frame where the player can use the Aerial Piledriver.&lt;br /&gt;
* AddVelocityY increases or decreases the player&#039;s upward velocity, depending on whether the value is positive or negative.&lt;br /&gt;
&lt;br /&gt;
Special Moves and Attack Finishers have empty Start/End frames, and any variables below have a value of -1.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1443</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1443"/>
		<updated>2026-04-27T21:50:28Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long for the purpose of explaining how each variable works and what use cases exist for them, however, it will allow for a greater understanding and application of the mechanics. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed.&lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;!-- A few variables are usually formatted at this position --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
*&#039;&#039;&#039;EndSkipTimeWhenPad&#039;&#039;&#039; determines when the move can skip itself after being moved by the PadRotation variables (refer to PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt; &amp;lt;!-- Formatted for familiarity with retail --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSkipTimeWhenPad&amp;gt;0.f&amp;lt;/EndSkipTimeWhenPad&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity&#039;&#039;&#039; is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_StartX&#039;&#039;&#039; sets the frame that this instance of PadRotationcan start executing.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_PowerX&#039;&#039;&#039; sets the degrees of PadRotation that your player can move when executing the combo.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationValidX&#039;&#039;&#039; enables or disables the PadRotation with true or false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Insert previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed down by that amount. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is sped up by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
* There are unused parameter values, called GameSpeedColl. At this time, they have not been tested to see their functionality.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Insert previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* The DebugDraw here is potentially an unused debug feature to view the player&#039;s attack hitbox collision.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed to any of the following (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
* You can also apply more than one collision hitbox per Size instance. An example would be the followaing:&lt;br /&gt;
** Size1/SizeDelta1 uses RHand collision hitbox.&lt;br /&gt;
** Size2/SizeDelta2 uses RHand and LHand, or RLeg and Hips&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Camera&amp;gt;&lt;br /&gt;
        &amp;lt;StartEaseInFrame&amp;gt;15&amp;lt;/StartEaseInFrame&amp;gt;&lt;br /&gt;
        &amp;lt;StartEaseOutFrame&amp;gt;35&amp;lt;/StartEaseOutFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EaseIn&amp;gt;0.5&amp;lt;/EaseIn&amp;gt;&lt;br /&gt;
        &amp;lt;EaseOut&amp;gt;0.75&amp;lt;/EaseOut&amp;gt;&lt;br /&gt;
        &amp;lt;Fovy&amp;gt;10&amp;lt;/Fovy&amp;gt;&lt;br /&gt;
        &amp;lt;HopeLength&amp;gt;1&amp;lt;/HopeLength&amp;gt;&lt;br /&gt;
        &amp;lt;Height&amp;gt;-1.5&amp;lt;/Height&amp;gt;&lt;br /&gt;
      &amp;lt;/Camera&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use. Refer to the Attack Types documentation&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies. It seems to be broken in retail.&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies. It seems to be broken in retail.&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;100&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1441</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1441"/>
		<updated>2026-04-20T01:37:42Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long for the purpose of explaining how each variable works and what use cases exist for them, however, it will allow for a greater understanding and application of the mechanics. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed.&lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;!-- A few variables are usually formatted at this position --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
*&#039;&#039;&#039;EndSkipTimeWhenPad&#039;&#039;&#039; determines when the move can skip itself after being moved by the PadRotation variables (refer to PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt; &amp;lt;!-- Formatted for familiarity with retail --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSkipTimeWhenPad&amp;gt;0.f&amp;lt;/EndSkipTimeWhenPad&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity&#039;&#039;&#039; is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_StartX&#039;&#039;&#039; sets the frame that this instance of PadRotationcan start executing.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_PowerX&#039;&#039;&#039; sets the degrees of PadRotation that your player can move when executing the combo.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationValidX&#039;&#039;&#039; enables or disables the PadRotation with true or false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Insert previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed down by that amount. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is sped up by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
* There are unused parameter values, called GameSpeedColl. At this time, they have not been tested to see their functionality.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Insert previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* The DebugDraw here is potentially an unused debug feature to view the player&#039;s attack hitbox collision.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed to any of the following (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Camera&amp;gt;&lt;br /&gt;
        &amp;lt;StartEaseInFrame&amp;gt;15&amp;lt;/StartEaseInFrame&amp;gt;&lt;br /&gt;
        &amp;lt;StartEaseOutFrame&amp;gt;35&amp;lt;/StartEaseOutFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EaseIn&amp;gt;0.5&amp;lt;/EaseIn&amp;gt;&lt;br /&gt;
        &amp;lt;EaseOut&amp;gt;0.75&amp;lt;/EaseOut&amp;gt;&lt;br /&gt;
        &amp;lt;Fovy&amp;gt;10&amp;lt;/Fovy&amp;gt;&lt;br /&gt;
        &amp;lt;HopeLength&amp;gt;1&amp;lt;/HopeLength&amp;gt;&lt;br /&gt;
        &amp;lt;Height&amp;gt;-1.5&amp;lt;/Height&amp;gt;&lt;br /&gt;
      &amp;lt;/Camera&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use. Refer to the Attack Types documentation&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies. It seems to be broken in retail.&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies. It seems to be broken in retail.&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;100&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1440</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1440"/>
		<updated>2026-04-20T01:31:33Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long for the purpose of explaining how each variable works and what use cases exist for them, however, it will allow for a greater understanding and application of the mechanics. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed.&lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;!-- A few variables are usually formatted at this position --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
*&#039;&#039;&#039;EndSkipTimeWhenPad&#039;&#039;&#039; determines when the move can skip itself after being moved by the PadRotation variables (refer to PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt; &amp;lt;!-- Formatted for familiarity with retail --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSkipTimeWhenPad&amp;gt;0.f&amp;lt;/EndSkipTimeWhenPad&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity&#039;&#039;&#039; is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_StartX&#039;&#039;&#039; sets the frame that this instance of PadRotationcan start executing.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_PowerX&#039;&#039;&#039; sets the degrees of PadRotation that your player can move when executing the combo.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationValidX&#039;&#039;&#039; enables or disables the PadRotation with true or false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Insert previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed down by that amount. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is sped up by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
* There are unused parameter values, called GameSpeedColl. At this time, they have not been tested to see their functionality.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Insert previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Camera&amp;gt;&lt;br /&gt;
        &amp;lt;StartEaseInFrame&amp;gt;15&amp;lt;/StartEaseInFrame&amp;gt;&lt;br /&gt;
        &amp;lt;StartEaseOutFrame&amp;gt;35&amp;lt;/StartEaseOutFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EaseIn&amp;gt;0.5&amp;lt;/EaseIn&amp;gt;&lt;br /&gt;
        &amp;lt;EaseOut&amp;gt;0.75&amp;lt;/EaseOut&amp;gt;&lt;br /&gt;
        &amp;lt;Fovy&amp;gt;10&amp;lt;/Fovy&amp;gt;&lt;br /&gt;
        &amp;lt;HopeLength&amp;gt;1&amp;lt;/HopeLength&amp;gt;&lt;br /&gt;
        &amp;lt;Height&amp;gt;-1.5&amp;lt;/Height&amp;gt;&lt;br /&gt;
      &amp;lt;/Camera&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use. Refer to the Attack Types documentation&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies. Possibly broken.&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies. Possibly broken.&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Insert other variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;100&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1438</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1438"/>
		<updated>2026-04-18T05:01:24Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long for the purpose of explaining how each variable works and what use cases exist for them, however, it will allow for a greater understanding and application of the mechanics. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed.&lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;!-- A few variables are usually formatted at this position --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
*&#039;&#039;&#039;EndSkipTimeWhenPad&#039;&#039;&#039; determines when the move can skip itself after being moved by the PadRotation variables (refer to PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
*&#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt; &amp;lt;!-- Formatted for familiarity with retail --&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSkipTimeWhenPad&amp;gt;0.f&amp;lt;/EndSkipTimeWhenPad&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity&#039;&#039;&#039; is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_StartX&#039;&#039;&#039; sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationIntensity_PowerX&#039;&#039;&#039; sets the degrees of rotation your player can move.&lt;br /&gt;
* &#039;&#039;&#039;PadRotationValidX&#039;&#039;&#039; just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use. Refer to the Attack Types documentation&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies. Possibly broken.&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies. Possibly broken.&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Insert other variables --&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;100&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1410</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1410"/>
		<updated>2026-04-01T15:37:53Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
* &#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1409</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1409"/>
		<updated>2026-04-01T15:37:42Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
* &#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1408</id>
		<title>Creating &amp; Customizing Attack Actions (Combo Routes)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1408"/>
		<updated>2026-03-30T14:47:19Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ActionList is a compilation of different ‘Actions’. Actions work together like a family tree, with individual attacks being stems and their connections being branches. All combos are just multiple branches of other moves, spawning a wide range of moveset paths. Here’s an example:&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=example|content=NSA &amp;gt; NSB &amp;gt; NSC &amp;gt; NSD &amp;gt; NSE (YYYYY) = Feral/Normal Were-Hammer&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; JF &amp;gt; JKC (Y-XX) = Double Kick Combo&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; NSB &amp;gt; SC &amp;gt; SC2 &amp;gt; SD (YY-XXX) = Donkey Kick Combo}}&lt;br /&gt;
&lt;br /&gt;
We’ll go over making custom actions, combinations of the variables and parameters, several cases of Action’s variables, unique methods of move-set inputs, and combining them into one whole move.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;9547&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;MOVE_A&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt;&lt;br /&gt;
      &amp;lt;ValidCommon&amp;gt;true&amp;lt;/ValidCommon&amp;gt;&lt;br /&gt;
      &amp;lt;ValidBerserker&amp;gt;true&amp;lt;/ValidBerserker&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;NSB&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JF&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__Land&amp;gt;&amp;lt;/KEY__Land&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AirCombo /&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__End&amp;gt;&amp;lt;/KEY__End&amp;gt;&lt;br /&gt;
      &amp;lt;Guard&amp;gt;true&amp;lt;/Guard&amp;gt;&lt;br /&gt;
      &amp;lt;Avoid&amp;gt;true&amp;lt;/Avoid&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__StartFrame&amp;gt;2&amp;lt;/KEY__StartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__EndFrame&amp;gt;9&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;22&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;1&amp;lt;/WaitEndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndMotionSpeed&amp;gt;1&amp;lt;/EndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;LandStartFrame&amp;gt;-1&amp;lt;/LandStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Names: ==&lt;br /&gt;
Making a custom action is pretty simple. Let’s try making an action called “MOVE_A”, based on the previous Motion “MOVE_A”. We’d start by making the main Action variable and writing down the Action/Motion Name. It’s important to know there’s a few combinations.&lt;br /&gt;
&lt;br /&gt;
* Same Action, Same Motion: This is the default setting for most moves, with an exact Motion translating into an Action.&lt;br /&gt;
* Different Action, Same Motion: This is generally used in two situations…  a) This divides one large move into a few separate pieces of a larger move. A good example is the Werewheel Rush (YYYY-XXXX), a.k.a. the cartwheel move.  b) This makes a separate combo but with the same attributes as another. You’d see a couple of examples from ‘Foreign Input System’.&lt;br /&gt;
* Same Action, Different Motion: This is self-explanatory, since a similar move within a combo, however, has different properties or even entirely different… EVERYTHING!  But within the base game, Unleashed Knuckle Sandwich /Wild Combo is a strong example of the same actions but with different properties (which is found in the Unleashed Infinite)&lt;br /&gt;
* This here is a very unique situation. We will refer to these as “Root Actions”, which are used for beginning attacks (Ground/Aerial) or Special Attacks within the game. You can add different Motions, but you cannot fully customize OR make a custom “Root Action” without code-modding.&lt;br /&gt;
Ground, Straight&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_YButtonUP&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt;&lt;br /&gt;
      &amp;lt;ValidCommon&amp;gt;true&amp;lt;/ValidCommon&amp;gt;&lt;br /&gt;
      &amp;lt;ValidBerserker&amp;gt;true&amp;lt;/ValidBerserker&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;NSB&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JF&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__Land&amp;gt;&amp;lt;/KEY__Land&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AirCombo /&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__End&amp;gt;&amp;lt;/KEY__End&amp;gt;&lt;br /&gt;
      &amp;lt;Guard&amp;gt;true&amp;lt;/Guard&amp;gt;&lt;br /&gt;
      &amp;lt;Avoid&amp;gt;true&amp;lt;/Avoid&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__StartFrame&amp;gt;2&amp;lt;/KEY__StartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__EndFrame&amp;gt;10&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;22&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;1&amp;lt;/WaitEndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndMotionSpeed&amp;gt;1&amp;lt;/EndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;LandStartFrame&amp;gt;-1&amp;lt;/LandStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook  Wereclaw Charge&lt;br /&gt;
&lt;br /&gt;
== Common Values: ==&lt;br /&gt;
Now it’s time to look at the next few Action variables:&lt;br /&gt;
&lt;br /&gt;
* ValidLevel_Min determines at what level a combo is enabled/unlocked&lt;br /&gt;
* ValidLevel_Max determines what level a combo is disabled/locked&lt;br /&gt;
* We set the respective values at Level 1 (Beginner) and Level 99, unless you want 99 combos or something.&lt;br /&gt;
&lt;br /&gt;
* The top images show the beginner’s Were-Hammer (YYYY), which its finisher had a knockback. At Level 15, this move will be deactivated because of one reason…&lt;br /&gt;
* … Level 16 is when Feral Were-Hammer unlocks (YYYY-Y)! The new finisher has knockback and the original now has normal damage! Plus, it allows for new combo avenues!&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other variables, then. These are fairly important.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode&lt;br /&gt;
* ValidBerserker determines if a move works in Unleash Mode&lt;br /&gt;
&lt;br /&gt;
A few combinations of the two allow for the creation of moves meant ONLY for Normal or Unleash Mode. The Unleash Infinites primarily use this, but you can also make regular infinite attacks.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable them for ground moves, and disable them for Aerial moves.&lt;br /&gt;
&lt;br /&gt;
== Creating Combo Routes: ==&lt;br /&gt;
Making a combo route is simple, as shown in the example below. Here are MoveA and MoveB, which we want to connect into a consecutive move. It’s as simple as putting the ID for “MOVE_B” into one of the following KEY variables.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Down&#039;&#039;&#039; transitions to another move by pressing the Y, X, A, or B buttons.&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;UP&#039;&#039;&#039; transitions to another move by releasing the Y, X, A, or B buttons, usually before the next input (a.k.a very quickly).&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Ing&#039;&#039;&#039; is an unused input system that is activated by holding inputs for a given length of time, and can overridden ButtonDown and ButtonUp inputs (with bugged limitations).&lt;br /&gt;
* &#039;&#039;&#039;KEY__Land&#039;&#039;&#039; activates a move when the player lands on/falls to the ground.&lt;br /&gt;
* &#039;&#039;&#039;KEY__AirCombo&#039;&#039;&#039; activates when the player is in the air and when the player makes contact with the enemy hitbox.&lt;br /&gt;
* &#039;&#039;&#039;KEY__End&#039;&#039;&#039; activates a move when inputs are no longer received, meaning that you stop pressing ANYTHING.&lt;br /&gt;
&lt;br /&gt;
== Input Registration: ==&lt;br /&gt;
While this is all good, it doesn’t matter if the game can’t register our inputs. We should fix that so you can execute your combo effectively! Let’s focus on the following three variables, which allows you to register the input for the next move:&lt;br /&gt;
&lt;br /&gt;
* KEY__StartFrame is the start value of the input range (inclusive). Any inputs pressed before this value will not result in the next input.&lt;br /&gt;
* KEY__EndFrame is the end value of the input range (inclusive). Any inputs pressed after this value will not result in the next input, unless WaitEndMotionEndFrame is set to a value higher than 0.&lt;br /&gt;
* WaitEndMotionEndFrame (WEMEF) extends the range time where you can input a combo. This is found in almost all combos besides finishers and certain attacks.&lt;br /&gt;
&lt;br /&gt;
The three parameters below allow you to register the input while holding down on a button.&lt;br /&gt;
&lt;br /&gt;
* KEY__IngStartFrame is the start value of holding the button input.&lt;br /&gt;
* KEY__IngEndFrame is the end value of holding the button input. This value is only unresponsive when its value is greater than the EndFrame and/or WEMEF value.&lt;br /&gt;
* KEY__IngFrameTIme is how long you hold the button for.&lt;br /&gt;
&lt;br /&gt;
The following variables assist with attack speed and more:&lt;br /&gt;
&lt;br /&gt;
* WaitEndMotionSpeed (WEMS) is the speed of WEMEF, which works inversely proportionately.&lt;br /&gt;
* EndMotionSpeed is just the general speed of the whole action.&lt;br /&gt;
* LandStartFrame is self-explanatory, so most moves have a ‘-1’ value… with exception.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.  a) Ground moves have a value of -1, so they work on the ground and maybe in the air.  b) Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&lt;br /&gt;
Aerial Attacks follow the same principle but with two new variables:&lt;br /&gt;
&lt;br /&gt;
* AirCatchStartFrame is the frame where the player can use the Aerial Piledriver.&lt;br /&gt;
* AddVelocityY increases or decreases the player&#039;s upward velocity, depending on whether the value is positive or negative.&lt;br /&gt;
&lt;br /&gt;
Special Moves and Attack Finishers have empty Start/End frames, and any variables below have a value of -1.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1407</id>
		<title>Creating &amp; Customizing Attack Actions (Combo Routes)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1407"/>
		<updated>2026-03-30T14:39:54Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ActionList is a compilation of different ‘Actions’. Actions work together like a family tree, with individual attacks being stems and their connections being branches. All combos are just multiple branches of other moves, spawning a wide range of moveset paths. Here’s an example:&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=example|content=NSA &amp;gt; NSB &amp;gt; NSC &amp;gt; NSD &amp;gt; NSE (YYYYY) = Feral/Normal Were-Hammer&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; JF &amp;gt; JKC (Y-XX) = Double Kick Combo&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; NSB &amp;gt; SC &amp;gt; SC2 &amp;gt; SD (YY-XXX) = Donkey Kick Combo}}&lt;br /&gt;
&lt;br /&gt;
We’ll go over making custom actions, combinations of the variables and parameters, several cases of Action’s variables, unique methods of move-set inputs, and combining them into one whole move.&lt;br /&gt;
&lt;br /&gt;
== Names: ==&lt;br /&gt;
Making a custom action is pretty simple. Let’s try making an action called “MOVE_A”, based on the previous Motion “MOVE_A”. We’d start by making the main Action variable and writing down the Action/Motion Name. It’s important to know there’s a few combinations.&lt;br /&gt;
&lt;br /&gt;
* Same Action, Same Motion: This is the default setting for most moves, with an exact Motion translating into an Action.&lt;br /&gt;
* Different Action, Same Motion: This is generally used in two situations…  a) This divides one large move into a few separate pieces of a larger move. A good example is the Werewheel Rush (YYYY-XXXX), a.k.a. the cartwheel move.  b) This makes a separate combo but with the same attributes as another. You’d see a couple of examples from ‘Foreign Input System’.&lt;br /&gt;
* Same Action, Different Motion: This is self-explanatory, since a similar move within a combo, however, has different properties or even entirely different… EVERYTHING!  But within the base game, Unleashed Knuckle Sandwich /Wild Combo is a strong example of the same actions but with different properties (which is found in the Unleashed Infinite)&lt;br /&gt;
* This here is a very unique situation. We will refer to these as “Root Actions”, which are used for beginning attacks (Ground/Aerial) or Special Attacks within the game. You can add different Motions, but you cannot fully customize OR make a custom “Root Action” without code-modding.  Ground, Straight  Aerial, Hook  Wereclaw Charge&lt;br /&gt;
&lt;br /&gt;
== Common Values: ==&lt;br /&gt;
Now it’s time to look at the next few Action variables:&lt;br /&gt;
&lt;br /&gt;
* ValidLevel_Min determines at what level a combo is enabled/unlocked&lt;br /&gt;
* ValidLevel_Max determines what level a combo is disabled/locked&lt;br /&gt;
* We set the respective values at Level 1 (Beginner) and Level 99, unless you want 99 combos or something.&lt;br /&gt;
&lt;br /&gt;
* The top images show the beginner’s Were-Hammer (YYYY), which its finisher had a knockback. At Level 15, this move will be deactivated because of one reason…&lt;br /&gt;
* … Level 16 is when Feral Were-Hammer unlocks (YYYY-Y)! The new finisher has knockback and the original now has normal damage! Plus, it allows for new combo avenues!&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other variables, then. These are fairly important.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode&lt;br /&gt;
* ValidBerserker determines if a move works in Unleash Mode&lt;br /&gt;
&lt;br /&gt;
A few combinations of the two allow for the creation of moves meant ONLY for Normal or Unleash Mode. The Unleash Infinites primarily use this, but you can also make regular infinite attacks.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable them for ground moves, and disable them for Aerial moves.&lt;br /&gt;
&lt;br /&gt;
== Creating Combo Routes: ==&lt;br /&gt;
Making a combo route is simple, as shown in the example below. Here are MoveA and MoveB, which we want to connect into a consecutive move. It’s as simple as putting the ID for “MOVE_B” into one of the following KEY variables.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Down&#039;&#039;&#039; transitions to another move by pressing the Y, X, A, or B buttons.&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;UP&#039;&#039;&#039; transitions to another move by releasing the Y, X, A, or B buttons, usually before the next input (a.k.a very quickly).&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Ing&#039;&#039;&#039; is an unused input system that is activated by holding inputs for a given length of time, and can overridden ButtonDown and ButtonUp inputs (with bugged limitations).&lt;br /&gt;
* &#039;&#039;&#039;KEY__Land&#039;&#039;&#039; activates a move when the player lands on/falls to the ground.&lt;br /&gt;
* &#039;&#039;&#039;KEY__AirCombo&#039;&#039;&#039; activates when the player is in the air and when the player makes contact with the enemy hitbox.&lt;br /&gt;
* &#039;&#039;&#039;KEY__End&#039;&#039;&#039; activates a move when inputs are no longer received, meaning that you stop pressing ANYTHING.&lt;br /&gt;
&lt;br /&gt;
== Input Registration: ==&lt;br /&gt;
While this is all good, it doesn’t matter if the game can’t register our inputs. We should fix that so you can execute your combo effectively! Let’s focus on the following three variables, which allows you to register the input for the next move:&lt;br /&gt;
&lt;br /&gt;
* KEY__StartFrame is the start value of the input range (inclusive). Any inputs pressed before this value will not result in the next input.&lt;br /&gt;
* KEY__EndFrame is the end value of the input range (inclusive). Any inputs pressed after this value will not result in the next input, unless WaitEndMotionEndFrame is set to a value higher than 0.&lt;br /&gt;
* WaitEndMotionEndFrame (WEMEF) extends the range time where you can input a combo. This is found in almost all combos besides finishers and certain attacks.&lt;br /&gt;
&lt;br /&gt;
The three parameters below allow you to register the input while holding down on a button.&lt;br /&gt;
&lt;br /&gt;
* KEY__IngStartFrame is the start value of holding the button input.&lt;br /&gt;
* KEY__IngEndFrame is the end value of holding the button input. This value is only unresponsive when its value is greater than the EndFrame and/or WEMEF value.&lt;br /&gt;
* KEY__IngFrameTIme is how long you hold the button for.&lt;br /&gt;
&lt;br /&gt;
The following variables assist with attack speed and more:&lt;br /&gt;
&lt;br /&gt;
* WaitEndMotionSpeed (WEMS) is the speed of WEMEF, which works inversely proportionately.&lt;br /&gt;
* EndMotionSpeed is just the general speed of the whole action.&lt;br /&gt;
* LandStartFrame is self-explanatory, so most moves have a ‘-1’ value… with exception.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.  a) Ground moves have a value of -1, so they work on the ground and maybe in the air.  b) Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&lt;br /&gt;
Aerial Attacks follow the same principle but with two new variables:&lt;br /&gt;
&lt;br /&gt;
* AirCatchStartFrame is the frame where the player can use the Aerial Piledriver.&lt;br /&gt;
* AddVelocityY increases or decreases the player&#039;s upward velocity, depending on whether the value is positive or negative.&lt;br /&gt;
&lt;br /&gt;
Special Moves and Attack Finishers have empty Start/End frames, and any variables below have a value of -1.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1406</id>
		<title>Creating &amp; Customizing Attack Actions (Combo Routes)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Actions_(Combo_Routes)&amp;diff=1406"/>
		<updated>2026-03-30T14:39:26Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Created page with &amp;quot;The ActionList is a compilation of different ‘Actions’. Actions work together like a family tree, with individual attacks being stems and their connections being branches. All combos are just multiple branches of other moves, spawning a wide range of moveset paths. Here’s an example:  {{Notice|type=example|content=NSA &amp;gt; NSB &amp;gt; NSC &amp;gt; NSD &amp;gt; NSE (YYYY-Y) = Feral/Normal Were-Hammer  NSA &amp;gt; JF &amp;gt; JKC (Y-XX) = Double Kick Combo  NSA &amp;gt; NSB &amp;gt; SC &amp;gt; SC2 &amp;gt; SD (YY-XXX) = Donkey K...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ActionList is a compilation of different ‘Actions’. Actions work together like a family tree, with individual attacks being stems and their connections being branches. All combos are just multiple branches of other moves, spawning a wide range of moveset paths. Here’s an example:&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=example|content=NSA &amp;gt; NSB &amp;gt; NSC &amp;gt; NSD &amp;gt; NSE (YYYY-Y) = Feral/Normal Were-Hammer&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; JF &amp;gt; JKC (Y-XX) = Double Kick Combo&lt;br /&gt;
&lt;br /&gt;
NSA &amp;gt; NSB &amp;gt; SC &amp;gt; SC2 &amp;gt; SD (YY-XXX) = Donkey Kick Combo}}&lt;br /&gt;
&lt;br /&gt;
We’ll go over making custom actions, combinations of the variables and parameters, several cases of Action’s variables, unique methods of move-set inputs, and combining them into one whole move.&lt;br /&gt;
&lt;br /&gt;
== Names: ==&lt;br /&gt;
Making a custom action is pretty simple. Let’s try making an action called “MOVE_A”, based on the previous Motion “MOVE_A”. We’d start by making the main Action variable and writing down the Action/Motion Name. It’s important to know there’s a few combinations.&lt;br /&gt;
&lt;br /&gt;
* Same Action, Same Motion: This is the default setting for most moves, with an exact Motion translating into an Action.&lt;br /&gt;
* Different Action, Same Motion: This is generally used in two situations…  a) This divides one large move into a few separate pieces of a larger move. A good example is the Werewheel Rush (YYYY-XXXX), a.k.a. the cartwheel move.  b) This makes a separate combo but with the same attributes as another. You’d see a couple of examples from ‘Foreign Input System’.&lt;br /&gt;
* Same Action, Different Motion: This is self-explanatory, since a similar move within a combo, however, has different properties or even entirely different… EVERYTHING!  But within the base game, Unleashed Knuckle Sandwich /Wild Combo is a strong example of the same actions but with different properties (which is found in the Unleashed Infinite)&lt;br /&gt;
* This here is a very unique situation. We will refer to these as “Root Actions”, which are used for beginning attacks (Ground/Aerial) or Special Attacks within the game. You can add different Motions, but you cannot fully customize OR make a custom “Root Action” without code-modding.  Ground, Straight  Aerial, Hook  Wereclaw Charge&lt;br /&gt;
&lt;br /&gt;
== Common Values: ==&lt;br /&gt;
Now it’s time to look at the next few Action variables:&lt;br /&gt;
&lt;br /&gt;
* ValidLevel_Min determines at what level a combo is enabled/unlocked&lt;br /&gt;
* ValidLevel_Max determines what level a combo is disabled/locked&lt;br /&gt;
* We set the respective values at Level 1 (Beginner) and Level 99, unless you want 99 combos or something.&lt;br /&gt;
&lt;br /&gt;
* The top images show the beginner’s Were-Hammer (YYYY), which its finisher had a knockback. At Level 15, this move will be deactivated because of one reason…&lt;br /&gt;
* … Level 16 is when Feral Were-Hammer unlocks (YYYY-Y)! The new finisher has knockback and the original now has normal damage! Plus, it allows for new combo avenues!&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other variables, then. These are fairly important.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode&lt;br /&gt;
* ValidBerserker determines if a move works in Unleash Mode&lt;br /&gt;
&lt;br /&gt;
A few combinations of the two allow for the creation of moves meant ONLY for Normal or Unleash Mode. The Unleash Infinites primarily use this, but you can also make regular infinite attacks.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable them for ground moves, and disable them for Aerial moves.&lt;br /&gt;
&lt;br /&gt;
== Creating Combo Routes: ==&lt;br /&gt;
Making a combo route is simple, as shown in the example below. Here are MoveA and MoveB, which we want to connect into a consecutive move. It’s as simple as putting the ID for “MOVE_B” into one of the following KEY variables.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Down&#039;&#039;&#039; transitions to another move by pressing the Y, X, A, or B buttons.&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;UP&#039;&#039;&#039; transitions to another move by releasing the Y, X, A, or B buttons, usually before the next input (a.k.a very quickly).&lt;br /&gt;
* &#039;&#039;&#039;KEY__&#039;&#039;Button&#039;&#039;Ing&#039;&#039;&#039; is an unused input system that is activated by holding inputs for a given length of time, and can overridden ButtonDown and ButtonUp inputs (with bugged limitations).&lt;br /&gt;
* &#039;&#039;&#039;KEY__Land&#039;&#039;&#039; activates a move when the player lands on/falls to the ground.&lt;br /&gt;
* &#039;&#039;&#039;KEY__AirCombo&#039;&#039;&#039; activates when the player is in the air and when the player makes contact with the enemy hitbox.&lt;br /&gt;
* &#039;&#039;&#039;KEY__End&#039;&#039;&#039; activates a move when inputs are no longer received, meaning that you stop pressing ANYTHING.&lt;br /&gt;
&lt;br /&gt;
== Input Registration: ==&lt;br /&gt;
While this is all good, it doesn’t matter if the game can’t register our inputs. We should fix that so you can execute your combo effectively! Let’s focus on the following three variables, which allows you to register the input for the next move:&lt;br /&gt;
&lt;br /&gt;
* KEY__StartFrame is the start value of the input range (inclusive). Any inputs pressed before this value will not result in the next input.&lt;br /&gt;
* KEY__EndFrame is the end value of the input range (inclusive). Any inputs pressed after this value will not result in the next input, unless WaitEndMotionEndFrame is set to a value higher than 0.&lt;br /&gt;
* WaitEndMotionEndFrame (WEMEF) extends the range time where you can input a combo. This is found in almost all combos besides finishers and certain attacks.&lt;br /&gt;
&lt;br /&gt;
The three parameters below allow you to register the input while holding down on a button.&lt;br /&gt;
&lt;br /&gt;
* KEY__IngStartFrame is the start value of holding the button input.&lt;br /&gt;
* KEY__IngEndFrame is the end value of holding the button input. This value is only unresponsive when its value is greater than the EndFrame and/or WEMEF value.&lt;br /&gt;
* KEY__IngFrameTIme is how long you hold the button for.&lt;br /&gt;
&lt;br /&gt;
The following variables assist with attack speed and more:&lt;br /&gt;
&lt;br /&gt;
* WaitEndMotionSpeed (WEMS) is the speed of WEMEF, which works inversely proportionately.&lt;br /&gt;
* EndMotionSpeed is just the general speed of the whole action.&lt;br /&gt;
* LandStartFrame is self-explanatory, so most moves have a ‘-1’ value… with exception.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.  a) Ground moves have a value of -1, so they work on the ground and maybe in the air.  b) Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&lt;br /&gt;
Aerial Attacks follow the same principle but with two new variables:&lt;br /&gt;
&lt;br /&gt;
* AirCatchStartFrame is the frame where the player can use the Aerial Piledriver.&lt;br /&gt;
* AddVelocityY increases or decreases the player&#039;s upward velocity, depending on whether the value is positive or negative.&lt;br /&gt;
&lt;br /&gt;
Special Moves and Attack Finishers have empty Start/End frames, and any variables below have a value of -1.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1405</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1405"/>
		<updated>2026-03-30T14:31:37Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_N,&#039;&#039;&#039; &#039;&#039;&#039;MotionMoveSpeedRatioFrame_N,&#039;&#039;&#039; and &#039;&#039;&#039;MotionMoveSpeedRatioFrameY_N&#039;&#039;&#039; apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make an attack move more or less in a certain direction.&lt;br /&gt;
** For example: moves that rise up at a certain frame, such as a launcher, should multiply MotionMoveSpeedRatioFrameY_N by a significant amount, more than MotionMoveSpeedRatioFrame_N.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the maximum scope of turning while attacking. You have None, Scope90, and Scope360 to use, which only work with enabled PadRotation variables (more in the Gravity/PadRotation section).&lt;br /&gt;
* &#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* &#039;&#039;&#039;IsGravity&#039;&#039;&#039; and its subsequent parameters, &#039;&#039;&#039;GravityArray_StartX&#039;&#039;&#039; and &#039;&#039;&#039;IsGravityArrayX&#039;&#039;&#039; determines the combos&#039;s application of gravity while doing a combo. IsGravity and IsGravityX use true/false.&lt;br /&gt;
** Ground moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Launcher moves follow the setup below for its gravity arrays and values.&lt;br /&gt;
** Aerial moves follow the setup below for its gravity arrays and values:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1404</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1404"/>
		<updated>2026-03-28T17:28:14Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file, such as the example below.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the &#039;&#039;&#039;MotionName&#039;&#039;&#039; and &#039;&#039;&#039;FileName&#039;&#039;&#039;. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_X,&#039;&#039;&#039;  &#039;&#039;&#039;MotionMoveSpeedRatioFrame_X, and MotionMoveSpeedRatioFrameY_X&#039;&#039;&#039;and its subsequent variables apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make particular adjustments.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AttackScope&#039;&#039;&#039; sets the degrees of turning while attacking. You have None, Scope90, and Scope360 to use.&lt;br /&gt;
* &#039;&#039;&#039;DontCatchTime&#039;&#039;&#039; states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* &#039;&#039;&#039;DontJump&#039;&#039;&#039; is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* &#039;&#039;&#039;OnceSendDamage&#039;&#039;&#039; determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* &#039;&#039;&#039;ShakeCameraStartFrame&#039;&#039;&#039; is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* &#039;&#039;&#039;GroundHeightRepair&#039;&#039;&#039; determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* &#039;&#039;&#039;MoveType&#039;&#039;&#039; has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetEndFrame&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* &#039;&#039;&#039;AutoTargetPower&#039;&#039;&#039; can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* IsGravity and its subsequent parameters are self-explanatory. Ground moves follow the above setup for its gravity arrays and values.&lt;br /&gt;
* Aerial moves follow this particular setup for IsGravity:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1403</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1403"/>
		<updated>2026-03-28T17:26:52Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=You will need the following files from the #Application archive file:&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.&lt;br /&gt;
&lt;br /&gt;
By the end of this guide, you&#039;ll have a fairly comprehensive and complete Motion file.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the MotionName and FileName. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_X,&#039;&#039;&#039;  &#039;&#039;&#039;MotionMoveSpeedRatioFrame_X, and MotionMoveSpeedRatioFrameY_X&#039;&#039;&#039;and its subsequent variables apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make particular adjustments.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* AttackScope sets the degrees of turning while attacking. You have None, Scope90, and Scope360 to use.&lt;br /&gt;
* DontCatchTime states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* DontJump is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* OnceSendDamage determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* ShakeCameraStartFrame is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* GroundHeightRepair determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* MoveType has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* AutoTargetEndFrame can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* AutoTargetPower can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis. The value of these variables depend on what kind of attack you would want (grounded, launcher, aerial, unidirectional, multidirectional, etc.)&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value that of the attack&#039;s rotation via the left stick. It is assumed the value is represented in degrees or whatever value is used by the controller&#039;s left-stick.&lt;br /&gt;
* IsGravity and its subsequent parameters are self-explanatory. Ground moves follow the above setup for its gravity arrays and values.&lt;br /&gt;
* Aerial moves follow this particular setup for IsGravity:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1402</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1402"/>
		<updated>2026-03-28T01:52:16Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A”, of which its layout is shown below, and explain what each variable does.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;You will need the following files from the #Application archive file:&lt;br /&gt;
&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml&lt;br /&gt;
&lt;br /&gt;
== Names ==&lt;br /&gt;
We start with the MotionName and FileName. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_X,&#039;&#039;&#039;  &#039;&#039;&#039;MotionMoveSpeedRatioFrame_X, and MotionMoveSpeedRatioFrameY_X&#039;&#039;&#039;and its subsequent variables apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make particular adjustments.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* AttackScope sets the degrees of turning while attacking. You have None, Scope90, and Scope360 to use.&lt;br /&gt;
* DontCatchTime states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* DontJump is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* OnceSendDamage determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* ShakeCameraStartFrame is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* GroundHeightRepair determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* MoveType has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* AutoTargetEndFrame can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* AutoTargetPower can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis.&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value. It sets the value of your Left Stick’s rotation.&lt;br /&gt;
* IsGravity and its subsequent parameters are self-explanatory. Ground moves follow the above setup for its gravity arrays and values.&lt;br /&gt;
* Aerial moves follow this particular setup for IsGravity:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1401</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1401"/>
		<updated>2026-03-28T01:51:49Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Added comment code for the XMLs of the motions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;MotionList&#039;&#039;&#039; contains a series of &#039;&#039;&#039;Motions&#039;&#039;&#039;, or the &#039;&#039;&#039;Unique Inputs (UIs)&#039;&#039;&#039; in the Werehog’s combos. These Motion are XML cells which determine the value of the animation, movement, collision, attack types, and other attributes of each and every unique input of the Werehog&#039;s attacks. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A”, of which its layout is shown below, and explain what each variable does.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;125&amp;quot;&amp;gt;&amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity&amp;gt;20&amp;lt;/PadRotationIntensity&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravity&amp;gt;true&amp;lt;/IsGravity&amp;gt;&lt;br /&gt;
      &amp;lt;GravityArray_Start1&amp;gt;-1&amp;lt;/GravityArray_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;IsGravityArray1&amp;gt;true&amp;lt;/IsGravityArray1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start1&amp;gt;0&amp;lt;/PadRotationIntensity_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power1&amp;gt;20&amp;lt;/PadRotationIntensity_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid1&amp;gt;true&amp;lt;/PadRotationValid1&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start2&amp;gt;8&amp;lt;/PadRotationIntensity_Start2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power2&amp;gt;0&amp;lt;/PadRotationIntensity_Power2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid2&amp;gt;false&amp;lt;/PadRotationValid2&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Start3&amp;gt;22&amp;lt;/PadRotationIntensity_Start3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationIntensity_Power3&amp;gt;20&amp;lt;/PadRotationIntensity_Power3&amp;gt;&lt;br /&gt;
      &amp;lt;PadRotationValid3&amp;gt;true&amp;lt;/PadRotationValid3&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Start1&amp;gt;0&amp;lt;/GameSpeed_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_Power1&amp;gt;1&amp;lt;/GameSpeed_Power1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeed_CollPower1&amp;gt;1&amp;lt;/GameSpeed_CollPower1&amp;gt;&lt;br /&gt;
      &amp;lt;GuardStartFrame&amp;gt;8&amp;lt;/GuardStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GuardEndFrame&amp;gt;27&amp;lt;/GuardEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;GameSpeedColl_Start1&amp;gt;-1&amp;lt;/GameSpeedColl_Start1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Speed1&amp;gt;-1&amp;lt;/GameSpeedColl_Speed1&amp;gt;&lt;br /&gt;
      &amp;lt;GameSpeedColl_Timer1&amp;gt;-1&amp;lt;/GameSpeedColl_Timer1&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
      &amp;lt;Effect&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Start1&amp;gt;4&amp;lt;/REffect_Start1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_End1&amp;gt;16&amp;lt;/REffect_End1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Size1&amp;gt;2&amp;lt;/REffect_Size1&amp;gt;&lt;br /&gt;
        &amp;lt;REffect_Name1&amp;gt;evil_punch_01&amp;lt;/REffect_Name1&amp;gt;&lt;br /&gt;
      &amp;lt;/Effect&amp;gt;&lt;br /&gt;
      &amp;lt;Sound&amp;gt;&amp;lt;/Sound&amp;gt;&lt;br /&gt;
      &amp;lt;Collision&amp;gt;&lt;br /&gt;
        &amp;lt;DebugDraw&amp;gt;true&amp;lt;/DebugDraw&amp;gt;&lt;br /&gt;
        &amp;lt;Size1&amp;gt;0.75f&amp;lt;/Size1&amp;gt;&lt;br /&gt;
        &amp;lt;SizeDelta1&amp;gt;0.f&amp;lt;/SizeDelta1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandStart1&amp;gt;6&amp;lt;/RHandStart1&amp;gt;&lt;br /&gt;
        &amp;lt;RHandEnd1&amp;gt;16&amp;lt;/RHandEnd1&amp;gt;&lt;br /&gt;
      &amp;lt;/Collision&amp;gt;&lt;br /&gt;
      &amp;lt;Vibration&amp;gt;&lt;br /&gt;
        &amp;lt;StartFrame&amp;gt;-1&amp;lt;/StartFrame&amp;gt;&lt;br /&gt;
        &amp;lt;EndFrame&amp;gt;-1&amp;lt;/EndFrame&amp;gt;&lt;br /&gt;
        &amp;lt;BigMoter&amp;gt;0.f&amp;lt;/BigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SmallMoter&amp;gt;0.f&amp;lt;/SmallMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessTimeLength&amp;gt;0.01&amp;lt;/SuccessTimeLength&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessBigMoter&amp;gt;0.5f&amp;lt;/SuccessBigMoter&amp;gt;&lt;br /&gt;
        &amp;lt;SuccessSmallMoter&amp;gt;0.5f&amp;lt;/SuccessSmallMoter&amp;gt;&lt;br /&gt;
      &amp;lt;/Vibration&amp;gt;&lt;br /&gt;
      &amp;lt;Attack&amp;gt;&lt;br /&gt;
        &amp;lt;Type1&amp;gt;NormalHard&amp;lt;/Type1&amp;gt;&lt;br /&gt;
        &amp;lt;DamagePower1&amp;gt;95&amp;lt;/DamagePower1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Y1&amp;gt;0.f&amp;lt;/KnockOutPower_Y1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutPower_Dir1&amp;gt;2.2f&amp;lt;/KnockOutPower_Dir1&amp;gt;&lt;br /&gt;
        &amp;lt;KnockOutAnglePowerRatio1&amp;gt;0.5f&amp;lt;/KnockOutAnglePowerRatio1&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute1&amp;gt;VerticalAttack&amp;lt;/Attribute1&amp;gt;&lt;br /&gt;
      &amp;lt;/Attack&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;You will need the following files from the #Application archive file:&lt;br /&gt;
&lt;br /&gt;
* EvilAttackAction1.xml&lt;br /&gt;
* EvilAttackMotionFile.xml&lt;br /&gt;
&lt;br /&gt;
== Names: ==&lt;br /&gt;
We start with the MotionName and FileName. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Start&amp;gt;&lt;br /&gt;
  &amp;lt;StartPoint&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Normal/Feral Were-Hammer --&amp;gt;&lt;br /&gt;
	&amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSA&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSB&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSB&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSC&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSD&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSE&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Your Custom MotionFileList --&amp;gt;&lt;br /&gt;
    &amp;lt;MotionFileList&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;evilsonic_attackNSE&amp;lt;/FileName&amp;gt;&lt;br /&gt;
    &amp;lt;/MotionFileList&amp;gt;&lt;br /&gt;
  &amp;lt;/Start&amp;gt;&lt;br /&gt;
&amp;lt;/StartPoint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement: ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MotionBlendTimeS&#039;&#039;&#039;, &#039;&#039;&#039;MotionBlendTimeE&#039;&#039;&#039;, and &#039;&#039;&#039;MotionBlendTimeEIdle&#039;&#039;&#039; blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatio&#039;&#039;&#039; (MMSR for convenience) and &#039;&#039;&#039;MotionMoveSpeedRatio_Y&#039;&#039;&#039; control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “A.Bf”&lt;br /&gt;
* &#039;&#039;&#039;MotionMoveSpeedRatioFrameStart_X,&#039;&#039;&#039;  &#039;&#039;&#039;MotionMoveSpeedRatioFrame_X, and MotionMoveSpeedRatioFrameY_X&#039;&#039;&#039;and its subsequent variables apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make particular adjustments.&lt;br /&gt;
* &#039;&#039;&#039;MotionFirstSpeed&#039;&#039;&#039;, &#039;&#039;&#039;MiddleSpeed&#039;&#039;&#039;, and &#039;&#039;&#039;EndSpeed&#039;&#039;&#039; all affect the Attack’s animation speed. &lt;br /&gt;
* &#039;&#039;&#039;MotionSpeed_First&#039;&#039;&#039;/&#039;&#039;&#039;MiddleFrame&#039;&#039;&#039; represents when the MotionFirstSpeed and MiddleSpeed params are executed (corresponding with the animation frames).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General: ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* AttackScope sets the degrees of turning while attacking. You have None, Scope90, and Scope360 to use.&lt;br /&gt;
* DontCatchTime states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* DontJump is self-explanatory. You apply it for whatever moves you DON&#039;T want to have an enabled jump afterwards, such as Sho-Hog-Ken (YYA), and disable it for combo that you want to jump with, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* OnceSendDamage determines how long a combo can continually send damage. The default value is usually zero, and many moves use this as a way of implementing multiple hits for combos with a single or more number of hitboxes.&lt;br /&gt;
* ShakeCameraStartFrame is the start frame for when the Camera Shake can happen for certain moves. Unfortunately, there are no specific variables to affect the number or intensity of shakes.&lt;br /&gt;
* GroundHeightRepair determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* MoveType has two values: Default and IngAutoTarget (the variables below only work when IngAutoTarget is enabled.&lt;br /&gt;
* AutoTargetEndFrame can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* AutoTargetPower can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Motion&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;MOVE_A&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;FileName&amp;gt;NSA&amp;lt;/FileName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeS&amp;gt;0.02f&amp;lt;/MotionBlendTimeS&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeE&amp;gt;0.02f&amp;lt;/MotionBlendTimeE&amp;gt;&lt;br /&gt;
      &amp;lt;MotionBlendTimeEIdle&amp;gt;0.02f&amp;lt;/MotionBlendTimeEIdle&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio&amp;gt;0.875f&amp;lt;/MotionMoveSpeedRatio&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatio_Y&amp;gt;1.f&amp;lt;/MotionMoveSpeedRatio_Y&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameStart_1&amp;gt;-1&amp;lt;/MotionMoveSpeedRatioFrameStart_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrame_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrame_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionMoveSpeedRatioFrameY_1&amp;gt;10.f&amp;lt;/MotionMoveSpeedRatioFrameY_1&amp;gt;&lt;br /&gt;
      &amp;lt;MotionFirstSpeed&amp;gt;1.f&amp;lt;/MotionFirstSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MiddleSpeed&amp;gt;1.f&amp;lt;/MiddleSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndSpeed&amp;gt;1.f&amp;lt;/EndSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_FirstFrame&amp;gt;9&amp;lt;/MotionSpeed_FirstFrame&amp;gt;&lt;br /&gt;
      &amp;lt;MotionSpeed_MiddleFrame&amp;gt;16&amp;lt;/MotionSpeed_MiddleFrame&amp;gt;&lt;br /&gt;
      &amp;lt;DontCatchTime&amp;gt;0&amp;lt;/DontCatchTime&amp;gt;&lt;br /&gt;
      &amp;lt;DontJump&amp;gt;false&amp;lt;/DontJump&amp;gt;&lt;br /&gt;
      &amp;lt;OnceSendDamage&amp;gt;0&amp;lt;/OnceSendDamage&amp;gt; &amp;lt;!-- Not included in the original motion --&amp;gt;&lt;br /&gt;
      &amp;lt;ShakeCameraStartFrame&amp;gt;-1&amp;lt;/ShakeCameraStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;GroundHeightRepair&amp;gt;0.1f&amp;lt;/GroundHeightRepair&amp;gt;&lt;br /&gt;
      &amp;lt;MoveType&amp;gt;IngAutoTarget&amp;lt;/MoveType&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetEndFrame&amp;gt;9&amp;lt;/AutoTargetEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;AutoTargetPower&amp;gt;0.2&amp;lt;/AutoTargetPower&amp;gt;&lt;br /&gt;
    &amp;lt;/Motion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation: ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis.&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value. It sets the value of your Left Stick’s rotation.&lt;br /&gt;
* IsGravity and its subsequent parameters are self-explanatory. Ground moves follow the above setup for its gravity arrays and values.&lt;br /&gt;
* Aerial moves follow this particular setup for IsGravity:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding: ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects: ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision: ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera: ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration: ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack: ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1400</id>
		<title>Creating &amp; Customizing Attack Motions (Unique Inputs)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Creating_%26_Customizing_Attack_Motions_(Unique_Inputs)&amp;diff=1400"/>
		<updated>2026-03-28T00:39:32Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Pasted all the information related to the creation of a motion cell in EvilAttackAction1.xml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating &amp;amp; Customizing Attack Motions (Unique Inputs) =&lt;br /&gt;
It’s time to learn how to customize the Motions within the Motion List. The MotionList contains a series of Motions, or the unique inputs (UIs) in the Werehog’s combos. These determine the value of the animation, movement, collision, attack attributes, etc. These elements are extensively long because of their content, so we will break each section down for you. For convenience&#039;s sake, we will create a new scenario by making a new Motion (individual attack) called “MOVE_A” and explain what each variable does.&lt;br /&gt;
&lt;br /&gt;
You will need the following files from the #Application archive file:&lt;br /&gt;
&lt;br /&gt;
== Names: ==&lt;br /&gt;
We start with the MotionName and FileName. The MotionName can be whatever it wants, but the FileName must be exactly as it’s written within EvilAttackMotionFile.xml&lt;br /&gt;
&lt;br /&gt;
For the most part, changing the filename is an entirely arbitrary case. But if you’re planning to change the filename anyways:&lt;br /&gt;
&lt;br /&gt;
# Find the name of your animation file (formatted as *.anm.hkx)&lt;br /&gt;
# Look for EvilAttackMotionFile.xml, and look within that XML&lt;br /&gt;
# You can either change the filename or make a new MotionFileList. However, there are some limitations… so this is an arbitrary action unless you’re using the Beta Combos.&lt;br /&gt;
&lt;br /&gt;
== Animation and Movement: ==&lt;br /&gt;
The animation and movement values here determine how your Motion looks and  moves visually and physically.&lt;br /&gt;
&lt;br /&gt;
* MotionBlendTimeS, E, and EIdle blend the animations between a previous and following combo. Keep the values as 0.02f.&lt;br /&gt;
* MotionMoveSpeedRatio (MMSR for convenience) and MotionMoveSpeedRatio_Y control the player’s movement ratio when making the entire attack. You can experiment with these values, but remember to write it in the form of “X.Xf”&lt;br /&gt;
* MMSRFrameStart_X and its subsequent variables apply the same movement/distance ratio, except it’s done within a certain frame. Reference other moves if you want to make particular adjustments.&lt;br /&gt;
* MotionFirstSpeed, MiddleSpeed, and EndSpeed all affect the Attack’s speed. &lt;br /&gt;
* MotionSpeed_First/MiddleFrame represents when the MotionSpeed params happen.&lt;br /&gt;
&lt;br /&gt;
== General: ==&lt;br /&gt;
Now we can take a look at more general variables. These are equally important for combat and visual aspects of the Werehog.&lt;br /&gt;
&lt;br /&gt;
* AttackScope sets the degrees of turning while attacking. You have None, Scope90, and Scope360 to use.&lt;br /&gt;
* DontCatchTime states how long it takes before the player can use the grab. Set it to 0 for ground moves, 2 for aerial moves.&lt;br /&gt;
* DontJump is self-explanatory. You apply it for whatever moves you want to have an enabled jump afterwards, such as Unleashed Wild Combo (XX-YY-XX-YY).&lt;br /&gt;
* ShakeCameraStartFrame can be set to whatever you want.&lt;br /&gt;
* GroundHeightRepair determines the floatiness of a move. Lower values mean more floaty and higher values mean less floaty.&lt;br /&gt;
* MoveType has two values: Default and IngAutoTarget, the latter is important for the next values&lt;br /&gt;
* AutoTargetEndFrame can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
* AutoTargetPower can be set to 0 for Default, and any value for IngAutoTarget&lt;br /&gt;
&lt;br /&gt;
== Gravity and PadRotation: ==&lt;br /&gt;
The following Gravity and PadRotation variables are interpreted and explained by Nec0Arc and myself, so you can understand how to adjust the player’s movement across the X, Y, and Z axis.&lt;br /&gt;
&lt;br /&gt;
* PadRotationIntensity is a general value. It sets the value of your Left Stick’s rotation.&lt;br /&gt;
* IsGravity and its subsequent parameters are self-explanatory. Ground moves follow the above setup for its gravity arrays and values.&lt;br /&gt;
* Aerial moves follow this particular setup for IsGravity:&lt;br /&gt;
* PadRotationIntensity_StartX sets the keyframe for the player’s movement during an attack.&lt;br /&gt;
* PadRotationIntensity_PowerX sets the degrees of rotation your player can move.&lt;br /&gt;
* PadRotationValidX just sets the value to true or false.&lt;br /&gt;
&lt;br /&gt;
== GameSpeed and Guarding: ==&lt;br /&gt;
The following discoveries were made by BaconYum and myself: GameSpeed represents the “Slow Motion” moments that happen with attacks, so let’s look at the variables:&lt;br /&gt;
&lt;br /&gt;
* GameSpeed_StartX refers to the specific frame that starts the GameSpeed variable.&lt;br /&gt;
* GameSpeed_PowerX refers to the power of this GameSpeed modifier, which is simple to understand.&lt;br /&gt;
** A value of 1 means the game’s speed is normal&lt;br /&gt;
** 1 &amp;gt; X &amp;gt; 0 means the game’s speed is slowed. So if you have a value of 0.5, the game’s speed is halved.&lt;br /&gt;
** A value above 1 means the game’s speed is multiplied by that amount. A value of 2 means the game’s speed is doubled.&lt;br /&gt;
* GameSpeed_CollPowerX does the same thing, except it refers to the player’s collision when doing the attack.&lt;br /&gt;
* GuardStart/EndFrame are self-explanatory, and they surprisingly explain the mechanic of Shield Cancelling… neat!&lt;br /&gt;
&lt;br /&gt;
== Sound and Effects: ==&lt;br /&gt;
The Sound element is unused in the main game’s Attack XML, mostly used in the TBRES XMLs. The Effect element, however, can be used generally for hand and feet attacks.&lt;br /&gt;
&lt;br /&gt;
* Effect_StartX is the start time value for the effect to take place. L/R is for hands, LF/RF is for feet.&lt;br /&gt;
* Effect_EndX is the end time value for the effect to take place.&lt;br /&gt;
* Effect_SizeX is self explanatory&lt;br /&gt;
* Effect_NameX is also self-explanatory. If you want to look for the effect names for the Werehog, look at EvilSonic’s ar files.&lt;br /&gt;
&lt;br /&gt;
== Collision: ==&lt;br /&gt;
The Collision Element deals with the attack’s hitbox, which registers the hits and damage. Both Nec0Arc and NextinFRFX interpreted and discovered the following variables to help you understand what they do:&lt;br /&gt;
&lt;br /&gt;
* Just keep it as true. I don’t know what it does.&lt;br /&gt;
* SizeX is the initial or start size of the attack’s hitbox.&lt;br /&gt;
* SizeDeltaX is the final or end size of the attack’s hitbox&lt;br /&gt;
* RHandStartX is the frame where the collision hitbox starts, applying the SizeX variable. The specific body hitbox can be changed (&#039;&#039;&#039;refer to this link&#039;&#039;&#039;).&lt;br /&gt;
* RHandEndX is the frame where the collision hitbox ends, applying the SizeDeltaX variable.&lt;br /&gt;
&lt;br /&gt;
== Camera: ==&lt;br /&gt;
This element deals with the player’s camera when doing certain attacks. These values were taken from Sho-Hog-Ken (SHAS).&lt;br /&gt;
&lt;br /&gt;
* StartEaseInFrame/StartEaseOutFrame are used to set the range of when the camera eases in and out.&lt;br /&gt;
* EaseIn/EaseOut is the value that the camera pulls in or pulls out.&lt;br /&gt;
* Fovy probably means FOV (field of view). The Y could be a type or mean the Y-Axis.&lt;br /&gt;
* HopeLength… your guess is as good as mine.&lt;br /&gt;
* Height is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
== Vibration: ==&lt;br /&gt;
This element deals with the controller’s vibration, usually when a hit is registered.&lt;br /&gt;
&lt;br /&gt;
* Start/EndFrame are self-explanatory&lt;br /&gt;
* BigMoter and SmallMoter are the vibration motors of the control, meaning left or right.&lt;br /&gt;
* SuccessTimeLength is how long the vibration lasts if you land a hit&lt;br /&gt;
* SuccessBig/SmallMoter is the same thing but for the motors specifically.&lt;br /&gt;
&lt;br /&gt;
== Attack: ==&lt;br /&gt;
These are the primary Attack values, which we know are connected to the Collision (thanks to Nec0Arc). Let’s take a look at the Attack Variables, which are the final variables you’ll need to complete your Motion:&lt;br /&gt;
&lt;br /&gt;
* Type is one of many different Attack Types that you can use.&lt;br /&gt;
* DamagePower is self-explanatory, and its value is multiplied by the Strength Stat&lt;br /&gt;
* KnockOutPower_Y determines the vertical knockback distance for enemies&lt;br /&gt;
* KnockOutPower_Dir determines the horizontal knockback distance for enemies  (I should note, for both, that it weirdly isn’t alterable when doing)&lt;br /&gt;
* KnockOutAnglePowerRatio is just a multiplier for both KnockOutPower variables.&lt;br /&gt;
* The Attribute variable can be set to Vertical, Side, or FinishAttack.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
</feed>