slippi package

Submodules

slippi.event module

class slippi.event.EventType

Bases: slippi.util.IntEnum

Slippi events that can appear in a game’s raw data.

EVENT_PAYLOADS = 53
GAME_START = 54
FRAME_PRE = 55
FRAME_POST = 56
GAME_END = 57
FRAME_START = 58
ITEM = 59
FRAME_END = 60
class slippi.event.Start(is_teams, players, random_seed, slippi, stage, is_pal=None, is_frozen_ps=None)

Bases: slippi.util.Base

Information used to initialize the game such as the game mode, settings, characters & stage.

is_teams

True if this was a teams game

Type:bool
players

Players in this game by port (port 1 is at index 0; empty ports will contain None)

Type:tuple(Player | None)
random_seed

Random seed before the game start

Type:int
slippi

Information about the Slippi recorder that generated this replay

Type:Slippi
stage

Stage on which this game was played

Type:slippi.id.Stage
is_pal

added(1.5.0) True if this was a PAL version of Melee

Type:bool | None
is_frozen_ps

added(2.0.0) True if frozen Pokemon Stadium was enabled

Type:bool | None
class Slippi(version)

Bases: slippi.util.Base

Information about the Slippi recorder that generated this replay.

version

Slippi version number

Type:Version
class Version(major, minor, revision, build=None)

Bases: slippi.util.Base

major

type: int

minor

type: int

revision

type: int

class Player(character, type, stocks, costume, team, ucf=None, tag=None)

Bases: slippi.util.Base

character

Character selected

Type:slippi.id.CSSCharacter
type

Player type (human/cpu)

Type:Type
stocks

Starting stock count

Type:int
costume

Costume ID

Type:int
team

Team, if this was a teams game

Type:Team | None
ucf

UCF feature toggles

Type:UCF
tag

Name tag

Type:str | None
class Type

Bases: slippi.util.IntEnum

An enumeration.

HUMAN = 0
CPU = 1
class Team

Bases: slippi.util.IntEnum

An enumeration.

RED = 0
BLUE = 1
GREEN = 2
class UCF(dash_back=None, shield_drop=None)

Bases: slippi.util.Base

dash_back

UCF dashback state

Type:DashBack
shield_drop

UCF shield drop state

Type:ShieldDrop
class DashBack

Bases: slippi.util.IntEnum

An enumeration.

OFF = 0
UCF = 1
ARDUINO = 2
class ShieldDrop

Bases: slippi.util.IntEnum

An enumeration.

OFF = 0
UCF = 1
ARDUINO = 2
class slippi.event.End(method, lras_initiator=None)

Bases: slippi.util.Base

Information about the end of the game.

method

changed(2.0.0) How the game ended

Type:Method
lras_initiator

added(2.0.0) Index of player that LRAS’d, if any

Type:int | None
class Method

Bases: slippi.util.IntEnum

An enumeration.

INCONCLUSIVE = 0
TIME = 1
GAME = 2
CONCLUSIVE = 3
NO_CONTEST = 7
class slippi.event.Frame(index)

Bases: slippi.util.Base

A single frame of the game. Includes data for all characters.

index
ports

Frame data for each port (port 1 is at index 0; empty ports will contain None)

Type:tuple(Port | None)
items

added(3.0.0) Active items (includes projectiles)

Type:tuple(Item)
start

added(2.2.0) Start-of-frame data

Type:Start | None
end

added(2.2.0) End-of-frame data

Type:End | None
class Port

Bases: slippi.util.Base

Frame data for a given port. Can include two characters’ frame data (ICs).

leader

Frame data for the controlled character

Type:Data
follower

Frame data for the follower (Nana), if any

Type:Data | None
class Data

Bases: slippi.util.Base

Frame data for a given character. Includes both pre-frame and post-frame data.

pre

Pre-frame update data

Type:Pre
post

Pre-frame update data

Type:Post
class Pre(state, position, direction, joystick, cstick, triggers, buttons, random_seed, raw_analog_x=None, damage=None)

Bases: slippi.util.Base

Pre-frame update data, required to reconstruct a replay. Information is collected right before controller inputs are used to figure out the character’s next action.

state

Character’s action state

Type:slippi.id.ActionState | int
position

Character’s position

Type:Position
direction

Direction the character is facing

Type:Direction
joystick

Processed analog joystick position

Type:Position
cstick

Processed analog c-stick position

Type:Position
triggers

Trigger state

Type:Triggers
buttons

Button state

Type:Buttons
random_seed

Random seed at this point

