<?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-09-17T05:52:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1571</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1571"/>
		<updated>2026-09-14T02:28:08Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Added a section for small enemies statenames&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateNames ==&lt;br /&gt;
StateNames determine what the state of an enemy is, and how they react to different player attack types. It is a static system, so it makes sense to use it sparingly. &lt;br /&gt;
&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and their variants. Next, enemies tend to have group specific values, such as Small and Middle enemies having a &amp;quot;Jump&amp;quot; or &amp;quot;Combo&amp;quot; state while minibosses do not. Finally, enemies have their own specific values for their enemy type and variants, such as &amp;quot;AttackOneHand&amp;quot; or &amp;quot;Shot&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Below this paragraph are listings of majority of the different enemy states, though there will be information missing. It is your responsibility to find out what every state does, but most of the named states will be informative enough. &lt;br /&gt;
&lt;br /&gt;
=== Common States ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Fall&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Falls from height&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackSpecial&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Special Attack&lt;br /&gt;
|-&lt;br /&gt;
|Chase&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Chases after player&lt;br /&gt;
|-&lt;br /&gt;
|Jump&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Jumps&lt;br /&gt;
|-&lt;br /&gt;
|Damage&lt;br /&gt;
|All&lt;br /&gt;
|Damages enemy&lt;br /&gt;
|-&lt;br /&gt;
|Stun&lt;br /&gt;
|All&lt;br /&gt;
|Stuns enemy&lt;br /&gt;
|-&lt;br /&gt;
|KnockOut&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Knocks back enemy (static)&lt;br /&gt;
|-&lt;br /&gt;
|KnockOutByMotion&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Knocks back enemy (dynamic?)&lt;br /&gt;
|-&lt;br /&gt;
|Combo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Juggles enemy when hit&lt;br /&gt;
|-&lt;br /&gt;
|Dead&lt;br /&gt;
|All&lt;br /&gt;
|Death state&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Small Enemy States ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|AttackNormal&lt;br /&gt;
|Little Rex (Reckless), Chibi Fighters, Dark Fright (Spooky) &lt;br /&gt;
|All&lt;br /&gt;
|Single bite attack, punch attack, Flying strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackHard&lt;br /&gt;
|Little Rex (Reckless)&lt;br /&gt;
|All&lt;br /&gt;
|Hard headbutt attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRush&lt;br /&gt;
|Little Rex (Reckless)&lt;br /&gt;
|All&lt;br /&gt;
|Chomping charge attack&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|Little Rex (Reckless)&lt;br /&gt;
|All&lt;br /&gt;
|Napping&lt;br /&gt;
|-&lt;br /&gt;
|DeepSleep&lt;br /&gt;
|Little Rex (Reckless)&lt;br /&gt;
|All&lt;br /&gt;
|Napping, but with Zs.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Middle Enemy States ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+MiddleEnemy Specific StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Attack&lt;br /&gt;
|Egg Fighter, Master, Killer Bee&lt;br /&gt;
|All but Egg Shooters, All, All&lt;br /&gt;
|&lt;br /&gt;
* Combined state for all Egg Fighters attack (punches, sword strike, shield bashes)&lt;br /&gt;
* Close-range hit for Masters&lt;br /&gt;
* Both rush and near attack for Killer Bees&lt;br /&gt;
|-&lt;br /&gt;
|Shot&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Shooter&lt;br /&gt;
|Shooting at player&lt;br /&gt;
|-&lt;br /&gt;
|ShootChibi&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Chibi Fighter&lt;br /&gt;
|Shooting chibi fighter out of hands.&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Single hand attack (close and far)&lt;br /&gt;
|-&lt;br /&gt;
|AttackBothHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Double hand attack (close and far)&lt;br /&gt;
|-&lt;br /&gt;
|AttackJump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Jump attack&lt;br /&gt;
|-&lt;br /&gt;
|SummonSpooky&lt;br /&gt;
|Master&lt;br /&gt;
|Spooky Master&lt;br /&gt;
|Summons spooky&#039;s and other enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicRecovery&lt;br /&gt;
|Master&lt;br /&gt;
|Heal Master&lt;br /&gt;
|Heals enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicPowerUp&lt;br /&gt;
|Master&lt;br /&gt;
|Power Master&lt;br /&gt;
|Powers enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicFire&lt;br /&gt;
|Master&lt;br /&gt;
|Fire Master&lt;br /&gt;
|Fire ball&lt;br /&gt;
|-&lt;br /&gt;
|MagicLightning&lt;br /&gt;
|Master&lt;br /&gt;
|Lightning Master&lt;br /&gt;
|Lightning ball&lt;br /&gt;
|-&lt;br /&gt;
|Dodge&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Dodges against attack&lt;br /&gt;
|-&lt;br /&gt;
|Idle&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Idle state&lt;br /&gt;
|-&lt;br /&gt;
|Appear&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Appears from hole&lt;br /&gt;
|-&lt;br /&gt;
|AttackSlash&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Straight bite attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Horizontal spinning attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRollingOnce&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Horizontal sweep attack&lt;br /&gt;
|-&lt;br /&gt;
|Fireball&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Fire ball&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Miniboss Enemy States ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Miniboss Enemy States (Variants N/A)&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|AttackIdle&lt;br /&gt;
|Titan, Big Mother&lt;br /&gt;
|N/A&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Titan, Big Mother&lt;br /&gt;
|N/A&lt;br /&gt;
|Large swipe attack, Spinning attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackNear&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Close-range attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneStrike&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Single strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackThreeStrike&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Triple strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackStreightShockwave&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Charged strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackJumpShockwave&lt;br /&gt;
|Titan, Big Mother&lt;br /&gt;
|N/A&lt;br /&gt;
|Jumping shockwave attack&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1569</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1569"/>
		<updated>2026-09-07T15:11:43Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Refactored the enemy specific section to add distinction between enemy types (small, middle, large)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateNames ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and their variants. Next, enemies tend to have group specific values, such as Small and Middle enemies having a &amp;quot;Jump&amp;quot; or &amp;quot;Combo&amp;quot; state while minibosses do not. Finally, enemies have their own specific values for their enemy type and variants, such as &amp;quot;AttackOneHand&amp;quot; or &amp;quot;Shot&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== Common States ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Fall&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Falls from height&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackSpecial&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Special Attack&lt;br /&gt;
