From 1fe3015ce5101892451d7bce3603c5d2291916b2 Mon Sep 17 00:00:00 2001 From: Daan Vanden Bosch Date: Mon, 23 Sep 2019 14:47:14 +0200 Subject: [PATCH] All objects are now correctly filtered based on area. --- src/core/data_formats/parsing/quest/areas.ts | 6 +- .../data_formats/parsing/quest/npc_types.ts | 4 + .../parsing/quest/object_types.ts | 1138 ++++++++++++----- src/quest_editor/loading/entities.ts | 42 + 4 files changed, 850 insertions(+), 340 deletions(-) diff --git a/src/core/data_formats/parsing/quest/areas.ts b/src/core/data_formats/parsing/quest/areas.ts index 22506fb6..e7bcc1b1 100644 --- a/src/core/data_formats/parsing/quest/areas.ts +++ b/src/core/data_formats/parsing/quest/areas.ts @@ -27,7 +27,7 @@ export function get_area_variant( const variant = area.area_variants[variant_id]; if (!variant) throw new Error(`No area variant with id ${variant_id}.`); - return Object.freeze(variant); + return variant; } const AREAS: { [episode: number]: Area[] } = []; @@ -36,7 +36,7 @@ function create_area(id: number, name: string, order: number, variants: number): const area: Area = { id, name, order, area_variants: [] }; for (let id = 0; id < variants; id++) { - area.area_variants.push({ id, area }); + area.area_variants.push(Object.freeze({ id, area })); } return Object.freeze(area); @@ -99,3 +99,5 @@ AREAS[Episode.IV] = [ create_area(8, "Subterranean Desert 3", order++, 3), create_area(9, "Meteor Impact Site", order++, 1), ]; + +Object.freeze(AREAS); diff --git a/src/core/data_formats/parsing/quest/npc_types.ts b/src/core/data_formats/parsing/quest/npc_types.ts index eb5b4d66..e0d08ff9 100644 --- a/src/core/data_formats/parsing/quest/npc_types.ts +++ b/src/core/data_formats/parsing/quest/npc_types.ts @@ -2163,3 +2163,7 @@ define_npc_type_data( 0, false, ); + +Object.freeze(NPC_TYPES); +Object.freeze(ENEMY_NPC_TYPES); +Object.freeze(NPC_TYPE_DATA); diff --git a/src/core/data_formats/parsing/quest/object_types.ts b/src/core/data_formats/parsing/quest/object_types.ts index ebf9aaaa..7ca97215 100644 --- a/src/core/data_formats/parsing/quest/object_types.ts +++ b/src/core/data_formats/parsing/quest/object_types.ts @@ -256,7 +256,7 @@ export enum ObjectType { LabInvisibleObject, LabGlassWindowDoor, UnknownItem700, - LabCelingWarp, + LabCeilingWarp, Ep4LightSource, Cacti, BigBrownRock, @@ -289,9 +289,8 @@ export type ObjectTypeData = { /** * The valid area IDs per episode in which this object can appear. * This array can be indexed with an {@link Episode} value. - * If this property is defined, the object can be placed anywhere. */ - readonly area_ids?: number[][]; + readonly area_ids: number[][]; readonly pso_id?: number; }; @@ -813,7 +812,7 @@ export function pso_id_to_object_type(psoId: number): ObjectType { case 700: return ObjectType.UnknownItem700; case 701: - return ObjectType.LabCelingWarp; + return ObjectType.LabCeilingWarp; case 768: return ObjectType.Ep4LightSource; case 769: @@ -873,18 +872,14 @@ function define_object_type_data( object_type: ObjectType, pso_id: number | undefined, name: string, - area_ids: [Episode, number[]][] | undefined, + area_ids: [Episode, number[]][], ): void { OBJECT_TYPES.push(object_type); - let area_ids_per_episode: number[][] | undefined; + const area_ids_per_episode: number[][] = []; - if (area_ids) { - area_ids_per_episode = []; - - for (const [episode, areas] of area_ids) { - area_ids_per_episode[episode] = areas; - } + for (const [episode, areas] of area_ids) { + area_ids_per_episode[episode] = areas; } OBJECT_TYPE_DATA[object_type] = Object.freeze({ @@ -894,76 +889,297 @@ function define_object_type_data( }); } -define_object_type_data(ObjectType.Unknown, undefined, "Unknown", undefined); +define_object_type_data(ObjectType.Unknown, undefined, "Unknown", []); -define_object_type_data(ObjectType.PlayerSet, 0, "Player Set", undefined); -define_object_type_data(ObjectType.Particle, 1, "Particle", undefined); -define_object_type_data(ObjectType.Teleporter, 2, "Teleporter", undefined); -define_object_type_data(ObjectType.Warp, 3, "Warp", undefined); -define_object_type_data(ObjectType.LightCollision, 4, "Light Collision", undefined); -define_object_type_data(ObjectType.Item, 5, "Item", undefined); -define_object_type_data(ObjectType.EnvSound, 6, "Env Sound", undefined); -define_object_type_data(ObjectType.FogCollision, 7, "Fog Collision", undefined); -define_object_type_data(ObjectType.EventCollision, 8, "Event Collision", undefined); -define_object_type_data(ObjectType.CharaCollision, 9, "Chara Collision", undefined); -define_object_type_data(ObjectType.ElementalTrap, 10, "Elemental Trap", undefined); -define_object_type_data(ObjectType.StatusTrap, 11, "Status Trap", undefined); -define_object_type_data(ObjectType.HealTrap, 12, "Heal Trap", undefined); -define_object_type_data(ObjectType.LargeElementalTrap, 13, "Large Elemental Trap", undefined); -define_object_type_data(ObjectType.ObjRoomID, 14, "Obj Room ID", undefined); -define_object_type_data(ObjectType.Sensor, 15, "Sensor", undefined); -define_object_type_data(ObjectType.UnknownItem16, 16, "Unknown Item (16)", undefined); -define_object_type_data(ObjectType.LensFlare, 17, "Lens Flare", undefined); -define_object_type_data(ObjectType.ScriptCollision, 18, "Script Collision", undefined); -define_object_type_data(ObjectType.HealRing, 19, "Heal Ring", undefined); -define_object_type_data(ObjectType.MapCollision, 20, "Map Collision", undefined); -define_object_type_data(ObjectType.ScriptCollisionA, 21, "Script Collision A", undefined); -define_object_type_data(ObjectType.ItemLight, 22, "Item Light", undefined); -define_object_type_data(ObjectType.RadarCollision, 23, "Radar Collision", undefined); -define_object_type_data(ObjectType.FogCollisionSW, 24, "Fog Collision SW", undefined); -define_object_type_data(ObjectType.BossTeleporter, 25, "Boss Teleporter", undefined); -define_object_type_data(ObjectType.ImageBoard, 26, "Image Board", undefined); -define_object_type_data(ObjectType.QuestWarp, 27, "Quest Warp", undefined); -define_object_type_data(ObjectType.Epilogue, 28, "Epilogue", undefined); -define_object_type_data(ObjectType.UnknownItem29, 29, "Unknown Item (29)", undefined); -define_object_type_data(ObjectType.UnknownItem30, 30, "Unknown Item (30)", undefined); -define_object_type_data(ObjectType.UnknownItem31, 31, "Unknown Item (31)", undefined); -define_object_type_data(ObjectType.BoxDetectObject, 32, "Box Detect Object", undefined); -define_object_type_data(ObjectType.SymbolChatObject, 33, "Symbol Chat Object", undefined); -define_object_type_data(ObjectType.TouchPlateObject, 34, "Touch plate Object", undefined); -define_object_type_data(ObjectType.TargetableObject, 35, "Targetable Object", undefined); -define_object_type_data(ObjectType.EffectObject, 36, "Effect object", undefined); -define_object_type_data(ObjectType.CountDownObject, 37, "Count Down Object", undefined); -define_object_type_data(ObjectType.UnknownItem38, 38, "Unknown Item (38)", undefined); -define_object_type_data(ObjectType.UnknownItem39, 39, "Unknown Item (39)", undefined); -define_object_type_data(ObjectType.UnknownItem40, 40, "Unknown Item (40)", undefined); -define_object_type_data(ObjectType.UnknownItem41, 41, "Unknown Item (41)", undefined); -define_object_type_data(ObjectType.MenuActivation, 64, "Menu activation", undefined); -define_object_type_data(ObjectType.TelepipeLocation, 65, "Telepipe Location", undefined); -define_object_type_data(ObjectType.BGMCollision, 66, "BGM Collision", undefined); -define_object_type_data(ObjectType.MainRagolTeleporter, 67, "Main Ragol Teleporter", undefined); -define_object_type_data(ObjectType.LobbyTeleporter, 68, "Lobby Teleporter", [[Episode.I, [17]]]); -define_object_type_data(ObjectType.PrincipalWarp, 69, "Principal warp", undefined); -define_object_type_data(ObjectType.ShopDoor, 70, "Shop Door", undefined); -define_object_type_data(ObjectType.HuntersGuildDoor, 71, "Hunter's Guild Door", undefined); -define_object_type_data(ObjectType.TeleporterDoor, 72, "Teleporter Door", undefined); -define_object_type_data(ObjectType.MedicalCenterDoor, 73, "Medical Center Door", undefined); -define_object_type_data(ObjectType.Elevator, 74, "Elevator", undefined); -define_object_type_data(ObjectType.EasterEgg, 75, "Easter Egg", undefined); -define_object_type_data(ObjectType.ValentinesHeart, 76, "Valentines Heart", undefined); -define_object_type_data(ObjectType.ChristmasTree, 77, "Christmas Tree", undefined); -define_object_type_data(ObjectType.ChristmasWreath, 78, "Christmas Wreath", undefined); -define_object_type_data(ObjectType.HalloweenPumpkin, 79, "Halloween Pumpkin", undefined); -define_object_type_data(ObjectType.TwentyFirstCentury, 80, "21st Century", undefined); -define_object_type_data(ObjectType.Sonic, 81, "Sonic", undefined); -define_object_type_data(ObjectType.WelcomeBoard, 82, "Welcome Board", undefined); -define_object_type_data(ObjectType.Firework, 83, "Firework", undefined); -define_object_type_data(ObjectType.LobbyScreenDoor, 84, "Lobby Screen Door", [[Episode.I, [17]]]); +define_object_type_data(ObjectType.PlayerSet, 0, "Player Set", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]], +]); +define_object_type_data(ObjectType.Particle, 1, "Particle", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.Teleporter, 2, "Teleporter", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14]], + [Episode.II, [0, 1, 2, 3, 4, 12, 13, 14, 15]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]], +]); +define_object_type_data(ObjectType.Warp, 3, "Warp", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]], +]); +define_object_type_data(ObjectType.LightCollision, 4, "Light Collision", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.Item, 5, "Item", []); +define_object_type_data(ObjectType.EnvSound, 6, "Env Sound", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.FogCollision, 7, "Fog Collision", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.EventCollision, 8, "Event Collision", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]], +]); +define_object_type_data(ObjectType.CharaCollision, 9, "Chara Collision", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 8, 9, 10]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.ElementalTrap, 10, "Elemental Trap", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.StatusTrap, 11, "Status Trap", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.HealTrap, 12, "Heal Trap", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.LargeElementalTrap, 13, "Large Elemental Trap", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.ObjRoomID, 14, "Obj Room ID", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.Sensor, 15, "Sensor", [[Episode.I, [1, 2, 4, 5, 6, 7]]]); +define_object_type_data(ObjectType.UnknownItem16, 16, "Unknown Item (16)", []); +define_object_type_data(ObjectType.LensFlare, 17, "Lens Flare", [[Episode.I, [1, 2, 3, 4, 8, 14]]]); +define_object_type_data(ObjectType.ScriptCollision, 18, "Script Collision", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.HealRing, 19, "Heal Ring", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.MapCollision, 20, "Map Collision", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 8, 9, 10, 16, 17]], + [Episode.II, [0, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.ScriptCollisionA, 21, "Script Collision A", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.ItemLight, 22, "Item Light", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.RadarCollision, 23, "Radar Collision", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.FogCollisionSW, 24, "Fog Collision SW", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.BossTeleporter, 25, "Boss Teleporter", [ + [Episode.I, [0, 2, 5, 7, 10]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.ImageBoard, 26, "Image Board", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.QuestWarp, 27, "Quest Warp", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14]], + [Episode.IV, [9]], +]); +define_object_type_data(ObjectType.Epilogue, 28, "Epilogue", [ + [Episode.I, [14]], + [Episode.II, [13]], + [Episode.IV, [9]], +]); +define_object_type_data(ObjectType.UnknownItem29, 29, "Unknown Item (29)", [[Episode.I, [1]]]); +define_object_type_data(ObjectType.UnknownItem30, 30, "Unknown Item (30)", [ + [Episode.I, [1, 2, 17]], + [Episode.II, [1, 2, 14]], + [Episode.IV, [1, 2, 3, 4, 5]], +]); +define_object_type_data(ObjectType.UnknownItem31, 31, "Unknown Item (31)", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.BoxDetectObject, 32, "Box Detect Object", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.SymbolChatObject, 33, "Symbol Chat Object", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.TouchPlateObject, 34, "Touch plate Object", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.TargetableObject, 35, "Targetable Object", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.EffectObject, 36, "Effect object", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [0, 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.CountDownObject, 37, "Count Down Object", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.UnknownItem38, 38, "Unknown Item (38)", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.UnknownItem39, 39, "Unknown Item (39)", [ + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem40, 40, "Unknown Item (40)", [ + [Episode.I, [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 13, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.UnknownItem41, 41, "Unknown Item (41)", [ + [Episode.I, [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 13, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.MenuActivation, 64, "Menu activation", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.TelepipeLocation, 65, "Telepipe Location", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.BGMCollision, 66, "BGM Collision", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.MainRagolTeleporter, 67, "Main Ragol Teleporter", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.LobbyTeleporter, 68, "Lobby Teleporter", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.PrincipalWarp, 69, "Principal warp", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.ShopDoor, 70, "Shop Door", [ + [Episode.I, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.HuntersGuildDoor, 71, "Hunter's Guild Door", [ + [Episode.I, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.TeleporterDoor, 72, "Teleporter Door", [ + [Episode.I, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.MedicalCenterDoor, 73, "Medical Center Door", [ + [Episode.I, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.Elevator, 74, "Elevator", [[Episode.I, [0]], [Episode.IV, [0]]]); +define_object_type_data(ObjectType.EasterEgg, 75, "Easter Egg", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.ValentinesHeart, 76, "Valentines Heart", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.ChristmasTree, 77, "Christmas Tree", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.ChristmasWreath, 78, "Christmas Wreath", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.HalloweenPumpkin, 79, "Halloween Pumpkin", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.TwentyFirstCentury, 80, "21st Century", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.Sonic, 81, "Sonic", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.WelcomeBoard, 82, "Welcome Board", [ + [Episode.I, [0]], + [Episode.II, [0]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.Firework, 83, "Firework", [ + [Episode.I, [0]], + [Episode.II, [0, 16]], + [Episode.IV, [0]], +]); +define_object_type_data(ObjectType.LobbyScreenDoor, 84, "Lobby Screen Door", [ + [Episode.I, [0]], + [Episode.IV, [0]], +]); define_object_type_data( ObjectType.MainRagolTeleporterBattleInNextArea, 85, "Main Ragol Teleporter (Battle in next area?)", - undefined, + [[Episode.I, [0]], [Episode.II, [0]], [Episode.IV, [0]]], ); define_object_type_data(ObjectType.LabTeleporterDoor, 86, "Lab Teleporter Door", [ [Episode.II, [0]], @@ -972,123 +1188,226 @@ define_object_type_data( ObjectType.Pioneer2InvisibleTouchplate, 87, "Pioneer 2 Invisible Touchplate", - undefined, + [[Episode.I, [0]], [Episode.II, [0]], [Episode.IV, [0]]], ); define_object_type_data(ObjectType.ForestDoor, 128, "Forest Door", [[Episode.I, [1, 2]]]); -define_object_type_data(ObjectType.ForestSwitch, 129, "Forest Switch", [[Episode.I, [1, 2]]]); -define_object_type_data(ObjectType.LaserFence, 130, "Laser Fence", undefined); -define_object_type_data(ObjectType.LaserSquareFence, 131, "Laser Square Fence", undefined); -define_object_type_data(ObjectType.ForestLaserFenceSwitch, 132, "Forest Laser Fence Switch", [ - [Episode.I, [1, 2]], +define_object_type_data(ObjectType.ForestSwitch, 129, "Forest Switch", [ + [Episode.I, [1, 2, 3, 4, 5]], + [Episode.II, [1, 2, 3, 4]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.LaserFence, 130, "Laser Fence", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.LaserSquareFence, 131, "Laser Square Fence", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.ForestLaserFenceSwitch, 132, "Forest Laser Fence Switch", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.LightRays, 133, "Light rays", [ + [Episode.I, [1, 2]], + [Episode.II, [5, 6, 7, 8, 9]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.BlueButterfly, 134, "Blue Butterfly", [ + [Episode.I, [1, 2]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.Probe, 135, "Probe", [[Episode.I, [1, 2]]]); +define_object_type_data(ObjectType.RandomTypeBox1, 136, "Random Type Box 1", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7]], + [Episode.II, [10, 11, 13]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], ]); -define_object_type_data(ObjectType.LightRays, 133, "Light rays", undefined); -define_object_type_data(ObjectType.BlueButterfly, 134, "Blue Butterfly", undefined); -define_object_type_data(ObjectType.Probe, 135, "Probe", undefined); -define_object_type_data(ObjectType.RandomTypeBox1, 136, "Random Type Box 1", undefined); define_object_type_data(ObjectType.ForestWeatherStation, 137, "Forest Weather Station", [ [Episode.I, [1, 2]], ]); -define_object_type_data(ObjectType.Battery, 138, "Battery", undefined); +define_object_type_data(ObjectType.Battery, 138, "Battery", []); define_object_type_data(ObjectType.ForestConsole, 139, "Forest Console", [ - [Episode.I, [1, 2]], - [Episode.II, [1, 2]], + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.BlackSlidingDoor, 140, "Black Sliding Door", [ + [Episode.I, [1, 2, 3]], +]); +define_object_type_data(ObjectType.RicoMessagePod, 141, "Rico Message Pod", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13]], +]); +define_object_type_data(ObjectType.EnergyBarrier, 142, "Energy Barrier", [ + [Episode.I, [1, 2, 4, 5, 6, 7]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.ForestRisingBridge, 143, "Forest Rising Bridge", [ + [Episode.I, [1, 2]], +]); +define_object_type_data(ObjectType.SwitchNoneDoor, 144, "Switch (none door)", [ + [Episode.I, [1, 2, 6, 7, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.EnemyBoxGrey, 145, "Enemy Box (Grey)", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7]], + [Episode.II, [10, 11]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.FixedTypeBox, 146, "Fixed Type Box", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14]], + [Episode.II, [10, 11, 13]], + [Episode.IV, [1, 2, 3, 4, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.EnemyBoxBrown, 147, "Enemy Box (Brown)", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7]], + [Episode.II, [10, 11]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.EmptyTypeBox, 149, "Empty Type Box", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.LaserFenceEx, 150, "Laser Fence Ex", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.LaserSquareFenceEx, 151, "Laser Square Fence Ex", []); +define_object_type_data(ObjectType.FloorPanel1, 192, "Floor Panel 1", [ + [Episode.I, [3, 4, 5, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.Caves4ButtonDoor, 193, "Caves 4 Button door", [ + [Episode.I, [3, 4, 5]], +]); +define_object_type_data(ObjectType.CavesNormalDoor, 194, "Caves Normal door", [ + [Episode.I, [3, 4, 5]], +]); +define_object_type_data(ObjectType.CavesSmashingPillar, 195, "Caves Smashing Pillar", [ + [Episode.I, [3, 4, 5]], + [Episode.II, [1, 2, 3, 4, 17]], +]); +define_object_type_data(ObjectType.CavesSign1, 196, "Caves Sign 1", [[Episode.I, [4, 5]]]); +define_object_type_data(ObjectType.CavesSign2, 197, "Caves Sign 2", [[Episode.I, [4, 5]]]); +define_object_type_data(ObjectType.CavesSign3, 198, "Caves Sign 3", [[Episode.I, [4, 5]]]); +define_object_type_data(ObjectType.HexagonalTank, 199, "Hexagonal Tank", [[Episode.I, [4, 5]]]); +define_object_type_data(ObjectType.BrownPlatform, 200, "Brown Platform", [[Episode.I, [4, 5]]]); +define_object_type_data(ObjectType.WarningLightObject, 201, "Warning Light Object", [ + [Episode.I, [4, 5]], + [Episode.IV, [5]], +]); +define_object_type_data(ObjectType.Rainbow, 203, "Rainbow", [[Episode.I, [4]]]); +define_object_type_data(ObjectType.FloatingJellyfish, 204, "Floating Jellyfish", [ + [Episode.I, [4]], + [Episode.II, [10, 11]], +]); +define_object_type_data(ObjectType.FloatingDragonfly, 205, "Floating Dragonfly", [ + [Episode.I, [4, 16]], + [Episode.II, [3, 4]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.CavesSwitchDoor, 206, "Caves Switch Door", [ + [Episode.I, [3, 4, 5]], +]); +define_object_type_data(ObjectType.RobotRechargeStation, 207, "Robot Recharge Station", [ + [Episode.I, [3, 4, 5, 6, 7]], + [Episode.II, [17]], +]); +define_object_type_data(ObjectType.CavesCakeShop, 208, "Caves Cake Shop", [[Episode.I, [5]]]); +define_object_type_data(ObjectType.Caves1SmallRedRock, 209, "Caves 1 Small Red Rock", [ + [Episode.I, [3]], +]); +define_object_type_data(ObjectType.Caves1MediumRedRock, 210, "Caves 1 Medium Red Rock", [ + [Episode.I, [3]], +]); +define_object_type_data(ObjectType.Caves1LargeRedRock, 211, "Caves 1 Large Red Rock", [ + [Episode.I, [3]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.Caves2SmallRock1, 212, "Caves 2 Small Rock 1", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.Caves2MediumRock1, 213, "Caves 2 Medium Rock 1", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.Caves2LargeRock1, 214, "Caves 2 Large Rock 1", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.Caves2SmallRock2, 215, "Caves 2 Small Rock 2", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.Caves2MediumRock2, 216, "Caves 2 Medium Rock 2", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.Caves2LargeRock2, 217, "Caves 2 Large Rock 2", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.Caves3SmallRock, 218, "Caves 3 Small Rock", [[Episode.I, [5]]]); +define_object_type_data(ObjectType.Caves3MediumRock, 219, "Caves 3 Medium Rock", [ + [Episode.I, [5]], +]); +define_object_type_data(ObjectType.Caves3LargeRock, 220, "Caves 3 Large Rock", [[Episode.I, [5]]]); +define_object_type_data(ObjectType.FloorPanel2, 222, "Floor Panel 2", [ + [Episode.I, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.DestructableRockCaves1, 223, "Destructable Rock (Caves 1)", [ + [Episode.I, [3]], +]); +define_object_type_data(ObjectType.DestructableRockCaves2, 224, "Destructable Rock (Caves 2)", [ + [Episode.I, [4]], +]); +define_object_type_data(ObjectType.DestructableRockCaves3, 225, "Destructable Rock (Caves 3)", [ + [Episode.I, [5]], ]); -define_object_type_data(ObjectType.BlackSlidingDoor, 140, "Black Sliding Door", undefined); -define_object_type_data(ObjectType.RicoMessagePod, 141, "Rico Message Pod", undefined); -define_object_type_data(ObjectType.EnergyBarrier, 142, "Energy Barrier", undefined); -define_object_type_data(ObjectType.ForestRisingBridge, 143, "Forest Rising Bridge", undefined); -define_object_type_data(ObjectType.SwitchNoneDoor, 144, "Switch (none door)", undefined); -define_object_type_data(ObjectType.EnemyBoxGrey, 145, "Enemy Box (Grey)", undefined); -define_object_type_data(ObjectType.FixedTypeBox, 146, "Fixed Type Box", undefined); -define_object_type_data(ObjectType.EnemyBoxBrown, 147, "Enemy Box (Brown)", undefined); -define_object_type_data(ObjectType.EmptyTypeBox, 149, "Empty Type Box", undefined); -define_object_type_data(ObjectType.LaserFenceEx, 150, "Laser Fence Ex", undefined); -define_object_type_data(ObjectType.LaserSquareFenceEx, 151, "Laser Square Fence Ex", undefined); -define_object_type_data(ObjectType.FloorPanel1, 192, "Floor Panel 1", undefined); -define_object_type_data(ObjectType.Caves4ButtonDoor, 193, "Caves 4 Button door", undefined); -define_object_type_data(ObjectType.CavesNormalDoor, 194, "Caves Normal door", undefined); -define_object_type_data(ObjectType.CavesSmashingPillar, 195, "Caves Smashing Pillar", undefined); -define_object_type_data(ObjectType.CavesSign1, 196, "Caves Sign 1", undefined); -define_object_type_data(ObjectType.CavesSign2, 197, "Caves Sign 2", undefined); -define_object_type_data(ObjectType.CavesSign3, 198, "Caves Sign 3", undefined); -define_object_type_data(ObjectType.HexagonalTank, 199, "Hexagonal Tank", undefined); -define_object_type_data(ObjectType.BrownPlatform, 200, "Brown Platform", undefined); -define_object_type_data(ObjectType.WarningLightObject, 201, "Warning Light Object", undefined); -define_object_type_data(ObjectType.Rainbow, 203, "Rainbow", undefined); -define_object_type_data(ObjectType.FloatingJellyfish, 204, "Floating Jellyfish", undefined); -define_object_type_data(ObjectType.FloatingDragonfly, 205, "Floating Dragonfly", undefined); -define_object_type_data(ObjectType.CavesSwitchDoor, 206, "Caves Switch Door", undefined); -define_object_type_data(ObjectType.RobotRechargeStation, 207, "Robot Recharge Station", undefined); -define_object_type_data(ObjectType.CavesCakeShop, 208, "Caves Cake Shop", undefined); -define_object_type_data(ObjectType.Caves1SmallRedRock, 209, "Caves 1 Small Red Rock", undefined); -define_object_type_data(ObjectType.Caves1MediumRedRock, 210, "Caves 1 Medium Red Rock", undefined); -define_object_type_data(ObjectType.Caves1LargeRedRock, 211, "Caves 1 Large Red Rock", undefined); -define_object_type_data(ObjectType.Caves2SmallRock1, 212, "Caves 2 Small Rock 1", undefined); -define_object_type_data(ObjectType.Caves2MediumRock1, 213, "Caves 2 Medium Rock 1", undefined); -define_object_type_data(ObjectType.Caves2LargeRock1, 214, "Caves 2 Large Rock 1", undefined); -define_object_type_data(ObjectType.Caves2SmallRock2, 215, "Caves 2 Small Rock 2", undefined); -define_object_type_data(ObjectType.Caves2MediumRock2, 216, "Caves 2 Medium Rock 2", undefined); -define_object_type_data(ObjectType.Caves2LargeRock2, 217, "Caves 2 Large Rock 2", undefined); -define_object_type_data(ObjectType.Caves3SmallRock, 218, "Caves 3 Small Rock", undefined); -define_object_type_data(ObjectType.Caves3MediumRock, 219, "Caves 3 Medium Rock", undefined); -define_object_type_data(ObjectType.Caves3LargeRock, 220, "Caves 3 Large Rock", undefined); -define_object_type_data(ObjectType.FloorPanel2, 222, "Floor Panel 2", undefined); -define_object_type_data( - ObjectType.DestructableRockCaves1, - 223, - "Destructable Rock (Caves 1)", - undefined, -); -define_object_type_data( - ObjectType.DestructableRockCaves2, - 224, - "Destructable Rock (Caves 2)", - undefined, -); -define_object_type_data( - ObjectType.DestructableRockCaves3, - 225, - "Destructable Rock (Caves 3)", - undefined, -); define_object_type_data(ObjectType.MinesDoor, 256, "Mines Door", [[Episode.I, [6, 7]]]); -define_object_type_data(ObjectType.FloorPanel3, 257, "Floor Panel 3", undefined); +define_object_type_data(ObjectType.FloorPanel3, 257, "Floor Panel 3", [ + [Episode.I, [1, 2, 6, 7, 16, 17]], + [Episode.II, [1, 2, 3, 4]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); define_object_type_data(ObjectType.MinesSwitchDoor, 258, "Mines Switch Door", [ [Episode.I, [6, 7]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.LargeCryoTube, 259, "Large Cryo-Tube", [ + [Episode.I, [6, 7]], + [Episode.II, [17]], +]); +define_object_type_data(ObjectType.ComputerLikeCalus, 260, "Computer (like calus)", [ + [Episode.I, [6, 7]], + [Episode.II, [17]], ]); -define_object_type_data(ObjectType.LargeCryoTube, 259, "Large Cryo-Tube", undefined); -define_object_type_data(ObjectType.ComputerLikeCalus, 260, "Computer (like calus)", undefined); define_object_type_data( ObjectType.GreenScreenOpeningAndClosing, 261, "Green Screen opening and closing", - undefined, + [[Episode.I, [6, 7]], [Episode.II, [17]]], ); -define_object_type_data(ObjectType.FloatingRobot, 262, "Floating Robot", undefined); -define_object_type_data(ObjectType.FloatingBlueLight, 263, "Floating Blue Light", undefined); -define_object_type_data( - ObjectType.SelfDestructingObject1, - 264, - "Self Destructing Object 1", - undefined, -); -define_object_type_data( - ObjectType.SelfDestructingObject2, - 265, - "Self Destructing Object 2", - undefined, -); -define_object_type_data( - ObjectType.SelfDestructingObject3, - 266, - "Self Destructing Object 3", - undefined, -); -define_object_type_data(ObjectType.SparkMachine, 267, "Spark Machine", undefined); +define_object_type_data(ObjectType.FloatingRobot, 262, "Floating Robot", [[Episode.I, [6, 7]]]); +define_object_type_data(ObjectType.FloatingBlueLight, 263, "Floating Blue Light", [ + [Episode.I, [6, 7]], +]); +define_object_type_data(ObjectType.SelfDestructingObject1, 264, "Self Destructing Object 1", [ + [Episode.I, [6, 7]], +]); +define_object_type_data(ObjectType.SelfDestructingObject2, 265, "Self Destructing Object 2", [ + [Episode.I, [6, 7]], +]); +define_object_type_data(ObjectType.SelfDestructingObject3, 266, "Self Destructing Object 3", [ + [Episode.I, [6, 7]], +]); +define_object_type_data(ObjectType.SparkMachine, 267, "Spark Machine", [[Episode.I, [6, 7]]]); define_object_type_data(ObjectType.MinesLargeFlashingCrate, 268, "Mines Large Flashing Crate", [ [Episode.I, [6, 7]], ]); -define_object_type_data(ObjectType.RuinsSeal, 304, "Ruins Seal", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsSeal, 304, "Ruins Seal", [[Episode.I, [13]]]); define_object_type_data(ObjectType.RuinsTeleporter, 320, "Ruins Teleporter", [ [Episode.I, [8, 9, 10]], ]); @@ -1096,7 +1415,7 @@ define_object_type_data(ObjectType.RuinsWarpSiteToSite, 321, "Ruins Warp (Site t [Episode.I, [8, 9, 10]], ]); define_object_type_data(ObjectType.RuinsSwitch, 322, "Ruins Switch", [[Episode.I, [8, 9, 10]]]); -define_object_type_data(ObjectType.FloorPanel4, 323, "Floor Panel 4", undefined); +define_object_type_data(ObjectType.FloorPanel4, 323, "Floor Panel 4", [[Episode.I, [8, 9, 10]]]); define_object_type_data(ObjectType.Ruins1Door, 324, "Ruins 1 Door", [[Episode.I, [8]]]); define_object_type_data(ObjectType.Ruins3Door, 325, "Ruins 3 Door", [[Episode.I, [10]]]); define_object_type_data(ObjectType.Ruins2Door, 326, "Ruins 2 Door", [[Episode.I, [9]]]); @@ -1121,9 +1440,11 @@ define_object_type_data(ObjectType.RuinsFenceSwitch, 333, "Ruins Fence Switch", ]); define_object_type_data(ObjectType.RuinsLaserFence4x2, 334, "Ruins Laser Fence 4x2", [ [Episode.I, [8, 9, 10]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], ]); define_object_type_data(ObjectType.RuinsLaserFence6x2, 335, "Ruins Laser Fence 6x2", [ [Episode.I, [8, 9, 10]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], ]); define_object_type_data(ObjectType.RuinsLaserFence4x4, 336, "Ruins Laser Fence 4x4", [ [Episode.I, [8, 9, 10]], @@ -1133,236 +1454,377 @@ define_object_type_data(ObjectType.RuinsLaserFence6x4, 337, "Ruins Laser Fence 6 ]); define_object_type_data(ObjectType.RuinsPoisonBlob, 338, "Ruins poison Blob", [ [Episode.I, [8, 9, 10]], + [Episode.II, [5, 6, 7, 8, 9]], + [Episode.IV, [6, 7, 8]], ]); define_object_type_data(ObjectType.RuinsPillarTrap, 339, "Ruins Pillar Trap", [ [Episode.I, [8, 9, 10]], + [Episode.II, [1, 2, 3, 4]], +]); +define_object_type_data(ObjectType.PopupTrapNoTech, 340, "Popup Trap (No Tech)", [ + [Episode.I, [8, 9, 10]], ]); -define_object_type_data(ObjectType.PopupTrapNoTech, 340, "Popup Trap (No Tech)", undefined); define_object_type_data(ObjectType.RuinsCrystal, 341, "Ruins Crystal", [[Episode.I, [8, 9, 10]]]); -define_object_type_data(ObjectType.Monument, 342, "Monument", undefined); -define_object_type_data(ObjectType.RuinsRock1, 345, "Ruins Rock 1", undefined); -define_object_type_data(ObjectType.RuinsRock2, 346, "Ruins Rock 2", undefined); -define_object_type_data(ObjectType.RuinsRock3, 347, "Ruins Rock 3", undefined); -define_object_type_data(ObjectType.RuinsRock4, 348, "Ruins Rock 4", undefined); -define_object_type_data(ObjectType.RuinsRock5, 349, "Ruins Rock 5", undefined); -define_object_type_data(ObjectType.RuinsRock6, 350, "Ruins Rock 6", undefined); -define_object_type_data(ObjectType.RuinsRock7, 351, "Ruins Rock 7", undefined); -define_object_type_data(ObjectType.Poison, 352, "Poison", undefined); -define_object_type_data(ObjectType.FixedBoxTypeRuins, 353, "Fixed Box Type (Ruins)", undefined); -define_object_type_data(ObjectType.RandomBoxTypeRuins, 354, "Random Box Type (Ruins)", undefined); -define_object_type_data(ObjectType.EnemyTypeBoxYellow, 355, "Enemy Type Box (Yellow)", undefined); -define_object_type_data(ObjectType.EnemyTypeBoxBlue, 356, "Enemy Type Box (Blue)", undefined); -define_object_type_data(ObjectType.EmptyTypeBoxBlue, 357, "Empty Type Box (Blue)", undefined); -define_object_type_data(ObjectType.DestructableRock, 358, "Destructable Rock", undefined); -define_object_type_data(ObjectType.PopupTrapsTechs, 359, "Popup Traps (techs)", undefined); -define_object_type_data(ObjectType.FlyingWhiteBird, 368, "Flying White Bird", undefined); -define_object_type_data(ObjectType.Tower, 369, "Tower", undefined); -define_object_type_data(ObjectType.FloatingRocks, 370, "Floating Rocks", undefined); -define_object_type_data(ObjectType.FloatingSoul, 371, "Floating Soul", undefined); -define_object_type_data(ObjectType.Butterfly, 372, "Butterfly", undefined); -define_object_type_data(ObjectType.LobbyGameMenu, 384, "Lobby Game menu", undefined); -define_object_type_data(ObjectType.LobbyWarpObject, 385, "Lobby Warp Object", undefined); +define_object_type_data(ObjectType.Monument, 342, "Monument", [[Episode.I, [2, 4, 7]]]); +define_object_type_data(ObjectType.RuinsRock1, 345, "Ruins Rock 1", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsRock2, 346, "Ruins Rock 2", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsRock3, 347, "Ruins Rock 3", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsRock4, 348, "Ruins Rock 4", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsRock5, 349, "Ruins Rock 5", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsRock6, 350, "Ruins Rock 6", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.RuinsRock7, 351, "Ruins Rock 7", [[Episode.I, [8, 9, 10]]]); +define_object_type_data(ObjectType.Poison, 352, "Poison", [ + [Episode.I, [8, 9, 10, 13]], + [Episode.II, [3, 4, 10, 11]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.FixedBoxTypeRuins, 353, "Fixed Box Type (Ruins)", [ + [Episode.I, [8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 14, 15]], +]); +define_object_type_data(ObjectType.RandomBoxTypeRuins, 354, "Random Box Type (Ruins)", [ + [Episode.I, [8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4, 14, 15]], +]); +define_object_type_data(ObjectType.EnemyTypeBoxYellow, 355, "Enemy Type Box (Yellow)", [ + [Episode.I, [8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4]], +]); +define_object_type_data(ObjectType.EnemyTypeBoxBlue, 356, "Enemy Type Box (Blue)", [ + [Episode.I, [8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4]], +]); +define_object_type_data(ObjectType.EmptyTypeBoxBlue, 357, "Empty Type Box (Blue)", [ + [Episode.I, [8, 9, 10, 16, 17]], + [Episode.II, [1, 2, 3, 4]], +]); +define_object_type_data(ObjectType.DestructableRock, 358, "Destructable Rock", [ + [Episode.I, [8, 9, 10]], +]); +define_object_type_data(ObjectType.PopupTrapsTechs, 359, "Popup Traps (techs)", [ + [Episode.I, [6, 7, 8, 9, 10]], + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], +]); +define_object_type_data(ObjectType.FlyingWhiteBird, 368, "Flying White Bird", [ + [Episode.I, [14, 16]], + [Episode.II, [3, 4]], +]); +define_object_type_data(ObjectType.Tower, 369, "Tower", [[Episode.I, [14]]]); +define_object_type_data(ObjectType.FloatingRocks, 370, "Floating Rocks", [[Episode.I, [14]]]); +define_object_type_data(ObjectType.FloatingSoul, 371, "Floating Soul", [[Episode.I, [14]]]); +define_object_type_data(ObjectType.Butterfly, 372, "Butterfly", [[Episode.I, [14]]]); +define_object_type_data(ObjectType.LobbyGameMenu, 384, "Lobby Game menu", [[Episode.I, [15]]]); +define_object_type_data(ObjectType.LobbyWarpObject, 385, "Lobby Warp Object", [[Episode.I, [15]]]); define_object_type_data( ObjectType.Lobby1EventObjectDefaultTree, 386, "Lobby 1 Event Object (Default Tree)", - undefined, + [[Episode.I, [15]]], ); -define_object_type_data(ObjectType.UnknownItem387, 387, "Unknown Item (387)", undefined); -define_object_type_data(ObjectType.UnknownItem388, 388, "Unknown Item (388)", undefined); -define_object_type_data(ObjectType.UnknownItem389, 389, "Unknown Item (389)", undefined); +define_object_type_data(ObjectType.UnknownItem387, 387, "Unknown Item (387)", [[Episode.I, [15]]]); +define_object_type_data(ObjectType.UnknownItem388, 388, "Unknown Item (388)", [[Episode.I, [15]]]); +define_object_type_data(ObjectType.UnknownItem389, 389, "Unknown Item (389)", [[Episode.I, [15]]]); define_object_type_data( ObjectType.LobbyEventObjectStaticPumpkin, 390, "Lobby Event Object (Static Pumpkin)", - undefined, + [[Episode.I, [15]]], ); define_object_type_data( ObjectType.LobbyEventObject3ChristmasWindows, 391, "Lobby Event Object (3 Christmas Windows)", - undefined, + [[Episode.I, [15]]], ); define_object_type_data( ObjectType.LobbyEventObjectRedAndWhiteCurtain, 392, "Lobby Event Object (Red and White Curtain)", - undefined, + [[Episode.I, [15]]], ); -define_object_type_data(ObjectType.UnknownItem393, 393, "Unknown Item (393)", undefined); -define_object_type_data(ObjectType.UnknownItem394, 394, "Unknown Item (394)", undefined); -define_object_type_data(ObjectType.LobbyFishTank, 395, "Lobby Fish Tank", undefined); +define_object_type_data(ObjectType.UnknownItem393, 393, "Unknown Item (393)", [[Episode.I, [15]]]); +define_object_type_data(ObjectType.UnknownItem394, 394, "Unknown Item (394)", [[Episode.I, [15]]]); +define_object_type_data(ObjectType.LobbyFishTank, 395, "Lobby Fish Tank", [[Episode.I, [15]]]); define_object_type_data( ObjectType.LobbyEventObjectButterflies, 396, "Lobby Event Object (Butterflies)", - undefined, + [[Episode.I, [15]]], ); -define_object_type_data(ObjectType.UnknownItem400, 400, "Unknown Item (400)", undefined); -define_object_type_data(ObjectType.GreyWallLow, 401, "grey wall low", undefined); -define_object_type_data(ObjectType.SpaceshipDoor, 402, "Spaceship Door", undefined); -define_object_type_data(ObjectType.GreyWallHigh, 403, "grey wall high", undefined); -define_object_type_data(ObjectType.TempleNormalDoor, 416, "Temple Normal Door", undefined); +define_object_type_data(ObjectType.UnknownItem400, 400, "Unknown Item (400)", [ + [Episode.I, [16]], + [Episode.II, [3, 4]], +]); +define_object_type_data(ObjectType.GreyWallLow, 401, "grey wall low", [ + [Episode.I, [16]], + [Episode.II, [3, 4, 17]], +]); +define_object_type_data(ObjectType.SpaceshipDoor, 402, "Spaceship Door", [ + [Episode.I, [16]], + [Episode.II, [3, 4]], +]); +define_object_type_data(ObjectType.GreyWallHigh, 403, "grey wall high", [ + [Episode.I, [16]], + [Episode.II, [3, 4, 17]], +]); +define_object_type_data(ObjectType.TempleNormalDoor, 416, "Temple Normal Door", [ + [Episode.I, [17]], + [Episode.II, [1, 2]], +]); define_object_type_data( ObjectType.BreakableWallWallButUnbreakable, 417, '"breakable wall wall, but unbreakable"', - undefined, -); -define_object_type_data( - ObjectType.BrokenCylinderAndRubble, - 418, - "Broken cylinder and rubble", - undefined, + [[Episode.I, [17]], [Episode.II, [1, 2]]], ); +define_object_type_data(ObjectType.BrokenCylinderAndRubble, 418, "Broken cylinder and rubble", [ + [Episode.I, [17]], + [Episode.II, [1, 2]], +]); define_object_type_data( ObjectType.ThreeBrokenWallPiecesOnFloor, 419, "3 broken wall pieces on floor", - undefined, + [[Episode.I, [17]], [Episode.II, [1, 2]]], ); -define_object_type_data(ObjectType.HighBrickCylinder, 420, "high brick cylinder", undefined); -define_object_type_data(ObjectType.LyingCylinder, 421, "lying cylinder", undefined); -define_object_type_data( - ObjectType.BrickConeWithFlatTop, - 422, - "brick cone with flat top", - undefined, -); -define_object_type_data(ObjectType.BreakableTempleWall, 423, "breakable temple wall", undefined); -define_object_type_data(ObjectType.TempleMapDetect, 424, "Temple Map Detect", undefined); +define_object_type_data(ObjectType.HighBrickCylinder, 420, "high brick cylinder", [ + [Episode.I, [17]], + [Episode.II, [1, 2]], +]); +define_object_type_data(ObjectType.LyingCylinder, 421, "lying cylinder", [ + [Episode.I, [17]], + [Episode.II, [1, 2]], +]); +define_object_type_data(ObjectType.BrickConeWithFlatTop, 422, "brick cone with flat top", [ + [Episode.I, [17]], + [Episode.II, [1, 2]], +]); +define_object_type_data(ObjectType.BreakableTempleWall, 423, "breakable temple wall", [ + [Episode.I, [17]], + [Episode.II, [1, 2]], +]); +define_object_type_data(ObjectType.TempleMapDetect, 424, "Temple Map Detect", [ + [Episode.I, [17]], + [Episode.II, [1, 2, 14]], + [Episode.IV, [1, 2, 3, 4, 5]], +]); define_object_type_data( ObjectType.SmallBrownBrickRisingBridge, 425, "small brown brick rising bridge", - undefined, + [[Episode.I, [17]], [Episode.II, [1, 2]]], ); define_object_type_data( ObjectType.LongRisingBridgeWithPinkHighEdges, 426, "long rising bridge (with pink high edges)", - undefined, -); -define_object_type_data(ObjectType.FourSwitchTempleDoor, 427, "4 switch temple door", undefined); -define_object_type_data( - ObjectType.FourButtonSpaceshipDoor, - 448, - "4 button spaceship door", - undefined, -); -define_object_type_data(ObjectType.ItemBoxCca, 512, "item box cca", undefined); -define_object_type_data(ObjectType.TeleporterEp2, 513, "Teleporter (Ep 2)", undefined); -define_object_type_data(ObjectType.CCADoor, 514, "CCA Door", undefined); -define_object_type_data(ObjectType.SpecialBoxCCA, 515, "Special Box CCA", undefined); -define_object_type_data(ObjectType.BigCCADoor, 516, "Big CCA Door", undefined); -define_object_type_data(ObjectType.BigCCADoorSwitch, 517, "Big CCA Door Switch", undefined); -define_object_type_data(ObjectType.LittleRock, 518, "Little Rock", undefined); -define_object_type_data(ObjectType.Little3StoneWall, 519, "Little 3 Stone Wall", undefined); -define_object_type_data(ObjectType.Medium3StoneWall, 520, "Medium 3 stone wall", undefined); -define_object_type_data(ObjectType.SpiderPlant, 521, "Spider Plant", undefined); -define_object_type_data(ObjectType.CCAAreaTeleporter, 522, "CCA Area Teleporter", undefined); -define_object_type_data(ObjectType.UnknownItem523, 523, "Unknown Item (523)", undefined); -define_object_type_data(ObjectType.WhiteBird, 524, "White Bird", undefined); -define_object_type_data(ObjectType.OrangeBird, 525, "Orange Bird", undefined); -define_object_type_data(ObjectType.Saw, 527, "Saw", undefined); -define_object_type_data(ObjectType.LaserDetect, 528, "Laser Detect", undefined); -define_object_type_data(ObjectType.UnknownItem529, 529, "Unknown Item (529)", undefined); -define_object_type_data(ObjectType.UnknownItem530, 530, "Unknown Item (530)", undefined); -define_object_type_data(ObjectType.Seagull, 531, "Seagull", undefined); -define_object_type_data(ObjectType.Fish, 544, "Fish", undefined); -define_object_type_data( - ObjectType.SeabedDoorWithBlueEdges, - 545, - "Seabed Door (with blue edges)", - undefined, + [[Episode.I, [17]], [Episode.II, [1, 2]]], ); +define_object_type_data(ObjectType.FourSwitchTempleDoor, 427, "4 switch temple door", [ + [Episode.II, [1, 2]], +]); +define_object_type_data(ObjectType.FourButtonSpaceshipDoor, 448, "4 button spaceship door", [ + [Episode.II, [3, 4]], +]); +define_object_type_data(ObjectType.ItemBoxCca, 512, "item box cca", [ + [Episode.II, [5, 6, 7, 8, 9, 12, 16, 17]], + [Episode.IV, [5]], +]); +define_object_type_data(ObjectType.TeleporterEp2, 513, "Teleporter (Ep 2)", [ + [Episode.II, [5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17]], +]); +define_object_type_data(ObjectType.CCADoor, 514, "CCA Door", [ + [Episode.II, [5, 6, 7, 8, 9, 16, 17]], +]); +define_object_type_data(ObjectType.SpecialBoxCCA, 515, "Special Box CCA", [ + [Episode.II, [5, 6, 7, 8, 9, 12, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5]], +]); +define_object_type_data(ObjectType.BigCCADoor, 516, "Big CCA Door", [[Episode.II, [5]]]); +define_object_type_data(ObjectType.BigCCADoorSwitch, 517, "Big CCA Door Switch", [ + [Episode.II, [5, 6, 7, 8, 9, 16, 17]], +]); +define_object_type_data(ObjectType.LittleRock, 518, "Little Rock", [ + [Episode.II, [5, 6, 7, 8, 9, 16]], +]); +define_object_type_data(ObjectType.Little3StoneWall, 519, "Little 3 Stone Wall", [ + [Episode.II, [5, 6, 7, 8, 9, 16]], +]); +define_object_type_data(ObjectType.Medium3StoneWall, 520, "Medium 3 stone wall", [ + [Episode.II, [5, 6, 7, 8, 9, 16]], +]); +define_object_type_data(ObjectType.SpiderPlant, 521, "Spider Plant", [ + [Episode.II, [5, 6, 7, 8, 9, 16]], +]); +define_object_type_data(ObjectType.CCAAreaTeleporter, 522, "CCA Area Teleporter", [ + [Episode.II, [5, 6, 7, 8, 9, 16, 17]], +]); +define_object_type_data(ObjectType.UnknownItem523, 523, "Unknown Item (523)", [ + [Episode.II, [5, 12]], +]); +define_object_type_data(ObjectType.WhiteBird, 524, "White Bird", [ + [Episode.II, [6, 7, 9, 16, 17]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.OrangeBird, 525, "Orange Bird", [[Episode.II, [6, 7, 9, 17]]]); +define_object_type_data(ObjectType.Saw, 527, "Saw", [ + [Episode.II, [5, 6, 7, 8, 9, 10, 11, 16, 17]], +]); +define_object_type_data(ObjectType.LaserDetect, 528, "Laser Detect", [ + [Episode.II, [5, 6, 7, 8, 9, 10, 11, 16, 17]], +]); +define_object_type_data(ObjectType.UnknownItem529, 529, "Unknown Item (529)", [ + [Episode.II, [5, 6, 7]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem530, 530, "Unknown Item (530)", [ + [Episode.II, [5, 6, 7, 8, 9, 17]], +]); +define_object_type_data(ObjectType.Seagull, 531, "Seagull", [ + [Episode.II, [6, 7, 8, 9, 16]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.Fish, 544, "Fish", [ + [Episode.I, [15]], + [Episode.II, [6, 9, 10, 11, 16]], +]); +define_object_type_data(ObjectType.SeabedDoorWithBlueEdges, 545, "Seabed Door (with blue edges)", [ + [Episode.II, [10, 11]], +]); define_object_type_data( ObjectType.SeabedDoorAlwaysOpenNonTriggerable, 546, "Seabed door (always open, non-triggerable)", - undefined, + [[Episode.II, [10, 11]]], ); -define_object_type_data(ObjectType.LittleCryotube, 547, "Little Cryotube", undefined); -define_object_type_data( - ObjectType.WideGlassWallBreakable, - 548, - "Wide Glass Wall (breakable)", - undefined, -); -define_object_type_data(ObjectType.BlueFloatingRobot, 549, "Blue floating robot", undefined); -define_object_type_data(ObjectType.RedFloatingRobot, 550, "Red floating robot", undefined); -define_object_type_data(ObjectType.Dolphin, 551, "Dolphin", undefined); -define_object_type_data(ObjectType.CaptureTrap, 552, "Capture Trap", undefined); -define_object_type_data(ObjectType.VRLink, 553, "VR link", undefined); -define_object_type_data(ObjectType.UnknownItem576, 576, "Unknown Item (576)", undefined); -define_object_type_data(ObjectType.WarpInBarbaRayRoom, 640, "Warp in Barba Ray Room", undefined); -define_object_type_data(ObjectType.UnknownItem672, 672, "Unknown Item (672)", undefined); -define_object_type_data(ObjectType.GeeNest, 688, "Gee Nest", undefined); -define_object_type_data(ObjectType.LabComputerConsole, 689, "Lab Computer Console", undefined); +define_object_type_data(ObjectType.LittleCryotube, 547, "Little Cryotube", [ + [Episode.II, [10, 11, 17]], +]); +define_object_type_data(ObjectType.WideGlassWallBreakable, 548, "Wide Glass Wall (breakable)", [ + [Episode.II, [10, 11]], +]); +define_object_type_data(ObjectType.BlueFloatingRobot, 549, "Blue floating robot", [ + [Episode.II, [10, 11]], +]); +define_object_type_data(ObjectType.RedFloatingRobot, 550, "Red floating robot", [ + [Episode.II, [10, 11]], +]); +define_object_type_data(ObjectType.Dolphin, 551, "Dolphin", [[Episode.II, [10, 11]]]); +define_object_type_data(ObjectType.CaptureTrap, 552, "Capture Trap", [ + [Episode.II, [5, 6, 7, 8, 9, 10, 11, 16, 17]], +]); +define_object_type_data(ObjectType.VRLink, 553, "VR link", [ + [Episode.II, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], +]); +define_object_type_data(ObjectType.UnknownItem576, 576, "Unknown Item (576)", [[Episode.II, [12]]]); +define_object_type_data(ObjectType.WarpInBarbaRayRoom, 640, "Warp in Barba Ray Room", [ + [Episode.II, [14]], +]); +define_object_type_data(ObjectType.UnknownItem672, 672, "Unknown Item (672)", [[Episode.II, [15]]]); +define_object_type_data(ObjectType.GeeNest, 688, "Gee Nest", [ + [Episode.I, [8, 9, 10]], + [Episode.II, [5, 6, 7, 8, 9, 16, 17]], + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.LabComputerConsole, 689, "Lab Computer Console", [ + [Episode.II, [0]], +]); define_object_type_data( ObjectType.LabComputerConsoleGreenScreen, 690, "Lab Computer Console (Green Screen)", - undefined, + [[Episode.II, [0]]], ); -define_object_type_data(ObjectType.ChairYellowPillow, 691, "Chair, Yellow Pillow", undefined); +define_object_type_data(ObjectType.ChairYellowPillow, 691, "Chair, Yellow Pillow", [ + [Episode.II, [0]], +]); define_object_type_data( ObjectType.OrangeWallWithHoleInMiddle, 692, "orange wall with hole in middle", - undefined, -); -define_object_type_data( - ObjectType.GreyWallWithHoleInMiddle, - 693, - "grey wall with hole in middle", - undefined, -); -define_object_type_data(ObjectType.LongTable, 694, "long table", undefined); -define_object_type_data(ObjectType.GBAStation, 695, "GBA Station", undefined); -define_object_type_data(ObjectType.TalkLinkToSupport, 696, "Talk (link to support)", undefined); -define_object_type_data(ObjectType.InstaWarp, 697, "insta-warp", undefined); -define_object_type_data(ObjectType.LabInvisibleObject, 698, "Lab Invisible Object", undefined); -define_object_type_data(ObjectType.LabGlassWindowDoor, 699, "Lab Glass window Door", undefined); -define_object_type_data(ObjectType.UnknownItem700, 700, "Unknown Item (700)", undefined); -define_object_type_data(ObjectType.LabCelingWarp, 701, "Lab Celing Warp", undefined); -define_object_type_data(ObjectType.Ep4LightSource, 768, "Ep4 Light Source", undefined); -define_object_type_data(ObjectType.Cacti, 769, "cacti", undefined); -define_object_type_data(ObjectType.BigBrownRock, 770, "Big Brown Rock", undefined); -define_object_type_data(ObjectType.BreakableBrownRock, 771, "Breakable Brown Rock", undefined); -define_object_type_data(ObjectType.UnknownItem832, 832, "Unknown Item (832)", undefined); -define_object_type_data(ObjectType.UnknownItem833, 833, "Unknown Item (833)", undefined); -define_object_type_data(ObjectType.PoisonPlant, 896, "Poison Plant", undefined); -define_object_type_data(ObjectType.UnknownItem897, 897, "Unknown Item (897)", undefined); -define_object_type_data(ObjectType.UnknownItem898, 898, "Unknown Item (898)", undefined); -define_object_type_data(ObjectType.OozingDesertPlant, 899, "Oozing Desert Plant", undefined); -define_object_type_data(ObjectType.UnknownItem901, 901, "Unknown Item (901)", undefined); -define_object_type_data(ObjectType.BigBlackRocks, 902, "big black rocks", undefined); -define_object_type_data(ObjectType.UnknownItem903, 903, "Unknown Item (903)", undefined); -define_object_type_data(ObjectType.UnknownItem904, 904, "Unknown Item (904)", undefined); -define_object_type_data(ObjectType.UnknownItem905, 905, "Unknown Item (905)", undefined); -define_object_type_data(ObjectType.UnknownItem906, 906, "Unknown Item (906)", undefined); -define_object_type_data(ObjectType.FallingRock, 907, "Falling Rock", undefined); -define_object_type_data( - ObjectType.DesertPlantHasCollision, - 908, - "Desert Plant (has collision)", - undefined, + [[Episode.II, [0]]], ); +define_object_type_data(ObjectType.GreyWallWithHoleInMiddle, 693, "grey wall with hole in middle", [ + [Episode.II, [0]], +]); +define_object_type_data(ObjectType.LongTable, 694, "long table", [[Episode.II, [0]]]); +define_object_type_data(ObjectType.GBAStation, 695, "GBA Station", []); +define_object_type_data(ObjectType.TalkLinkToSupport, 696, "Talk (link to support)", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.InstaWarp, 697, "insta-warp", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 16, 17]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]], +]); +define_object_type_data(ObjectType.LabInvisibleObject, 698, "Lab Invisible Object", [ + [Episode.I, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], + [Episode.II, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 0]], +]); +define_object_type_data(ObjectType.LabGlassWindowDoor, 699, "Lab Glass window Door", [ + [Episode.II, [0]], +]); +define_object_type_data(ObjectType.UnknownItem700, 700, "Unknown Item (700)", [[Episode.II, [13]]]); +define_object_type_data(ObjectType.LabCeilingWarp, 701, "Lab Ceiling Warp", [[Episode.II, [0]]]); +define_object_type_data(ObjectType.Ep4LightSource, 768, "Ep4 Light Source", [ + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8, 9]], +]); +define_object_type_data(ObjectType.Cacti, 769, "cacti", [[Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]]]); +define_object_type_data(ObjectType.BigBrownRock, 770, "Big Brown Rock", [ + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.BreakableBrownRock, 771, "Breakable Brown Rock", [ + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem832, 832, "Unknown Item (832)", []); +define_object_type_data(ObjectType.UnknownItem833, 833, "Unknown Item (833)", []); +define_object_type_data(ObjectType.PoisonPlant, 896, "Poison Plant", [[Episode.IV, [6, 7, 8]]]); +define_object_type_data(ObjectType.UnknownItem897, 897, "Unknown Item (897)", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem898, 898, "Unknown Item (898)", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.OozingDesertPlant, 899, "Oozing Desert Plant", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem901, 901, "Unknown Item (901)", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.BigBlackRocks, 902, "big black rocks", [ + [Episode.IV, [1, 2, 3, 4, 5, 6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem903, 903, "Unknown Item (903)", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem904, 904, "Unknown Item (904)", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.UnknownItem905, 905, "Unknown Item (905)", []); +define_object_type_data(ObjectType.UnknownItem906, 906, "Unknown Item (906)", []); +define_object_type_data(ObjectType.FallingRock, 907, "Falling Rock", [[Episode.IV, [6, 7, 8]]]); +define_object_type_data(ObjectType.DesertPlantHasCollision, 908, "Desert Plant (has collision)", [ + [Episode.IV, [6, 7, 8]], +]); define_object_type_data( ObjectType.DesertFixedTypeBoxBreakableCrystals, 909, "Desert Fixed Type Box (Breakable Crystals)", - undefined, + [[Episode.IV, [6, 7, 8]]], ); -define_object_type_data(ObjectType.UnknownItem910, 910, "Unknown Item (910)", undefined); -define_object_type_data(ObjectType.BeeHive, 911, "Bee Hive", undefined); -define_object_type_data(ObjectType.UnknownItem912, 912, "Unknown Item (912)", undefined); -define_object_type_data(ObjectType.Heat, 913, "Heat", undefined); -define_object_type_data( - ObjectType.TopOfSaintMillionEgg, - 960, - "Top of saint million egg", - undefined, -); -define_object_type_data(ObjectType.UnknownItem961, 961, "Unknown Item (961)", undefined); +define_object_type_data(ObjectType.UnknownItem910, 910, "Unknown Item (910)", []); +define_object_type_data(ObjectType.BeeHive, 911, "Bee Hive", [[Episode.IV, [6, 7, 8]]]); +define_object_type_data(ObjectType.UnknownItem912, 912, "Unknown Item (912)", [ + [Episode.IV, [6, 7, 8]], +]); +define_object_type_data(ObjectType.Heat, 913, "Heat", [[Episode.IV, [6, 7, 8]]]); +define_object_type_data(ObjectType.TopOfSaintMillionEgg, 960, "Top of saint million egg", [ + [Episode.IV, [9]], +]); +define_object_type_data(ObjectType.UnknownItem961, 961, "Unknown Item (961)", [[Episode.IV, [9]]]); + +Object.freeze(OBJECT_TYPES); +Object.freeze(OBJECT_TYPE_DATA); diff --git a/src/quest_editor/loading/entities.ts b/src/quest_editor/loading/entities.ts index 75382068..958d24ea 100644 --- a/src/quest_editor/loading/entities.ts +++ b/src/quest_editor/loading/entities.ts @@ -49,12 +49,24 @@ for (const type of [ ObjectType.Unknown, ObjectType.PlayerSet, + ObjectType.Particle, + ObjectType.LightCollision, + ObjectType.EnvSound, ObjectType.FogCollision, ObjectType.EventCollision, + ObjectType.CharaCollision, ObjectType.ObjRoomID, + ObjectType.LensFlare, ObjectType.ScriptCollision, + ObjectType.MapCollision, + ObjectType.ScriptCollisionA, ObjectType.ItemLight, + ObjectType.RadarCollision, ObjectType.FogCollisionSW, + ObjectType.ImageBoard, + ObjectType.UnknownItem29, + ObjectType.UnknownItem30, + ObjectType.UnknownItem31, ObjectType.MenuActivation, ObjectType.BoxDetectObject, ObjectType.SymbolChatObject, @@ -62,10 +74,40 @@ for (const type of [ ObjectType.TargetableObject, ObjectType.EffectObject, ObjectType.CountDownObject, + ObjectType.UnknownItem38, + ObjectType.UnknownItem39, + ObjectType.UnknownItem40, + ObjectType.UnknownItem41, ObjectType.TelepipeLocation, + ObjectType.BGMCollision, ObjectType.Pioneer2InvisibleTouchplate, ObjectType.TempleMapDetect, + ObjectType.Firework, + ObjectType.MainRagolTeleporterBattleInNextArea, + ObjectType.Rainbow, + ObjectType.FloatingBlueLight, + ObjectType.PopupTrapNoTech, + ObjectType.Poison, + ObjectType.EnemyTypeBoxYellow, + ObjectType.EnemyTypeBoxBlue, + ObjectType.EmptyTypeBoxBlue, + ObjectType.FloatingRocks, + ObjectType.FloatingSoul, + ObjectType.Butterfly, + ObjectType.UnknownItem400, + ObjectType.CCAAreaTeleporter, + ObjectType.UnknownItem523, + ObjectType.WhiteBird, + ObjectType.OrangeBird, + ObjectType.UnknownItem529, + ObjectType.UnknownItem530, + ObjectType.Seagull, + ObjectType.UnknownItem576, + ObjectType.WarpInBarbaRayRoom, + ObjectType.UnknownItem672, + ObjectType.InstaWarp, ObjectType.LabInvisibleObject, + ObjectType.UnknownItem700, ]) { geom_cache.set(type, DEFAULT_ENTITY_PROMISE); tex_cache.set(type, DEFAULT_ENTITY_TEX_PROMISE);