Type:int
raw_analog_x

added(1.2.0) Raw x analog controller input (for UCF)

Type:int | None
damage

added(1.4.0) Current damage percent

Type:float | None
class Post(character, state, position, direction, damage, shield, stocks, last_attack_landed, last_hit_by, combo_count, state_age=None, flags=None, hit_stun=None, airborne=None, ground=None, jumps=None, l_cancel=None)

Bases: slippi.util.Base

Post-frame update data, for making decisions about game states (such as computing stats). Information is collected at the end of collision detection, which is the last consideration of the game engine.

character

In-game character (can only change for Zelda/Sheik). Check on first frame to determine if Zelda started as Sheik

Type:slippi.id.InGameCharacter
state

Character’s action state

Type:slippi.id.ActionState | int
position

Character’s position

Type:Position
direction

Direction the character is facing

Type:Direction
damage

Current damage percent

Type:float
shield

Current size of shield

Type:float
stocks

Number of stocks remaining

Type:int
last_attack_landed

Last attack that this character landed

Type:Attack | int | None
last_hit_by

Port of character that last hit this character

Type:int | None
combo_count

Combo count as defined by the game

Type:int
state_age

added(0.2.0) Number of frames action state has been active. Can have a fractional component for certain actions

Type:float | None
flags

added(2.0.0) State flags

Type:StateFlags | None
hit_stun

added(2.0.0) Number of hitstun frames remaining

Type:float | None
airborne

added(2.0.0) True if character is airborne

Type:bool | None
ground

added(2.0.0) ID of ground character is standing on, if any

Type:int | None
jumps

added(2.0.0) Jumps remaining

Type:int | None
l_cancel

added(2.0.0) L-cancel status, if any

Type:LCancel | None
class Item(type, state, direction, velocity, position, damage, timer, spawn_id)

Bases: slippi.util.Base

An active item (includes projectiles).

type

Item type

Type:slippi.id.Item
state

Item’s action state

Type:int
direction

Direction item is facing

Type:Direction
velocity

Item’s velocity

Type:Velocity
position

Item’s position

Type:Position
damage

Amount of damage item has taken

Type:int
timer

Frames remaining until item expires

Type:int
spawn_id

Unique ID per item spawned (0, 1, 2, …)

Type:int
class Start(random_seed)

Bases: slippi.util.Base

Start-of-frame data.

random_seed
class End

Bases: slippi.util.Base

End-of-frame data.

class Event(id, type, data)

Bases: slippi.util.Base

Temporary wrapper used while parsing frame data.

id
type
data
class Id(stream)

Bases: slippi.util.Base

frame
class PortId(stream)

Bases: slippi.event.Id

port
is_follower
class Type

Bases: slippi.util.Enum

An enumeration.

START = 'start'
END = 'end'
PRE = 'pre'
POST = 'post'
ITEM = 'item'
class slippi.event.Position(x, y)

Bases: slippi.util.Base

x
y
class slippi.event.Velocity(x, y)

Bases: slippi.util.Base

x
y
class slippi.event.Direction

Bases: slippi.util.IntEnum

An enumeration.

LEFT = -1
RIGHT = 1
class slippi.event.Attack

Bases: slippi.util.IntEnum

An enumeration.

OTHER = 1
JAB = 2
JAB_2 = 3
JAB_3 = 4
JAB_LOOP = 5
DASH_ATTACK = 6
FTILT = 7
UTILT = 8
DTILT = 9
FSMASH = 10
USMASH = 11
DSMASH = 12
NAIR = 13
FAIR = 14
BAIR = 15
UAIR = 16
DAIR = 17
NEUTRAL_B = 18
SIDE_B = 19
UP_B = 20
DOWN_B = 21
GETUP_ATTACK = 50
GETUP_ATTACK_SLOW = 51
GRAB_RELEASE = 52
FTHROW = 53
BTHROW = 54
UTHROW = 55
DTHROW = 56
LEDGE_ATTACK_SLOW = 61
LEDGE_ATTACK = 62
class slippi.event.Triggers(logical, physical_x, physical_y)

Bases: slippi.util.Base

logical

Processed analog trigger position

Type:float
physical

physical analog trigger positions (useful for APM)

Type:Physical
class Physical(l, r)

Bases: slippi.util.Base

l
r
class slippi.event.Buttons(logical, physical)

Bases: slippi.util.Base

logical

Processed button-state bitmask

Type:Logical
physical

Physical button-state bitmask

Type:Physical
class Logical

Bases: slippi.util.IntFlag