|-&lt;br /&gt;
|Chase&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Chases after player&lt;br /&gt;
|-&lt;br /&gt;
|Jump&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Jumps&lt;br /&gt;
|-&lt;br /&gt;
|Damage&lt;br /&gt;
|All&lt;br /&gt;
|Damages enemy&lt;br /&gt;
|-&lt;br /&gt;
|Stun&lt;br /&gt;
|All&lt;br /&gt;
|Stuns enemy&lt;br /&gt;
|-&lt;br /&gt;
|KnockOut&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Knocks back enemy (static)&lt;br /&gt;
|-&lt;br /&gt;
|KnockOutByMotion&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Knocks back enemy (dynamic?)&lt;br /&gt;
|-&lt;br /&gt;
|Combo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Juggles enemy when hit&lt;br /&gt;
|-&lt;br /&gt;
|Dead&lt;br /&gt;
|All&lt;br /&gt;
|Death state&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Middle Enemy States ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+MiddleEnemy Specific StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Attack&lt;br /&gt;
|Egg Fighter, Master, Killer Bee&lt;br /&gt;
|All but Egg Shooters, All, All&lt;br /&gt;
|&lt;br /&gt;
* Combined state for all Egg Fighters attack (punches, sword strike, shield bashes)&lt;br /&gt;
* Close-range hit for Masters&lt;br /&gt;
* Both rush and near attack for Killer Bees&lt;br /&gt;
|-&lt;br /&gt;
|Shot&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Shooter&lt;br /&gt;
|Shooting at player&lt;br /&gt;
|-&lt;br /&gt;
|ShootChibi&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Chibi Fighter&lt;br /&gt;
|Shooting chibi fighter out of hands.&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Single hand attack (close and far)&lt;br /&gt;
|-&lt;br /&gt;
|AttackBothHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Double hand attack (close and far)&lt;br /&gt;
|-&lt;br /&gt;
|AttackJump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Jump attack&lt;br /&gt;
|-&lt;br /&gt;
|SummonSpooky&lt;br /&gt;
|Master&lt;br /&gt;
|Spooky Master&lt;br /&gt;
|Summons spooky&#039;s and other enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicRecovery&lt;br /&gt;
|Master&lt;br /&gt;
|Heal Master&lt;br /&gt;
|Heals enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicPowerUp&lt;br /&gt;
|Master&lt;br /&gt;
|Power Master&lt;br /&gt;
|Powers enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicFire&lt;br /&gt;
|Master&lt;br /&gt;
|Fire Master&lt;br /&gt;
|Fire ball&lt;br /&gt;
|-&lt;br /&gt;
|MagicLightning&lt;br /&gt;
|Master&lt;br /&gt;
|Lightning Master&lt;br /&gt;
|Lightning ball&lt;br /&gt;
|-&lt;br /&gt;
|Dodge&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Dodges against attack&lt;br /&gt;
|-&lt;br /&gt;
|Idle&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Idle state&lt;br /&gt;
|-&lt;br /&gt;
|Appear&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Appears from hole&lt;br /&gt;
|-&lt;br /&gt;
|AttackSlash&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Straight bite attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Horizontal spinning attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRollingOnce&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Horizontal sweep attack&lt;br /&gt;
|-&lt;br /&gt;
|Fireball&lt;br /&gt;
|Dark Eel (Moleel)&lt;br /&gt;
|N/A&lt;br /&gt;
|Fire ball&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Miniboss Enemy States ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Miniboss Enemy States (Variants N/A)&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|AttackIdle&lt;br /&gt;
|Titan, Big Mother&lt;br /&gt;
|N/A&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Titan, Big Mother&lt;br /&gt;
|N/A&lt;br /&gt;
|Large swipe attack, Spinning attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackNear&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Close-range attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneStrike&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Single strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackThreeStrike&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Triple strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackStreightShockwave&lt;br /&gt;
|Titan&lt;br /&gt;
|N/A&lt;br /&gt;
|Charged strike attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackJumpShockwave&lt;br /&gt;
|Titan, Big Mother&lt;br /&gt;
|N/A&lt;br /&gt;
|Jumping shockwave attack&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1568</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1568"/>
		<updated>2026-09-07T05:02:03Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and their variants. &lt;br /&gt;
