WECCL Documentation Help

🤼 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 a WindUp 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:

name: Big Punch types: BigAttack forwardspeedmultiplier: 1.5 0-99 SetAnimation * 1 3 0-99 WindUp -10 5 0.5 101- SetAnimation * 2 3 110-129 EnableHitbox 8 1000 R_Hand 10 1 110 PlayAudio -1 130 HitConnected? 130 StrengthCheck? 130 SetAnimationId 9|10 140 StopAnimation

Example grapple move meta file:

Name: Neck Stretch Types: FrontGrapple 1-5 SetAnimation * 0 5 6-10 SetAnimation * 1 5 11-20 SetAnimation * 2 5 21-30 SetAnimation * 3 5 21 DealDamage 200 21 DealStun -150 21 StretchSound -0.2 0.5 21 OppPainSound 0.5 0- Sync 0 5 0 180 31 StopAnimation 31 EndGrapple

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.

forwardspeedmultiplier

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:

// Play animation frame 1 from frames 1 to 10. 1-10 SetAnimation * 1 // Play audio at frame 15. 15 PlayAudio -1 // Synchronize the animation starting at frame 0. 0- Sync 0 5 0 180

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 by TransitionFrames). 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.

Last modified: 12 april 2024