An enumeration.

TRIGGER_ANALOG = 2147483648
CSTICK_RIGHT = 8388608
CSTICK_LEFT = 4194304
CSTICK_DOWN = 2097152
CSTICK_UP = 1048576
JOYSTICK_RIGHT = 524288
JOYSTICK_LEFT = 262144
JOYSTICK_DOWN = 131072
JOYSTICK_UP = 65536
START = 4096
Y = 2048
X = 1024
B = 512
A = 256
L = 64
R = 32
Z = 16
DPAD_UP = 8
DPAD_DOWN = 4
DPAD_RIGHT = 2
DPAD_LEFT = 1
NONE = 0
class Physical

Bases: slippi.util.IntFlag

An enumeration.

START = 4096
Y = 2048
X = 1024
B = 512
A = 256
L = 64
R = 32
Z = 16
DPAD_UP = 8
DPAD_DOWN = 4
DPAD_RIGHT = 2
DPAD_LEFT = 1
NONE = 0
pressed()

Returns a list of all buttons being pressed.

class slippi.event.LCancel

Bases: slippi.util.IntEnum

An enumeration.

SUCCESS = 1
FAILURE = 2
class slippi.event.StateFlags

Bases: slippi.util.IntFlag

An enumeration.

REFLECT = 16
UNTOUCHABLE = 1024
FAST_FALL = 2048
HIT_LAG = 8192
SHIELD = 8388608
HIT_STUN = 33554432
SHIELD_TOUCH = 67108864
POWER_SHIELD = 536870912
FOLLOWER = 34359738368
SLEEP = 68719476736
DEAD = 274877906944
OFF_SCREEN = 549755813888

slippi.game module

class slippi.game.Game(input)

Bases: slippi.util.Base

Replay data from a game of Super Smash Brothers Melee.

__init__(input)

Parses Slippi replay data from input (stream or path).

start

Information about the start of the game

Type:slippi.event.Start
frames

Every frame of the game, indexed by frame number

Type:list(slippi.event.Frame)
end

Information about the end of the game

Type:slippi.event.End
metadata

Miscellaneous data not directly provided by Melee

Type:slippi.metadata.Metadata
metadata_raw

Raw JSON metadata, for debugging and forward-compatibility

Type:dict

slippi.id module

class slippi.id.ActionState

Bases: slippi.util.IntEnum

An enumeration.

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
LANDING = 42
LANDING_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
KINOKO_GIANT_START = 314
KINOKO_GIANT_START_AIR = 315
KINOKO_GIANT_END = 316
KINOKO_GIANT_END_AIR = 317
KINOKO_SMALL_START = 318
KINOKO_SMALL_START_AIR = 319
KINOKO_SMALL_END = 320
KINOKO_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
WAIT_1 = 341
WAIT_2 = 342
WAIT_3 = 343
WAIT_4 = 344
WAIT_ITEM = 345
SQUAT_WAIT_1 = 346
SQUAT_WAIT_2 = 347
SQUAT_WAIT_ITEM = 348
GUARD_DAMAGE = 349
ESCAPE_N = 350
ATTACK_S_4_HOLD = 351
HEAVY_WALK_1 = 352
HEAVY_WALK_2 = 353
ITEM_HAMMER_WAIT = 354
ITEM_HAMMER_MOVE = 355
ITEM_BLIND = 356
DAMAGE_ELEC = 357
FURA_SLEEP_START = 358
FURA_SLEEP_LOOP = 359
FURA_SLEEP_END = 360
WALL_DAMAGE = 361
CLIFF_WAIT_1 = 362
CLIFF_WAIT_2 = 363
SLIP_DOWN = 364
SLIP = 365
SLIP_TURN = 366
SLIP_DASH = 367
SLIP_WAIT = 368
SLIP_STAND = 369
SLIP_ATTACK = 370
SLIP_ESCAPE_F = 371
SLIP_ESCAPE_B = 372
APPEAL_S = 373
ZITABATA = 374
CAPTURE_KOOPA_HIT = 375
THROWN_KOOPA_END_F = 376
THROWN_KOOPA_END_B = 377
CAPTURE_KOOPA_AIR_HIT = 378
THROWN_KOOPA_AIR_END_F = 379
THROWN_KOOPA_AIR_END_B = 380
THROWN_KIRBY_DRINK_S_SHOT = 381
THROWN_KIRBY_SPIT_S_SHOT = 382
class slippi.id.CSSCharacter

Bases: slippi.util.IntEnum

An enumeration.