&lt;br /&gt;
=== Common StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackSpecial&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Special Attack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Enemy Specific StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Enemy Specific StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Attack&lt;br /&gt;
|Egg Fighter, Master, others&lt;br /&gt;
|All but Egg Shooters, All, others&lt;br /&gt;
|General attack&lt;br /&gt;
Note: Egg Fighter has distinct Vertical and Horizontal Attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Single hand attack (close and far)&lt;br /&gt;
|-&lt;br /&gt;
|AttackBothHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Double hand attack (close and far)&lt;br /&gt;
|-&lt;br /&gt;
|AttackJump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Jump attack&lt;br /&gt;
|-&lt;br /&gt;
|Jump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|Generally jumping&lt;br /&gt;
|-&lt;br /&gt;
|Shot&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Shooter&lt;br /&gt;
|Shooting at player&lt;br /&gt;
|-&lt;br /&gt;
|ShootChibi&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Chibi Fighter&lt;br /&gt;
|Shooting chibi fighter out of hands.&lt;br /&gt;
|-&lt;br /&gt;
|MagicSummon&lt;br /&gt;
|Master&lt;br /&gt;
|Spooky Master&lt;br /&gt;
|Summons spooky&#039;s and other enemies&lt;br /&gt;
|-&lt;br /&gt;
|MagicHeal&lt;br /&gt;
|Master&lt;br /&gt;
|Heal Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicPower&lt;br /&gt;
|Master&lt;br /&gt;
|Power Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicFire&lt;br /&gt;
|Master&lt;br /&gt;
|Fire Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicLightning&lt;br /&gt;
|Master&lt;br /&gt;
|Lightning Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Titan, BigMother&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1567</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1567"/>
		<updated>2026-09-07T05:00:59Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and their variants. &lt;br /&gt;
&lt;br /&gt;
=== Common StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackSpecial&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Special Attack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Enemy Specific StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Enemy Specific StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Attack&lt;br /&gt;
|Egg Fighter, Master, others&lt;br /&gt;
|All but Egg Shooters, All, others&lt;br /&gt;
|General attack&lt;br /&gt;
Note: Egg Fighter has distinct Vertical and Horizontal Attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackBothHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackJump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Shot&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Shooter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ShootChibi&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Chibi Fighter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicSummon&lt;br /&gt;
|Master&lt;br /&gt;
|Spooky Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicHeal&lt;br /&gt;
|Master&lt;br /&gt;
|Heal Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicPower&lt;br /&gt;
|Master&lt;br /&gt;
|Power Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicFire&lt;br /&gt;
|Master&lt;br /&gt;
|Fire Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicLightning&lt;br /&gt;
|Master&lt;br /&gt;
|Lightning Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Titan, BigMother&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1566</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1566"/>
		<updated>2026-09-07T05:00:06Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Included the Enemy Specific section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackSpecial&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Special Attack&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Enemy Specific StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy&lt;br /&gt;
!Variant&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Attack&lt;br /&gt;
|Egg Fighter, Master, others&lt;br /&gt;
|All but Egg Shooters, All, others&lt;br /&gt;
|General attack&lt;br /&gt;
Note: Egg Fighter has distinct Vertical and Horizontal Attack&lt;br /&gt;
|-&lt;br /&gt;
|AttackOneHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackBothHand&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackJump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jump&lt;br /&gt;
|Nightmare&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Shot&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Shooter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ShootChibi&lt;br /&gt;
|Egg Fighter&lt;br /&gt;
|Egg Chibi Fighter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicSummon&lt;br /&gt;
|Master&lt;br /&gt;
|Spooky Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicHeal&lt;br /&gt;
|Master&lt;br /&gt;
|Heal Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicPower&lt;br /&gt;
|Master&lt;br /&gt;
|Power Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicFire&lt;br /&gt;
|Master&lt;br /&gt;
|Fire Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagicLightning&lt;br /&gt;
|Master&lt;br /&gt;
|Lightning Master&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AttackRolling&lt;br /&gt;
|Titan, BigMother&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1565</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1565"/>
		<updated>2026-09-07T04:53:13Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: More information provided for Common States&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
