#![allow(non_camel_case_types)]
use std::ops::RangeInclusive;
use anyhow::{anyhow, Result};
use strum_macros::{Display, EnumString, FromRepr, IntoStaticStr};
use crate::enums::Character;
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Ord, Eq, Hash)]
#[repr(u16)]
pub enum State {
Universal(ActionState),
Unique(CharacterState),
Unknown(u16),
}
impl State {
pub fn from_state_and_char(state: u16, character: Option<Character>) -> Self {
if state < 341 {
Self::Universal(ActionState::from_repr(state).unwrap())
} else if let Some(c) = character {
match CharacterState::from_char_and_state(c, state) {
Ok(x) => Self::Unique(x),
Err(_) => Self::Unknown(state),
}
} else {
Self::Unknown(state)
}
}
}
impl std::fmt::Display for State {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
State::Universal(x) => write!(f, "Universal({})", x),
State::Unique(x) => write!(f, "Unique({})", x),
State::Unknown(x) => write!(f, "Unknown({})", x),
}
}
}
impl Default for State {
fn default() -> Self {
State::Unknown(u16::MAX)
}
}
impl From<State> for &'static str {
fn from(value: State) -> Self {
match value {
State::Universal(x) => x.into(),
State::Unique(x) => x.into(),
State::Unknown(_) => "Unknown",
}
}
}
impl From<State> for u16 {
fn from(value: State) -> Self {
match value {
State::Universal(x) => x as u16,
State::Unique(x) => x as u16,
State::Unknown(x) => x,
}
}
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
PartialOrd,
Ord,
Eq,
Hash,
EnumString,
IntoStaticStr,
Display,
FromRepr,
Default,
)]
#[repr(u16)]
pub enum ActionState {
#[default]
NONE = u16::MAX,
DEAD_DOWN = 0,
DEAD_LEFT = 1,
DEAD_RIGHT = 2,
DEAD_UP = 3,
DEAD_UP_STAR = 4,
DEAD_UP_STAR_ICE = 5,
DEAD_UP_FALL = 6,
DEAD_UP_FALL_HIT_CAMERA = 7,
DEAD_UP_FALL_HIT_CAMERA_FLAT = 8,
DEAD_UP_FALL_ICE = 9,
DEAD_UP_FALL_HIT_CAMERA_ICE = 10,
SLEEP = 11,
REBIRTH = 12,
REBIRTH_WAIT = 13,
WAIT = 14,
WALK_SLOW = 15,
WALK_MIDDLE = 16,
WALK_FAST = 17,
TURN = 18,
TURN_RUN = 19,
DASH = 20,
RUN = 21,
RUN_DIRECT = 22,
RUN_BRAKE = 23,
KNEE_BEND = 24,
JUMP_F = 25,
JUMP_B = 26,
JUMP_AERIAL_F = 27,
JUMP_AERIAL_B = 28,
FALL = 29,
FALL_F = 30,
FALL_B = 31,
FALL_AERIAL = 32,
FALL_AERIAL_F = 33,
FALL_AERIAL_B = 34,
FALL_SPECIAL = 35,
FALL_SPECIAL_F = 36,
FALL_SPECIAL_B = 37,
DAMAGE_FALL = 38,
SQUAT = 39,
SQUAT_WAIT = 40,
SQUAT_RV = 41,
LAND = 42,
LAND_FALL_SPECIAL = 43,
ATTACK_11 = 44,
ATTACK_12 = 45,
ATTACK_13 = 46,
ATTACK_100_START = 47,
ATTACK_100_LOOP = 48,
ATTACK_100_END = 49,
ATTACK_DASH = 50,
ATTACK_S_3_HI = 51,
ATTACK_S_3_HI_S = 52,
ATTACK_S_3_S = 53,
ATTACK_S_3_LW_S = 54,
ATTACK_S_3_LW = 55,
ATTACK_HI_3 = 56,
ATTACK_LW_3 = 57,
ATTACK_S_4_HI = 58,
ATTACK_S_4_HI_S = 59,
ATTACK_S_4_S = 60,
ATTACK_S_4_LW_S = 61,
ATTACK_S_4_LW = 62,
ATTACK_HI_4 = 63,
ATTACK_LW_4 = 64,
ATTACK_AIR_N = 65,
ATTACK_AIR_F = 66,
ATTACK_AIR_B = 67,
ATTACK_AIR_HI = 68,
ATTACK_AIR_LW = 69,
LANDING_AIR_N = 70,
LANDING_AIR_F = 71,
LANDING_AIR_B = 72,
LANDING_AIR_HI = 73,
LANDING_AIR_LW = 74,
DAMAGE_HI_1 = 75,
DAMAGE_HI_2 = 76,
DAMAGE_HI_3 = 77,
DAMAGE_N_1 = 78,
DAMAGE_N_2 = 79,
DAMAGE_N_3 = 80,
DAMAGE_LW_1 = 81,
DAMAGE_LW_2 = 82,
DAMAGE_LW_3 = 83,
DAMAGE_AIR_1 = 84,
DAMAGE_AIR_2 = 85,
DAMAGE_AIR_3 = 86,
DAMAGE_FLY_HI = 87,
DAMAGE_FLY_N = 88,
DAMAGE_FLY_LW = 89,
DAMAGE_FLY_TOP = 90,
DAMAGE_FLY_ROLL = 91,
LIGHT_GET = 92,
HEAVY_GET = 93,
LIGHT_THROW_F = 94,
LIGHT_THROW_B = 95,
LIGHT_THROW_HI = 96,
LIGHT_THROW_LW = 97,
LIGHT_THROW_DASH = 98,
LIGHT_THROW_DROP = 99,
LIGHT_THROW_AIR_F = 100,
LIGHT_THROW_AIR_B = 101,
LIGHT_THROW_AIR_HI = 102,
LIGHT_THROW_AIR_LW = 103,
HEAVY_THROW_F = 104,
HEAVY_THROW_B = 105,
HEAVY_THROW_HI = 106,
HEAVY_THROW_LW = 107,
LIGHT_THROW_F_4 = 108,
LIGHT_THROW_B_4 = 109,
LIGHT_THROW_HI_4 = 110,
LIGHT_THROW_LW_4 = 111,
LIGHT_THROW_AIR_F_4 = 112,
LIGHT_THROW_AIR_B_4 = 113,
LIGHT_THROW_AIR_HI_4 = 114,
LIGHT_THROW_AIR_LW_4 = 115,
HEAVY_THROW_F_4 = 116,
HEAVY_THROW_B_4 = 117,
HEAVY_THROW_HI_4 = 118,
HEAVY_THROW_LW_4 = 119,
SWORD_SWING_1 = 120,
SWORD_SWING_3 = 121,
SWORD_SWING_4 = 122,
SWORD_SWING_DASH = 123,
BAT_SWING_1 = 124,
BAT_SWING_3 = 125,
BAT_SWING_4 = 126,
BAT_SWING_DASH = 127,
PARASOL_SWING_1 = 128,
PARASOL_SWING_3 = 129,
PARASOL_SWING_4 = 130,
PARASOL_SWING_DASH = 131,
HARISEN_SWING_1 = 132,
HARISEN_SWING_3 = 133,
HARISEN_SWING_4 = 134,
HARISEN_SWING_DASH = 135,
STAR_ROD_SWING_1 = 136,
STAR_ROD_SWING_3 = 137,
STAR_ROD_SWING_4 = 138,
STAR_ROD_SWING_DASH = 139,
LIP_STICK_SWING_1 = 140,
LIP_STICK_SWING_3 = 141,
LIP_STICK_SWING_4 = 142,
LIP_STICK_SWING_DASH = 143,
ITEM_PARASOL_OPEN = 144,
ITEM_PARASOL_FALL = 145,
ITEM_PARASOL_FALL_SPECIAL = 146,
ITEM_PARASOL_DAMAGE_FALL = 147,
L_GUN_SHOOT = 148,
L_GUN_SHOOT_AIR = 149,
L_GUN_SHOOT_EMPTY = 150,
L_GUN_SHOOT_AIR_EMPTY = 151,
FIRE_FLOWER_SHOOT = 152,
FIRE_FLOWER_SHOOT_AIR = 153,
ITEM_SCREW = 154,
ITEM_SCREW_AIR = 155,
DAMAGE_SCREW = 156,
DAMAGE_SCREW_AIR = 157,
ITEM_SCOPE_START = 158,
ITEM_SCOPE_RAPID = 159,
ITEM_SCOPE_FIRE = 160,
ITEM_SCOPE_END = 161,
ITEM_SCOPE_AIR_START = 162,
ITEM_SCOPE_AIR_RAPID = 163,
ITEM_SCOPE_AIR_FIRE = 164,
ITEM_SCOPE_AIR_END = 165,
ITEM_SCOPE_START_EMPTY = 166,
ITEM_SCOPE_RAPID_EMPTY = 167,
ITEM_SCOPE_FIRE_EMPTY = 168,
ITEM_SCOPE_END_EMPTY = 169,
ITEM_SCOPE_AIR_START_EMPTY = 170,
ITEM_SCOPE_AIR_RAPID_EMPTY = 171,
ITEM_SCOPE_AIR_FIRE_EMPTY = 172,
ITEM_SCOPE_AIR_END_EMPTY = 173,
LIFT_WAIT = 174,
LIFT_WALK_1 = 175,
LIFT_WALK_2 = 176,
LIFT_TURN = 177,
GUARD_ON = 178,
GUARD = 179,
GUARD_OFF = 180,
GUARD_SET_OFF = 181,
GUARD_REFLECT = 182,
DOWN_BOUND_U = 183,
DOWN_WAIT_U = 184,
DOWN_DAMAGE_U = 185,
DOWN_STAND_U = 186,
DOWN_ATTACK_U = 187,
DOWN_FOWARD_U = 188,
DOWN_BACK_U = 189,
DOWN_SPOT_U = 190,
DOWN_BOUND_D = 191,
DOWN_WAIT_D = 192,
DOWN_DAMAGE_D = 193,
DOWN_STAND_D = 194,
DOWN_ATTACK_D = 195,
DOWN_FOWARD_D = 196,
DOWN_BACK_D = 197,
DOWN_SPOT_D = 198,
PASSIVE = 199,
PASSIVE_STAND_F = 200,
PASSIVE_STAND_B = 201,
PASSIVE_WALL = 202,
PASSIVE_WALL_JUMP = 203,
PASSIVE_CEIL = 204,
SHIELD_BREAK_FLY = 205,
SHIELD_BREAK_FALL = 206,
SHIELD_BREAK_DOWN_U = 207,
SHIELD_BREAK_DOWN_D = 208,
SHIELD_BREAK_STAND_U = 209,
SHIELD_BREAK_STAND_D = 210,
FURA_FURA = 211,
CATCH = 212,
CATCH_PULL = 213,
CATCH_DASH = 214,
CATCH_DASH_PULL = 215,
CATCH_WAIT = 216,
CATCH_ATTACK = 217,
CATCH_CUT = 218,
THROW_F = 219,
THROW_B = 220,
THROW_HI = 221,
THROW_LW = 222,
CAPTURE_PULLED_HI = 223,
CAPTURE_WAIT_HI = 224,
CAPTURE_DAMAGE_HI = 225,
CAPTURE_PULLED_LW = 226,
CAPTURE_WAIT_LW = 227,
CAPTURE_DAMAGE_LW = 228,
CAPTURE_CUT = 229,
CAPTURE_JUMP = 230,
CAPTURE_NECK = 231,
CAPTURE_FOOT = 232,
ESCAPE_F = 233,
ESCAPE_B = 234,
ESCAPE = 235,
ESCAPE_AIR = 236,
REBOUND_STOP = 237,
REBOUND = 238,
THROWN_F = 239,
THROWN_B = 240,
THROWN_HI = 241,
THROWN_LW = 242,
THROWN_LW_WOMEN = 243,
PASS = 244,
OTTOTTO = 245,
OTTOTTO_WAIT = 246,
FLY_REFLECT_WALL = 247,
FLY_REFLECT_CEIL = 248,
STOP_WALL = 249,
STOP_CEIL = 250,
MISS_FOOT = 251,
CLIFF_CATCH = 252,
CLIFF_WAIT = 253,
CLIFF_CLIMB_SLOW = 254,
CLIFF_CLIMB_QUICK = 255,
CLIFF_ATTACK_SLOW = 256,
CLIFF_ATTACK_QUICK = 257,
CLIFF_ESCAPE_SLOW = 258,
CLIFF_ESCAPE_QUICK = 259,
CLIFF_JUMP_SLOW_1 = 260,
CLIFF_JUMP_SLOW_2 = 261,
CLIFF_JUMP_QUICK_1 = 262,
CLIFF_JUMP_QUICK_2 = 263,
APPEAL_R = 264,
APPEAL_L = 265,
SHOULDERED_WAIT = 266,
SHOULDERED_WALK_SLOW = 267,
SHOULDERED_WALK_MIDDLE = 268,
SHOULDERED_WALK_FAST = 269,
SHOULDERED_TURN = 270,
THROWN_F_F = 271,
THROWN_F_B = 272,
THROWN_F_HI = 273,
THROWN_F_LW = 274,
CAPTURE_CAPTAIN = 275,
CAPTURE_YOSHI = 276, YOSHI_EGG = 277, CAPTURE_KOOPA = 278,
CAPTURE_DAMAGE_KOOPA = 279,
CAPTURE_WAIT_KOOPA = 280,
THROWN_KOOPA_F = 281,
THROWN_KOOPA_B = 282,
CAPTURE_KOOPA_AIR = 283,
CAPTURE_DAMAGE_KOOPA_AIR = 284,
CAPTURE_WAIT_KOOPA_AIR = 285,
THROWN_KOOPA_AIR_F = 286,
THROWN_KOOPA_AIR_B = 287,
CAPTURE_KIRBY = 288,
CAPTURE_WAIT_KIRBY = 289,
THROWN_KIRBY_STAR = 290,
THROWN_COPY_STAR = 291,
THROWN_KIRBY = 292,
BARREL_WAIT = 293,
BURY = 294,
BURY_WAIT = 295,
BURY_JUMP = 296,
DAMAGE_SONG = 297,
DAMAGE_SONG_WAIT = 298,
DAMAGE_SONG_RV = 299,
DAMAGE_BIND = 300,
CAPTURE_MEWTWO = 301,
CAPTURE_MEWTWO_AIR = 302,
THROWN_MEWTWO = 303,
THROWN_MEWTWO_AIR = 304,
WARP_STAR_JUMP = 305,
WARP_STAR_FALL = 306,
HAMMER_WAIT = 307,
HAMMER_WALK = 308,
HAMMER_TURN = 309,
HAMMER_KNEE_BEND = 310,
HAMMER_FALL = 311,
HAMMER_JUMP = 312,
HAMMER_LANDING = 313,
MUSHROOM_GIANT_START = 314,
MUSHROOM_GIANT_START_AIR = 315,
MUSHROOM_GIANT_END = 316,
MUSHROOM_GIANT_END_AIR = 317,
MUSHROOM_SMALL_START = 318,
MUSHROOM_SMALL_START_AIR = 319,
MUSHROOM_SMALL_END = 320,
MUSHROOM_SMALL_END_AIR = 321,
ENTRY = 322,
ENTRY_START = 323,
ENTRY_END = 324,
DAMAGE_ICE = 325,
DAMAGE_ICE_JUMP = 326,
CAPTURE_MASTER_HAND = 327,
CAPTURE_DAMAGE_MASTER_HAND = 328,
CAPTURE_WAIT_MASTER_HAND = 329,
THROWN_MASTER_HAND = 330,
CAPTURE_KIRBY_YOSHI = 331,
KIRBY_YOSHI_EGG = 332,
CAPTURE_REDEAD = 333,
CAPTURE_LIKE_LIKE = 334,
DOWN_REFLECT = 335,
CAPTURE_CRAZY_HAND = 336,
CAPTURE_DAMAGE_CRAZY_HAND = 337,
CAPTURE_WAIT_CRAZY_HAND = 338,
THROWN_CRAZY_HAND = 339,
BARREL_CANNON_WAIT = 340,
}
impl ActionState {
pub const DAMAGED_RANGE: RangeInclusive<Self> = Self::DAMAGE_HI_1..=Self::DAMAGE_FLY_ROLL;
pub const CAPTURE_RANGE: RangeInclusive<Self> = Self::CAPTURE_PULLED_HI..=Self::CAPTURE_FOOT;
pub const GUARD_RANGE: RangeInclusive<Self> = Self::GUARD_ON..=Self::GUARD_REFLECT;
pub const GUARD_BREAK_RANGE: RangeInclusive<Self> = Self::SHIELD_BREAK_FLY..=Self::FURA_FURA;
pub const GROUNDED_CONTROL_RANGE: RangeInclusive<Self> = Self::WAIT..=Self::KNEE_BEND;
pub const SQUAT_RANGE: RangeInclusive<Self> = Self::SQUAT..=Self::SQUAT_RV;
pub const LEDGE_ACTION_RANGE: RangeInclusive<Self> =
Self::CLIFF_CATCH..=Self::CLIFF_JUMP_QUICK_2;
pub const DOWNED_RANGE: RangeInclusive<Self> = Self::DOWN_BOUND_U..=Self::DOWN_SPOT_D;
pub const TECH_RANGE: RangeInclusive<Self> = Self::PASSIVE..=Self::PASSIVE_CEIL;
pub const DODGE_RANGE: RangeInclusive<Self> = Self::ESCAPE_F..=Self::ESCAPE_AIR;
pub const DYING_RANGE: RangeInclusive<Self> =
Self::DEAD_DOWN..=Self::DEAD_UP_FALL_HIT_CAMERA_ICE;
pub const GROUND_ATTACK_RANGE: RangeInclusive<Self> = Self::ATTACK_11..=Self::ATTACK_LW_4;
pub const AERIAL_ATTACK_RANGE: RangeInclusive<Self> = Self::ATTACK_AIR_N..=Self::ATTACK_AIR_LW;
pub const AERIAL_LAND_LAG_RANGE: RangeInclusive<Self> =
Self::LANDING_AIR_N..=Self::LANDING_AIR_LW;
pub const THROWN_RANGE: RangeInclusive<Self> = Self::THROWN_F..=Self::THROWN_LW_WOMEN;
pub const CMD_GRAB_RANGE_1: RangeInclusive<Self> =
Self::SHOULDERED_WAIT..=Self::THROWN_MEWTWO_AIR;
pub const CMD_GRAB_RANGE_2: RangeInclusive<Self> =
Self::CAPTURE_MASTER_HAND..=Self::CAPTURE_LIKE_LIKE;
pub const SPECIAL_FALL_RANGE: RangeInclusive<Self> = Self::FALL_SPECIAL..=Self::FALL_SPECIAL_B;
}
impl PartialEq<u16> for ActionState {
fn eq(&self, other: &u16) -> bool {
*self as u16 == *other
}
}
impl PartialOrd<u16> for ActionState {
fn partial_cmp(&self, other: &u16) -> Option<std::cmp::Ordering> {
(*self as u16).partial_cmp(other)
}
}
impl PartialEq<ActionState> for u16 {
fn eq(&self, other: &ActionState) -> bool {
*self == (*other) as u16
}
}
impl PartialOrd<ActionState> for u16 {
fn partial_cmp(&self, other: &ActionState) -> Option<std::cmp::Ordering> {
self.partial_cmp(&(*other as u16))
}
}
impl AsRef<ActionState> for u16 {
fn as_ref(&self) -> &ActionState {
unsafe { &(*(self as *const u16 as *const ActionState)) }
}
}
#[derive(
Debug, Clone, Copy, PartialEq, PartialOrd, Ord, Eq, EnumString, IntoStaticStr, Display, Hash,
)]
pub enum CharacterState {
FIRE_BREATH_GROUND_STARTUP,
FIRE_BREATH_GROUND_LOOP,
FIRE_BREATH_GROUND_END,
FIRE_BREATH_AIR_STARTUP,
FIRE_BREATH_AIR_LOOP,
FIRE_BREATH_AIR_END,
KOOPA_KLAW_GROUND,
KOOPA_KLAW_GROUND_GRAB,
KOOPA_KLAW_GROUND_PUMMEL,
KOOPA_KLAW_GROUND_WAIT,
KOOPA_KLAW_GROUND_THROW_F,
KOOPA_KLAW_GROUND_THROW_B,
KOOPA_KLAW_AIR,
KOOPA_KLAW_AIR_GRAB,
KOOPA_KLAW_AIR_PUMMEL,
KOOPA_KLAW_AIR_WAIT,
KOOPA_KLAW_AIR_THROW_F,
KOOPA_KLAW_AIR_THROW_B,
WHIRLING_FORTRESS_GROUND,
WHIRLING_FORTRESS_AIR,
BOMB_GROUND_BEGIN,
BOMB_AIR,
BOMB_LAND,
FALCON_PUNCH_GROUND,
FALCON_PUNCH_AIR,
RAPTOR_BOOST_GROUND,
RAPTOR_BOOST_GROUND_HIT,
RAPTOR_BOOST_AIR,
RAPTOR_BOOST_AIR_HIT,
FALCON_DIVE_GROUND,
FALCON_DIVE_AIR,
FALCON_DIVE_CATCH,
FALCON_DIVE_ENDING,
FALCON_KICK_GROUND,
FALCON_KICK_GROUND_ENDING_ON_GROUND,
FALCON_KICK_AIR,
FALCON_KICK_AIR_ENDING_ON_GROUND,
FALCON_KICK_AIR_ENDING_IN_AIR,
FALCON_KICK_GROUND_ENDING_IN_AIR,
FALCON_KICK_HIT_WALL,
KONG_KARRY_WAIT,
KONG_KARRY_WALK_SLOW,
KONG_KARRY_WALK_MIDDLE,
KONG_KARRY_WALK_FAST,
KONG_KARRY_TURN,
KONG_KARRY_KNEE_BEND,
KONG_KARRY_FALL,
KONG_KARRY_JUMP,
KONG_KARRY_LANDING,
KONG_KARRY_GROUND_THROW_FORWARD,
KONG_KARRY_GROUND_THROW_BACKWARD,
KONG_KARRY_GROUND_THROW_UP,
KONG_KARRY_GROUND_THROW_DOWN,
KONG_KARRY_AIR_THROW_FORWARD,
KONG_KARRY_AIR_THROW_BACKWARD,
KONG_KARRY_AIR_THROW_UP,
KONG_KARRY_AIR_THROW_DOWN,
GIANT_PUNCH_GROUND_CHARGE_STARTUP,
GIANT_PUNCH_GROUND_CHARGE_LOOP,
GIANT_PUNCH_GROUND_CHARGE_STOP,
GIANT_PUNCH_GROUND_EARLY_PUNCH,
GIANT_PUNCH_GROUND_FULL_CHARGE_PUNCH,
GIANT_PUNCH_AIR_CHARGE_STARTUP,
GIANT_PUNCH_AIR_CHARGE_LOOP,
GIANT_PUNCH_AIR_CHARGE_STOP,
GIANT_PUNCH_AIR_EARLY_PUNCH,
GIANT_PUNCH_AIR_FULL_CHARGE_PUNCH,
HEADBUTT_GROUND,
HEADBUTT_AIR,
SPINNING_KONG_GROUND,
SPINNING_KONG_AIR,
HAND_SLAP_STARTUP,
HAND_SLAP_LOOP,
HAND_SLAP_END,
TAUNT_R,
PILL_GROUND,
PILL_AIR,
SUPER_SHEET_GROUND,
SUPER_SHEET_AIR,
SUPER_JUMP_PUNCH_GROUND,
SUPER_JUMP_PUNCH_AIR,
TORNADO_GROUND,
TORNADO_AIR,
BLASTER_GROUND_STARTUP,
BLASTER_GROUND_LOOP,
BLASTER_GROUND_END,
BLASTER_AIR_STARTUP,
BLASTER_AIR_LOOP,
BLASTER_AIR_END,
PHANTASM_GROUND_STARTUP,
PHANTASM_GROUND,
PHANTASM_GROUND_END,
PHANTASM_STARTUP_AIR,
PHANTASM_AIR,
PHANTASM_AIR_END,
FIRE_BIRD_GROUND_STARTUP,
FIRE_BIRD_AIR_STARTUP,
FIRE_BIRD_GROUND,
FIRE_BIRD_AIR,
FIRE_BIRD_GROUND_END,
FIRE_BIRD_AIR_END,
FIRE_BIRD_BOUNCE_END,
REFLECTOR_GROUND_STARTUP,
REFLECTOR_GROUND_LOOP,
REFLECTOR_GROUND_REFLECT,
REFLECTOR_GROUND_END,
REFLECTOR_GROUND_TURN,
REFLECTOR_AIR_STARTUP,
REFLECTOR_AIR_LOOP,
REFLECTOR_AIR_REFLECT,
REFLECTOR_AIR_END,
REFLECTOR_AIR_TURN,
SMASH_TAUNT_RIGHT_STARTUP,
SMASH_TAUNT_LEFT_STARTUP,
SMASH_TAUNT_RIGHT_RISE,
SMASH_TAUNT_LEFT_RISE,
SMASH_TAUNT_RIGHT_FINISH,
SMASH_TAUNT_LEFT_FINISH,
ILLUSION_GROUND_STARTUP,
ILLUSION_GROUND,
ILLUSION_GROUND_END,
ILLUSION_STARTUP_AIR,
ILLUSION_AIR,
ILLUSION_AIR_END,
FIRE_FOX_GROUND_STARTUP,
FIRE_FOX_AIR_STARTUP,
FIRE_FOX_GROUND,
FIRE_FOX_AIR,
FIRE_FOX_GROUND_LANDING,
FIRE_FOX_AIR_FALL,
FIRE_FOX_GROUND_BOUNCE,
JAB,
RAPID_JAB_START,
RAPID_JAB_LOOP,
RAPID_JAB_END,
DOWN_TILT,
SIDE_SMASH,
NAIR,
BAIR,
UAIR,
NAIR_LANDING,
BAIR_LANDING,
UAIR_LANDING,
CHEF_GROUND,
CHEF_AIR,
JUDGMENT_1_GROUND,
JUDGMENT_2_GROUND,
JUDGMENT_3_GROUND,
JUDGMENT_4_GROUND,
JUDGMENT_5_GROUND,
JUDGMENT_6_GROUND,
JUDGMENT_7_GROUND,
JUDGMENT_8_GROUND,
JUDGMENT_9_GROUND,
JUDGMENT_1_AIR,
JUDGMENT_2_AIR,
JUDGMENT_3_AIR,
JUDGMENT_4_AIR,
JUDGMENT_5_AIR,
JUDGMENT_6_AIR,
JUDGMENT_7_AIR,
JUDGMENT_8_AIR,
JUDGMENT_9_AIR,
FIRE_GROUND,
FIRE_AIR,
OIL_PANIC_GROUND,
OIL_PANIC_GROUND_ABSORB,
OIL_PANIC_GROUND_SPILL,
OIL_PANIC_AIR,
OIL_PANIC_AIR_ABSORB,
OIL_PANIC_AIR_SPILL,
WARLOCK_PUNCH_GROUND,
WARLOCK_PUNCH_AIR,
GERUDO_DRAGON_GROUND,
GERUDO_DRAGON_GROUND_HIT,
GERUDO_DRAGON_AIR,
GERUDO_DRAGON_AIR_HIT,
DARK_DIVE_GROUND,
DARK_DIVE_AIR,
DARK_DIVE_CATCH,
DARK_DIVE_ENDING,
WIZARDS_FOOT_GROUND,
WIZARDS_FOOT_GROUND_ENDING_ON_GROUND,
WIZARDS_FOOT_AIR,
WIZARDS_FOOT_AIR_ENDING_ON_GROUND,
WIZARDS_FOOT_AIR_ENDING_IN_AIR,
WIZARDS_FOOT_GROUND_ENDING_IN_AIR,
WIZARDS_FOOT_HIT_WALL,
JUMP_2,
JUMP_3,
JUMP_4,
JUMP_5,
JUMP_6,
ROLLOUT_GROUND_START_CHARGE_RIGHT,
ROLLOUT_GROUND_START_CHARGE_LEFT,
ROLLOUT_GROUND_CHARGE_LOOP,
ROLLOUT_GROUND_FULLY_CHARGED,
ROLLOUT_GROUND_CHARGE_RELEASE,
ROLLOUT_GROUND_START_TURN,
ROLLOUT_GROUND_END_RIGHT,
ROLLOUT_GROUND_END_LEFT,
ROLLOUT_AIR_START_CHARGE_RIGHT,
ROLLOUT_AIR_START_CHARGE_LEFT,
ROLLOUT_AIR_CHARGE_LOOP,
ROLLOUT_AIR_FULLY_CHARGED,
ROLLOUT_AIR_CHARGE_RELEASE,
ROLLOUT_AIR_END_RIGHT,
ROLLOUT_AIR_END_LEFT,
ROLLOUT_HIT,
POUND_GROUND,
POUND_AIR,
SING_GROUND_LEFT,
SING_AIR_LEFT,
SING_GROUND_RIGHT,
SING_AIR_RIGHT,
REST_GROUND_LEFT,
REST_AIR_LEFT,
REST_GROUND_RIGHT,
REST_AIR_RIGHT,
JUMP_2_WITH_HAT,
JUMP_3_WITH_HAT,
JUMP_4_WITH_HAT,
JUMP_5_WITH_HAT,
JUMP_6_WITH_HAT,
DASH_ATTACK_GROUND,
DASH_ATTACK_AIR,
SWALLOW_GROUND_STARTUP,
SWALLOW_GROUND_LOOP,
SWALLOW_GROUND_END,
SWALLOW_GROUND_CAPTURE,
SWALLOW_GROUND_HOLD,
SWALLOW_GROUND_HOLD_WAIT,
SWALLOW_HOLD_WALK_SLOW,
SWALLOW_HOLD_WALK_MIDDLE,
SWALLOW_HOLD_WALK_FAST,
SWALLOW_HOLD_CAPTURE_TURN,
SWALLOW_HOLD_KNEE_BEND,
SWALLOW_HOLD_JUMP,
SWALLOW_HOLD_LANDING,
SWALLOW_GROUND_DIGEST,
SWALLOW_GROUND_SPIT,
SWALLOW_AIR_STARTUP,
SWALLOW_AIR_LOOP,
SWALLOW_AIR_END,
SWALLOW_AIR_CAPTURE,
SWALLOW_AIR_HOLD,
SWALLOW_AIR_HOLD_WAIT,
SWALLOW_AIR_DIGEST,
SWALLOW_AIR_SPIT,
SWALLOW_AIR_HOLD_TURN,
HAMMER_GROUND,
HAMMER_AIR,
FINAL_CUTTER_GROUND_STARTUP,
FINAL_CUTTER_GROUND_END,
FINAL_CUTTER_AIR_STARTUP,
FINAL_CUTTER_AIR_APEX,
FINAL_CUTTER_SWORD_DESCENT,
FINAL_CUTTER_AIR_END,
STONE_GROUND_STARTUP,
STONE_GROUND,
STONE_GROUND_END,
STONE_AIR_STARTUP,
STONE_AIR,
STONE_AIR_END,
MARIO_FIREBALL_GROUND,
MARIO_FIREBALL_AIR,
LINK_BOW_GROUND_CHARGE,
LINK_BOW_GROUND_FULLY_CHARGED,
LINK_BOW_GROUND_SHOOT,
LINK_BOW_AIR_CHARGE,
LINK_BOW_AIR_FULLY_CHARGED,
LINK_BOW_AIR_SHOOT,
SAMUS_CHARGE_SHOT_GROUND_START,
SAMUS_CHARGE_SHOT_GROUND_LOOP,
SAMUS_CHARGE_SHOT_GROUND_END,
SAMUS_CHARGE_SHOT_GROUND_SHOOT,
SAMUS_CHARGE_SHOT_AIR_START,
SAMUS_CHARGE_SHOT_AIR_SHOOT,
YOSHI_EGG_LAY_GROUND,
YOSHI_EGG_LAY_GROUND_CAPTURE_START,
YOSHI_EGG_LAY_GROUND_CAPTURE,
YOSHI_EGG_LAY_AIR,
YOSHI_EGG_LAY_AIR_CAPTURE_START,
YOSHI_EGG_LAY_AIR_CAPTURE,
FOX_BLASTER_GROUND_STARTUP,
FOX_BLASTER_GROUND_LOOP,
FOX_BLASTER_GROUND_END,
FOX_BLASTER_AIR_STARTUP,
FOX_BLASTER_AIR_LOOP,
FOX_BLASTER_AIR_END,
PIKACHU_TJOLT_GROUND,
PIKACHU_TJOLT_AIR,
LUIGI_FIREBALL_GROUND,
LUIGI_FIREBALL_AIR,
NESS_PK_FLASH_GROUND_STARTUP,
NESS_PK_FLASH_GROUND_CHARGE,
NESS_PK_FLASH_GROUND_EXPLODE,
NESS_PK_FLASH_GROUND_END,
NESS_PK_FLASH_AIR_STARTUP,
NESS_PK_FLASH_AIR_CHARGE,
NESS_PK_FLASH_AIR_EXPLODE,
NESS_PK_FLASH_AIR_END,
BOWSER_FIRE_BREATH_GROUND_START,
BOWSER_FIRE_BREATH_GROUND_LOOP,
BOWSER_FIRE_BREATH_GROUND_END,
BOWSER_FIRE_BREATH_AIR_START,
BOWSER_FIRE_BREATH_AIR_LOOP,
BOWSER_FIRE_BREATH_AIR_END,
PEACH_TOAD_GROUND,
PEACH_TOAD_GROUND_ATTACK,
PEACH_TOAD_AIR,
PEACH_TOAD_AIR_ATTACK,
ICE_CLIMBERS_ICE_SHOT_GROUND,
ICE_CLIMBERS_ICE_SHOT_AIR,
DK_GIANT_PUNCH_GROUND_CHARGE_STARTUP,
DK_GIANT_PUNCH_GROUND_CHARGE_LOOP,
DK_GIANT_PUNCH_GROUND_CHARGE_STOP,
DK_GIANT_PUNCH_GROUND_EARLY_PUNCH,
DK_GIANT_PUNCH_GROUND_FULL_CHARGE_PUNCH,
DK_GIANT_PUNCH_AIR_CHARGE_STARTUP,
DK_GIANT_PUNCH_AIR_CHARGE_LOOP,
DK_GIANT_PUNCH_AIR_CHARGE_STOP,
DK_GIANT_PUNCH_AIR_EARLY_PUNCH,
DK_GIANT_PUNCH_AIR_FULL_CHARGE_PUNCH,
ZELDA_NAYRUS_LOVE_GROUND,
ZELDA_NAYRUS_LOVE_AIR,
SHEIK_NEEDLE_GROUND_START_CHARGE,
SHEIK_NEEDLE_GROUND_CHARGE_LOOP,
SHEIK_NEEDLE_GROUND_END_CHARGE,
SHEIK_NEEDLE_GROUND_SHOOT,
SHEIK_NEEDLE_AIR_START_CHARGE,
SHEIK_NEEDLE_AIR_CHARGE_LOOP,
SHEIK_NEEDLE_AIR_END_CHARGE,
SHEIK_NEEDLE_AIR_SHOOT,
JIGGLYPUFF_ROLLOUT_GROUND_START_CHARGE_RIGHT,
JIGGLYPUFF_ROLLOUT_GROUND_START_CHARGE_LEFT,
JIGGLYPUFF_ROLLOUT_GROUND_CHARGE_LOOP,
JIGGLYPUFF_ROLLOUT_GROUND_FULLY_CHARGED,
JIGGLYPUFF_ROLLOUT_GROUND_CHARGE_RELEASE,
JIGGLYPUFF_ROLLOUT_GROUND_START_TURN,
JIGGLYPUFF_ROLLOUT_GROUND_END_RIGHT,
JIGGLYPUFF_ROLLOUT_GROUND_END_LEFT,
JIGGLYPUFF_ROLLOUT_AIR_START_CHARGE_RIGHT,
JIGGLYPUFF_ROLLOUT_AIR_START_CHARGE_LEFT,
JIGGLYPUFF_ROLLOUT_AIR_CHARGE_LOOP,
JIGGLYPUFF_ROLLOUT_AIR_FULLY_CHARGED,
JIGGLYPUFF_ROLLOUT_AIR_CHARGE_RELEASE,
JIGGLYPUFF_ROLLOUT_AIR_END_RIGHT,
JIGGLYPUFF_ROLLOUT_AIR_END_LEFT,
JIGGLYPUFF_ROLLOUT_HIT,
MARTH_SHIELD_BREAKER_GROUND_START_CHARGE,
MARTH_SHIELD_BREAKER_GROUND_CHARGE_LOOP,
MARTH_SHIELD_BREAKER_GROUND_EARLY_RELEASE,
MARTH_SHIELD_BREAKER_GROUND_FULLY_CHARGED,
MARTH_SHIELD_BREAKER_AIR_START_CHARGE,
MARTH_SHIELD_BREAKER_AIR_CHARGE_LOOP,
MARTH_SHIELD_BREAKER_AIR_EARLY_RELEASE,
MARTH_SHIELD_BREAKER_AIR_FULLY_CHARGED,
MEWTWO_SHADOW_BALL_GROUND_START_CHARGE,
MEWTWO_SHADOW_BALL_GROUND_CHARGE_LOOP,
MEWTWO_SHADOW_BALL_GROUND_FULLY_CHARGED,
MEWTWO_SHADOW_BALL_GROUND_END_CHARGE,
MEWTWO_SHADOW_BALL_GROUND_SHOOT,
MEWTWO_SHADOW_BALL_AIR_START_CHARGE,
MEWTWO_SHADOW_BALL_AIR_CHARGE_LOOP,
MEWTWO_SHADOW_BALL_AIR_FULLY_CHARGED,
MEWTWO_SHADOW_BALL_AIR_END_CHARGE,
MEWTWO_SHADOW_BALL_AIR_SHOOT,
GAMEAND_WATCH_OIL_PANIC_GROUND,
GAMEAND_WATCH_OIL_PANIC_AIR,
DOC_PILL_GROUND,
DOC_PILL_AIR,
YOUNG_LINK_BOW_GROUND_CHARGE,
YOUNG_LINK_BOW_GROUND_FULLY_CHARGED,
YOUNG_LINK_BOW_GROUND_SHOOT,
YOUNG_LINK_BOW_AIR_CHARGE,
YOUNG_LINK_BOW_AIR_FULLY_CHARGED,
YOUNG_LINK_BOW_AIR_SHOOT,
FALCO_BLASTER_GROUND_STARTUP,
FALCO_BLASTER_GROUND_LOOP,
FALCO_BLASTER_GROUND_END,
FALCO_BLASTER_AIR_STARTUP,
FALCO_BLASTER_AIR_LOOP,
FALCO_BLASTER_AIR_END,
PICHU_TJOLT_GROUND,
PICHU_TJOLT_AIR,
GANON_WARLOCK_PUNCH_GROUND,
GANON_WARLOCK_PUNCH_AIR,
ROY_FLARE_BLADE_GROUND_START_CHARGE,
ROY_FLARE_BLADE_GROUND_CHARGE_LOOP,
ROY_FLARE_BLADE_GROUND_EARLY_RELEASE,
ROY_FLARE_BLADE_GROUND_FULLY_CHARGED,
ROY_FLARE_BLADE_AIR_START_CHARGE,
ROY_FLARE_BLADE_AIR_CHARGE_LOOP,
ROY_FLARE_BLADE_AIR_EARLY_RELEASE,
ROY_FLARE_BLADE_AIR_FULLY_CHARGED,
SIDE_SMASH_2,
BOW_GROUND_CHARGE,
BOW_GROUND_FULLY_CHARGED,
BOW_GROUND_SHOOT,
BOW_AIR_CHARGE,
BOW_AIR_FULLY_CHARGED,
BOW_AIR_SHOOT,
BOOMERANG_GROUND_THROW,
BOOMERANG_GROUND_CATCH,
BOOMERANG_GROUND_THROW_EMPTY,
BOOMERANG_AIR_THROW,
BOOMERANG_AIR_CATCH,
BOOMERANG_AIR_THROW_EMPTY,
SPIN_ATTACK_GROUND,
SPIN_ATTACK_AIR,
BOMB_GROUND,
ZAIR,
ZAIR_CATCH,
FIREBALL_GROUND,
FIREBALL_AIR,
GREEN_MISSILE_GROUND_STARTUP,
GREEN_MISSILE_GROUND_CHARGE,
GREEN_MISSILE_GROUND_LANDING,
GREEN_MISSILE_GROUND_TAKEOFF,
GREEN_MISSILE_GROUND_TAKEOFF_MISFIRE,
GREEN_MISSILE_AIR_STARTUP,
GREEN_MISSILE_AIR_CHARGE,
GREEN_MISSILE_AIR,
GREEN_MISSILE_AIR_END,
GREEN_MISSILE_AIR_TAKEOFF,
GREEN_MISSILE_AIR_TAKEOFF_MISFIRE,
CYCLONE_GROUND,
CYCLONE_AIR,
CAPE_GROUND,
CAPE_AIR,
SHIELD_BREAKER_GROUND_START_CHARGE,
SHIELD_BREAKER_GROUND_CHARGE_LOOP,
SHIELD_BREAKER_GROUND_EARLY_RELEASE,
SHIELD_BREAKER_GROUND_FULLY_CHARGED,
SHIELD_BREAKER_AIR_START_CHARGE,
SHIELD_BREAKER_AIR_CHARGE_LOOP,
SHIELD_BREAKER_AIR_EARLY_RELEASE,
SHIELD_BREAKER_AIR_FULLY_CHARGED,
DANCING_BLADE_1_GROUND,
DANCING_BLADE_2_UP_GROUND,
DANCING_BLADE_2_SIDE_GROUND,
DANCING_BLADE_3_UP_GROUND,
DANCING_BLADE_3_SIDE_GROUND,
DANCING_BLADE_3_DOWN_GROUND,
DANCING_BLADE_4_UP_GROUND,
DANCING_BLADE_4_SIDE_GROUND,
DANCING_BLADE_4_DOWN_GROUND,
DANCING_BLADE_1_AIR,
DANCING_BLADE_2_UP_AIR,
DANCING_BLADE_2_SIDE_AIR,
DANCING_BLADE_3_UP_AIR,
DANCING_BLADE_3_SIDE_AIR,
DANCING_BLADE_3_DOWN_AIR,
DANCING_BLADE_4_UP_AIR,
DANCING_BLADE_4_SIDE_AIR,
DANCING_BLADE_4_DOWN_AIR,
DOLPHIN_SLASH_GROUND,
DOLPHIN_SLASH_AIR,
COUNTER_GROUND,
COUNTER_GROUND_HIT,
COUNTER_AIR,
COUNTER_AIR_HIT,
SHADOW_BALL_GROUND_START_CHARGE,
SHADOW_BALL_GROUND_CHARGE_LOOP,
SHADOW_BALL_GROUND_FULLY_CHARGED,
SHADOW_BALL_GROUND_END_CHARGE,
SHADOW_BALL_GROUND_SHOOT,
SHADOW_BALL_AIR_START_CHARGE,
SHADOW_BALL_AIR_CHARGE_LOOP,
SHADOW_BALL_AIR_FULLY_CHARGED,
SHADOW_BALL_AIR_END_CHARGE,
SHADOW_BALL_AIR_SHOOT,
CONFUSION_GROUND,
CONFUSION_AIR,
TELEPORT_GROUND_STARTUP,
TELEPORT_GROUND_DISAPPEAR,
TELEPORT_GROUND_REAPPEAR,
TELEPORT_AIR_STARTUP,
TELEPORT_AIR_DISAPPEAR,
TELEPORT_AIR_REAPPEAR,
DISABLE_GROUND,
DISABLE_AIR,
ICE_SHOT_GROUND,
ICE_SHOT_AIR,
BLIZZARD_GROUND,
BLIZZARD_AIR,
SQUALL_HAMMER_GROUND_TOGETHER,
SQUALL_HAMMER_AIR_TOGETHER,
BELAY_CATAPULT_STARTUP,
BELAY_GROUND_CATAPULT_END,
BELAY_CATAPULTING,
UP_SMASH,
UP_SMASH_CHARGE,
UP_SMASH_CHARGED,
DOWN_SMASH,
DOWN_SMASH_CHARGE,
DOWN_SMASH_CHARGED,
PK_FLASH_GROUND_STARTUP,
PK_FLASH_GROUND_CHARGE,
PK_FLASH_GROUND_EXPLODE,
PK_FLASH_GROUND_END,
PK_FLASH_AIR_STARTUP,
PK_FLASH_AIR_CHARGE,
PK_FLASH_AIR_EXPLODE,
PK_FLASH_AIR_END,
PK_FIRE_GROUND,
PK_FIRE_AIR,
PK_THUNDER_GROUND_STARTUP,
PK_THUNDER_GROUND,
PK_THUNDER_GROUND_END,
PK_THUNDER_GROUND_HIT,
PK_THUNDER_AIR_STARTUP,
PK_THUNDER_AIR,
PK_THUNDER_AIR_END,
PK_THUNDER_AIR_HIT,
PK_THUNDER_AIR_WALL_BOUNCE,
PSI_MAGNET_GROUND_STARTUP,
PSI_MAGNET_GROUND_LOOP,
PSI_MAGNET_GROUND_ABSORB,
PSI_MAGNET_GROUND_END,
PSI_MAGNET_AIR_STARTUP,
PSI_MAGNET_AIR_LOOP,
PSI_MAGNET_AIR_ABSORB,
PSI_MAGNET_AIR_END,
FLOAT,
FLOAT_FALL_FORWARD,
FLOAT_FALL_BACKWARD,
FLOAT_NAIR,
FLOAT_FAIR,
FLOAT_BAIR,
FLOAT_UAIR,
FLOAT_DAIR,
SIDE_SMASH_GOLF_CLUB,
SIDE_SMASH_FRYING_PAN,
SIDE_SMASH_TENNIS_RACKET,
VEGETABLE_GROUND,
VEGETABLE_AIR,
BOMBER_GROUND_STARTUP,
BOMBER_GROUND_END,
BOMBER_AIR_STARTUP,
BOMBER_AIR_END,
BOMBER_AIR_HIT,
BOMBER_AIR,
PARASOL_GROUND_START,
PARASOL_AIR_START,
TOAD_GROUND,
TOAD_GROUND_ATTACK,
TOAD_AIR,
TOAD_AIR_ATTACK,
PARASOL_OPEN,
PARASOL_FALL,
TJOLT_GROUND,
TJOLT_AIR,
SKULL_BASH_GROUND_STARTUP,
SKULL_BASH_GROUND_CHARGE,
SKULL_BASH_GROUND_LANDING,
SKULL_BASH_GROUND_TAKEOFF,
SKULL_BASH_AIR_STARTUP,
SKULL_BASH_AIR_CHARGE,
SKULL_BASH_AIR,
SKULL_BASH_AIR_END,
SKULL_BASH_AIR_TAKEOFF,
AGILITY_GROUND_STARTUP,
AGILITY_GROUND,
AGILITY_GROUND_END,
AGILITY_AIR_STARTUP,
AGILITY_AIR,
AGILITY_AIR_END,
THUNDER_GROUND_STARTUP,
THUNDER_GROUND,
THUNDER_GROUND_HIT,
THUNDER_GROUND_END,
THUNDER_AIR_STARTUP,
THUNDER_AIR,
THUNDER_AIR_HIT,
THUNDER_AIR_END,
QUICK_ATTACK_GROUND_STARTUP,
QUICK_ATTACK_GROUND,
QUICK_ATTACK_GROUND_END,
QUICK_ATTACK_AIR_STARTUP,
QUICK_ATTACK_AIR,
QUICK_ATTACK_AIR_END,
SQUALL_HAMMER_GROUND_SOLO,
SQUALL_HAMMER_AIR_SOLO,
BELAY_GROUND_STARTUP,
BELAY_GROUND_CATAPULTING_NANA,
BELAY_GROUND_FAILED_CATAPULTING,
BELAY_GROUND_FAILED_CATAPULTING_END,
BELAY_AIR_STARTUP,
BELAY_AIR_CATAPULTING_NANA,
BELAY_AIR_FAILED_CATAPULTING,
BELAY_AIR_FAILED_CATAPULTING_END,
FLARE_BLADE_GROUND_START_CHARGE,
FLARE_BLADE_GROUND_CHARGE_LOOP,
FLARE_BLADE_GROUND_EARLY_RELEASE,
FLARE_BLADE_GROUND_FULLY_CHARGED,
FLARE_BLADE_AIR_START_CHARGE,
FLARE_BLADE_AIR_CHARGE_LOOP,
FLARE_BLADE_AIR_EARLY_RELEASE,
FLARE_BLADE_AIR_FULLY_CHARGED,
DOUBLE_EDGE_DANCE_1_GROUND,
DOUBLE_EDGE_DANCE_2_UP_GROUND,
DOUBLE_EDGE_DANCE_2_SIDE_GROUND,
DOUBLE_EDGE_DANCE_3_UP_GROUND,
DOUBLE_EDGE_DANCE_3_SIDE_GROUND,
DOUBLE_EDGE_DANCE_3_DOWN_GROUND,
DOUBLE_EDGE_DANCE_4_UP_GROUND,
DOUBLE_EDGE_DANCE_4_SIDE_GROUND,
DOUBLE_EDGE_DANCE_4_DOWN_GROUND,
DOUBLE_EDGE_DANCE_1_AIR,
DOUBLE_EDGE_DANCE_2_UP_AIR,
DOUBLE_EDGE_DANCE_2_SIDE_AIR,
DOUBLE_EDGE_DANCE_3_UP_AIR,
DOUBLE_EDGE_DANCE_3_SIDE_AIR,
DOUBLE_EDGE_DANCE_3_DOWN_AIR,
DOUBLE_EDGE_DANCE_4_UP_AIR,
DOUBLE_EDGE_DANCE_4_SIDE_AIR,
DOUBLE_EDGE_DANCE_4_DOWN_AIR,
BLAZER_GROUND,
BLAZER_AIR,
BOMB_JUMP_GROUND,
BOMB_JUMP_AIR,
CHARGE_SHOT_GROUND_START,
CHARGE_SHOT_GROUND_LOOP,
CHARGE_SHOT_GROUND_END,
CHARGE_SHOT_GROUND_SHOOT,
CHARGE_SHOT_AIR_START,
CHARGE_SHOT_AIR_SHOOT,
MISSILE_GROUND,
MISSILE_SMASH_GROUND,
MISSILE_AIR,
MISSILE_SMASH_AIR,
SCREW_ATTACK_GROUND,
SCREW_ATTACK_AIR,
BOMB_END_GROUND,
NEEDLE_GROUND_START_CHARGE,
NEEDLE_GROUND_CHARGE_LOOP,
NEEDLE_GROUND_END_CHARGE,
NEEDLE_GROUND_FIRE,
NEEDLE_AIR_START_CHARGE,
NEEDLE_AIR_CHARGE_LOOP,
NEEDLE_AIR_END_CHARGE,
NEEDLE_AIR_FIRE,
CHAIN_GROUND_STARTUP,
CHAIN_GROUND_LOOP,
CHAIN_GROUND_END,
CHAIN_AIR_STARTUP,
CHAIN_AIR_LOOP,
CHAIN_AIR_END,
VANISH_GROUND_STARTUP,
VANISH_GROUND_DISAPPEAR,
VANISH_GROUND_REAPPEAR,
VANISH_AIR_STARTUP,
VANISH_AIR_DISAPPEAR,
VANISH_AIR_REAPPEAR,
TRANSFORM_GROUND,
TRANSFORM_GROUND_ENDING,
TRANSFORM_AIR,
TRANSFORM_AIR_ENDING,
GUARD_ON,
GUARD,
GUARD_OFF,
GUARD_DAMAGE,
GUARD_ON_2,
EGG_LAY_GROUND,
EGG_LAY_GROUND_CAPTURE_START,
EGG_LAY_GROUND_CAPTURE,
EGG_LAY_AIR,
EGG_LAY_AIR_CAPTURE_START,
EGG_LAY_AIR_CAPTURE,
EGG_ROLL_GROUND_STARTUP,
EGG_ROLL_GROUND,
EGG_ROLL_GROUND_CHANGE_DIRECTION,
EGG_ROLL_GROUND_END,
EGG_ROLL_AIR_START,
EGG_ROLL_AIR,
EGG_ROLL_BOUNCE,
EGG_ROLL_AIR_END,
EGG_THROW_GROUND,
EGG_THROW_AIR,
TAUNT_L,
NAYRUS_LOVE_GROUND,
NAYRUS_LOVE_AIR,
DINS_FIRE_GROUND_STARTUP,
DINS_FIRE_GROUND_TRAVEL,
DINS_FIRE_GROUND_EXPLODE,
DINS_FIRE_AIR_STARTUP,
DINS_FIRE_AIR_TRAVEL,
DINS_FIRE_AIR_EXPLODE,
FARORES_WIND_GROUND,
FARORES_WIND_GROUND_DISAPPEAR,
FARORES_WIND_GROUND_REAPPEAR,
FARORES_WIND_AIR,
FARORES_WIND_AIR_DISAPPEAR,
FARORES_WIND_AIR_REAPPEAR,
SWORD_SWING_4,
BAT_SWING_4,
PARASOL_SWING_4,
FAN_SWING_4,
STAR_ROD_SWING_4,
LIPSTICK_SWING_4,
HEAVY_WAIT,
HEAVY_WALK_SLOW,
HEAVY_WALK_MIDDLE,
HEAVY_WALK_FAST,
HEAVY_TURN,
HEAVY_KNEE_BEND,
HEAVY_FALL,
HEAVY_JUMP,
HEAVY_LANDING,
HEAVY_WAIT_2,
KONG_KARRY_WAIT_2,
SWALLOW_GROUND_CAPTURE_2,
SWALLOW_GROUND_DIGEST_2,
SWALLOW_GROUND_SPIT_2,
SWALLOW_AIR_CAPTURE_2,
SWALLOW_AIR_DIGEST_2,
SWALLOW_AIR_SPIT_2,
FINAL_CUTTER_GROUND_APEX,
FINAL_CUTTER_GROUND_DESCENT,
YOSHI_EGG_LAY_GROUND_CAPTURE_START_2,
YOSHI_EGG_LAY_GROUND_CAPTURE_2,
YOSHI_EGG_LAY_AIR_CAPTURE_START_2,
YOSHI_EGG_LAY_AIR_CAPTURE_2,
GIGA_BOWSER_FIRE_BREATH_GROUND_START,
GIGA_BOWSER_FIRE_BREATH_GROUND_LOOP,
GIGA_BOWSER_FIRE_BREATH_GROUND_END,
GIGA_BOWSER_FIRE_BREATH_AIR_START,
GIGA_BOWSER_FIRE_BREATH_AIR_LOOP,
GIGA_BOWSER_FIRE_BREATH_AIR_END,
PSI_MAGNET_GROUND_TURN,
PSI_MAGNET_AIR_TURN,
BOMBER_GROUND,
PARASOL_GROUND_END,
PARASOL_AIR_END,
EGG_LAY_GROUND_CAPTURE_START_2,
EGG_LAY_GROUND_CAPTURE_2,
EGG_LAY_AIR_CAPTURE_START_2,
EGG_LAY_AIR_CAPTURE_2,
SKULL_BASH_GROUND,
BELAY_GROUND_CATAPULTING,
BELAY_2,
BELAY_3,
BELAY_5,
}
impl CharacterState {
pub fn from_char_and_state(character: Character, state: u16) -> Result<Self> {
use CharacterState as CS;
assert!(state >= 341);
Ok(match character {
Character::CaptainFalcon => match state {
341 => CS::SWORD_SWING_4,
342 => CS::BAT_SWING_4,
343 => CS::PARASOL_SWING_4,
344 => CS::FAN_SWING_4,
345 => CS::STAR_ROD_SWING_4,
346 => CS::LIPSTICK_SWING_4,
347 => CS::FALCON_PUNCH_GROUND,
348 => CS::FALCON_PUNCH_AIR,
349 => CS::RAPTOR_BOOST_GROUND,
350 => CS::RAPTOR_BOOST_GROUND_HIT,
351 => CS::RAPTOR_BOOST_AIR,
352 => CS::RAPTOR_BOOST_AIR_HIT,
353 => CS::FALCON_DIVE_GROUND,
354 => CS::FALCON_DIVE_AIR,
355 => CS::FALCON_DIVE_CATCH,
356 => CS::FALCON_DIVE_ENDING,
357 => CS::FALCON_KICK_GROUND,
358 => CS::FALCON_KICK_GROUND_ENDING_ON_GROUND,
359 => CS::FALCON_KICK_AIR,
360 => CS::FALCON_KICK_AIR_ENDING_ON_GROUND,
361 => CS::FALCON_KICK_AIR_ENDING_IN_AIR,
362 => CS::FALCON_KICK_GROUND_ENDING_IN_AIR,
363 => CS::FALCON_KICK_HIT_WALL,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 347-363 inclusive. Got: {state}"))
},
Character::DonkeyKong => match state {
341 => CS::HEAVY_WAIT,
342 => CS::HEAVY_WALK_SLOW,
343 => CS::HEAVY_WALK_MIDDLE,
344 => CS::HEAVY_WALK_FAST,
345 => CS::HEAVY_TURN,
346 => CS::HEAVY_KNEE_BEND,
347 => CS::HEAVY_FALL,
348 => CS::HEAVY_JUMP,
349 => CS::HEAVY_LANDING,
350 => CS::HEAVY_WAIT_2,
351 => CS::KONG_KARRY_WAIT,
352 => CS::KONG_KARRY_WALK_SLOW,
353 => CS::KONG_KARRY_WALK_MIDDLE,
354 => CS::KONG_KARRY_WALK_FAST,
355 => CS::KONG_KARRY_TURN,
356 => CS::KONG_KARRY_KNEE_BEND,
357 => CS::KONG_KARRY_FALL,
358 => CS::KONG_KARRY_JUMP,
359 => CS::KONG_KARRY_LANDING,
360 => CS::KONG_KARRY_WAIT_2,
361 => CS::KONG_KARRY_GROUND_THROW_FORWARD,
362 => CS::KONG_KARRY_GROUND_THROW_BACKWARD,
363 => CS::KONG_KARRY_GROUND_THROW_UP,
364 => CS::KONG_KARRY_GROUND_THROW_DOWN,
365 => CS::KONG_KARRY_AIR_THROW_FORWARD,
366 => CS::KONG_KARRY_AIR_THROW_BACKWARD,
367 => CS::KONG_KARRY_AIR_THROW_UP,
368 => CS::KONG_KARRY_AIR_THROW_DOWN,
369 => CS::GIANT_PUNCH_GROUND_CHARGE_STARTUP,
370 => CS::GIANT_PUNCH_GROUND_CHARGE_LOOP,
371 => CS::GIANT_PUNCH_GROUND_CHARGE_STOP,
372 => CS::GIANT_PUNCH_GROUND_EARLY_PUNCH,
373 => CS::GIANT_PUNCH_GROUND_FULL_CHARGE_PUNCH,
374 => CS::GIANT_PUNCH_AIR_CHARGE_STARTUP,
375 => CS::GIANT_PUNCH_AIR_CHARGE_LOOP,
376 => CS::GIANT_PUNCH_AIR_CHARGE_STOP,
377 => CS::GIANT_PUNCH_AIR_EARLY_PUNCH,
378 => CS::GIANT_PUNCH_AIR_FULL_CHARGE_PUNCH,
379 => CS::HEADBUTT_GROUND,
380 => CS::HEADBUTT_AIR,
381 => CS::SPINNING_KONG_GROUND,
382 => CS::SPINNING_KONG_AIR,
383 => CS::HAND_SLAP_STARTUP,
384 => CS::HAND_SLAP_LOOP,
385 => CS::HAND_SLAP_END,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 351-385 inclusive. Got: {state}"))
},
Character::Fox => match state {
341 => CS::BLASTER_GROUND_STARTUP,
342 => CS::BLASTER_GROUND_LOOP,
343 => CS::BLASTER_GROUND_END,
344 => CS::BLASTER_AIR_STARTUP,
345 => CS::BLASTER_AIR_LOOP,
346 => CS::BLASTER_AIR_END,
347 => CS::ILLUSION_GROUND_STARTUP,
348 => CS::ILLUSION_GROUND,
349 => CS::ILLUSION_GROUND_END,
350 => CS::ILLUSION_STARTUP_AIR,
351 => CS::ILLUSION_AIR,
352 => CS::ILLUSION_AIR_END,
353 => CS::FIRE_FOX_GROUND_STARTUP,
354 => CS::FIRE_FOX_AIR_STARTUP,
355 => CS::FIRE_FOX_GROUND,
356 => CS::FIRE_FOX_AIR,
357 => CS::FIRE_FOX_GROUND_LANDING,
358 => CS::FIRE_FOX_AIR_FALL,
359 => CS::FIRE_FOX_GROUND_BOUNCE,
360 => CS::REFLECTOR_GROUND_STARTUP,
361 => CS::REFLECTOR_GROUND_LOOP,
362 => CS::REFLECTOR_GROUND_REFLECT,
363 => CS::REFLECTOR_GROUND_END,
364 => CS::REFLECTOR_GROUND_TURN,
365 => CS::REFLECTOR_AIR_STARTUP,
366 => CS::REFLECTOR_AIR_LOOP,
367 => CS::REFLECTOR_AIR_REFLECT,
368 => CS::REFLECTOR_AIR_END,
369 => CS::REFLECTOR_AIR_TURN,
370 => CS::SMASH_TAUNT_RIGHT_STARTUP,
371 => CS::SMASH_TAUNT_LEFT_STARTUP,
372 => CS::SMASH_TAUNT_RIGHT_RISE,
373 => CS::SMASH_TAUNT_LEFT_RISE,
374 => CS::SMASH_TAUNT_RIGHT_FINISH,
375 => CS::SMASH_TAUNT_LEFT_FINISH,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-375 inclusive. Got: {state}"))
},
Character::GameAndWatch => match state {
341 => CS::JAB,
342 => CS::RAPID_JAB_START,
343 => CS::RAPID_JAB_LOOP,
344 => CS::RAPID_JAB_END,
345 => CS::DOWN_TILT,
346 => CS::SIDE_SMASH,
347 => CS::NAIR,
348 => CS::BAIR,
349 => CS::UAIR,
350 => CS::NAIR_LANDING,
351 => CS::BAIR_LANDING,
352 => CS::UAIR_LANDING,
353 => CS::CHEF_GROUND,
354 => CS::CHEF_AIR,
355 => CS::JUDGMENT_1_GROUND,
356 => CS::JUDGMENT_2_GROUND,
357 => CS::JUDGMENT_3_GROUND,
358 => CS::JUDGMENT_4_GROUND,
359 => CS::JUDGMENT_5_GROUND,
360 => CS::JUDGMENT_6_GROUND,
361 => CS::JUDGMENT_7_GROUND,
362 => CS::JUDGMENT_8_GROUND,
363 => CS::JUDGMENT_9_GROUND,
364 => CS::JUDGMENT_1_AIR,
365 => CS::JUDGMENT_2_AIR,
366 => CS::JUDGMENT_3_AIR,
367 => CS::JUDGMENT_4_AIR,
368 => CS::JUDGMENT_5_AIR,
369 => CS::JUDGMENT_6_AIR,
370 => CS::JUDGMENT_7_AIR,
371 => CS::JUDGMENT_8_AIR,
372 => CS::JUDGMENT_9_AIR,
373 => CS::FIRE_GROUND,
374 => CS::FIRE_AIR,
375 => CS::OIL_PANIC_GROUND,
376 => CS::OIL_PANIC_GROUND_ABSORB,
377 => CS::OIL_PANIC_GROUND_SPILL,
378 => CS::OIL_PANIC_AIR,
379 => CS::OIL_PANIC_AIR_ABSORB,
380 => CS::OIL_PANIC_AIR_SPILL,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-380 inclusive. Got: {state}"))
},
Character::Kirby => match state {
341 => CS::JUMP_2,
342 => CS::JUMP_3,
343 => CS::JUMP_4,
344 => CS::JUMP_5,
345 => CS::JUMP_6,
346 => CS::JUMP_2_WITH_HAT,
347 => CS::JUMP_3_WITH_HAT,
348 => CS::JUMP_4_WITH_HAT,
349 => CS::JUMP_5_WITH_HAT,
350 => CS::JUMP_6_WITH_HAT,
351 => CS::DASH_ATTACK_GROUND,
352 => CS::DASH_ATTACK_AIR,
353 => CS::SWALLOW_GROUND_STARTUP,
354 => CS::SWALLOW_GROUND_LOOP,
355 => CS::SWALLOW_GROUND_END,
356 => CS::SWALLOW_GROUND_CAPTURE,
357 => CS::SWALLOW_GROUND_CAPTURE_2,
358 => CS::SWALLOW_GROUND_HOLD,
359 => CS::SWALLOW_GROUND_HOLD_WAIT,
360 => CS::SWALLOW_HOLD_WALK_SLOW,
361 => CS::SWALLOW_HOLD_WALK_MIDDLE,
362 => CS::SWALLOW_HOLD_WALK_FAST,
363 => CS::SWALLOW_HOLD_CAPTURE_TURN,
364 => CS::SWALLOW_HOLD_KNEE_BEND,
365 => CS::SWALLOW_HOLD_JUMP,
366 => CS::SWALLOW_HOLD_LANDING,
367 => CS::SWALLOW_GROUND_DIGEST,
368 => CS::SWALLOW_GROUND_DIGEST_2,
369 => CS::SWALLOW_GROUND_SPIT,
370 => CS::SWALLOW_GROUND_SPIT_2,
371 => CS::SWALLOW_AIR_STARTUP,
372 => CS::SWALLOW_AIR_LOOP,
373 => CS::SWALLOW_AIR_END,
374 => CS::SWALLOW_AIR_CAPTURE,
375 => CS::SWALLOW_AIR_CAPTURE_2,
376 => CS::SWALLOW_AIR_HOLD,
377 => CS::SWALLOW_AIR_HOLD_WAIT,
378 => CS::SWALLOW_AIR_DIGEST,
379 => CS::SWALLOW_AIR_DIGEST_2,
380 => CS::SWALLOW_AIR_SPIT,
381 => CS::SWALLOW_AIR_SPIT_2,
382 => CS::SWALLOW_AIR_HOLD_TURN,
383 => CS::HAMMER_GROUND,
384 => CS::HAMMER_AIR,
385 => CS::FINAL_CUTTER_GROUND_STARTUP,
386 => CS::FINAL_CUTTER_GROUND_APEX,
387 => CS::FINAL_CUTTER_GROUND_DESCENT,
388 => CS::FINAL_CUTTER_GROUND_END,
389 => CS::FINAL_CUTTER_AIR_STARTUP,
390 => CS::FINAL_CUTTER_AIR_APEX,
391 => CS::FINAL_CUTTER_SWORD_DESCENT,
392 => CS::FINAL_CUTTER_AIR_END,
393 => CS::STONE_GROUND_STARTUP,
394 => CS::STONE_GROUND,
395 => CS::STONE_GROUND_END,
396 => CS::STONE_AIR_STARTUP,
397 => CS::STONE_AIR,
398 => CS::STONE_AIR_END,
399 => CS::MARIO_FIREBALL_GROUND,
400 => CS::MARIO_FIREBALL_AIR,
401 => CS::LINK_BOW_GROUND_CHARGE,
402 => CS::LINK_BOW_GROUND_FULLY_CHARGED,
403 => CS::LINK_BOW_GROUND_SHOOT,
404 => CS::LINK_BOW_AIR_CHARGE,
405 => CS::LINK_BOW_AIR_FULLY_CHARGED,
406 => CS::LINK_BOW_AIR_SHOOT,
407 => CS::SAMUS_CHARGE_SHOT_GROUND_START,
408 => CS::SAMUS_CHARGE_SHOT_GROUND_LOOP,
409 => CS::SAMUS_CHARGE_SHOT_GROUND_END,
410 => CS::SAMUS_CHARGE_SHOT_GROUND_SHOOT,
411 => CS::SAMUS_CHARGE_SHOT_AIR_START,
412 => CS::SAMUS_CHARGE_SHOT_AIR_SHOOT,
413 => CS::YOSHI_EGG_LAY_GROUND,
414 => CS::YOSHI_EGG_LAY_GROUND_CAPTURE_START,
415 => CS::YOSHI_EGG_LAY_GROUND_CAPTURE_START_2,
416 => CS::YOSHI_EGG_LAY_GROUND_CAPTURE,
417 => CS::YOSHI_EGG_LAY_GROUND_CAPTURE_2,
418 => CS::YOSHI_EGG_LAY_AIR,
419 => CS::YOSHI_EGG_LAY_AIR_CAPTURE_START,
420 => CS::YOSHI_EGG_LAY_AIR_CAPTURE_START_2,
421 => CS::YOSHI_EGG_LAY_AIR_CAPTURE,
422 => CS::YOSHI_EGG_LAY_AIR_CAPTURE_2,
423 => CS::FOX_BLASTER_GROUND_STARTUP,
424 => CS::FOX_BLASTER_GROUND_LOOP,
425 => CS::FOX_BLASTER_GROUND_END,
426 => CS::FOX_BLASTER_AIR_STARTUP,
427 => CS::FOX_BLASTER_AIR_LOOP,
428 => CS::FOX_BLASTER_AIR_END,
429 => CS::PIKACHU_TJOLT_GROUND,
430 => CS::PIKACHU_TJOLT_AIR,
431 => CS::LUIGI_FIREBALL_GROUND,
432 => CS::LUIGI_FIREBALL_AIR,
433 => CS::FALCON_PUNCH_GROUND,
434 => CS::FALCON_PUNCH_AIR,
435 => CS::NESS_PK_FLASH_GROUND_STARTUP,
436 => CS::NESS_PK_FLASH_GROUND_CHARGE,
437 => CS::NESS_PK_FLASH_GROUND_EXPLODE,
438 => CS::NESS_PK_FLASH_GROUND_END,
439 => CS::NESS_PK_FLASH_AIR_STARTUP,
440 => CS::NESS_PK_FLASH_AIR_CHARGE,
441 => CS::NESS_PK_FLASH_AIR_EXPLODE,
442 => CS::NESS_PK_FLASH_AIR_END,
443 => CS::BOWSER_FIRE_BREATH_GROUND_START,
444 => CS::BOWSER_FIRE_BREATH_GROUND_LOOP,
445 => CS::BOWSER_FIRE_BREATH_GROUND_END,
446 => CS::BOWSER_FIRE_BREATH_AIR_START,
447 => CS::BOWSER_FIRE_BREATH_AIR_LOOP,
448 => CS::BOWSER_FIRE_BREATH_AIR_END,
449 => CS::PEACH_TOAD_GROUND,
450 => CS::PEACH_TOAD_GROUND_ATTACK,
451 => CS::PEACH_TOAD_AIR,
452 => CS::PEACH_TOAD_AIR_ATTACK,
453 => CS::ICE_CLIMBERS_ICE_SHOT_GROUND,
454 => CS::ICE_CLIMBERS_ICE_SHOT_AIR,
455 => CS::DK_GIANT_PUNCH_GROUND_CHARGE_STARTUP,
456 => CS::DK_GIANT_PUNCH_GROUND_CHARGE_LOOP,
457 => CS::DK_GIANT_PUNCH_GROUND_CHARGE_STOP,
458 => CS::DK_GIANT_PUNCH_GROUND_EARLY_PUNCH,
459 => CS::DK_GIANT_PUNCH_GROUND_FULL_CHARGE_PUNCH,
460 => CS::DK_GIANT_PUNCH_AIR_CHARGE_STARTUP,
461 => CS::DK_GIANT_PUNCH_AIR_CHARGE_LOOP,
462 => CS::DK_GIANT_PUNCH_AIR_CHARGE_STOP,
463 => CS::DK_GIANT_PUNCH_AIR_EARLY_PUNCH,
464 => CS::DK_GIANT_PUNCH_AIR_FULL_CHARGE_PUNCH,
465 => CS::ZELDA_NAYRUS_LOVE_GROUND,
466 => CS::ZELDA_NAYRUS_LOVE_AIR,
467 => CS::SHEIK_NEEDLE_GROUND_START_CHARGE,
468 => CS::SHEIK_NEEDLE_GROUND_CHARGE_LOOP,
469 => CS::SHEIK_NEEDLE_GROUND_END_CHARGE,
470 => CS::SHEIK_NEEDLE_GROUND_SHOOT,
471 => CS::SHEIK_NEEDLE_AIR_START_CHARGE,
472 => CS::SHEIK_NEEDLE_AIR_CHARGE_LOOP,
473 => CS::SHEIK_NEEDLE_AIR_END_CHARGE,
474 => CS::SHEIK_NEEDLE_AIR_SHOOT,
475 => CS::JIGGLYPUFF_ROLLOUT_GROUND_START_CHARGE_RIGHT,
476 => CS::JIGGLYPUFF_ROLLOUT_GROUND_START_CHARGE_LEFT,
477 => CS::JIGGLYPUFF_ROLLOUT_GROUND_CHARGE_LOOP,
478 => CS::JIGGLYPUFF_ROLLOUT_GROUND_FULLY_CHARGED,
479 => CS::JIGGLYPUFF_ROLLOUT_GROUND_CHARGE_RELEASE,
480 => CS::JIGGLYPUFF_ROLLOUT_GROUND_START_TURN,
481 => CS::JIGGLYPUFF_ROLLOUT_GROUND_END_RIGHT,
482 => CS::JIGGLYPUFF_ROLLOUT_GROUND_END_LEFT,
483 => CS::JIGGLYPUFF_ROLLOUT_AIR_START_CHARGE_RIGHT,
484 => CS::JIGGLYPUFF_ROLLOUT_AIR_START_CHARGE_LEFT,
485 => CS::JIGGLYPUFF_ROLLOUT_AIR_CHARGE_LOOP,
486 => CS::JIGGLYPUFF_ROLLOUT_AIR_FULLY_CHARGED,
487 => CS::JIGGLYPUFF_ROLLOUT_AIR_CHARGE_RELEASE,
489 => CS::JIGGLYPUFF_ROLLOUT_AIR_END_RIGHT,
490 => CS::JIGGLYPUFF_ROLLOUT_AIR_END_LEFT,
491 => CS::JIGGLYPUFF_ROLLOUT_HIT,
492 => CS::MARTH_SHIELD_BREAKER_GROUND_START_CHARGE,
493 => CS::MARTH_SHIELD_BREAKER_GROUND_CHARGE_LOOP,
494 => CS::MARTH_SHIELD_BREAKER_GROUND_EARLY_RELEASE,
495 => CS::MARTH_SHIELD_BREAKER_GROUND_FULLY_CHARGED,
496 => CS::MARTH_SHIELD_BREAKER_AIR_START_CHARGE,
497 => CS::MARTH_SHIELD_BREAKER_AIR_CHARGE_LOOP,
498 => CS::MARTH_SHIELD_BREAKER_AIR_EARLY_RELEASE,
499 => CS::MARTH_SHIELD_BREAKER_AIR_FULLY_CHARGED,
500 => CS::MEWTWO_SHADOW_BALL_GROUND_START_CHARGE,
501 => CS::MEWTWO_SHADOW_BALL_GROUND_CHARGE_LOOP,
502 => CS::MEWTWO_SHADOW_BALL_GROUND_FULLY_CHARGED,
503 => CS::MEWTWO_SHADOW_BALL_GROUND_END_CHARGE,
504 => CS::MEWTWO_SHADOW_BALL_GROUND_SHOOT,
505 => CS::MEWTWO_SHADOW_BALL_AIR_START_CHARGE,
506 => CS::MEWTWO_SHADOW_BALL_AIR_CHARGE_LOOP,
507 => CS::MEWTWO_SHADOW_BALL_AIR_FULLY_CHARGED,
508 => CS::MEWTWO_SHADOW_BALL_AIR_END_CHARGE,
509 => CS::MEWTWO_SHADOW_BALL_AIR_SHOOT,
510 => CS::GAMEAND_WATCH_OIL_PANIC_GROUND,
511 => CS::GAMEAND_WATCH_OIL_PANIC_AIR,
512 => CS::DOC_PILL_GROUND,
513 => CS::DOC_PILL_AIR,
514 => CS::YOUNG_LINK_BOW_GROUND_CHARGE,
515 => CS::YOUNG_LINK_BOW_GROUND_FULLY_CHARGED,
516 => CS::YOUNG_LINK_BOW_GROUND_SHOOT,
517 => CS::YOUNG_LINK_BOW_AIR_CHARGE,
518 => CS::YOUNG_LINK_BOW_AIR_FULLY_CHARGED,
519 => CS::YOUNG_LINK_BOW_AIR_SHOOT,
520 => CS::FALCO_BLASTER_GROUND_STARTUP,
521 => CS::FALCO_BLASTER_GROUND_LOOP,
522 => CS::FALCO_BLASTER_GROUND_END,
523 => CS::FALCO_BLASTER_AIR_STARTUP,
524 => CS::FALCO_BLASTER_AIR_LOOP,
525 => CS::FALCO_BLASTER_AIR_END,
526 => CS::PICHU_TJOLT_GROUND,
527 => CS::PICHU_TJOLT_AIR,
528 => CS::GANON_WARLOCK_PUNCH_GROUND,
529 => CS::GANON_WARLOCK_PUNCH_AIR,
530 => CS::ROY_FLARE_BLADE_GROUND_START_CHARGE,
531 => CS::ROY_FLARE_BLADE_GROUND_CHARGE_LOOP,
532 => CS::ROY_FLARE_BLADE_GROUND_EARLY_RELEASE,
533 => CS::ROY_FLARE_BLADE_GROUND_FULLY_CHARGED,
534 => CS::ROY_FLARE_BLADE_AIR_START_CHARGE,
535 => CS::ROY_FLARE_BLADE_AIR_CHARGE_LOOP,
536 => CS::ROY_FLARE_BLADE_AIR_EARLY_RELEASE,
537 => CS::ROY_FLARE_BLADE_AIR_FULLY_CHARGED,
538 => CS::GIGA_BOWSER_FIRE_BREATH_GROUND_START,
539 => CS::GIGA_BOWSER_FIRE_BREATH_GROUND_LOOP,
540 => CS::GIGA_BOWSER_FIRE_BREATH_GROUND_END,
541 => CS::GIGA_BOWSER_FIRE_BREATH_AIR_START,
542 => CS::GIGA_BOWSER_FIRE_BREATH_AIR_LOOP,
543 => CS::GIGA_BOWSER_FIRE_BREATH_AIR_END,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-537 inclusive. Got: {state}"))
},
Character::Bowser => match state {
341 => CS::FIRE_BREATH_GROUND_STARTUP,
342 => CS::FIRE_BREATH_GROUND_LOOP,
343 => CS::FIRE_BREATH_GROUND_END,
344 => CS::FIRE_BREATH_AIR_STARTUP,
345 => CS::FIRE_BREATH_AIR_LOOP,
346 => CS::FIRE_BREATH_AIR_END,
347 => CS::KOOPA_KLAW_GROUND,
348 => CS::KOOPA_KLAW_GROUND_GRAB,
349 => CS::KOOPA_KLAW_GROUND_PUMMEL,
350 => CS::KOOPA_KLAW_GROUND_WAIT,
351 => CS::KOOPA_KLAW_GROUND_THROW_F,
352 => CS::KOOPA_KLAW_GROUND_THROW_B,
353 => CS::KOOPA_KLAW_AIR,
354 => CS::KOOPA_KLAW_AIR_GRAB,
355 => CS::KOOPA_KLAW_AIR_PUMMEL,
356 => CS::KOOPA_KLAW_AIR_WAIT,
357 => CS::KOOPA_KLAW_AIR_THROW_F,
358 => CS::KOOPA_KLAW_AIR_THROW_B,
359 => CS::WHIRLING_FORTRESS_GROUND,
360 => CS::WHIRLING_FORTRESS_AIR,
361 => CS::BOMB_GROUND_BEGIN,
362 => CS::BOMB_AIR,
363 => CS::BOMB_LAND,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-363 inclusive. Got: {state}"))
},
Character::Link => match state {
341 => CS::SIDE_SMASH_2,
342 => CS::TAUNT_R,
343 => CS::TAUNT_L,
344 => CS::BOW_GROUND_CHARGE,
345 => CS::BOW_GROUND_FULLY_CHARGED,
346 => CS::BOW_GROUND_SHOOT,
347 => CS::BOW_AIR_CHARGE,
348 => CS::BOW_AIR_FULLY_CHARGED,
349 => CS::BOW_AIR_SHOOT,
350 => CS::BOOMERANG_GROUND_THROW,
351 => CS::BOOMERANG_GROUND_CATCH,
352 => CS::BOOMERANG_GROUND_THROW_EMPTY,
353 => CS::BOOMERANG_AIR_THROW,
354 => CS::BOOMERANG_AIR_CATCH,
355 => CS::BOOMERANG_AIR_THROW_EMPTY,
356 => CS::SPIN_ATTACK_GROUND,
357 => CS::SPIN_ATTACK_AIR,
358 => CS::BOMB_GROUND,
359 => CS::BOMB_AIR,
360 => CS::ZAIR,
361 => CS::ZAIR_CATCH,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-361 inclusive. Got: {state}"))
},
Character::Luigi => match state {
341 => CS::FIREBALL_GROUND,
342 => CS::FIREBALL_AIR,
343 => CS::GREEN_MISSILE_GROUND_STARTUP,
344 => CS::GREEN_MISSILE_GROUND_CHARGE,
346 => CS::GREEN_MISSILE_GROUND_LANDING,
347 => CS::GREEN_MISSILE_GROUND_TAKEOFF,
348 => CS::GREEN_MISSILE_GROUND_TAKEOFF_MISFIRE,
349 => CS::GREEN_MISSILE_AIR_STARTUP,
350 => CS::GREEN_MISSILE_AIR_CHARGE,
351 => CS::GREEN_MISSILE_AIR,
352 => CS::GREEN_MISSILE_AIR_END,
353 => CS::GREEN_MISSILE_AIR_TAKEOFF,
354 => CS::GREEN_MISSILE_AIR_TAKEOFF_MISFIRE,
355 => CS::SUPER_JUMP_PUNCH_GROUND,
356 => CS::SUPER_JUMP_PUNCH_AIR,
357 => CS::CYCLONE_GROUND,
358 => CS::CYCLONE_AIR,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-358 inclusive. Got: {state}"))
},
Character::Mario => match state {
341 => CS::TAUNT_R,
342 => CS::TAUNT_L,
343 => CS::FIREBALL_GROUND,
344 => CS::FIREBALL_AIR,
345 => CS::CAPE_GROUND,
346 => CS::CAPE_AIR,
347 => CS::SUPER_JUMP_PUNCH_GROUND,
348 => CS::SUPER_JUMP_PUNCH_AIR,
349 => CS::TORNADO_GROUND,
350 => CS::TORNADO_AIR,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 343-350 inclusive. Got: {state}"))
},
Character::Marth => match state {
341 => CS::SHIELD_BREAKER_GROUND_START_CHARGE,
342 => CS::SHIELD_BREAKER_GROUND_CHARGE_LOOP,
343 => CS::SHIELD_BREAKER_GROUND_EARLY_RELEASE,
344 => CS::SHIELD_BREAKER_GROUND_FULLY_CHARGED,
345 => CS::SHIELD_BREAKER_AIR_START_CHARGE,
346 => CS::SHIELD_BREAKER_AIR_CHARGE_LOOP,
347 => CS::SHIELD_BREAKER_AIR_EARLY_RELEASE,
348 => CS::SHIELD_BREAKER_AIR_FULLY_CHARGED,
349 => CS::DANCING_BLADE_1_GROUND,
350 => CS::DANCING_BLADE_2_UP_GROUND,
351 => CS::DANCING_BLADE_2_SIDE_GROUND,
352 => CS::DANCING_BLADE_3_UP_GROUND,
353 => CS::DANCING_BLADE_3_SIDE_GROUND,
354 => CS::DANCING_BLADE_3_DOWN_GROUND,
355 => CS::DANCING_BLADE_4_UP_GROUND,
356 => CS::DANCING_BLADE_4_SIDE_GROUND,
357 => CS::DANCING_BLADE_4_DOWN_GROUND,
358 => CS::DANCING_BLADE_1_AIR,
359 => CS::DANCING_BLADE_2_UP_AIR,
360 => CS::DANCING_BLADE_2_SIDE_AIR,
361 => CS::DANCING_BLADE_3_UP_AIR,
362 => CS::DANCING_BLADE_3_SIDE_AIR,
363 => CS::DANCING_BLADE_3_DOWN_AIR,
364 => CS::DANCING_BLADE_4_UP_AIR,
365 => CS::DANCING_BLADE_4_SIDE_AIR,
366 => CS::DANCING_BLADE_4_DOWN_AIR,
367 => CS::DOLPHIN_SLASH_GROUND,
368 => CS::DOLPHIN_SLASH_AIR,
369 => CS::COUNTER_GROUND,
370 => CS::COUNTER_GROUND_HIT,
371 => CS::COUNTER_AIR,
372 => CS::COUNTER_AIR_HIT,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-372 inclusive. Got: {state}"))
},
Character::Mewtwo => match state {
341 => CS::SHADOW_BALL_GROUND_START_CHARGE,
342 => CS::SHADOW_BALL_GROUND_CHARGE_LOOP,
343 => CS::SHADOW_BALL_GROUND_FULLY_CHARGED,
344 => CS::SHADOW_BALL_GROUND_END_CHARGE,
345 => CS::SHADOW_BALL_GROUND_SHOOT,
346 => CS::SHADOW_BALL_AIR_START_CHARGE,
347 => CS::SHADOW_BALL_AIR_CHARGE_LOOP,
348 => CS::SHADOW_BALL_AIR_FULLY_CHARGED,
349 => CS::SHADOW_BALL_AIR_END_CHARGE,
350 => CS::SHADOW_BALL_AIR_SHOOT,
351 => CS::CONFUSION_GROUND,
352 => CS::CONFUSION_AIR,
353 => CS::TELEPORT_GROUND_STARTUP,
354 => CS::TELEPORT_GROUND_DISAPPEAR,
355 => CS::TELEPORT_GROUND_REAPPEAR,
356 => CS::TELEPORT_AIR_STARTUP,
357 => CS::TELEPORT_AIR_DISAPPEAR,
358 => CS::TELEPORT_AIR_REAPPEAR,
359 => CS::DISABLE_GROUND,
360 => CS::DISABLE_AIR,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-360 inclusive. Got: {state}"))
},
Character::Ness => match state {
341 => CS::SIDE_SMASH,
342 => CS::UP_SMASH,
343 => CS::UP_SMASH_CHARGE,
344 => CS::UP_SMASH_CHARGED,
345 => CS::DOWN_SMASH,
346 => CS::DOWN_SMASH_CHARGE,
347 => CS::DOWN_SMASH_CHARGED,
348 => CS::PK_FLASH_GROUND_STARTUP,
349 => CS::PK_FLASH_GROUND_CHARGE,
350 => CS::PK_FLASH_GROUND_EXPLODE,
351 => CS::PK_FLASH_GROUND_END,
352 => CS::PK_FLASH_AIR_STARTUP,
353 => CS::PK_FLASH_AIR_CHARGE,
354 => CS::PK_FLASH_AIR_EXPLODE,
355 => CS::PK_FLASH_AIR_END,
356 => CS::PK_FIRE_GROUND,
357 => CS::PK_FIRE_AIR,
358 => CS::PK_THUNDER_GROUND_STARTUP,
359 => CS::PK_THUNDER_GROUND,
360 => CS::PK_THUNDER_GROUND_END,
361 => CS::PK_THUNDER_GROUND_HIT,
362 => CS::PK_THUNDER_AIR_STARTUP,
363 => CS::PK_THUNDER_AIR,
364 => CS::PK_THUNDER_AIR_END,
365 => CS::PK_THUNDER_AIR_HIT,
366 => CS::PK_THUNDER_AIR_WALL_BOUNCE,
367 => CS::PSI_MAGNET_GROUND_STARTUP,
368 => CS::PSI_MAGNET_GROUND_LOOP,
369 => CS::PSI_MAGNET_GROUND_ABSORB,
370 => CS::PSI_MAGNET_GROUND_END,
371 => CS::PSI_MAGNET_GROUND_TURN,
372 => CS::PSI_MAGNET_AIR_STARTUP,
373 => CS::PSI_MAGNET_AIR_LOOP,
374 => CS::PSI_MAGNET_AIR_ABSORB,
375 => CS::PSI_MAGNET_AIR_END,
376 => CS::PSI_MAGNET_AIR_TURN,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-375 inclusive. Got: {state}"))
},
Character::Peach => match state {
341 => CS::FLOAT,
342 => CS::FLOAT_FALL_FORWARD,
343 => CS::FLOAT_FALL_BACKWARD,
344 => CS::FLOAT_NAIR,
345 => CS::FLOAT_FAIR,
346 => CS::FLOAT_BAIR,
347 => CS::FLOAT_UAIR,
348 => CS::FLOAT_DAIR,
349 => CS::SIDE_SMASH_GOLF_CLUB,
350 => CS::SIDE_SMASH_FRYING_PAN,
351 => CS::SIDE_SMASH_TENNIS_RACKET,
352 => CS::VEGETABLE_GROUND,
353 => CS::VEGETABLE_AIR,
354 => CS::BOMBER_GROUND_STARTUP,
355 => CS::BOMBER_GROUND_END,
356 => CS::BOMBER_GROUND,
357 => CS::BOMBER_AIR_STARTUP,
358 => CS::BOMBER_AIR_END,
359 => CS::BOMBER_AIR_HIT,
360 => CS::BOMBER_AIR,
361 => CS::PARASOL_GROUND_START,
362 => CS::PARASOL_GROUND_END,
363 => CS::PARASOL_AIR_START,
364 => CS::PARASOL_AIR_END,
365 => CS::TOAD_GROUND,
366 => CS::TOAD_GROUND_ATTACK,
367 => CS::TOAD_AIR,
368 => CS::TOAD_AIR_ATTACK,
369 => CS::PARASOL_OPEN,
370 => CS::PARASOL_FALL,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-370 inclusive. Got: {state}"))
},
Character::Pikachu => match state {
341 => CS::TJOLT_GROUND,
342 => CS::TJOLT_AIR,
343 => CS::SKULL_BASH_GROUND_STARTUP,
344 => CS::SKULL_BASH_GROUND_CHARGE,
345 => CS::SKULL_BASH_GROUND,
346 => CS::SKULL_BASH_GROUND_LANDING,
347 => CS::SKULL_BASH_GROUND_TAKEOFF,
348 => CS::SKULL_BASH_AIR_STARTUP,
349 => CS::SKULL_BASH_AIR_CHARGE,
350 => CS::SKULL_BASH_AIR,
351 => CS::SKULL_BASH_AIR_END,
352 => CS::SKULL_BASH_AIR_TAKEOFF,
353 => CS::QUICK_ATTACK_GROUND_STARTUP,
354 => CS::QUICK_ATTACK_GROUND,
355 => CS::QUICK_ATTACK_GROUND_END,
356 => CS::QUICK_ATTACK_AIR_STARTUP,
357 => CS::QUICK_ATTACK_AIR,
358 => CS::QUICK_ATTACK_AIR_END,
359 => CS::THUNDER_GROUND_STARTUP,
360 => CS::THUNDER_GROUND,
361 => CS::THUNDER_GROUND_HIT,
362 => CS::THUNDER_GROUND_END,
363 => CS::THUNDER_AIR_STARTUP,
364 => CS::THUNDER_AIR,
365 => CS::THUNDER_AIR_HIT,
366 => CS::THUNDER_AIR_END,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-366 inclusive. Got: {state}"))
},
Character::Jigglypuff => match state {
341 => CS::JUMP_2,
342 => CS::JUMP_3,
343 => CS::JUMP_4,
344 => CS::JUMP_5,
345 => CS::JUMP_6,
346 => CS::ROLLOUT_GROUND_START_CHARGE_RIGHT,
347 => CS::ROLLOUT_GROUND_START_CHARGE_LEFT,
348 => CS::ROLLOUT_GROUND_CHARGE_LOOP,
349 => CS::ROLLOUT_GROUND_FULLY_CHARGED,
350 => CS::ROLLOUT_GROUND_CHARGE_RELEASE,
351 => CS::ROLLOUT_GROUND_START_TURN,
352 => CS::ROLLOUT_GROUND_END_RIGHT,
353 => CS::ROLLOUT_GROUND_END_LEFT,
354 => CS::ROLLOUT_AIR_START_CHARGE_RIGHT,
355 => CS::ROLLOUT_AIR_START_CHARGE_LEFT,
356 => CS::ROLLOUT_AIR_CHARGE_LOOP,
357 => CS::ROLLOUT_AIR_FULLY_CHARGED,
358 => CS::ROLLOUT_AIR_CHARGE_RELEASE,
360 => CS::ROLLOUT_AIR_END_RIGHT,
361 => CS::ROLLOUT_AIR_END_LEFT,
362 => CS::ROLLOUT_HIT,
363 => CS::POUND_GROUND,
364 => CS::POUND_AIR,
365 => CS::SING_GROUND_LEFT,
366 => CS::SING_AIR_LEFT,
367 => CS::SING_GROUND_RIGHT,
368 => CS::SING_AIR_RIGHT,
369 => CS::REST_GROUND_LEFT,
370 => CS::REST_AIR_LEFT,
371 => CS::REST_GROUND_RIGHT,
372 => CS::REST_AIR_RIGHT,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-372 inclusive. Got: {state}"))
},
Character::Samus => match state {
341 => CS::BOMB_JUMP_GROUND,
342 => CS::BOMB_JUMP_AIR,
343 => CS::CHARGE_SHOT_GROUND_START,
344 => CS::CHARGE_SHOT_GROUND_LOOP,
345 => CS::CHARGE_SHOT_GROUND_END,
346 => CS::CHARGE_SHOT_GROUND_SHOOT,
347 => CS::CHARGE_SHOT_AIR_START,
348 => CS::CHARGE_SHOT_AIR_SHOOT,
349 => CS::MISSILE_GROUND,
350 => CS::MISSILE_SMASH_GROUND,
351 => CS::MISSILE_AIR,
352 => CS::MISSILE_SMASH_AIR,
353 => CS::SCREW_ATTACK_GROUND,
354 => CS::SCREW_ATTACK_AIR,
355 => CS::BOMB_END_GROUND,
356 => CS::BOMB_AIR,
357 => CS::ZAIR,
358 => CS::ZAIR_CATCH,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-358 inclusive. Got: {state}"))
},
Character::Yoshi => match state {
341 => CS::GUARD_ON,
342 => CS::GUARD,
343 => CS::GUARD_OFF,
344 => CS::GUARD_DAMAGE,
345 => CS::GUARD_ON_2,
346 => CS::EGG_LAY_GROUND,
347 => CS::EGG_LAY_GROUND_CAPTURE_START,
348 => CS::EGG_LAY_GROUND_CAPTURE_START_2,
349 => CS::EGG_LAY_GROUND_CAPTURE,
350 => CS::EGG_LAY_GROUND_CAPTURE_2,
351 => CS::EGG_LAY_AIR,
352 => CS::EGG_LAY_AIR_CAPTURE_START,
353 => CS::EGG_LAY_AIR_CAPTURE_START_2,
354 => CS::EGG_LAY_AIR_CAPTURE,
355 => CS::EGG_LAY_AIR_CAPTURE_2,
356 => CS::EGG_ROLL_GROUND_STARTUP,
357 => CS::EGG_ROLL_GROUND,
358 => CS::EGG_ROLL_GROUND_CHANGE_DIRECTION,
359 => CS::EGG_ROLL_GROUND_END,
360 => CS::EGG_ROLL_AIR_START,
361 => CS::EGG_ROLL_AIR,
362 => CS::EGG_ROLL_BOUNCE,
363 => CS::EGG_ROLL_AIR_END,
364 => CS::EGG_THROW_GROUND,
365 => CS::EGG_THROW_AIR,
366 => CS::BOMB_GROUND,
367 => CS::BOMB_LAND,
368 => CS::BOMB_AIR,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 342-368 inclusive. Got: {state}"))
},
Character::Zelda => match state {
341 => CS::NAYRUS_LOVE_GROUND,
342 => CS::NAYRUS_LOVE_AIR,
343 => CS::DINS_FIRE_GROUND_STARTUP,
344 => CS::DINS_FIRE_GROUND_TRAVEL,
345 => CS::DINS_FIRE_GROUND_EXPLODE,
346 => CS::DINS_FIRE_AIR_STARTUP,
347 => CS::DINS_FIRE_AIR_TRAVEL,
348 => CS::DINS_FIRE_AIR_EXPLODE,
349 => CS::FARORES_WIND_GROUND,
350 => CS::FARORES_WIND_GROUND_DISAPPEAR,
351 => CS::FARORES_WIND_GROUND_REAPPEAR,
352 => CS::FARORES_WIND_AIR,
353 => CS::FARORES_WIND_AIR_DISAPPEAR,
354 => CS::FARORES_WIND_AIR_REAPPEAR,
355 => CS::TRANSFORM_GROUND,
356 => CS::TRANSFORM_GROUND_ENDING,
357 => CS::TRANSFORM_AIR,
358 => CS::TRANSFORM_AIR_ENDING,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-358 inclusive. Got: {state}"))
},
Character::Sheik => match state {
341 => CS::NEEDLE_GROUND_START_CHARGE,
342 => CS::NEEDLE_GROUND_CHARGE_LOOP,
343 => CS::NEEDLE_GROUND_END_CHARGE,
344 => CS::NEEDLE_GROUND_FIRE,
345 => CS::NEEDLE_AIR_START_CHARGE,
346 => CS::NEEDLE_AIR_CHARGE_LOOP,
347 => CS::NEEDLE_AIR_END_CHARGE,
348 => CS::NEEDLE_AIR_FIRE,
349 => CS::CHAIN_GROUND_STARTUP,
350 => CS::CHAIN_GROUND_LOOP,
351 => CS::CHAIN_GROUND_END,
352 => CS::CHAIN_AIR_STARTUP,
353 => CS::CHAIN_AIR_LOOP,
354 => CS::CHAIN_AIR_END,
355 => CS::VANISH_GROUND_STARTUP,
356 => CS::VANISH_GROUND_DISAPPEAR,
357 => CS::VANISH_GROUND_REAPPEAR,
358 => CS::VANISH_AIR_STARTUP,
359 => CS::VANISH_AIR_DISAPPEAR,
360 => CS::VANISH_AIR_REAPPEAR,
361 => CS::TRANSFORM_GROUND,
362 => CS::TRANSFORM_GROUND_ENDING,
363 => CS::TRANSFORM_AIR,
364 => CS::TRANSFORM_AIR_ENDING,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-364 inclusive. Got: {state}"))
},
Character::Falco => match state {
341 => CS::BLASTER_GROUND_STARTUP,
342 => CS::BLASTER_GROUND_LOOP,
343 => CS::BLASTER_GROUND_END,
344 => CS::BLASTER_AIR_STARTUP,
345 => CS::BLASTER_AIR_LOOP,
346 => CS::BLASTER_AIR_END,
347 => CS::PHANTASM_GROUND_STARTUP,
348 => CS::PHANTASM_GROUND,
349 => CS::PHANTASM_GROUND_END,
350 => CS::PHANTASM_STARTUP_AIR,
351 => CS::PHANTASM_AIR,
352 => CS::PHANTASM_AIR_END,
353 => CS::FIRE_BIRD_GROUND_STARTUP,
354 => CS::FIRE_BIRD_AIR_STARTUP,
355 => CS::FIRE_BIRD_GROUND,
356 => CS::FIRE_BIRD_AIR,
357 => CS::FIRE_BIRD_GROUND_END,
358 => CS::FIRE_BIRD_AIR_END,
359 => CS::FIRE_BIRD_BOUNCE_END,
360 => CS::REFLECTOR_GROUND_STARTUP,
361 => CS::REFLECTOR_GROUND_LOOP,
362 => CS::REFLECTOR_GROUND_REFLECT,
363 => CS::REFLECTOR_GROUND_END,
364 => CS::REFLECTOR_GROUND_TURN,
365 => CS::REFLECTOR_AIR_STARTUP,
366 => CS::REFLECTOR_AIR_LOOP,
367 => CS::REFLECTOR_AIR_REFLECT,
368 => CS::REFLECTOR_AIR_END,
369 => CS::REFLECTOR_AIR_TURN,
370 => CS::SMASH_TAUNT_RIGHT_STARTUP,
371 => CS::SMASH_TAUNT_LEFT_STARTUP,
372 => CS::SMASH_TAUNT_RIGHT_RISE,
373 => CS::SMASH_TAUNT_LEFT_RISE,
374 => CS::SMASH_TAUNT_RIGHT_FINISH,
375 => CS::SMASH_TAUNT_LEFT_FINISH,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-375 inclusive. Got: {state}"))
},
Character::YoungLink => match state {
341 => CS::SIDE_SMASH_2,
342 => CS::TAUNT_R,
343 => CS::TAUNT_L,
344 => CS::BOW_GROUND_CHARGE,
345 => CS::BOW_GROUND_FULLY_CHARGED,
346 => CS::BOW_GROUND_SHOOT,
347 => CS::BOW_AIR_CHARGE,
348 => CS::BOW_AIR_FULLY_CHARGED,
349 => CS::BOW_AIR_SHOOT,
350 => CS::BOOMERANG_GROUND_THROW,
351 => CS::BOOMERANG_GROUND_CATCH,
352 => CS::BOOMERANG_GROUND_THROW_EMPTY,
353 => CS::BOOMERANG_AIR_THROW,
354 => CS::BOOMERANG_AIR_CATCH,
355 => CS::BOOMERANG_AIR_THROW_EMPTY,
356 => CS::SPIN_ATTACK_GROUND,
357 => CS::SPIN_ATTACK_AIR,
358 => CS::BOMB_GROUND,
359 => CS::BOMB_AIR,
360 => CS::ZAIR,
361 => CS::ZAIR_CATCH,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-361 inclusive. Got: {state}"))
},
Character::DrMario => match state {
341 => CS::TAUNT_R,
342 => CS::TAUNT_L,
343 => CS::PILL_GROUND,
344 => CS::PILL_AIR,
345 => CS::SUPER_SHEET_GROUND,
346 => CS::SUPER_SHEET_AIR,
347 => CS::SUPER_JUMP_PUNCH_GROUND,
348 => CS::SUPER_JUMP_PUNCH_AIR,
349 => CS::TORNADO_GROUND,
350 => CS::TORNADO_AIR,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-350 inclusive. Got: {state}"))
},
Character::Roy => match state {
341 => CS::FLARE_BLADE_GROUND_START_CHARGE,
342 => CS::FLARE_BLADE_GROUND_CHARGE_LOOP,
343 => CS::FLARE_BLADE_GROUND_EARLY_RELEASE,
344 => CS::FLARE_BLADE_GROUND_FULLY_CHARGED,
345 => CS::FLARE_BLADE_AIR_START_CHARGE,
346 => CS::FLARE_BLADE_AIR_CHARGE_LOOP,
347 => CS::FLARE_BLADE_AIR_EARLY_RELEASE,
348 => CS::FLARE_BLADE_AIR_FULLY_CHARGED,
349 => CS::DOUBLE_EDGE_DANCE_1_GROUND,
350 => CS::DOUBLE_EDGE_DANCE_2_UP_GROUND,
351 => CS::DOUBLE_EDGE_DANCE_2_SIDE_GROUND,
352 => CS::DOUBLE_EDGE_DANCE_3_UP_GROUND,
353 => CS::DOUBLE_EDGE_DANCE_3_SIDE_GROUND,
354 => CS::DOUBLE_EDGE_DANCE_3_DOWN_GROUND,
355 => CS::DOUBLE_EDGE_DANCE_4_UP_GROUND,
356 => CS::DOUBLE_EDGE_DANCE_4_SIDE_GROUND,
357 => CS::DOUBLE_EDGE_DANCE_4_DOWN_GROUND,
358 => CS::DOUBLE_EDGE_DANCE_1_AIR,
359 => CS::DOUBLE_EDGE_DANCE_2_UP_AIR,
360 => CS::DOUBLE_EDGE_DANCE_2_SIDE_AIR,
361 => CS::DOUBLE_EDGE_DANCE_3_UP_AIR,
362 => CS::DOUBLE_EDGE_DANCE_3_SIDE_AIR,
363 => CS::DOUBLE_EDGE_DANCE_3_DOWN_AIR,
364 => CS::DOUBLE_EDGE_DANCE_4_UP_AIR,
365 => CS::DOUBLE_EDGE_DANCE_4_SIDE_AIR,
366 => CS::DOUBLE_EDGE_DANCE_4_DOWN_AIR,
367 => CS::BLAZER_GROUND,
368 => CS::BLAZER_AIR,
369 => CS::COUNTER_GROUND,
370 => CS::COUNTER_GROUND_HIT,
371 => CS::COUNTER_AIR,
372 => CS::COUNTER_AIR_HIT,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-372 inclusive. Got: {state}"))
},
Character::Pichu => match state {
341 => CS::TJOLT_GROUND,
342 => CS::TJOLT_AIR,
343 => CS::SKULL_BASH_GROUND_STARTUP,
344 => CS::SKULL_BASH_GROUND_CHARGE,
345 => CS::SKULL_BASH_GROUND,
346 => CS::SKULL_BASH_GROUND_LANDING,
347 => CS::SKULL_BASH_GROUND_TAKEOFF,
348 => CS::SKULL_BASH_AIR_STARTUP,
349 => CS::SKULL_BASH_AIR_CHARGE,
350 => CS::SKULL_BASH_AIR,
351 => CS::SKULL_BASH_AIR_END,
352 => CS::SKULL_BASH_AIR_TAKEOFF,
353 => CS::AGILITY_GROUND_STARTUP,
354 => CS::AGILITY_GROUND,
355 => CS::AGILITY_GROUND_END,
356 => CS::AGILITY_AIR_STARTUP,
357 => CS::AGILITY_AIR,
358 => CS::AGILITY_AIR_END,
359 => CS::THUNDER_GROUND_STARTUP,
360 => CS::THUNDER_GROUND,
361 => CS::THUNDER_GROUND_HIT,
362 => CS::THUNDER_GROUND_END,
363 => CS::THUNDER_AIR_STARTUP,
364 => CS::THUNDER_AIR,
365 => CS::THUNDER_AIR_HIT,
366 => CS::THUNDER_AIR_END,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-366 inclusive. Got: {state}"))
},
Character::Ganondorf => match state {
341 => CS::SWORD_SWING_4,
342 => CS::BAT_SWING_4,
343 => CS::PARASOL_SWING_4,
344 => CS::FAN_SWING_4,
345 => CS::STAR_ROD_SWING_4,
346 => CS::LIPSTICK_SWING_4,
347 => CS::WARLOCK_PUNCH_GROUND,
348 => CS::WARLOCK_PUNCH_AIR,
349 => CS::GERUDO_DRAGON_GROUND,
350 => CS::GERUDO_DRAGON_GROUND_HIT,
351 => CS::GERUDO_DRAGON_AIR,
352 => CS::GERUDO_DRAGON_AIR_HIT,
353 => CS::DARK_DIVE_GROUND,
354 => CS::DARK_DIVE_AIR,
355 => CS::DARK_DIVE_CATCH,
356 => CS::DARK_DIVE_ENDING,
357 => CS::WIZARDS_FOOT_GROUND,
358 => CS::WIZARDS_FOOT_GROUND_ENDING_ON_GROUND,
359 => CS::WIZARDS_FOOT_AIR,
360 => CS::WIZARDS_FOOT_AIR_ENDING_ON_GROUND,
361 => CS::WIZARDS_FOOT_AIR_ENDING_IN_AIR,
362 => CS::WIZARDS_FOOT_GROUND_ENDING_IN_AIR,
363 => CS::WIZARDS_FOOT_HIT_WALL,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 347-363 inclusive. Got: {state}"))
},
Character::Popo | Character::IceClimbers | Character::Nana => match state {
341 => CS::ICE_SHOT_GROUND,
342 => CS::ICE_SHOT_AIR,
343 => CS::SQUALL_HAMMER_GROUND_SOLO,
344 => CS::SQUALL_HAMMER_GROUND_TOGETHER,
345 => CS::SQUALL_HAMMER_AIR_SOLO,
346 => CS::SQUALL_HAMMER_AIR_TOGETHER,
347 => CS::BELAY_GROUND_STARTUP,
348 => CS::BELAY_GROUND_CATAPULTING_NANA,
349 => CS::BELAY_GROUND_CATAPULTING,
350 => CS::BELAY_GROUND_FAILED_CATAPULTING,
351 => CS::BELAY_GROUND_FAILED_CATAPULTING_END,
352 => CS::BELAY_AIR_STARTUP,
353 => CS::BELAY_AIR_CATAPULTING_NANA,
354 => CS::BELAY_CATAPULTING,
355 => CS::BELAY_AIR_FAILED_CATAPULTING,
356 => CS::BELAY_AIR_FAILED_CATAPULTING_END,
357 => CS::BLIZZARD_GROUND,
358 => CS::BLIZZARD_AIR,
359 => CS::SQUALL_HAMMER_GROUND_TOGETHER,
360 => CS::SQUALL_HAMMER_AIR_TOGETHER,
361 => CS::BELAY_CATAPULT_STARTUP,
362 => CS::BELAY_GROUND_CATAPULT_END,
363 => CS::BELAY_2,
364 => CS::BELAY_3,
365 => CS::BELAY_CATAPULTING,
366 => CS::BELAY_5,
_ => return Err(anyhow!("Invalid state value for {character}. Value must be in range 341-358 inclusive. Got: {state}"))
},
Character::MasterHand |
Character::WireframeMale |
Character::WireframeFemale |
Character::GigaBowser |
Character::CrazyHand |
Character::Sandbag => return Err(anyhow!("Invalid state value for {character}. No state specific information available")),
})
}
}