CAPTAIN_FALCON = 0
DONKEY_KONG = 1
FOX = 2
GAME_AND_WATCH = 3
KIRBY = 4
BOWSER = 5
LUIGI = 7
MARIO = 8
MARTH = 9
MEWTWO = 10
NESS = 11
PEACH = 12
PIKACHU = 13
ICE_CLIMBERS = 14
JIGGLYPUFF = 15
SAMUS = 16
YOSHI = 17
ZELDA = 18
SHEIK = 19
FALCO = 20
DR_MARIO = 22
ROY = 23
PICHU = 24
GANONDORF = 25
MASTER_HAND = 26
WIREFRAME_MALE = 27
WIREFRAME_FEMALE = 28
GIGA_BOWSER = 29
CRAZY_HAND = 30
SANDBAG = 31
POPO = 32
from_internal_id = <bound method CSSCharacter.from_internal_id of <enum 'CSSCharacter'>>
class slippi.id.InGameCharacter

Bases: slippi.util.IntEnum

An enumeration.

MARIO = 0
FOX = 1
CAPTAIN_FALCON = 2
DONKEY_KONG = 3
KIRBY = 4
BOWSER = 5
SHEIK = 7
NESS = 8
PEACH = 9
POPO = 10
NANA = 11
PIKACHU = 12
SAMUS = 13
YOSHI = 14
JIGGLYPUFF = 15
MEWTWO = 16
LUIGI = 17
MARTH = 18
ZELDA = 19
DR_MARIO = 21
FALCO = 22
PICHU = 23
GAME_AND_WATCH = 24
GANONDORF = 25
ROY = 26
MASTER_HAND = 27
CRAZY_HAND = 28
WIREFRAME_MALE = 29
WIREFRAME_FEMALE = 30
GIGA_BOWSER = 31
SANDBAG = 32
class slippi.id.Stage

Bases: slippi.util.IntEnum

An enumeration.

FOUNTAIN_OF_DREAMS = 2
POKEMON_STADIUM = 3
PRINCESS_PEACHS_CASTLE = 4
KONGO_JUNGLE = 5
BRINSTAR = 6
CORNERIA = 7
YOSHIS_STORY = 8
ONETT = 9
MUTE_CITY = 10
RAINBOW_CRUISE = 11
JUNGLE_JAPES = 12
GREAT_BAY = 13
HYRULE_TEMPLE = 14
BRINSTAR_DEPTHS = 15
YOSHIS_ISLAND = 16
GREEN_GREENS = 17
FOURSIDE = 18
MUSHROOM_KINGDOM_I = 19
MUSHROOM_KINGDOM_II = 20
VENOM = 22
POKE_FLOATS = 23
BIG_BLUE = 24
ICICLE_MOUNTAIN = 25
ICETOP = 26
FLAT_ZONE = 27
DREAM_LAND_N64 = 28
YOSHIS_ISLAND_N64 = 29
KONGO_JUNGLE_N64 = 30
BATTLEFIELD = 31
FINAL_DESTINATION = 32
class slippi.id.Item

Bases: slippi.util.IntEnum

An enumeration.