&lt;br /&gt;
=== Common StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Prepares for attack&lt;br /&gt;
|-&lt;br /&gt;
|Attack&lt;br /&gt;
|Middle&lt;br /&gt;
|Regular Attack for most middle enemies&lt;br /&gt;
|-&lt;br /&gt;
|AttackSpecial&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Special Attack&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1564</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1564"/>
		<updated>2026-08-21T01:40:14Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Included other entires to the StateName table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
&lt;br /&gt;
=== Common StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|Walks around.&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|All&lt;br /&gt;
|Untested&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|All&lt;br /&gt;
|Enemy has a certain percentage chance of&lt;br /&gt;
walking, waiting, or doing a certain action.&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|Guard&lt;br /&gt;
|Middle&lt;br /&gt;
|Guards against the player&lt;br /&gt;
|-&lt;br /&gt;
|Stance&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1563</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1563"/>
		<updated>2026-08-21T00:37:58Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For example, if an enemy is in the &amp;quot;Rise&amp;quot; state and the player attacks them with a combo using the &amp;quot;NormalSoft&amp;quot; attack type, that enemy will enter a damage state and therefore receive damage (which is determined by Evil_Enemy.prm.xml and the code itself. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on attack types.&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
&lt;br /&gt;
=== Common Enemy StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common Enemy StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1562</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1562"/>
		<updated>2026-08-21T00:33:20Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For more information, refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
&lt;br /&gt;
=== Common Enemy StateNames ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common Enemy StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1561</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1561"/>
		<updated>2026-08-21T00:32:20Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For more information, refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common Enemy StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1560</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1560"/>
		<updated>2026-08-21T00:31:55Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Undo revision 1559 by King Galactix (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For more information, refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common Enemy StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1559</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1559"/>
		<updated>2026-08-21T00:31:17Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: fix the formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For more information, refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common Enemy StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1558</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1558"/>
		<updated>2026-08-20T20:40:17Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Included a StateName section, which goes over common and enemy specific states (which will be explained more closely in the enemy ai/behaviour section)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &#039;&#039;&#039;StateNames&#039;&#039;&#039; identify the different enemy states which are active, along with player attack types. &lt;br /&gt;
&lt;br /&gt;
These vary between enemies, hence it is currently impossible to add new ENEMY states or states which belong to other enemies. However, it is possible to create a StateChartInfo with an attack type, allowing for enemies to react to the next attack type. &lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. For more information, refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== StateName ==&lt;br /&gt;
There are common states such as &amp;quot;Begin&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;Damage&amp;quot;, &amp;quot;Think&amp;quot;, and so on, which work commonly between enemies and &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+Common Enemy StateNames&lt;br /&gt;
!StateName&lt;br /&gt;
!Enemy Type&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Begin&lt;br /&gt;
|All&lt;br /&gt;
|Enemy is summoned and awakens&lt;br /&gt;
|-&lt;br /&gt;
|Tell&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Warns other enemies around them&lt;br /&gt;
|-&lt;br /&gt;
|Walk&lt;br /&gt;
|All&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wait&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Think&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Seek&lt;br /&gt;
|All&lt;br /&gt;
|Looks around for player&lt;br /&gt;
|-&lt;br /&gt;
|Rise&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting knocked out&lt;br /&gt;
|-&lt;br /&gt;
|RiseAfterCombo&lt;br /&gt;
|Small, Middle&lt;br /&gt;
|Rises after getting comboed mid-air&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1557</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1557"/>
		<updated>2026-08-19T22:39:54Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Added more information on StateNames and the different attack types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a chart (or character) state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type.|left]]&#039;&#039;&#039;StatChart&#039;&#039;&#039; is what the game calls the &#039;&#039;&#039;StateChart&#039;&#039;&#039;, which contains every individual information of the different states. &#039;&#039;&#039;StateChartInfo&#039;&#039;&#039; represents an individual state of a nighttime enemy. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StateNames&#039;&#039;&#039; are the names of the different enemy states. These vary between enemies, hence it is currently impossible to add new ENEMY states or share them between enemies. But there are common states such as &amp;quot;Tell&amp;quot;, &amp;quot;Rise&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;KnockOut&amp;quot;, and so on.&lt;br /&gt;
&lt;br /&gt;
The enemy reacts to different attack types by writing in the &#039;&#039;&#039;StateNames&#039;&#039;&#039; into the variables. Refer to &amp;quot;Attack and Hitbox Collision Types&amp;quot; for more information on that subject.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1556</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1556"/>
		<updated>2026-08-19T21:39:41Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Included a heading for StateChartInfo, and relocated the image to the left.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a character state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;br /&gt;
&lt;br /&gt;
== StateChartInfo ==&lt;br /&gt;
[[File:StateChartInfo.png|thumb|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type from the player.|left]]&amp;quot;StatChart&amp;quot; is what the game calls the StateChart, which contains every individual information of the different states.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;StateChartInfo&amp;quot; represents an individual state of a nighttime enemy. These vary between enemies, but there are common states such as &amp;quot;Tell&amp;quot;, &amp;quot;Rise&amp;quot;, &amp;quot;Walk&amp;quot;, &amp;quot;KnockOut&amp;quot;, and so on.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1555</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1555"/>
		<updated>2026-08-19T03:32:29Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a character state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&amp;quot;StateChartInfo&amp;quot; represents an individual state of a nighttime enemy. These vary between enemies, but there are common states such as &amp;quot;Tell&amp;quot;, &amp;quot;Rise&amp;quot;, &amp;quot;Walk&amp;quot;, etc.&lt;br /&gt;
