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