Files
dockipelago/worlds/cvlod/data/enums.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

823 lines
26 KiB
Python

from enum import IntEnum, IntFlag, StrEnum
class Players(IntEnum):
REINHARDT = 0
CARRIE = 1
CORNELL = 2
HENRY = 3
class Costumes(IntEnum):
NORMAL = 0
ALTERNATE = 1
class StageIDs(IntEnum):
FOGGY = 0
FOREST = 1
C_WALL = 2
VILLA = 3
OUTER = 4
TUNNEL = 5
WATERWAY = 6
CENTER = 7
ART = 8
RUINS = 9
SCIENCE = 10
DUEL = 11
EXECUTION = 12
SORCERY = 13
ROOM = 14
CLOCK = 15
KEEP = 16
class StageNames(StrEnum):
FOGGY = "Foggy Lake"
FOREST = "Forest of Silence"
C_WALL = "Castle Wall"
VILLA = "Villa"
TUNNEL = "Tunnel"
WATERWAY = "Underground Waterway"
OUTER = "The Outer Wall"
ART = "Art Tower"
RUINS = "Tower of Ruins"
CENTER = "Castle Center"
SCIENCE = "Tower of Science"
DUEL = "Duel Tower"
EXECUTION = "Tower of Execution"
SORCERY = "Tower of Sorcery"
ROOM = "Room of Clocks"
CLOCK = "Clock Tower"
KEEP = "Castle Keep"
class Items(IntEnum):
WHITE_JEWEL = 0x01
RED_JEWEL_S = 0x02
RED_JEWEL_L = 0x03
SPECIAL1 = 0x04
SPECIAL2 = 0x05
SPECIAL3 = 0x06 # The AP Item in this implementation. All 3 Specials are unused CV64 leftovers in the normal game.
ROAST_CHICKEN = 0x07
ROAST_BEEF = 0x08
HEALING_KIT = 0x09
PURIFYING = 0x0A
CURE_AMPOULE = 0x0B
POWERUP = 0x0C
KNIFE = 0x0D
HOLY_WATER = 0x0E
CROSS = 0x0F
AXE = 0x10
THE_CONTRACT = 0x11
MAGICAL_NITRO = 0x12
MANDRAGORA = 0x13
SUN_CARD = 0x14
MOON_CARD = 0x15
WINCH_LEVER = 0x16
OLDREYS_DIARY = 0x17 # Unused in the regular game. Used as a fountain code item in this implementation.
CREST_HALF_A = 0x18
CREST_HALF_B = 0x19
ROSE_BROOCH = 0x1A
ARCHIVES_KEY = 0x1B
LEFT_TOWER_KEY = 0x1C
STOREROOM_KEY = 0x1D
GARDEN_KEY = 0x1E
COPPER_KEY = 0x1F
CHAMBER_KEY = 0x20
EXECUTION_KEY = 0x21 # Unused CV64 leftover in the regular game. Will probably be the Ice Trap in this.
DECK_KEY = 0x22
ROSE_GARDEN_KEY = 0x23
THORN_KEY = 0x24
CLOCKTOWER_KEY_C = 0x25
CLOCKTOWER_KEY_D = 0x26
ART_TOWER_KEY_1 = 0x27
ART_TOWER_KEY_2 = 0x28
CONTROL_ROOM_KEY = 0x29
WALL_KEY = 0x2A
CLOCKTOWER_KEY_E = 0x2B
CLOCKTOWER_KEY_A = 0x2C
CLOCKTOWER_KEY_B = 0x2D
FIVE_HUNDRED_GOLD = 0x2E
THREE_HUNDRED_GOLD = 0x2F
ONE_HUNDRED_GOLD = 0x30
# The pickup actor IDs sometimes differ from the regular item IDs. So they all have to be defined separately.
class Pickups(IntEnum):
WHITE_JEWEL = 0x01
RED_JEWEL_S = 0x02
RED_JEWEL_L = 0x03
SPECIAL1 = 0x04
SPECIAL2 = 0x05
SPECIAL3 = 0x06
ROAST_CHICKEN = 0x07
ROAST_BEEF = 0x08
HEALING_KIT = 0x09
PURIFYING = 0x0A
CURE_AMPOULE = 0x0B
POWERUP = 0x0C
HOLY_WATER = 0x0D
CROSS = 0x0E
AXE = 0x0F
KNIFE = 0x10
THE_CONTRACT = 0x11
MAGICAL_NITRO = 0x12
MANDRAGORA = 0x13
SUN_CARD = 0x14
MOON_CARD = 0x15
WINCH_LEVER = 0x16
OLDREYS_DIARY = 0x17
CREST_HALF_A = 0x18
CREST_HALF_B = 0x19
ROSE_BROOCH = 0x1A
FIVE_HUNDRED_GOLD = 0x1B
THREE_HUNDRED_GOLD = 0x1C
ONE_HUNDRED_GOLD = 0x1D
ARCHIVES_KEY = 0x1E
LEFT_TOWER_KEY = 0x1F
STOREROOM_KEY = 0x20
GARDEN_KEY = 0x21
COPPER_KEY = 0x22
CHAMBER_KEY = 0x23
EXECUTION_KEY = 0x24
DECK_KEY = 0x25
ROSE_GARDEN_KEY = 0x26
THORN_KEY = 0x27
CLOCKTOWER_KEY_C = 0x28
CLOCKTOWER_KEY_D = 0x29
ART_TOWER_KEY_1 = 0x2A
ART_TOWER_KEY_2 = 0x2B
CONTROL_ROOM_KEY = 0x2C
WALL_KEY = 0x2D
CLOCKTOWER_KEY_E = 0x2E
CLOCKTOWER_KEY_A = 0x2F
CLOCKTOWER_KEY_B = 0x30
class ActorSpawnFlags(IntFlag):
SPAWN_ONLY_ONCE = 0x0001
SPAWN_EVERY_OTHER_TIME = 0x0002
ENEMY_GENERATOR_MAX_CAPPED = 0x0004
EXTRA_CHECK_FUNC_ENABLED = 0x0008
SET_FLAG_ON_SPAWN = 0x0010
SPAWN_IF_FLAG_SET = 0x0020
CLEAR_FLAG_ON_SPAWN = 0x0040
SPAWN_IF_FLAG_CLEARED = 0x0080
EASY = 0x0100
NORMAL = 0x0200
HARD = 0x0400
REINHARDT = 0x0800
CARRIE = 0x1000
CORNELL = 0x2000
HENRY = 0x4000
END_OF_LIST = 0x8000
REINHARDT_AND_CARRIE = REINHARDT | CARRIE
ALL_CHARACTERS = REINHARDT | CARRIE | CORNELL | HENRY
ALL_DIFFICULTIES = EASY | NORMAL | HARD
class PickupFlags(IntFlag):
EXPIRE = 0x0001
NO_SHINE = 0x0400
INVISIBLE = 0x0800
GRAVITY = 0x4000
HIDDEN = NO_SHINE | INVISIBLE
class DoorFlags(IntFlag):
LOCK_ALWAYS = 0x0001 # Can be unlocked if it has a disregard flag set on it and its event flag is set.
LOCK_DURING_DAYTIME = 0x0010
LOCK_DURING_NIGHTTIME = 0x0020
LOCK_FROM_FRONT_SIDE = 0x0040
LOCK_FROM_BACK_SIDE = 0x0080
ITEM_COST_IF_FLAG_UNSET = 0x0100
EXTRA_CHECK_FUNC_ENABLED = 0x0200 # NOTE: The extra check is NOT disregarded if the disregard flags are satisfied.
DISREGARD_IF_FLAG_SET = 0x1000
DISREGARD_IF_FLAG_UNSET = 0x2000 # Only used on Foggy Lake's cargo door, which normally locks after opening it.
UNLOCK_AND_SET_FLAG = 0x4000
UNLOCK_AND_UNSET_FLAG = 0x8000 # Completely unused normally.
LOCKED_BY_KEY = ITEM_COST_IF_FLAG_UNSET | DISREGARD_IF_FLAG_SET | UNLOCK_AND_SET_FLAG
class Scenes(IntEnum):
FOREST_OF_SILENCE = 0x00
CASTLE_WALL_TOWERS = 0x01
CASTLE_WALL_MAIN = 0x02
VILLA_FRONT_YARD = 0x03
VILLA_FOYER = 0x04
VILLA_LIVING_AREA = 0x05
VILLA_MAZE = 0x06
TUNNEL = 0x07
WATERWAY = 0x08
CASTLE_CENTER_BASEMENT = 0x09
CASTLE_CENTER_BOTTOM_ELEV = 0x0A
CASTLE_CENTER_FACTORY = 0x0B
CASTLE_CENTER_LIZARD_LAB = 0x0C
CASTLE_CENTER_LIBRARY = 0x0D
CASTLE_CENTER_INVENTIONS = 0x0E
CASTLE_CENTER_TOP_ELEV = 0x0F
FOGGY_LAKE_ABOVE_DECKS = 0x10
FOGGY_LAKE_BELOW_DECKS = 0x11
FOGGY_LAKE_PIER = 0x12
ALGENIE_MEDUSA_ARENA = 0x13
CASTLE_KEEP_EXTERIOR = 0x14
CASTLE_KEEP_DRAC_CHAMBER = 0x15
ENDING_DUMMY = 0x16
CLOCK_TOWER_GEAR_CLIMB = 0x17
CASTLE_KEEP_DESERT = 0x18
FAN_MEETING_ROOM = 0x19
VILLA_CRYPT = 0x1A
ROOM_OF_CLOCKS = 0x1B
REINHARDT_CARRIE_ENDINGS = 0x1C
TOWER_OF_SORCERY = 0x1D
EXECUTION_MAIN = 0x1E
EXECUTION_SIDE_ROOMS_1 = 0x1F
EXECUTION_SIDE_ROOMS_2 = 0x20
SCIENCE_CONVEYORS = 0x21
SCIENCE_LABS = 0x22
RUINS_DOOR_MAZE = 0x23
RUINS_DARK_CHAMBERS = 0x24
ART_TOWER_MUSEUM = 0x25
ART_TOWER_CONSERVATORY = 0x26
DUEL_TOWER = 0x27
CLOCK_TOWER_ABYSS = 0x28
CLOCK_TOWER_FACE = 0x29
THE_OUTER_WALL = 0x2A
CORNELL_INTRO_VILLAGE = 0x2B
INTRO_NARRATION = 0x2C
CORNELL_ENDING_FOREST = 0x2D
CASTLE_KEEP_VOID = 0x2E
EMPTY_1 = 0x2F # Between the Castle Keep Void and Test Grid map IDs are these two with no associated data at all.
EMPTY_2 = 0x30
TEST_GRID = 0x31 # Unused test map.
NULL = 0xFF
class ObjectExecutionFlags(IntFlag):
MOVE_WITH_COLLISION = 0x01
ENABLE_COLLISION = 0x02
TLB_MAP_OVERLAY = 0x04
UNKNOWN = 0x08
DESTROY = 0x10
class Objects(IntEnum):
GAME_STATE_MGR = 0x01
DMAMGR = 0x04
TEST_GRID_SPAWN_ENABLER = 0x06
GAMEPLAY_MGR = 0x07
PLAYER_LOADER = 0x08
MAP_SETUP = 0x09
GAMENOTE_DELETE = 0x0B
OPENING = 0x0E
TITLE_SCREEN = 0x0F
TITLE_DEMO = 0x10
GAME_OVER = 0x15
CUTSCENE_MGR = 0x16
CUTSCENE_TRIGGER = 0x17
CASTLE_WALL_LEVER_AND_VILLA_TOP_FOUNTAIN_TEXT_SPOT = 0x18
NITRO_MANDRAGORA_DISPLAY_SPOT = 0x19
CASTLE_CENTER_TAKE_MANDRAGORA_TEXT_SPOT = 0x1A
CASTLE_CENTER_TAKE_NITRO_TEXT_SPOT = 0x1B
CASTLE_CENTER_HAZARD_DISPOSAL_TEXT_SPOT = 0x1C
CASTLE_CENTER_CRACKED_WALL_TEXT_SPOT = 0x1D
CASTLE_CENTER_ELEVATOR_SWITCH_TEXT_SPOT = 0x1E
VILLA_6AM_ROSE_PATCH_MSG = 0x1F
VILLA_FOUNTAIN_TOP_SHINE_MSG = 0x20
VILLA_FOUNTAIN_PUZZLE_MGR = 0x22
CASTLE_WALL_MISSING_LEVER_MSG = 0x23
CHILD_HENRY_END_ZONE = 0x25
CASTLE_CENTER_LIBRARY_PUZZLE_TEXT_SPOT = 0x26
INTERACTABLE = 0x27
CAMERA_MGR = 0x88
PLAYER_CAMERA_CONTROLLER = 0x89
LIGHT_MGR = 0x8A
POINT_LIGHT = 0x8C
PLAYER_REINHARDT = 0x8D
PLAYER_CARRIE = 0x90
PLAYER_CORNELL = 0x93
CORNELL_TRANSFORM_MGR = 0x95
PLAYER_HENRY = 0x96
TARGETING_RETICLE = 0xA2
SUBWEAPON_KNIFE = 0xA3
SUBWEAPON_HOLY_WATER = 0xA4
SUBWEAPON_CROSS = 0xA5
SUBWEAPON_AXE = 0xA6
NITRO_EXPLOSION = 0xA8
ENEMY_BAT = 0xA9
ENEMY_BONE_PILLAR = 0xAA
ENEMY_SPIDER_WOMAN = 0xAC
VAMPIRE_SPAWNER = 0xAD
ENEMY_VAMPIRE_MALE = 0xAE
NPC_ENEMY_VINCENT = 0xAF
ENEMY_VAMPIRE_MAID = 0xB0
ENEMY_VAMPIRE_BUTLER = 0xB1
ENEMY_VAMPIRE_FEMALE = 0xB2
ENEMY_WERE_JAGUAR_AND_BULL = 0xB3
ENEMY_MEDUSA_HEAD = 0xB5
ENEMY_WERE_TIGER = 0xB6
ENEMY_DEATH = 0xB7
ENEMY_DEATH_SCYTHE = 0xB9
ENEMY_DRACULA = 0xBB
ENEMY_DRACULA_FIRE_BAT = 0xBD
DRACULA_FIGHT_MGR = 0xBE
ENEMY_MALUS_DRACULA = 0xC0
ENEMY_MALUS_DRACULA_FIREBALL = 0xC1
NPC_MALUS_CUTSCENE = 0xC3
NPC_HORSE = 0xC4
NPC_RENON = 0xC5
ENEMY_DEMON_RENON = 0xC6
ENEMY_DEMON_RENON_FIREBALL = 0xC7
ENEMY_DEATH_AND_RENON_FISH = 0xC8
ENEMY_ROSA = 0xC9
ENEMY_CAMILLA = 0xCA
ENEMY_BEHEMOTH = 0xCB
ENEMY_WHITE_DRAGON = 0xCC
ENEMY_CERBERUS = 0xCE
ENEMY_GARDENER = 0xCF
ENEMY_STONE_DOG = 0xD0
NPC_MALUS = 0xD1
ENEMY_ACTRISE = 0xD2
ENEMY_CENTIPEDE_DRACULA = 0xD4
ENEMY_HARPY = 0xD5
ENEMY_MEDUSA = 0xD6
ENEMY_CHIMERA_ORTEGA = 0xD7
ENEMY_SEA_MONSTER = 0xD8
ENEMY_QUEEN_ALGENIE = 0xD9
ENEMY_QUEEN_ALGENIE_ABDOMEN = 0xDA
ENEMY_DRACULA_ULTIMATE = 0xDB
ENEMY_GIANT_WEREWOLF = 0xDC
ENEMY_HELL_KNIGHT = 0xDD
ENEMY_GHOST = 0xDE
ENEMY_MUD_MAN = 0xDF
ENEMY_FLYING_SKULL = 0xE3
ENEMY_SKELETON_WARRIOR = 0xE4
ENEMY_SNAKE = 0xE5
ENEMY_GLASS_KNIGHT = 0xE6
ENEMY_MOTORCYCLE_SKELETON = 0xE7
ENEMY_LIZARD_MAN = 0xE8
ENEMY_KING_SKELETON = 0xE9
ENEMY_MERMAN = 0xEA
ENEMY_SLIME = 0xEB
NPC_FERRYMAN = 0xEC
NPC_ORTEGA = 0xED
ENEMY_ZOMBIE = 0xEE
ENEMY_WEREWOLF = 0xEF
ENEMY_FLEA_MAN = 0xF0
NPC_CHILD_HENRY = 0xF2
ENEMY_GILLES_DE_RAIS = 0xF3
ENEMY_JA_OLDREY_VAMPIRE = 0xF4
NPC_JA_OLDREY_HUMAN = 0xF5
NPC_ADA = 0xF6
NPC_MARY = 0xF7
NPC_INTRO_GIRL = 0xF8
NPC_SEA_MONSTER_ARM = 0xF9
NPC_BOAT = 0xFA
NPC_GILLES_DE_RAIS_INTRO = 0xFB
NPC_WOLF_CORNELL = 0xFC
ENEMY_GENERATOR_1 = 0x102
ENEMY_GENERATOR_2 = 0x103
ENEMY_GENERATOR_3 = 0x104
ENEMY_GENERATOR_PILLAR = 0x105
EFFECT_MGR = 0x106
EFFECT_FLAME_EMBERS = 0x112
EFFECT_SMALL_SLOW_BURST = 0x113
EFFECT_SMALL_FAST_BURST_1 = 0x114
EFFECT_SMALL_FAST_BURST_2 = 0x115
EFFECT_SMALL_FAST_BURST_3 = 0x116
EFFECT_SMALL_FAST_BURST_4 = 0x117
EFFECT_ELECTRICITY_1 = 0x118
EFFECT_ELECTRICITY_2 = 0x119
EFFECT_ELECTRICITY_3 = 0x11A
EFFECT_LARGE_SLOW_BURST = 0x11B
EFFECT_LARGE_FAST_BURST = 0x11C
EFFECT_FLOOR_LIGHT = 0x11D
EFFECT_FIREBALL_NO_EMBERS = 0x11E
EFFECT_FIREBALL_WITH_EMBERS = 0x11F
EFFECT_EXPANDING_LIGHT_WALL = 0x120
EFFECT_FADING_RING = 0x121
EFFECT_IMPACT_SHOCKWAVE = 0x122
EFFECT_FLAME_LIGHT_RING = 0x123
EFFECT_LONG_SHADOW = 0x124
EFFECT_FLICKERING_RING = 0x125
EFFECT_EMPTY = 0x126
CORNELL_SHOCKWAVE = 0x127
ENEMY_ALGENIE_SMALL_SPIDER = 0x164
ENEMY_DRACULA_ULTIMATE_FISH = 0x175
POURING_LAVA = 0x17E
ERUPTING_FLAME = 0x17F
ELECTRIC_DIAMONDS = 0x181
GAMEPLAY_MENU_MGR = 0x185
TEXTBOX_WINDOW = 0x186
HUD = 0x187
FILE_SELECT = 0x189
PAUSE_MENU_COMMON = 0x18A
PAUSE_MENU_ITEMS = 0x18B
MENU_SCROLL = 0x18D
TITLE_GRAPHICS = 0x190
FILE_SELECT_CONTROLLER = 0x194
CHARACTER_SELECT = 0x196
STAGE_NAME_DISPLAY = 0x19F
HENRY_DAYS_TRACKER = 0x1A2
TEXTBOX = 0x1A7
TEXTBOX_SELECT_ARROW = 0x1A8
RENONS_SHOP = 0x1A9
MAP_GENERAL_MGR = 0x1AB
MAP_GRID_MGR = 0x1AD
ACTOR_CREATOR = 0x1AE
LOADING_ZONE = 0x1AF
TELEPORT_JEWEL = 0x1B0
ENVIRONMENT_SOUND_MGR = 0x1B2
ROOM = 0x1B3
SCENE_DECORATION_1 = 0x1B6
SCENE_DECORATION_2 = 0x1B7
DOOR = 0x1B8
SLIDING_BARRIER = 0x1B9
CRUMBLING_FLOOR = 0x1BA
FLIPPING_PLATFORM = 0x1BC
SINKING_PLATFORM = 0x1BD
HORIZONTAL_SPINNING_BAR = 0x1BE
SPIKE_CRUSHER = 0x1BF
REPELLER_POINT = 0x1C0
ELEVATOR = 0x1C2
PARTICLE_EMITTER = 0x1C3
MOVING_PLATFORM = 0x1C4
SWINGING_SCYTHE = 0x1C5
SCYTHES_SOUND_PLAYER = 0x1C6
CUTTER_TRAP = 0x1C7
CUTTER_TRAPS_SOUND_PLAYER = 0x1C8
GUILLOTINE = 0x1C9
LIQUID = 0x1CA
WINDOW_RAIN = 0x1CB
SOUND_RANGE = 0x1CC
FLOOR_SWITCH = 0x1CD
STORM_LIGHTNING_FLASHER = 0x1CE
HAZARDOUS_MATERIALS_DISPOSAL = 0x1D1
INTERIOR_SKY = 0x1D2
SKYBOX = 0x1D3
LEVER = 0x1D4
SCENE_DECORATION_3 = 0x1D5
SCENE_DECORATION_4 = 0x1D7
SCENE_DECORATION_5 = 0x1D8
ONE_HIT_BREAKABLE = 0x1D9
THREE_HIT_BREAKABLE = 0x1DA
FOREST_END_DRAWBRIDGE = 0x1DB
FOREST_END_PORTCULLIS = 0x1DC
FOREST_CHARNEL_COFFIN_LID = 0x1DD
FOREST_GATE_SEAL = 0x1DE
FOREST_UNCARVED_STATUE = 0x1DF
FOREST_UNDERGROUND_PILLAR = 0x1E0
FOREST_BREAKABLE_WALL = 0x1E1
FOREST_LIGHTNING_TREE = 0x1E2
FOREST_WEREWOLF_PIT_EXIT_LEDGE = 0x1E3
FOREST_ELEVATING_BRIDGE_PIECE = 0x1E4
FOREST_LIGHTNING_BOLT = 0x1E5
CASTLE_WALL_TOWERS_FLIPPING_STAIRS = 0x1E6
CASTLE_WALL_TOWERS_PLATFORMS_MGR = 0x1E7
CASTLE_WALL_MAIN_GEAR = 0x1E8
CASTLE_WALL_MAIN_DRAWBRIDGE = 0x1E9
CASTLE_WALL_MAIN_BACKGROUND_CASTLE_SPAWNER = 0x1EA
CASTLE_WALL_MAIN_BACKGROUND_CASTLE = 0x1EB
VILLA_FRONT_YARD_FOUNTAIN_SHINE = 0x1ED
VILLA_FRONT_YARD_PUZZLE_TEXT_SPOT = 0x1EE
VILLA_FOYER_ROSES = 0x1EF
VILLA_FOYER_6AM_ROSE_PATCH = 0x1F0
VILLA_FOYER_MOON = 0x1F3
VILLA_LIVING_AREA_WINDOW_CURTAIN = 0x1F4
VILLA_LIVING_AREA_DINING_TABLE = 0x1F5
VILLA_LIVING_AREA_MIRROR = 0x1F6
VILLA_LIVING_AREA_DINING_FALLING_ROSE = 0x1F7
VILLA_LIVING_AREA_DINING_ROSE_VASE = 0x1F9
VILLA_LIVING_AREA_MOON = 0x1FB
VILLA_LIVING_AREA_DIARY = 0x1FC
VILLA_MAZE_CREST_SPOT = 0x1FD
TUNNEL_GONDOLA = 0x1FE
TUNNEL_CONVEYOR = 0x1FF
TUNNEL_ROCK_CRUSHER = 0x200
WATERWAY_WATERFALL = 0x201
CASTLE_CENTER_BASEMENT_SEAL = 0x202
CASTLE_CENTER_BASEMENT_CRACKED_WALL = 0x203
CASTLE_CENTER_BASEMENT_BIG_CRYSTAL = 0x204
CASTLE_CENTER_BASEMENT_CRYSTAL_JEWEL = 0x205
CASTLE_CENTER_BOTTOM_ELEVATOR_ROOM_ELEVATOR = 0x206
CASTLE_CENTER_BOTTOM_ELEVATOR_ROOM_DOOR = 0x207
CASTLE_CENTER_BOTTOM_ELEVATOR_ROOM_STATUE_TEARS = 0x208
CASTLE_CENTER_BOTTOM_ELEVATOR_ROOM_STATUE_PUDDLE = 0x209
CASTLE_CENTER_BOTTOM_ELEVATOR_ROOM_STATUE = 0x20A
CASTLE_CENTER_BOTTOM_ELEVATOR_ROOM_SWITCH_SHINE = 0x20B
CASTLE_CENTER_FACTORY_COG = 0x20C
CASTLE_CENTER_FACTORY_DROPPING_PLATFORM = 0x20D
CASTLE_CENTER_FACTORY_LIZARD_LOCKER = 0x20E
CASTLE_CENTER_FACTORY_LIZARD_ROOM_MGR = 0x20F
CASTLE_CENTER_LIZARD_LAB_CRACKED_WALL = 0x210
CASTLE_CENTER_LIZARD_LAB_FIREBALL_SPITTERS = 0x211
CASTLE_CENTER_LIBRARY_PUZZLE_STATUE = 0x212
CASTLE_CENTER_INVENTION_AREA_FIREBALL_SPITTER = 0x213
CASTLE_CENTER_TOP_ELEVATOR_ROOM_BRIDGE = 0x214
CASTLE_CENTER_TOP_ELEVATOR_ROOM_CHAIN = 0x215
FOGGY_LAKE_ABOVE_DECKS_BARREL = 0x216
FOGGY_LAKE_ABOVE_DECKS_BARREL_PLANK = 0x217
FOGGY_LAKE_ABOVE_DECKS_ROTATING_MAST = 0x218
FOGGY_LAKE_ABOVE_DECKS_EXTENDING_BLOCK = 0x219
FOGGY_LAKE_BELOW_DECKS_BARREL = 0x21B
FOGGY_LAKE_BELOW_DECKS_BARREL_PLANK = 0x21C
FOGGY_LAKE_BELOW_DECKS_RISING_CRATE = 0x21D
FOGGY_LAKE_BELOW_DECKS_RISING_WATER = 0x21E
FOGGY_LAKE_BELOW_DECKS_SWINGING_LANTERN = 0x21F
FOGGY_LAKE_BELOW_DECKS_HULL_LEAK = 0x220
FOGGY_LAKE_PIER_FLOATING_PLATFORM_CRATE = 0x221
FOGGY_LAKE_PIER_FLOATING_PLATFORM_PLANK = 0x222
FOGGY_LAKE_PIER_SINKING_SHIP = 0x223
FOGGY_LAKE_PIER_BRIDGE_SEGMENT = 0x225
FOGGY_LAKE_PIER_FLOATING_BACKGROUND_OBJECT = 0x226
CASTLE_KEEP_EXTERIOR_CLOCK_HANDS = 0x228
CASTLE_KEEP_EXTERIOR_CRUMBLING_PIECE = 0x229
CASTLE_KEEP_DRAC_CHAMBER_COFFIN_LID = 0x22A
CLOCK_TOWER_GEAR_CLIMB_WALL_SPIKES = 0x22B
CLOCK_TOWER_GEAR_CLIMB_LIFT_PLATFORM = 0x22C
CASTLE_KEEP_DESERT_SKY = 0x22D
FAN_MEETING_ROOM_FAN = 0x22E
VILLA_CRYPT_COFFIN_FLOOR = 0x22F
VILLA_CRYPT_COFFIN_LID = 0x230
REINHARDT_CARRIE_ENDING_CASTLE_PIECE = 0x231
REINHARDT_CARRIE_ENDING_GRAVE_CLOUDS = 0x233
REINHARDT_CARRIE_ENDING_OVERLOOK_MIST = 0x234
SORCERY_CRYSTALS_RENDERER = 0x236
SORCERY_RED_VANISHING_CRYSTAL = 0x237
SORCERY_BLUE_STATIONARY_CRYSTAL = 0x238
SORCERY_YELLOW_ORBITING_CRYSTAL = 0x239
ENEMY_SORCERY_BEAM_CRYSTAL = 0x23A
SORCERY_CRYSTAL_DEBRIS = 0x23B
SORCERY_PINK_DIAMOND = 0x23C
SORCERY_CYAN_DIAMOND = 0x23D
SORCERY_BLUE_DIAMOND = 0x23E
EXECUTION_SIDE_ROOMS_1_BALL_DROPPER = 0x23F
EXECUTION_SIDE_ROOMS_1_FALLING_GRATE = 0x240
EXECUTION_SIDE_ROOMS_2_BALL_DROPPER = 0x241
SCIENCE_CONVEYORS_CONTAINED_SPECIMEN = 0x242
SCIENCE_CONVEYORS_PISTON = 0x243
SCIENCE_CONVEYORS_CHAIN = 0x244
SCIENCE_CONVEYORS_WHEEL = 0x245
SCIENCE_CONVEYOR = 0x246
SCIENCE_CONVEYORS_ZAPPER = 0x247
SCIENCE_CONVEYORS_CUBE_GENERATOR = 0x248
SCIENCE_CONVEYORS_FLESH_CUBE = 0x249
SCIENCE_CONVEYORS_SPIKY_CUBE = 0x24A
SCIENCE_LABS_CONTAINED_SPECIMEN = 0x24C
SCIENCE_LABS_PISTON = 0x24D
SCIENCE_LABS_CHAIN = 0x24E
SCIENCE_LABS_FIRE_COVER = 0x24F
SCIENCE_LABS_SECURITY_CRYSTAL_RED_LIGHT = 0x250
SCIENCE_LABS_FIREBALL_TURRET = 0x251
ENEMY_GROUND_TURRET = 0x252
SCIENCE_LABS_SLIDING_TURRET = 0x253
SCIENCE_LABS_SECURITY_CRYSTAL_TURRET = 0x254
SCIENCE_LABS_CEILING_TURRET = 0x255
SCIENCE_LABS_SECURITY_CRYSTAL_FORCE_FIELD = 0x256
SCIENCE_LABS_CAGE_TRAP = 0x257
ENEMY_SECURITY_CRYSTAL = 0x258
RUINS_DOOR_MAZE_TRAP_CELLAR_LOADER = 0x259
RUINS_DARK_CHAMBERS_SWITCH_PILLAR = 0x25A
RUINS_DARK_CHAMBERS_DROP_IN_BRIDGE_PIECE = 0x25B
RUINS_DARK_CHAMBERS_FALLING_ROCK = 0x25C
RUINS_DARK_CHAMBERS_FACE = 0x25D
RUINS_DARK_CHAMBERS_ROCK_DEBRIS = 0x25E
RUINS_DARK_CHAMBERS_ZODIAC_WALL = 0x25F
RUINS_DARK_CHAMBERS_INCORRECT_ZODIAC_PILLAR = 0x260
RUINS_DARK_CHAMBERS_PLAIN_ZODIAC_PILLAR = 0x261
RUINS_DARK_CHAMBERS_CORRECT_ZODIAC_PILLAR = 0x262
RUINS_DARK_CHAMBERS_BREAKABLE_WALL = 0x263
RUINS_DARK_CHAMBERS_CRUMBLE_PLATFORM = 0x264
RUINS_DARK_CHAMBERS_ZODIAC_PILLARS_MGR = 0x265
ART_TOWER_MUSEUM_MINECART_SPAWNER = 0x266
ART_TOWER_MUSEUM_DOWNHILL_MINECART = 0x267
ART_TOWER_MUSEUM_ROLLER_PLATFORM = 0x268
ART_TOWER_MUSEUM_HELL_KNIGHT_DIRECTION_FLAG_SETTER = 0x269
ART_TOWER_MUSEUM_KEY2_ENEMIES_FLAG_SETTER = 0x26A
ART_TOWER_CONSERVATORY_FLAMING_MINECART = 0x26B
ART_TOWER_CONSERVATORY_SWINGING_CHANDELIER = 0x26C
DUEL_TOWER_VERTICAL_SPIKED_PINWHEEL = 0x26D
DUEL_TOWER_EXTENDING_LEDGE = 0x26F
DUEL_TOWER_ARENA_ENEMY_RISER = 0x270
DUEL_TOWER_ARENA_CEILING = 0x271
DUEL_TOWER_ARENA_CAGE = 0x272
DUEL_TOWER_WERE_BULL_FIRE_RING = 0x273
DUEL_TOWER_MOVING_PLATFORM = 0x274
DUEL_TOWER_ARENAS_MGR = 0x275
DUEL_TOWER_ARENA_CEILING_DEBRIS = 0x276
CLOCK_TOWER_FACE_PENDULUM_PLATFORM = 0x277
CLOCK_TOWER_FACE_BACKGROUND_COG = 0x278
CLOCK_TOWER_FACE_CLOCK_HAND = 0x279
CLOCK_TOWER_FACE_EXTENDING_LEDGE = 0x27A
OUTER_WALL_HORIZONTAL_SAW = 0x27B
OUTER_WALL_VERTICAL_SAW = 0x27C
OUTER_WALL_BOULDER_SPAWNER = 0x27D
OUTER_WALL_BOULDER = 0x27E
OUTER_WALL_ROUND_TRANSPORTER = 0x27F
OUTER_WALL_HARPY_ARENA_TRAPDOOR = 0x280
INTRO_NARRATION_MOON = 0x281
CLOCK_TOWER_GEAR_CLIMB_PLATFORM_GEAR = 0x282
CLOCK_TOWER_ABYSS_PLATFORM_GEAR = 0x283
CLOCK_TOWER_FACE_PLATFORM_GEAR = 0x284
END_OF_ACTOR_LIST = 0x7FF
# IDs for the compressed files pointed to by the game's "Nisitenma-Ichigo" table.
class NIFiles(IntEnum):
OVERLAY_RANDO_WARP_MENU = 1
ASSET_DEBUG_FONT = 2
MAP_FOREST_OF_SILENCE = 3
MAP_CASTLE_WALL_TOWERS = 4
MAP_CASTLE_WALL_MAIN = 5
MAP_VILLA_FRONT_YARD = 6
MAP_VILLA_FOYER = 7
MAP_VILLA_LIVING_AREA = 8
MAP_VILLA_MAZE = 9
MAP_TUNNEL = 10
MAP_WATERWAY = 11
MAP_CASTLE_CENTER_BASEMENT = 12
MAP_CASTLE_CENTER_BOTTOM_ELEV = 13
MAP_CASTLE_CENTER_FACTORY = 14
MAP_CASTLE_CENTER_LIZARD_LAB = 15
MAP_CASTLE_CENTER_LIBRARY = 16
MAP_CASTLE_CENTER_INVENTIONS = 17
MAP_CASTLE_CENTER_TOP_ELEV = 18
MAP_FOGGY_LAKE_ABOVE_DECKS = 19
MAP_FOGGY_LAKE_BELOW_DECKS = 20
MAP_FOGGY_LAKE_PIER = 21
MAP_SPIDER_MEDUSA_ARENA = 22
MAP_CASTLE_KEEP_EXTERIOR = 23
MAP_CASTLE_KEEP_INTERIOR = 24
MAP_ENDING_DUMMY = 25
MAP_CLOCK_TOWER_GEAR_CLIMB = 26
MAP_CASTLE_KEEP_DESERT = 27
MAP_FAN_MEETING_ROOM = 28
MAP_VILLA_CRYPT = 29
MAP_ROOM_OF_CLOCKS = 30
MAP_REINHARDT_CARRIE_ENDINGS = 31
MAP_TOWER_OF_SORCERY = 32
MAP_EXECUTION_MAIN = 33
MAP_EXECUTION_SIDE_ROOMS_1 = 34
MAP_EXECUTION_SIDE_ROOMS_2 = 35
MAP_SCIENCE_CONVEYORS = 36
MAP_SCIENCE_LABS = 37
MAP_RUINS_DOOR_MAZE = 38
MAP_RUINS_DARK_CHAMBERS = 39
MAP_ART_TOWER_MUSEUM = 40
MAP_ART_TOWER_CONSERVATORY = 41
MAP_DUEL_TOWER = 42
MAP_CLOCK_TOWER_ABYSS = 43
MAP_CLOCK_TOWER_FACE = 44
MAP_THE_OUTER_WALL = 45
MAP_CORNELL_INTRO_VILLAGE = 46
MAP_INTRO_NARRATION = 47
MAP_CORNELL_ENDING_FOREST = 48
MAP_CASTLE_KEEP_VOID = 49
ASSET_PICKUPS = 50
ASSET_SKYBOX = 51
MAP_TEST_GRID = 52
COLLISION_FOREST_OF_SILENCE = 53
COLLISION_CASTLE_WALL_TOWERS = 54
COLLISION_CASTLE_WALL_MAIN = 55
COLLISION_VILLA_FRONT_YARD = 56
COLLISION_VILLA_FOYER = 57
COLLISION_VILLA_LIVING_AREA = 58
COLLISION_VILLA_MAZE = 59
COLLISION_TUNNEL = 60
COLLISION_WATERWAY = 61
COLLISION_CASTLE_CENTER_BASEMENT = 62
COLLISION_CASTLE_CENTER_BOTTOM_ELEV = 63
COLLISION_CASTLE_CENTER_FACTORY = 64
COLLISION_CASTLE_CENTER_LIZARD_LAB = 65
COLLISION_CASTLE_CENTER_LIBRARY = 66
COLLISION_CASTLE_CENTER_INVENTIONS = 67
COLLISION_CASTLE_CENTER_TOP_ELEV = 68
COLLISION_FOGGY_LAKE_ABOVE_DECKS = 69
COLLISION_FOGGY_LAKE_BELOW_DECKS = 70
COLLISION_FOGGY_LAKE_PIER = 71
COLLISION_SPIDER_MEDUSA_ARENA = 72
COLLISION_CASTLE_KEEP_EXTERIOR = 73
COLLISION_CASTLE_KEEP_INTERIOR = 74
COLLISION_CLOCK_TOWER_GEAR_CLIMB = 75
COLLISION_CASTLE_KEEP_DESERT = 76
COLLISION_FAN_MEETING_ROOM = 77
COLLISION_VILLA_CRYPT = 78
COLLISION_ROOM_OF_CLOCKS = 79
COLLISION_TOWER_OF_SORCERY = 80
COLLISION_EXECUTION_MAIN = 81
COLLISION_EXECUTION_SIDE_ROOMS_1 = 82
COLLISION_EXECUTION_SIDE_ROOMS_2 = 83
COLLISION_SCIENCE_CONVEYORS = 84
COLLISION_SCIENCE_LABS = 85
COLLISION_RUINS_DOOR_MAZE = 86
COLLISION_RUINS_DARK_CHAMBERS = 87
COLLISION_ART_TOWER_MUSEUM = 88
COLLISION_ART_TOWER_CONSERVATORY = 89
COLLISION_DUEL_TOWER = 90
COLLISION_CLOCK_TOWER_ABYSS = 91
COLLISION_CLOCK_TOWER_FACE = 92
COLLISION_THE_OUTER_WALL = 93
COLLISION_CASTLE_KEEP_VOID = 94
COLLISION_TEST_GRID = 95
ASSET_REINHARDT = 96
ASSET_REINHARD_ALT = 97
ASSET_REINHARD_WHIPS = 98
ASSET_REINHARDT_SWORD = 99
ASSET_CARRIE_ALT = 100
ASSET_CARRIE = 101
ASSET_CORNELL = 102
ASSET_CORNELL_ALT = 103
ASSET_WOLF_CORNELL = 104
ASSET_WOLF_CORNELL_ALT = 105
ASSET_HENRY = 106
ASSET_HENRY_GUN = 107
ASSET_ACTRISE = 108
ASSET_DRACULA_ULTIMATE = 118
ASSET_SKELETON_WARRIOR = 127
ASSET_GLASS_KNIGHT = 129
ASSET_KING_SKELETON = 133
ASSET_ZOMBIE = 147
ASSET_GILLES_DE_RAIS = 151
ASSET_VAMPIRE_MALE = 152
ASSET_ADA = 154
ASSET_INTRO_GIRL = 156
ASSET_SPIDER_WOMAN = 162
ASSET_MALUS = 166
ASSET_MALUS_HORSE = 167
ASSET_ROSA = 168
ASSET_CAMILLA = 170
ASSET_GARDENER = 176
ASSET_KONAMI_LOGOS = 199
ASSET_FONT = 200
ASSET_EXPANSION_PAK = 206
OVERLAY_ACTRISE = 228
OVERLAY_HARPY = 235
OVERLAY_MEDUSA = 236
OVERLAY_CHIMERA_ORTEGA = 237
OVERLAY_SEA_MONSTER = 238
OVERLAY_QUEEN_ALGENIE = 239
OVERLAY_DRACULA_ULTIMATE = 241
OVERLAY_GIANT_WEREWOLF = 242
OVERLAY_SKELETON_WARRIOR = 248
OVERLAY_GLASS_KNIGHT = 250
OVERLAY_LIZARD_MEN = 252
OVERLAY_KING_SKELETON = 253
OVERLAY_DEATH = 255
OVERLAY_DEMON_RENON = 258
OVERLAY_SLIME = 259
OVERLAY_VAMPIRE_SPAWNER = 261
OVERLAY_MALE_VAMPIRES = 262
OVERLAY_VINCENT = 263
OVERLAY_FEMALE_VAMPIRES = 266
OVERLAY_WERE_JAGUAR_AND_BULL = 268
OVERLAY_ZOMBIE = 271
OVERLAY_WEREWOLF = 272
OVERLAY_CHILD_HENRY = 275
OVERLAY_ADA = 279
OVERLAY_MARY = 280
OVERLAY_INTRO_GIRL = 281
OVERLAY_SPIDER_WOMAN = 289
OVERLAY_WERE_TIGER = 290
OVERLAY_TRUE_DRACULA = 291
OVERLAY_DRACULA_FIGHT_MGR = 292
OVERLAY_DRACULA = 294
OVERLAY_MALUS_CUTSCENE = 296
OVERLAY_MALUS_HORSE = 297
OVERLAY_ROSA = 298
OVERLAY_CAMILLA = 299
OVERLAY_BEHEMOTH = 300
OVERLAY_WHITE_DRAGONS = 301
OVERLAY_CERBERUS = 303
OVERLAY_GARDENER = 304
OVERLAY_STONE_DOG = 305
OVERLAY_PAUSE_MENU = 327
OVERLAY_TITLE_SCREEN = 332
OVERLAY_HENRY_NG_INITIALIZER = 335
OVERLAY_EXPANSION_PAK_SCREEN = 337
OVERLAY_GAME_OVER_SCREEN = 339
OVERLAY_FILE_SELECT_CONTROLLER = 340
OVERLAY_NECRONOMICON = 343
OVERLAY_CHARACTER_SELECT = 344
OVERLAY_GAMENOTE_DELETE_SCREEN = 351
OVERLAY_MAP_NAME_DISPLAY = 354
OVERLAY_HENRY_DAYS_LEFT = 357
OVERLAY_RENONS_SHOP = 361
OVERLAY_LIBRARY_PUZZLE = 363
OVERLAY_TAKE_MANDRAGORA_TEXTBOX = 365
OVERLAY_TAKE_NITRO_TEXTBOX = 366
OVERLAY_NITRO_DISPOSAL_TEXTBOX = 367
OVERLAY_INGREDIENT_SET_TEXTBOX = 368
OVERLAY_6AM_ROSE_PATCH_TEXTBOX = 370
OVERLAY_FOUNTAIN_TOP_SHINE_TEXTBOX = 371
OVERLAY_FOUNTAIN_PUZZLE = 373
OVERLAY_CS_FOREST_DRAWBRIDGE_LOWERS = 379
OVERLAY_CS_VILLA_FOYER_VAMPIRE = 382
OVERLAY_CS_RENONS_DEPARTURE = 403
OVERLAY_CS_DRACULA_BATTLE_INTRO = 404
OVERLAY_CS_DRACULA_DEFEATED = 405
OVERLAY_CS_CASTLE_CRUMBLING = 415
OVERLAY_CS_WATCHING_CASTLE_CRUMBLE = 417
OVERLAY_CS_BAD_ENDING_MALUS_APPEARS = 418
OVERLAY_CS_HENRY_ENDING = 425
OVERLAY_CS_1ST_REIN_CARRIE_CRYPT_VAMPIRE = 427
OVERLAY_CS_FOUND_A_HIDDEN_PATH = 429
OVERLAY_CS_DRACULA_ULTIMATE_DEFEATED = 436
OVERLAY_CS_DEATH_DEFEATED = 441
OVERLAY_CS_ORTEGA_DEFEATED = 449
OVERLAY_CS_ACTRISE_DEFEATED = 458
OVERLAY_CS_INTRO_NARRATION_COMMON = 468
OVERLAY_CS_INTRO_NARRATION_REINHARDT_CARRIE = 469
OVERLAY_CS_INTRO_NARRATION_HENRY = 470
OVERLAY_CS_INTRO_NARRATION_CORNELL = 471