[[File:StateChartInfo.png|thumb|333x333px|The StateChartInfo identifies the enemy&#039;s state as &amp;quot;Rise&amp;quot;, and receives &amp;quot;KnockOut&amp;quot; when hit with a &amp;quot;KnockBackSoft&amp;quot; attack type from the player.]]&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=File:StateChartInfo.png&amp;diff=1554</id>
		<title>File:StateChartInfo.png</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=File:StateChartInfo.png&amp;diff=1554"/>
		<updated>2026-08-19T02:53:10Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an example of a StateChartInfo cell, which identifies the night enemy&#039;s state and how it reacts to the player&#039;s attack types.&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1553</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1553"/>
		<updated>2026-08-18T16:30:49Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a character state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=note|content=Each enemy has distinct states (hard-coded), so we will view common values between enemies.}}&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Nighttime)&amp;diff=1552</id>
		<title>Enemy States (Nighttime)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Nighttime)&amp;diff=1552"/>
		<updated>2026-08-18T15:51:01Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Nighttime)&amp;diff=1551</id>
		<title>Enemy States (Nighttime)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Nighttime)&amp;diff=1551"/>
		<updated>2026-08-18T15:49:21Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: King Galactix moved page Enemy States (Nighttime) to Enemy States (Werehog): Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Enemy States (Werehog)]]&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1550</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1550"/>
		<updated>2026-08-18T15:49:21Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: King Galactix moved page Enemy States (Nighttime) to Enemy States (Werehog): Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a character state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types. Each behaviour and attack is different&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1549</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1549"/>
		<updated>2026-08-18T15:49:02Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a character state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types. Each behaviour and attack is different&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1548</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1548"/>
		<updated>2026-08-18T15:45:47Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: removed text to relocate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>King Galactix</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1547</id>
		<title>Enemy States (Werehog)</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Enemy_States_(Werehog)&amp;diff=1547"/>
		<updated>2026-08-17T19:59:33Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Wrote the initial paragraph for this documentation of the enemy states.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Werehog&#039;s enemies have a character state xml, found in their respective archive files (e.g. #EvilEnemyNightmareR.ar.00 &amp;gt;&amp;gt; EvilEnemyNightmareR.chr.xml). This XML file deals with the different states of the enemies, and how the enemies react to the player&#039;s attack types.&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=1546</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=1546"/>
		<updated>2026-07-31T02:00:05Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: adjusted the input registration bulletins for StartFrame, EndFrame, and WEMEF.&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;&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;MOVE_B&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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!&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&amp;lt;/ValidLevel_Min&amp;gt; &amp;lt;!-- The combo is active at Combat Level 16 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is active at Combat Level 99 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*It is important to mention that to disable an old combo and enable a new combo, the preceding action (with the same ActionName) must be follow the same Level Up parameters, where the new combo is included in the preceding action&#039;s inputs.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Pre-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&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;15&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;NSD_2&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Post-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&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;NSD&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other important variables.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode, using true or false.&lt;br /&gt;
* ValidBerserker determines if a move works in Unleashed Mode, using true or false.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable the ability to guard and dodge when doing an action. It should also be mentioned that neither of these work for aerial combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;MOVE_B&amp;lt;/KEY__YDown&amp;gt; &amp;lt;!-- Press the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YUp&amp;gt;&amp;lt;/KEY__YUp&amp;gt;           &amp;lt;!-- Release the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YIng&amp;gt;&amp;lt;/KEY__YIng&amp;gt;         &amp;lt;!-- Hold the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XUp&amp;gt;&amp;lt;/KEY__XUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XIng&amp;gt;&amp;lt;/KEY__XIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AUp&amp;gt;&amp;lt;/KEY__AUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AIng&amp;gt;&amp;lt;/KEY__AIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BUp&amp;gt;&amp;lt;/KEY__BUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BIng&amp;gt;&amp;lt;/KEY__BIng&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;!-- Following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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 frame will not result in the execution of 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 execution of the next input, unless WaitEndMotionEndFrame is set to a value higher than the KEY__EndFrame value.&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The three parameters below allow you to register the input while holding down on a button. This section was further documented by MajoraOX.&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 the time value of how long you hold the button for. Despite this variable existing, it actually contributes nothing to the frame time, but rather is contributed by a hard coded variable set to 0.12.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;KEY__IngStartFrame&amp;gt;2&amp;lt;/KEY__IngStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngEndFrame&amp;gt;9&amp;lt;/KEY__IngEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngFrameTime&amp;gt;7&amp;lt;/KEY__IngFrameTime&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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, which is the frame when the player starts landing.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.&lt;br /&gt;
** Ground moves have a value of -1, so they work on the ground and maybe in the air.&lt;br /&gt;
** Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&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;&amp;lt;/syntaxhighlight&amp;gt;&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.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;AirCatchStartFrame&amp;gt;9&amp;lt;/AirCatchStartFrame&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;AddVelocityY&amp;gt;-0.25&amp;lt;/AddVelocityY&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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=1545</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=1545"/>
		<updated>2026-07-31T01:58:07Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Updated the ButtonIng Input registration section&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;&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;MOVE_B&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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!&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&amp;lt;/ValidLevel_Min&amp;gt; &amp;lt;!-- The combo is active at Combat Level 16 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is active at Combat Level 99 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*It is important to mention that to disable an old combo and enable a new combo, the preceding action (with the same ActionName) must be follow the same Level Up parameters, where the new combo is included in the preceding action&#039;s inputs.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Pre-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&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;15&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;NSD_2&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Post-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&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;NSD&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other important variables.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode, using true or false.&lt;br /&gt;