CAPSULE = 0
BOX = 1
BARREL = 2
EGG = 3
PARTY_BALL = 4
BARREL_CANNON = 5
BOB_OMB = 6
MR_SATURN = 7
HEART_CONTAINER = 8
MAXIM_TOMATO = 9
STARMAN = 10
HOME_RUN_BAT = 11
BEAM_SWORD = 12
PARASOL = 13
GREEN_SHELL_1 = 14
RED_SHELL_1 = 15
RAY_GUN = 16
FREEZIE = 17
FOOD = 18
PROXIMITY_MINE = 19
FLIPPER = 20
SUPER_SCOPE = 21
STAR_ROD = 22
LIP_STICK = 23
FAN = 24
FIRE_FLOWER = 25
SUPER_MUSHROOM = 26
WARP_STAR = 29
SCREW_ATTACK = 30
BUNNY_HOOD = 31
METAL_BOX = 32
CLOAKING_DEVICE = 33
POKE_BALL = 34
RAY_GUN_RECOIL_EFFECT = 35
STAR_ROD_STAR = 36
LIP_STICK_DUST = 37
SUPER_SCOPE_BEAM = 38
RAY_GUN_BEAM = 39
HAMMER_HEAD = 40
FLOWER = 41
YOSHI_EGG_1 = 42
GOOMBA = 43
REDEAD = 44
OCTAROK = 45
OTTOSEA = 46
STONE = 47
MARIO_FIRE = 48
DR_MARIO_PILL = 49
KIRBY_CUTTER_BEAM = 50
KIRBY_HAMMER = 51
FOX_LASER = 54
FALCO_LASER = 55
FOX_SHADOW = 56
FALCO_SHADOW = 57
NESS_PK_FIRE = 66
NESS_PK_FLASH_1 = 67
NESS_PK_FLASH_2 = 68
NESS_PK_THUNDER_1 = 69
NESS_PK_THUNDER_2 = 70
NESS_PK_THUNDER_3 = 71
NESS_PK_THUNDER_4 = 72
NESS_PK_THUNDER_5 = 73
FOX_BLASTER = 74
FALCO_BLASTER = 75
NESS_PK_FLASH_3 = 78
SHEIK_NEEDLE_1 = 79
SHEIK_NEEDLE_2 = 80
PIKACHU_THUNDER_1 = 81
PICHU_THUNDER_1 = 82
MARIO_CAPE = 83
DR_MARIO_CAPE = 84
SHEIK_SMOKE = 85
YOSHI_EGG_2 = 86
YOSHI_TONGUE_1 = 87
YOSHI_STAR = 88
PIKACHU_THUNDER_2 = 89
PIKACHU_THUNDER_3 = 90
PICHU_THUNDER_2 = 91
PICHU_THUNDER_3 = 92
SAMUS_BOMB = 93
SAMUS_CHARGESHOT = 94
SAMUS_MISSILE = 95
SAMUS_GRAPPLE_BEAM = 96
SHEIK_CHAIN = 97
PEACH_TURNIP = 99
BOWSER_FLAME = 100
NESS_BAT = 101
NESS_YOYO = 102
PEACH_PARASOL = 103
PEACH_TOAD = 104
LUIGI_FIRE = 105
ICE_CLIMBERS_ICE = 106
ICE_CLIMBERS_BLIZZARD = 107
ZELDA_FIRE_1 = 108
ZELDA_FIRE_2 = 109
PEACH_TOAD_SPORE = 111
MEWTWO_SHADOWBALL = 112
ICE_CLIMBERS_UP_B = 113
GAME_AND_WATCH_PESTICIDE = 114
GAME_AND_WATCH_MANHOLE = 115
GAME_AND_WATCH_FIRE = 116
GAME_AND_WATCH_PARACHUTE = 117
GAME_AND_WATCH_TURTLE = 118
GAME_AND_WATCH_SPERKY = 119
GAME_AND_WATCH_JUDGE = 120
GAME_AND_WATCH_SAUSAGE = 122
GAME_AND_WATCH_MILK = 123
GAME_AND_WATCH_FIREFIGHTER = 124
MASTER_HAND_LASER = 125
MASTER_HAND_BULLET = 126
CRAZY_HAND_LASER = 127
CRAZY_HAND_BULLET = 128
CRAZY_HAND_BOMB = 129
KIRBY_COPY_MARIO_FIRE = 130
KIRBY_COPY_DR_MARIO_PILL = 131
KIRBY_COPY_LUIGI_FIRE = 132
KIRBY_COPY_ICE_CLIMBERS_ICE = 133
KIRBY_COPY_PEACH_TOAD = 134
KIRBY_COPY_TOAD_SPORE = 135
KIRBY_COPY_FOX_LASER = 136
KIRBY_COPY_FALCO_LASER = 137
KIRBY_COPY_FOX_BLASTER = 138
KIRBY_COPY_FALCO_BLASTER = 139
KIRBY_COPY_MEWTWO_SHADOWBALL = 144
KIRBY_COPY_PK_FLASH = 145
KIRBY_COPY_PK_FLASH_EXPLOSION = 146
KIRBY_COPY_PIKACHU_THUNDER_1 = 147
KIRBY_COPY_PIKACHU_THUNDER_2 = 148
KIRBY_COPY_PICHU_THUNDER_1 = 149
KIRBY_COPY_PICHU_THUNDER_2 = 150
KIRBY_COPY_SAMUS_CHARGESHOT = 151
KIRBY_COPY_SHEIK_NEEDLE_1 = 152
KIRBY_COPY_SHEIK_NEEDLE_2 = 153
KIRBY_COPY_BOWSER_FLAME = 154
KIRBY_COPY_GAME_AND_WATCH_SAUSAGE = 155
YOSHI_TONGUE_2 = 157
MARIO_LUIGI_COIN = 159
RANDOM_POKEMON = 160
GOLDEEN = 161
CHICORITA = 162
SNORLAX = 163
BLASTOISE = 164
WEEZING = 165
CHARIZARD = 166
MOLTRES = 167
ZAPDOS = 168
ARTICUNO = 169
WOBBUFFET = 170
SCIZOR = 171
UNOWN = 172
ENTEI = 173
RAIKOU = 174
SUICUNE = 175
BELLOSSOM = 176
ELECTRODE = 177
LUGIA = 178
HO_OH = 179
DITTO = 180
CLEFAIRY = 181
TOGEPI = 182
MEW = 183
CELEBI = 184
STARYU = 185
CHANSEY = 186
PORYGON = 187
CYNDAQUIL = 188
MARILL = 189
VENUSAUR = 190
CHICORITA_LEAF = 191
BLASTOISE_WATER = 192
WEEZING_GAS_1 = 193
WEEZING_GAS_2 = 194
CHARIZARD_BREATH_1 = 195
CHARIZARD_BREATH_2 = 196
CHARIZARD_BREATH_3 = 197
CHARIZARD_BREATH_4 = 198
MINI_UNOWNS = 199
LUGIA_AEROBLAST_1 = 200
LUGIA_AEROBLAST_2 = 201
LUGIA_AEROBLAST_3 = 202
HO_OH_FLAME = 203
STARYU_STAR = 204
HEALING_EGG = 205
CYNDAQUIL_FIRE = 206
OLD_GOOMBA = 208
TARGET = 209
SHYGUY = 210
KOOPA_1 = 211
KOOPA_2 = 212
LIKE_LIKE = 213
OLD_OTTOSEA = 216
WHITE_BEAR = 217
KLAP = 218
GREEN_SHELL_2 = 219
RED_SHELL_2 = 220
TINGLE = 221
APPLE = 225
HEALING_APPLE = 226
TOOL = 230
BIRDO = 233
ARWING_LASER = 234
GREAT_FOX_LASER = 235
BIRDO_EGG = 236

