🤼 Moves
Adding Moves
You can add moves by inserting files into ./Assets
.
The move files must be in a subfolder named animation
. The following files are used: (move_name)
is an asset bundle containing a single AnimationClip for the move. (move_name).meta
is a meta file for the move. (move_name).receive
(for grappling moves) is an asset bundle containing a single AnimationClip for the opponent's animation. All files must be in the same folder.
Important Notes
Moves use interpolation between frames. Using keyframes or other animation features may not work as expected. Blame Mat Dickie for this.
All moves must have a
StopAnimation
event at the end.All grapple moves must have an
EndGrapple
event at the end, unless transitioning to another grapple move.Some events only work for strike moves, and some only work for grapple moves.
Frame ranges are inclusive. Animations always run at 30 FPS, regardless of the actual FPS of the game.
Strike moves usually have a
WindUp
event at the start, which makes the actual animation range start at frame 100. It is not required to have aWindUp
event for strike moves.
Animation File
Asset bundles can be created through Unity. For more information on how to create asset bundles, see Creating Asset Bundles.
Move Meta File
The move meta file should contain the metadata of the move and a list of events.
Example strike move meta file:
Example grapple move meta file:
Move Metadata
Move metadata should be in the format key: value
. The following keys are supported:
- name
The name of the move.
- types
The types of the move. Valid types are
StrikeHigh
,StrikeLow
,BigAttack
,RunningAttack
(unused),FrontGrapple
,BackGrapple
.
The forwardspeedmultiplier of the move. This value is multiplied by the animation speed to determine the forward speed of the move. Default is 4.
Move Events
Move events should be in the format [start(-(end))] command arg1 arg2 arg3...
. Examples:
The following events are supported:
General Commands
Animation Commands
SetAnimation
Parameters:
[file: int|*] [frame: int] [frames: float = -1]
Plays an animation.
Note: If
file
is*
, the animation from the move file is played. Otherwise, the vanilla animation file is used.Note:
frames
determines the speed of the animation. Lower values make the animation faster. Negative values are ignored and use the default speed (set byTransitionFrames
). Typical values are 3-10. Can be a float.
SetAnimationId
Parameters:
[animationId: int] [startTim: float = 0]
Plays an animation by ID.
StopAnimation
No parameters.
Stops the animation.
Note: Required.
TransitionFrames
Parameters:
[speed: float]
Sets the transition frames for the move (essentially the animation speed).
Movement Commands
Advance
Parameters:
[angle: float] [travel: float]
Moves the player forwards.
Audio Commands
StepSound
Parameters:
[volume: float]
Plays a step sound.
SwingSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a swing sound.
HeavySwingSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a heavy swing sound.
VHeavySwingSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a very heavy swing sound.
StretchSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a stretch sound.
ImpactHighSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a high impact sound.
HeavyImpactHighSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a heavy high impact sound.
VHeavyImpactHighSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a very heavy high impact sound.
ImpactLowSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a low impact sound.
HeavyImpactLowSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a heavy low impact sound.
VHeavyImpactLowSound
Parameters:
[variation: float = 0] [volume: float = 1]
Plays a very heavy low impact sound.
PainSound
Parameters:
[volume: float = 0.5]
Plays a pain sound.
Miscellaneous Commands
Bounce
Parameters:
[level: float = -0.2]
Bounces the player.
Strike-Specific Commands
Animation Commands
WindUp
Parameters:
[speed: float] [buildupFrames: int] [forwardMomentum: float = 0]
Performs the windup animation of the move.
Note:
speed
is the minimum speed of the animation. Some randomization is applied. Set it to a negative value to disable randomization (the absolute value is used).
Damage Commands
EnableHitbox
Parameters:
[distance: float] [damage: float] [limb: Limb] [angle: float = 0] [particle: float = 0]
Enables a hitbox for the move.
Grapple-Specific Commands
Animation Commands
SetOppAnimation
Parameters:
[file: int] [frame: int] [speed: float = -1]
Plays an animation for the opponent.
SetOppAnimationId
Parameters:
[animationId: int] [startTim: float = 0]
Plays an animation for the opponent by ID.
StopOppAnimation
No parameters.
Stops the opponent's animation.
SetReleaseAnim
Parameters:
[releaseAnim: int]
Sets the release animation for the move.
SetOppReleaseAnim
Parameters:
[releaseAnim: int]
Sets the release animation for the opponent.
EndGrapple
No parameters.
Ends the grapple.
Note: Required unless transitioning to another grapple move.
Damage Commands
MoveAttack
Parameters:
[contact: int] [pain: float] [weapon: float]
Performs the attack part of the move, dealing damage and playing a sound.
MoveImpact
Parameters:
[style: int] [level: float] [weapon: float]
Performs the move's impact, dealing damage and playing a sound.
DealDamage
Parameters:
[pain: float]
Deals damage to the opponent without playing a sound.
DealStun
Parameters:
[blind: float]
Applies stun (blind) effect to the opponent.
Sell Commands
SellBackFall
No parameters.
Makes the opponent sell a back fall.
SellFrontFall
No parameters.
Makes the opponent sell a front fall.
Movement Commands
Sync
Parameters:
[projectA: float] [range: float] [angleA: float] [angleB: float]
Synchronizes the opponent's position and rotation.
Travel
Parameters:
[angle: float] [travel: float] [inherit: float = 0]
Moves the player forwards (similar to
Advance
but specific to grapples).
DirectionalInput
Parameters:
[offsetA: float] [turnSpeed: float]
Applies directional input.
Note: Currently unknown if strike moves can use this.
Audio Commands
OppPainSound
Parameters:
[volume: float = 0.5]
Plays a pain sound for the opponent.
Interaction Commands
RiskBreak
Parameters:
[risk: int] [damage: int]
Risks breaking up the grapple.
RiskReversal
Parameters:
[risk: int] [rewind: float = -1]
Risks the opponent reversing the grapple.
RiskCounter
Parameters:
[risk: int] [newAnim: int] [newTim: float] [newAngle: float]
Risks the opponent countering the grapple.
Miscellaneous Commands
ApplyPin
Parameters:
[chance: int = 2]
Pins the opponent with a chance.
OppBounce
Parameters:
[level: float = -0.2]
Bounces the opponent.
FindSmashes
Parameters:
[rangeOffset: float] [level: float] [landing: int] [includeHumans: float = 0]
Finds smashes.
Conditions
Conditions are used to determine whether an event should be executed. If the condition is not met, any events after the condition with an indentation level greater than the condition will not be executed.
Conditions have no parameters.
Conditions
HitConnected?
Checks if the hit connected.
Note: This condition is only valid for strike moves.
StrengthCheck?
Performs a strength check.
The formula for the strength check is
Random(24, STRENGTH) < 25
. Higher strength decreases the chance of this condition being met.
Pinning?
Checks if the player is pinning the opponent.
Parameters
int
is an integer (whole number). Supports |
and -
operators. float
is a float (decimal number). Supports |
and -
operators. *
is a literal *
. Limb
is a limb name, see Limb Names.
Operators
|
is the OR operator. For example, 1|2
means 1
or 2
, and 10|20|30
means 10
or 20
or 30
. -
is the range operator. For example, 1-10
means 1
to 10
. Can be used with |
. For example, 1-10|20-30
means 1
to 10
or 20
to 30
.