* ValidBerserker determines if a move works in Unleashed Mode, using true or false.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable the ability to guard and dodge when doing an action. It should also be mentioned that neither of these work for aerial combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;MOVE_B&amp;lt;/KEY__YDown&amp;gt; &amp;lt;!-- Press the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YUp&amp;gt;&amp;lt;/KEY__YUp&amp;gt;           &amp;lt;!-- Release the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YIng&amp;gt;&amp;lt;/KEY__YIng&amp;gt;         &amp;lt;!-- Hold the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XUp&amp;gt;&amp;lt;/KEY__XUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XIng&amp;gt;&amp;lt;/KEY__XIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AUp&amp;gt;&amp;lt;/KEY__AUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AIng&amp;gt;&amp;lt;/KEY__AIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BUp&amp;gt;&amp;lt;/KEY__BUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BIng&amp;gt;&amp;lt;/KEY__BIng&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;!-- Following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The three parameters below allow you to register the input while holding down on a button. This section was further documented by MajoraOX.&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 the time value of how long you hold the button for. Despite this variable existing, it actually contributes nothing to the frame time, but rather is contributed by a hard coded variable set to 0.12.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;KEY__IngStartFrame&amp;gt;2&amp;lt;/KEY__IngStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngEndFrame&amp;gt;9&amp;lt;/KEY__IngEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngFrameTime&amp;gt;7&amp;lt;/KEY__IngFrameTime&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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, which is the frame when the player starts landing.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.&lt;br /&gt;
** Ground moves have a value of -1, so they work on the ground and maybe in the air.&lt;br /&gt;
** Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&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;&amp;lt;/syntaxhighlight&amp;gt;&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.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;AirCatchStartFrame&amp;gt;9&amp;lt;/AirCatchStartFrame&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;AddVelocityY&amp;gt;-0.25&amp;lt;/AddVelocityY&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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=1544</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=1544"/>
		<updated>2026-07-31T01:54:25Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Included a disclaimer toward KEY__IngFrameTime&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;&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;MOVE_B&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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!&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&amp;lt;/ValidLevel_Min&amp;gt; &amp;lt;!-- The combo is active at Combat Level 16 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is active at Combat Level 99 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*It is important to mention that to disable an old combo and enable a new combo, the preceding action (with the same ActionName) must be follow the same Level Up parameters, where the new combo is included in the preceding action&#039;s inputs.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Pre-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&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;15&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;NSD_2&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Post-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&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;NSD&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other important variables.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode, using true or false.&lt;br /&gt;