slippi.metadata module

class slippi.metadata.Metadata(date, duration, platform, players, console_name=None)

Bases: slippi.util.Base

Miscellaneous data not directly provided by Melee.

date

Game start date & time

Type:datetime
duration

Duration of game, in frames

Type:int
platform

Platform the game was played on (console/dolphin)

Type:Platform
players

Player metadata by port (port 1 is at index 0; empty ports will contain None)

Type:tuple(Player | None)
console_name

Name of the console the game was played on, if any

Type:str | None
class Player(characters, netplay=None)

Bases: slippi.util.Base

characters

Character(s) used, with usage duration in frames (for Zelda/Sheik)

Type:dict(slippi.id.InGameCharacter, int)
netplay

Netplay info (Dolphin-only)

Type:Netplay | None
class Netplay(code, name)

Bases: slippi.util.Base

code

Netplay code (e.g. “ABCD#123”)

Type:str
name

Netplay nickname

Type:str
class Platform

Bases: slippi.util.Enum

An enumeration.

CONSOLE = 'console'
DOLPHIN = 'dolphin'
NETWORK = 'network'
NINTENDONT = 'nintendont'

slippi.parse module

class slippi.parse.ParseEvent

Bases: slippi.util.Enum

Parser events, used as keys for event handlers. Docstrings indicate the type of object that will be passed to each handler.

METADATA = 'metadata'

type: slippi.metadata.Metadata

METADATA_RAW = 'metadata_raw'

type: dict

START = 'start'

type: Start

FRAME = 'frame'

type: Frame

END = 'end'

type: End

FRAME_START = 'frame_start'

type: Frame.Start

ITEM = 'item'

type: Frame.Item

FRAME_END = 'frame_end'

type: Frame.End

exception slippi.parse.ParseError(message, name=None, pos=None)

Bases: OSError

slippi.parse.parse(input, handlers)

Parses Slippi replay data from input (stream or path).

handlers should be a dict of slippi.event.ParseEvent keys to handler functions. Each event will be passed to the corresponding handler as it occurs.

slippi.util module

slippi.util.try_enum(enum, val)
slippi.util.unpack(fmt, stream)
slippi.util.expect_bytes(expected_bytes, stream)
class slippi.util.Base

Bases: object

class slippi.util.Enum

Bases: enum.Enum

An enumeration.

class slippi.util.IntEnum

Bases: enum.IntEnum

An enumeration.

class slippi.util.IntFlag

Bases: enum.IntFlag

An enumeration.

exception slippi.util.EOFError

Bases: OSError

Module contents