* ValidBerserker determines if a move works in Unleashed Mode, using true or false.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable the ability to guard and dodge when doing an action. It should also be mentioned that neither of these work for aerial combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;MOVE_B&amp;lt;/KEY__YDown&amp;gt; &amp;lt;!-- Press the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YUp&amp;gt;&amp;lt;/KEY__YUp&amp;gt;           &amp;lt;!-- Release the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YIng&amp;gt;&amp;lt;/KEY__YIng&amp;gt;         &amp;lt;!-- Hold the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XUp&amp;gt;&amp;lt;/KEY__XUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XIng&amp;gt;&amp;lt;/KEY__XIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AUp&amp;gt;&amp;lt;/KEY__AUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AIng&amp;gt;&amp;lt;/KEY__AIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BUp&amp;gt;&amp;lt;/KEY__BUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BIng&amp;gt;&amp;lt;/KEY__BIng&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;!-- Following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The three parameters below allow you to register the input while holding down on a button. This section was further documented by MajoraOX.&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 the time value of how long you hold the button for. Despite this variable existing, it actually contributes nothing to the time that it takes for a &amp;quot;ButtonIng&amp;quot; Combo to execute, but rather a hard coded variable set to 0.12 (potentially Daytime Sonic&#039;s JumpShortReleaseTime variable).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;KEY__IngStartFrame&amp;gt;2&amp;lt;/KEY__IngStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngEndFrame&amp;gt;9&amp;lt;/KEY__IngEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngFrameTime&amp;gt;7&amp;lt;/KEY__IngFrameTime&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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, which is the frame when the player starts landing.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.&lt;br /&gt;
** Ground moves have a value of -1, so they work on the ground and maybe in the air.&lt;br /&gt;
** Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&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;&amp;lt;/syntaxhighlight&amp;gt;&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.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;AirCatchStartFrame&amp;gt;9&amp;lt;/AirCatchStartFrame&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;AddVelocityY&amp;gt;-0.25&amp;lt;/AddVelocityY&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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=1543</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=1543"/>
		<updated>2026-07-29T23:43:39Z</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;&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;MOVE_B&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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!&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;     &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&amp;lt;/ValidLevel_Min&amp;gt; &amp;lt;!-- The combo is active at Combat Level 16 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;99&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is active at Combat Level 99 --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*It is important to mention that to disable an old combo and enable a new combo, the preceding action (with the same ActionName) must be follow the same Level Up parameters, where the new combo is included in the preceding action&#039;s inputs.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Pre-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&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;15&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;NSD_2&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Post-Upgrade --&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSC&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&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;NSD&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;!-- following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let’s look at some other important variables.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode, using true or false.&lt;br /&gt;
* ValidBerserker determines if a move works in Unleashed Mode, using true or false.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable the ability to guard and dodge when doing an action. It should also be mentioned that neither of these work for aerial combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;MOVE_B&amp;lt;/KEY__YDown&amp;gt; &amp;lt;!-- Press the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YUp&amp;gt;&amp;lt;/KEY__YUp&amp;gt;           &amp;lt;!-- Release the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YIng&amp;gt;&amp;lt;/KEY__YIng&amp;gt;         &amp;lt;!-- Hold the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XUp&amp;gt;&amp;lt;/KEY__XUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XIng&amp;gt;&amp;lt;/KEY__XIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AUp&amp;gt;&amp;lt;/KEY__AUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AIng&amp;gt;&amp;lt;/KEY__AIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BUp&amp;gt;&amp;lt;/KEY__BUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BIng&amp;gt;&amp;lt;/KEY__BIng&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;!-- Following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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. The button &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;KEY__IngStartFrame&amp;gt;2&amp;lt;/KEY__IngStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngEndFrame&amp;gt;9&amp;lt;/KEY__IngEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngFrameTime&amp;gt;7&amp;lt;/KEY__IngFrameTime&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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, which is the frame when the player starts landing.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.&lt;br /&gt;
** Ground moves have a value of -1, so they work on the ground and maybe in the air.&lt;br /&gt;
** Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&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;&amp;lt;/syntaxhighlight&amp;gt;&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.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;AirCatchStartFrame&amp;gt;9&amp;lt;/AirCatchStartFrame&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;AddVelocityY&amp;gt;-0.25&amp;lt;/AddVelocityY&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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=1542</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=1542"/>
		<updated>2026-07-29T23:27:53Z</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;&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;MOVE_B&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&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;&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;&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;&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;13&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;-1&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;
** … 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!&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&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;NSE&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JH1S&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;JDH&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;&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;13&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;21&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;0.5&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;
Let’s look at some other variables. These are fairly important.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode, using true or false.&lt;br /&gt;
* ValidBerserker determines if a move works in Unleashed Mode, using true or false.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable the ability to guard and dodge when doing an action. It should also be mentioned that neither of these work for aerial combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;MOVE_B&amp;lt;/KEY__YDown&amp;gt; &amp;lt;!-- Press the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YUp&amp;gt;&amp;lt;/KEY__YUp&amp;gt;           &amp;lt;!-- Release the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YIng&amp;gt;&amp;lt;/KEY__YIng&amp;gt;         &amp;lt;!-- Hold the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XUp&amp;gt;&amp;lt;/KEY__XUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XIng&amp;gt;&amp;lt;/KEY__XIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AUp&amp;gt;&amp;lt;/KEY__AUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AIng&amp;gt;&amp;lt;/KEY__AIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BUp&amp;gt;&amp;lt;/KEY__BUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BIng&amp;gt;&amp;lt;/KEY__BIng&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;!-- Following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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. The button &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;KEY__IngStartFrame&amp;gt;2&amp;lt;/KEY__IngStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngEndFrame&amp;gt;9&amp;lt;/KEY__IngEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngFrameTime&amp;gt;7&amp;lt;/KEY__IngFrameTime&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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, which is the frame when the player starts landing.&lt;br /&gt;
* ActionValidHeightMin is the minimum height for a move to work.&lt;br /&gt;
** Ground moves have a value of -1, so they work on the ground and maybe in the air.&lt;br /&gt;
** Aerial Attacks have a value of 1 or 2, which varies between moves.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&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;&amp;lt;/syntaxhighlight&amp;gt;&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.&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;AirCatchStartFrame&amp;gt;9&amp;lt;/AirCatchStartFrame&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;AddVelocityY&amp;gt;-0.25&amp;lt;/AddVelocityY&amp;gt;&lt;br /&gt;
      &amp;lt;ActionValidHeightMin&amp;gt;-1&amp;lt;/ActionValidHeightMin&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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=1541</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=1541"/>
		<updated>2026-07-29T23:22:35Z</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;&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;MOVE_B&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&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;&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;&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;&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;13&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;-1&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;
** … 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!&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;16&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;NSE&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JH1S&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;JDH&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;&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;13&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;21&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;0.5&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;
Let’s look at some other variables. These are fairly important.&lt;br /&gt;
&lt;br /&gt;
* ValidCommon determines if a move works in Normal Mode, using true or false.&lt;br /&gt;
* ValidBerserker determines if a move works in Unleashed Mode, using true or false.&lt;br /&gt;
&lt;br /&gt;
* Guard and Avoid (meaning Dodge) are self-explanatory. Enable the ability to guard and dodge when doing an action. It should also be mentioned that neither of these work for aerial combos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YDown&amp;gt;MOVE_B&amp;lt;/KEY__YDown&amp;gt; &amp;lt;!-- Press the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YUp&amp;gt;&amp;lt;/KEY__YUp&amp;gt;           &amp;lt;!-- Release the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__YIng&amp;gt;&amp;lt;/KEY__YIng&amp;gt;         &amp;lt;!-- Hold the Button --&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;MOVE_C&amp;lt;/KEY__XDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XUp&amp;gt;&amp;lt;/KEY__XUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XIng&amp;gt;&amp;lt;/KEY__XIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__ADown&amp;gt;&amp;lt;/KEY__ADown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AUp&amp;gt;&amp;lt;/KEY__AUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__AIng&amp;gt;&amp;lt;/KEY__AIng&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BUp&amp;gt;&amp;lt;/KEY__BUp&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__BIng&amp;gt;&amp;lt;/KEY__BIng&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;!-- Following variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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. The button &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Previous variables --&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;KEY__IngStartFrame&amp;gt;2&amp;lt;/KEY__IngStartFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngEndFrame&amp;gt;9&amp;lt;/KEY__IngEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__IngFrameTime&amp;gt;7&amp;lt;/KEY__IngFrameTime&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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=1540</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=1540"/>
		<updated>2026-07-29T23:11:29Z</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;    &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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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…&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;NSD_2&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;NSD_2&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;1&amp;lt;/ValidLevel_Min&amp;gt;  &amp;lt;!-- The combo is active at Combat Level 1 --&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Max&amp;gt;15&amp;lt;/ValidLevel_Max&amp;gt; &amp;lt;!-- The combo is inactive at Combat Level 15 --&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;&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;&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;&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;13&amp;lt;/KEY__EndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionEndFrame&amp;gt;-1&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;
** … 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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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=1539</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=1539"/>
		<updated>2026-07-29T23:08:28Z</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;    &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;&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;    &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;&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;    &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;&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;    &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;&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; start=&amp;quot;9524&amp;quot;&amp;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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; start=&amp;quot;9524&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
  &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
  &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
  &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
&amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
** 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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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=1538</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=1538"/>
		<updated>2026-07-26T04:08:47Z</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;    &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;&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;&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;&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;&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;&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;    &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;&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; 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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&amp;lt;syntaxhighlight lang=&amp;quot;xml&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_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;    &amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&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;!-- Variables here --&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;!-- Variables there --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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=1537</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=1537"/>
		<updated>2026-07-23T17:09:30Z</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;&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;&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Aerial, Hook&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_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Special Attacks&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Action&amp;gt;&lt;br /&gt;
      &amp;lt;ActionName&amp;gt;Start_Dash_Air_YButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;DC&amp;lt;/MotionName&amp;gt;&lt;br /&gt;
      &amp;lt;ValidLevel_Min&amp;gt;12&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;!-- Following Variables --&amp;gt;&lt;br /&gt;
    &amp;lt;/Action&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&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=1536</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=1536"/>
		<updated>2026-07-23T01:05:37Z</updated>

		<summary type="html">&lt;p&gt;King Galactix: Included the Aerial Hook Section&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&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_Air_XButtonDown&amp;lt;/ActionName&amp;gt;&lt;br /&gt;
      &amp;lt;MotionName&amp;gt;JCA2&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;&amp;lt;/KEY__YDown&amp;gt;&lt;br /&gt;
      &amp;lt;KEY__XDown&amp;gt;JCB2&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;false&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;21&amp;lt;/WaitEndMotionEndFrame&amp;gt;&lt;br /&gt;
      &amp;lt;WaitEndMotionSpeed&amp;gt;0.833&amp;lt;/WaitEndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;EndMotionSpeed&amp;gt;0.833&amp;lt;/EndMotionSpeed&amp;gt;&lt;br /&gt;
      &amp;lt;AddVelocityY&amp;gt;-0.25&amp;lt;/AddVelocityY&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;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_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>
</feed>