From bff2d4a80bf23a1b2bcf29fa0119284f02a3c1f4 Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Sun, 14 Apr 2024 22:27:06 -0400 Subject: [PATCH] Jak 1: Wrote Regions, Rules, init. Untested. --- worlds/jakanddaxter/Items.py | 19 +- worlds/jakanddaxter/Locations.py | 23 +-- worlds/jakanddaxter/Options.py | 7 +- worlds/jakanddaxter/Regions.py | 128 ++++++++++++- worlds/jakanddaxter/Rules.py | 112 +++++++++++ worlds/jakanddaxter/__init__.py | 43 +++++ worlds/jakanddaxter/locs/CellLocations.py | 204 +++++++++++---------- worlds/jakanddaxter/locs/OrbLocations.py | 65 +++++++ worlds/jakanddaxter/locs/ScoutLocations.py | 2 + 9 files changed, 470 insertions(+), 133 deletions(-) create mode 100644 worlds/jakanddaxter/locs/OrbLocations.py diff --git a/worlds/jakanddaxter/Items.py b/worlds/jakanddaxter/Items.py index 8dd7fa5430..d1bac68258 100644 --- a/worlds/jakanddaxter/Items.py +++ b/worlds/jakanddaxter/Items.py @@ -6,19 +6,20 @@ class JakAndDaxterItem(Item): # Items Found Multiple Times generic_item_table = { - "Power Cell": 1000, - "Scout Fly": 2000, - "Precursor Orb": 3000 + 0: "Power Cell", + 101: "Scout Fly", + 213: "Precursor Orb" } # Items Only Found Once special_item_table = { - "Fisherman's Boat": 0, - "Sculptor's Muse": 1, - "Flut Flut": 2, - "Blue Eco Switch": 3, - "Gladiator's Pontoons": 4, - "Yellow Eco Switch": 5 + 2213: "Fisherman's Boat", + 2214: "Sculptor's Muse", + 2215: "Flut Flut", + 2216: "Blue Eco Switch", + 2217: "Gladiator's Pontoons", + 2218: "Yellow Eco Switch", + 2219: "Lurker Fort Gate" } # All Items diff --git a/worlds/jakanddaxter/Locations.py b/worlds/jakanddaxter/Locations.py index 2834efc505..df6ac40016 100644 --- a/worlds/jakanddaxter/Locations.py +++ b/worlds/jakanddaxter/Locations.py @@ -1,13 +1,12 @@ import typing -import locs.CellLocations -import locs.ScoutLocations from BaseClasses import Location +import locs.CellLocations class JakAndDaxterLocation(Location): game: str = "Jak and Daxter: The Precursor Legacy" # All Locations -location_cellTable = { +location_table = { **locGR_cellTable, \ **locSV_cellTable, \ **locFJ_cellTable, \ @@ -23,21 +22,5 @@ location_cellTable = { **locSC_cellTable, \ **locSM_cellTable, \ **locLT_cellTable, \ - **locGMC_cellTable, \ - **locGR_scoutTable, \ - **locSV_scoutTable, \ - **locFJ_scoutTable, \ - **locSB_scoutTable, \ - **locMI_scoutTable, \ - **locFC_scoutTable, \ - **locRV_scoutTable, \ - **locPB_scoutTable, \ - **locLPC_scoutTable, \ - **locBS_scoutTable, \ - **locMP_scoutTable, \ - **locVC_scoutTable, \ - **locSC_scoutTable, \ - **locSM_scoutTable, \ - **locLT_scoutTable, \ - **locGMC_scoutTable + **locGMC_cellTable } diff --git a/worlds/jakanddaxter/Options.py b/worlds/jakanddaxter/Options.py index 9895b0a6bc..1751916f94 100644 --- a/worlds/jakanddaxter/Options.py +++ b/worlds/jakanddaxter/Options.py @@ -9,4 +9,9 @@ class EnableScoutFlies(Toggle): # class EnablePrecursorOrbs(Toggle): # """Enable to include each Precursor Orb as a check. Adds 2000 checks to the pool.""" -# display_name = "Enable Precursor Orbs" \ No newline at end of file +# display_name = "Enable Precursor Orbs" + +@dataclass +class JakAndDaxterOptions(PerGameCommonOptions): + enable_scout_flies: EnableScoutFlies + # enable_precursor_orbs: EnablePrecursorOrbs diff --git a/worlds/jakanddaxter/Regions.py b/worlds/jakanddaxter/Regions.py index 63f12f0098..578ef13c93 100644 --- a/worlds/jakanddaxter/Regions.py +++ b/worlds/jakanddaxter/Regions.py @@ -1,6 +1,8 @@ import typing -from BaseClasses import Region, Location +from BaseClasses import MultiWorld, Region, Entrance, Location +from .Options import JakAndDaxterOptions from .Locations import JakAndDaxterLocation, location_table +import locs.CellLocations class JakAndDaxterLevel(int, Enum): GEYSER_ROCK = 0 @@ -21,13 +23,135 @@ class JakAndDaxterLevel(int, Enum): GOL_AND_MAIAS_CITADEL = 15 class JakAndDaxterSubLevel(int, Enum): - MAIN = 0 + MAIN_AREA = 0 FORBIDDEN_JUNGLE_PLANT_ROOM = 1 SENTINEL_BEACH_CANNON_TOWER = 2 BOGGY_SWAMP_FLUT_FLUT = 3 MOUNTAIN_PASS_SHORTCUT = 4 SNOWY_MOUNTAIN_FLUT_FLUT = 5 SNOWY_MOUNTAIN_LURKER_FORT = 6 + GOL_AND_MAIAS_CITADEL_ROTATING_TOWER = 7 + +level_table: typing.Dict[JakAndDaxterLevel, str] = { + JakAndDaxterLevel.GEYSER_ROCK: "Geyser Rock", + JakAndDaxterLevel.SANDOVER_VILLAGE: "Sandover Village", + JakAndDaxterLevel.FORBIDDEN_JUNGLE: "Forbidden Jungle", + JakAndDaxterLevel.SENTINEL_BEACH: "Sentinel Beach", + JakAndDaxterLevel.MISTY_ISLAND: "Misty Island", + JakAndDaxterLevel.FIRE_CANYON: "Fire Canyon", + JakAndDaxterLevel.ROCK_VILLAGE: "Rock Village", + JakAndDaxterLevel.PRECURSOR_BASIN: "Precursor Basin", + JakAndDaxterLevel.LOST_PRECURSOR_CITY: "Lost Precursor City", + JakAndDaxterLevel.BOGGY_SWAMP: "Boggy Swamp", + JakAndDaxterLevel.MOUNTAIN_PASS: "Mountain Pass", + JakAndDaxterLevel.VOLCANIC_CRATER: "Volcanic Crater", + JakAndDaxterLevel.SPIDER_CAVE: "Spider Cave", + JakAndDaxterLevel.SNOWY_MOUNTAIN: "Snowy Mountain", + JakAndDaxterLevel.LAVA_TUBE: "Lava Tube", + JakAndDaxterLevel.GOL_AND_MAIAS_CITADEL: "Gol and Maia's Citadel" +} + +subLevel_table: typing.Dict[JakAndDaxterSubLevel, str] = { + JakAndDaxterSubLevel.MAIN_AREA: "Main Area", + JakAndDaxterSubLevel.FORBIDDEN_JUNGLE_PLANT_ROOM: "Forbidden Jungle Plant Room", + JakAndDaxterSubLevel.SENTINEL_BEACH_CANNON_TOWER: "Sentinel Beach Cannon Tower", + JakAndDaxterSubLevel.BOGGY_SWAMP_FLUT_FLUT: "Boggy Swamp Flut Flut", + JakAndDaxterSubLevel.MOUNTAIN_PASS_SHORTCUT: "Mountain Pass Shortcut", + JakAndDaxterSubLevel.SNOWY_MOUNTAIN_FLUT_FLUT: "Snowy Mountain Flut Flut", + JakAndDaxterSubLevel.SNOWY_MOUNTAIN_LURKER_FORT: "Snowy Mountain Lurker Fort", + JakAndDaxterSubLevel.GOL_AND_MAIAS_CITADEL_ROTATING_TOWER: "Gol and Maia's Citadel Rotating Tower" +} class JakAndDaxterRegion(Region): game: str = "Jak and Daxter: The Precursor Legacy" + +def create_regions(multiworld: MultiWorld, options: JakAndDaxterOptions, player: int): + regionMenu = Region("Menu", player, multiworld) + + regionGR = create_region(player, multiworld, level_table[JakAndDaxterLevel.GEYSER_ROCK]) + create_locations(regionGR, locGR_cellTable) + + regionSV = create_region(player, multiworld, level_table[JakAndDaxterLevel.SANDOVER_VILLAGE]) + create_locations(regionSV, locSV_cellTable) + + regionFJ = create_region(player, multiworld, level_table[JakAndDaxterLevel.FORBIDDEN_JUNGLE]) + create_locations(regionFJ, {k: locFJ_cellTable[k] for k in {10, 11, 12, 14, 15, 16, 17}}) + + subRegionFJPR = create_subregion(regionFJ, subLevel_table[JakAndDaxterSubLevel.FORBIDDEN_JUNGLE_PLANT_ROOM]) + create_locations(subRegionFJPR, {k: locFJ_cellTable[k] for k in {13}}) + + regionSB = create_region(player, multiworld, level_table[JakAndDaxterLevel.SENTINEL_BEACH]) + create_locations(regionSB, {k: locSB_cellTable[k] for k in {18, 19, 20, 21, 23, 24, 25}}) + + subRegionSBCT = create_subregion(regionSB, subLevel_table[JakAndDaxterSubLevel.SENTINEL_BEACH_CANNON_TOWER]) + create_locations(subRegionSBCT, {k: locSB_cellTable[k] for k in {22}}) + + regionMI = create_region(player, multiworld, level_table[JakAndDaxterLevel.MISTY_ISLAND]) + create_locations(regionMI, locMI_cellTable) + + regionFC = create_region(player, multiworld, level_table[JakAndDaxterLevel.FIRE_CANYON]) + create_locations(regionFC, locFC_cellTable) + + regionRV = create_region(player, multiworld, level_table[JakAndDaxterLevel.ROCK_VILLAGE]) + create_locations(regionRV, locRV_cellTable) + + regionPB = create_region(player, multiworld, level_table[JakAndDaxterLevel.PRECURSOR_BASIN]) + create_locations(regionPB, locPB_cellTable) + + regionLPC = create_region(player, multiworld, level_table[JakAndDaxterLevel.LOST_PRECURSOR_CITY]) + create_locations(regionLPC, locPB_cellTable) + + regionBS = create_region(player, multiworld, level_table[JakAndDaxterLevel.BOGGY_SWAMP]) + create_locations(regionBS, {k: locBS_cellTable[k] for k in {59, 60, 61, 62, 63, 64}}) + + subRegionBSFF = create_subregion(regionBS, subLevel_table[JakAndDaxterSubLevel.BOGGY_SWAMP_FLUT_FLUT]) + create_locations(subRegionBSFF, {k: locBS_cellTable[k] for k in {58, 65}}) + + regionMP = create_region(player, multiworld, level_table[JakAndDaxterLevel.MOUNTAIN_PASS]) + create_locations(regionMP, {k: locMP_cellTable[k] for k in {66, 67, 69}}) + + subRegionMPS = create_subregion(regionMP, subLevel_table[JakAndDaxterSubLevel.MOUNTAIN_PASS_SHORTCUT]) + create_locations(subRegionMPS, {k: locMP_cellTable[k] for k in {68}}) + + regionVC = create_region(player, multiworld, level_table[JakAndDaxterLevel.VOLCANIC_CRATER]) + create_locations(regionVC, locVC_cellTable) + + regionSC = create_region(player, multiworld, level_table[JakAndDaxterLevel.SPIDER_CAVE]) + create_locations(regionSC, locSC_cellTable) + + regionSM = create_region(player, multiworld, level_table[JakAndDaxterLevel.SNOWY_MOUNTAIN]) + create_locations(regionSM, {k: locSM_cellTable[k] for k in {86, 87, 88, 89, 92}}) + + subRegionSMFF = create_subregion(regionSM, subLevel_table[JakAndDaxterSubLevel.SNOWY_MOUNTAIN_FLUT_FLUT]) + create_locations(subRegionSMFF, {k: locSM_cellTable[k] for k in {90}}) + + subRegionSMLF = create_subregion(regionSM, subLevel_table[JakAndDaxterSubLevel.SNOWY_MOUNTAIN_LURKER_FORT]) + create_locations(subRegionSMLF, {k: locSM_cellTable[k] for k in {91, 93}}) + + regionLT = create_region(player, multiworld, level_table[JakAndDaxterLevel.LAVA_TUBE]) + create_locations(regionLT, locLT_cellTable) + + regionGMC = create_region(player, multiworld, level_table[JakAndDaxterLevel.GOL_AND_MAIAS_CITADEL]) + create_locations(regionGMC, {k: locGMC_cellTable[k] for k in {96, 97, 98}}) + + subRegionGMCRT = create_subregion(regionSM, subLevel_table[JakAndDaxterSubLevel.GOL_AND_MAIAS_CITADEL_ROTATING_TOWER]) + create_locations(subRegionGMCRT, {k: locGMC_cellTable[k] for k in {99, 100}}) + +def create_region(player: int, multiworld: MultiWorld, name: str) -> JakAndDaxterRegion: + region = JakAndDaxterRegion(name, player, multiworld) + + multiworld.regions.append(region) + return region + +def create_subregion(parent: Region, name: str) -> JakAndDaxterRegion: + region = JakAndDaxterRegion(name, parent.player, parent.multiworld) + + connection = Entrance(parent.player, name, parent) + connection.connect(region) + parent.entrances.append(connection) + + parent.multiworld.regions.append(region) + return region + +def create_locations(region: Region, locs: typing.Dict[int, str]): + region.locations += [JakAndDaxterLocation(region.player, loc, location_table[loc], region) for loc in locs] diff --git a/worlds/jakanddaxter/Rules.py b/worlds/jakanddaxter/Rules.py index e69de29bb2..68767ed17b 100644 --- a/worlds/jakanddaxter/Rules.py +++ b/worlds/jakanddaxter/Rules.py @@ -0,0 +1,112 @@ +import typing +from BaseClasses import MultiWorld +from .Options import JakAndDaxterOptions +from .Locations import JakAndDaxterLocation, location_table +from .Regions import JakAndDaxterLevel, JakAndDaxterSubLevel, JakAndDaxterRegion, level_table, subLevel_table +from .Items import item_table + +def set_rules(multiworld: MultiWorld, options: JakAndDaxterOptions, player: int): + multiworld.get_region("Menu").connect(level_table[JakAndDaxterLevel.GEYSER_ROCK]) + + connect_regions(multiworld, player, + JakAndDaxterLevel.GEYSER_ROCK, + JakAndDaxterLevel.SANDOVER_VILLAGE, + lambda state: state.has(item_table[0], player, 4)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.SANDOVER_VILLAGE, + JakAndDaxterLevel.FORBIDDEN_JUNGLE) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.FORBIDDEN_JUNGLE_PLANT_ROOM, + lambda state: state.has(item_table[2216], player)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.SANDOVER_VILLAGE, + JakAndDaxterLevel.SENTINEL_BEACH) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.SENTINEL_BEACH_CANNON_TOWER, + lambda state: state.has(item_table[2216], player)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.SANDOVER_VILLAGE, + JakAndDaxterLevel.MISTY_ISLAND, + lambda state: state.has(item_table[2213], player)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.SANDOVER_VILLAGE, + JakAndDaxterLevel.FIRE_CANYON, + lambda state: state.has(item_table[0], player, 20)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.FIRE_CANYON, + JakAndDaxterLevel.ROCK_VILLAGE) + + connect_regions(multiworld, player, + JakAndDaxterLevel.ROCK_VILLAGE, + JakAndDaxterLevel.PRECURSOR_BASIN) + + connect_regions(multiworld, player, + JakAndDaxterLevel.ROCK_VILLAGE, + JakAndDaxterLevel.LOST_PRECURSOR_CITY) + + connect_regions(multiworld, player, + JakAndDaxterLevel.ROCK_VILLAGE, + JakAndDaxterLevel.BOGGY_SWAMP, + lambda state: state.has(item_table[2217], player)) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.BOGGY_SWAMP_FLUT_FLUT, + lambda state: state.has(item_table[2215], player)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.ROCK_VILLAGE, + JakAndDaxterLevel.MOUNTAIN_PASS, + lambda state: state.has(item_table[2217], player) && state.has(item_table[0], player, 45)) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.MOUNTAIN_PASS_SHORTCUT, + lambda state: state.has(item_table[2218], player)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.MOUNTAIN_PASS, + JakAndDaxterLevel.VOLCANIC_CRATER) + + connect_regions(multiworld, player, + JakAndDaxterLevel.VOLCANIC_CRATER, + JakAndDaxterLevel.SPIDER_CAVE) + + connect_regions(multiworld, player, + JakAndDaxterLevel.VOLCANIC_CRATER, + JakAndDaxterLevel.SNOWY_MOUNTAIN) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.SNOWY_MOUNTAIN_FLUT_FLUT, + lambda state: state.has(item_table[2215], player)) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.SNOWY_MOUNTAIN_LURKER_FORT, + lambda state: state.has(item_table[2219], player)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.VOLCANIC_CRATER, + JakAndDaxterLevel.LAVA_TUBE, + lambda state: state.has(item_table[0], player, 72)) + + connect_regions(multiworld, player, + JakAndDaxterLevel.LAVA_TUBE, + JakAndDaxterLevel.GOL_AND_MAIAS_CITADEL) + + assign_subregion_access_rule(multiworld, player, + JakAndDaxterSubLevel.GOL_AND_MAIAS_CITADEL_ROTATING_TOWER, + lambda state: state.has(item_table[96], player) && state.has(item_table[97], player) && state.has(item_table[98], player)) + +def connect_regions(multiworld: MultiWorld, player: int, source: int, target: int, rule = None): + sourceRegion = multiworld.get_region(level_table[source], player) + targetRegion = multiworld.get_region(level_table[target], player) + sourceRegion.connect(targetRegion, rule = rule) + +def assign_subregion_access_rule(multiworld: MultiWorld, player: int, target: int, rule = None): + targetEntrance = multiworld.get_entrance(multiworld, player, subLevel_table[target]) + targetEntrance.access_rule = rule diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py index e69de29bb2..6ba7598d10 100644 --- a/worlds/jakanddaxter/__init__.py +++ b/worlds/jakanddaxter/__init__.py @@ -0,0 +1,43 @@ +import typing, os, json +from BaseClasses import Item, Region, Entrance, Location +from .Locations import JakAndDaxterLocation, location_table +from .Options import JakAndDaxterOptions +from .Regions import JakAndDaxterLevel, JakAndDaxterSubLevel, JakAndDaxterRegion, level_table, subLevel_table, create_regions +from .Rules import set_rules +from .Items import JakAndDaxterItem, item_table, generic_item_table, special_item_table + +class JakAndDaxterWorld(World): + game: str = "Jak and Daxter: The Precursor Legacy" + game_id = 74680000 # All IDs will be offset by this number. + + # Stored as {ID: Name} pairs, these must now be swapped to {Name: ID} pairs. + item_name_to_id = {item_table[k], game_id + k for k in item_table} + location_name_to_id = {location_table[k], game_id + k for k in location_table} + + options_dataclass = JakAndDaxterOptions + + def create_regions(self): + create_regions(self.multiworld, self.options, self.player) + + def set_rules(self): + set_rules(self.multiworld, self.options, self.player) + + def create_item(self, name: str) -> Item: + item_id = item_name_to_id[name] + match name: + case "Power Cell": + classification = ItemClassification.progression_skip_balancing + case "Scout Fly": + classification = ItemClassification.progression_skip_balancing + case "Precursor Orb": + classification = ItemClassification.filler # TODO + case _: + classification = ItemClassification.progression + + item = JakAndDaxterItem(name, classification, item_id, player) + return item + + def create_items(self): + self.multiworld.itempool += [self.create_item(item_table[0]) for k in range(0, 100)] + self.multiworld.itempool += [self.create_item(item_table[101]) for k in range(101, 212)] + self.multiworld.itempool += [self.create_item(item_table[k]) for k in special_item_table] diff --git a/worlds/jakanddaxter/locs/CellLocations.py b/worlds/jakanddaxter/locs/CellLocations.py index cc5e9da6ce..4f674bff61 100644 --- a/worlds/jakanddaxter/locs/CellLocations.py +++ b/worlds/jakanddaxter/locs/CellLocations.py @@ -1,164 +1,166 @@ +# Power Cells start at ID 0 and end at ID 100. + # Geyser Rock locGR_cellTable = { - "GR: Find The Cell On The Path": 0, - "GR: Open The Precursor Door": 1, - "GR: Climb Up The Cliff": 2, - "GR: Free 7 Scout Flies": 3 + 0: "GR: Find The Cell On The Path", + 1: "GR: Open The Precursor Door", + 2: "GR: Climb Up The Cliff", + 3: "GR: Free 7 Scout Flies" } # Sandover Village locSV_cellTable = { - "SV: Bring 90 Orbs To The Mayor": 4, - "SV: Bring 90 Orbs to Your Uncle": 5, - "SV: Herd The Yakows Into The Pen": 6, - "SV: Bring 120 Orbs To The Oracle (1)": 7, - "SV: Bring 120 Orbs To The Oracle (2)": 8, - "SV: Free 7 Scout Flies": 9 + 4: "SV: Bring 90 Orbs To The Mayor", + 5: "SV: Bring 90 Orbs to Your Uncle", + 6: "SV: Herd The Yakows Into The Pen", + 7: "SV: Bring 120 Orbs To The Oracle (1)", + 8: "SV: Bring 120 Orbs To The Oracle (2)", + 9: "SV: Free 7 Scout Flies" } # Forbidden Jungle locFJ_cellTable = { - "FJ: Connect The Eco Beams": 10, - "FJ: Get To The Top Of The Temple": 11, - "FJ: Find The Blue Vent Switch": 12, - "FJ: Defeat The Dark Eco Plant": 13, - "FJ: Catch 200 Pounds Of Fish": 14, - "FJ: Follow The Canyon To The Sea": 15, - "FJ: Open The Locked Temple Door": 16, - "FJ: Free 7 Scout Flies": 17 + 10: "FJ: Connect The Eco Beams", + 11: "FJ: Get To The Top Of The Temple", + 12: "FJ: Find The Blue Vent Switch", + 13: "FJ: Defeat The Dark Eco Plant", + 14: "FJ: Catch 200 Pounds Of Fish", + 15: "FJ: Follow The Canyon To The Sea", + 16: "FJ: Open The Locked Temple Door", + 17: "FJ: Free 7 Scout Flies" } # Sentinel Beach locSB_cellTable = { - "SB: Unblock The Eco Harvesters": 18, - "SB: Push The Flut Flut Egg Off The Cliff": 19, - "SB: Get The Power Cell From The Pelican": 20, - "SB: Chase The Seagulls": 21, - "SB: Launch Up To The Cannon Tower": 22, - "SB: Explore The Beach": 23, - "SB: Climb The Sentinel": 24, - "SB: Free 7 Scout Flies": 25 + 18: "SB: Unblock The Eco Harvesters", + 19: "SB: Push The Flut Flut Egg Off The Cliff", + 20: "SB: Get The Power Cell From The Pelican", + 21: "SB: Chase The Seagulls", + 22: "SB: Launch Up To The Cannon Tower", + 23: "SB: Explore The Beach", + 24: "SB: Climb The Sentinel", + 25: "SB: Free 7 Scout Flies" } # Misty Island locMI_cellTable = { - "MI: Catch The Sculptor's Muse": 26, - "MI: Climb The Lurker Ship": 27, - "MI: Stop The Cannon": 28, - "MI: Return To The Dark Eco Pool": 29, - "MI: Destroy the Balloon Lurkers": 30, - "MI: Use Zoomer To Reach Power Cell": 31, - "MI: Use Blue Eco To Reach Power Cell": 32, - "MI: Free 7 Scout Flies": 33 + 26: "MI: Catch The Sculptor's Muse", + 27: "MI: Climb The Lurker Ship", + 28: "MI: Stop The Cannon", + 29: "MI: Return To The Dark Eco Pool", + 30: "MI: Destroy the Balloon Lurkers", + 31: "MI: Use Zoomer To Reach Power Cell", + 32: "MI: Use Blue Eco To Reach Power Cell", + 33: "MI: Free 7 Scout Flies" } # Fire Canyon locFC_cellTable = { - "FC: Reach The End Of Fire Canyon": 34, - "FC: Free 7 Scout Flies": 35 + 34: "FC: Reach The End Of Fire Canyon", + 35: "FC: Free 7 Scout Flies" } # Rock Village locRV_cellTable = { - "RV: Bring 90 Orbs To The Gambler": 36, - "RV: Bring 90 Orbs To The Geologist": 37, - "RV: Bring 90 Orbs To The Warrior": 38, - "RV: Bring 120 Orbs To The Oracle (1)": 39, - "RV: Bring 120 Orbs To The Oracle (2)": 40, - "RV: Free 7 Scout Flies": 41 + 36: "RV: Bring 90 Orbs To The Gambler", + 37: "RV: Bring 90 Orbs To The Geologist", + 38: "RV: Bring 90 Orbs To The Warrior", + 39: "RV: Bring 120 Orbs To The Oracle (1)", + 40: "RV: Bring 120 Orbs To The Oracle (2)", + 41: "RV: Free 7 Scout Flies" } # Precursor Basin locPB_cellTable = { - "PB: Herd The Moles Into Their Hole": 42, - "PB: Catch The Flying Lurkers": 43, - "PB: Beat Record Time On The Gorge": 44, - "PB: Get The Power Cell Over The Lake": 45, - "PB: Cure Dark Eco Infected Plants": 46, - "PB: Navigate The Purple Precursor Rings": 47, - "PB: Navigate The Blue Precursor Rings": 48, - "PB: Free 7 Scout Flies": 49 + 42: "PB: Herd The Moles Into Their Hole", + 43: "PB: Catch The Flying Lurkers", + 44: "PB: Beat Record Time On The Gorge", + 45: "PB: Get The Power Cell Over The Lake", + 46: "PB: Cure Dark Eco Infected Plants", + 47: "PB: Navigate The Purple Precursor Rings", + 48: "PB: Navigate The Blue Precursor Rings", + 49: "PB: Free 7 Scout Flies" } # Lost Precursor City locLPC_cellTable = { - "LPC: Raise The Chamber": 50, - "LPC: Follow The Colored Pipes": 51, - "LPC: Reach The Bottom Of The City": 52, - "LPC: Quickly Cross The Dangerous Pool": 53, - "LPC: Match The Platform Colors": 54, - "LPC: Climb The Slide Tube": 55, - "LPC: Reach The Center Of The Complex": 56, - "LPC: Free 7 Scout Flies": 57 + 50: "LPC: Raise The Chamber", + 51: "LPC: Follow The Colored Pipes", + 52: "LPC: Reach The Bottom Of The City", + 53: "LPC: Quickly Cross The Dangerous Pool", + 54: "LPC: Match The Platform Colors", + 55: "LPC: Climb The Slide Tube", + 56: "LPC: Reach The Center Of The Complex", + 57: "LPC: Free 7 Scout Flies" } # Boggy Swamp locBS_cellTable = { - "BS: Ride The Flut Flut": 58, - "BS: Protect Farthy's Snacks": 59, - "BS: Defeat The Lurker Ambush": 60, - "BS: Break The Tethers To The Zeppelin (1)": 61, - "BS: Break The Tethers To The Zeppelin (2)": 62, - "BS: Break The Tethers To The Zeppelin (3)": 63, - "BS: Break The Tethers To The Zeppelin (4)": 64, - "BS: Free 7 Scout Flies": 65 + 58: "BS: Ride The Flut Flut", + 59: "BS: Protect Farthy's Snacks", + 60: "BS: Defeat The Lurker Ambush", + 61: "BS: Break The Tethers To The Zeppelin (1)", + 62: "BS: Break The Tethers To The Zeppelin (2)", + 63: "BS: Break The Tethers To The Zeppelin (3)", + 64: "BS: Break The Tethers To The Zeppelin (4)", + 65: "BS: Free 7 Scout Flies" } # Mountain Pass locMP_cellTable = { - "MP: Defeat Klaww": 66, - "MP: Reach The End Of The Mountain Pass": 67, - "MP: Find The Hidden Power Cell": 68, - "MP: Free 7 Scout Flies": 69 + 66: "MP: Defeat Klaww", + 67: "MP: Reach The End Of The Mountain Pass", + 68: "MP: Find The Hidden Power Cell", + 69: "MP: Free 7 Scout Flies" } # Volcanic Crater locVC_cellTable = { - "VC: Bring 90 Orbs To The Miners (1)": 70, - "VC: Bring 90 Orbs To The Miners (2)": 71, - "VC: Bring 90 Orbs To The Miners (3)": 72, - "VC: Bring 90 Orbs To The Miners (4)": 73, - "VC: Bring 120 Orbs To The Oracle (1)": 74, - "VC: Bring 120 Orbs To The Oracle (2)": 75, - "VC: Find The Hidden Power Cell": 76, - "VC: Free 7 Scout Flies": 77 + 70: "VC: Bring 90 Orbs To The Miners (1)", + 71: "VC: Bring 90 Orbs To The Miners (2)", + 72: "VC: Bring 90 Orbs To The Miners (3)", + 73: "VC: Bring 90 Orbs To The Miners (4)", + 74: "VC: Bring 120 Orbs To The Oracle (1)", + 75: "VC: Bring 120 Orbs To The Oracle (2)", + 76: "VC: Find The Hidden Power Cell", + 77: "VC: Free 7 Scout Flies" } # Spider Cave locSC_cellTable = { - "SC: Use Your Goggles To Shoot The Gnawing Lurkers": 78, - "SC: Destroy The Dark Eco Crystals": 79, - "SC: Explore The Dark Cave": 80, - "SC: Climb The Giant Robot": 81, - "SC: Launch To The Poles": 82, - "SC: Navigate The Spider Tunnel": 83, - "SC: Climb the Precursor Platforms": 84, - "SC: Free 7 Scout Flies": 85 + 78: "SC: Use Your Goggles To Shoot The Gnawing Lurkers", + 79: "SC: Destroy The Dark Eco Crystals", + 80: "SC: Explore The Dark Cave", + 81: "SC: Climb The Giant Robot", + 82: "SC: Launch To The Poles", + 83: "SC: Navigate The Spider Tunnel", + 84: "SC: Climb the Precursor Platforms", + 85: "SC: Free 7 Scout Flies" } # Snowy Mountain locSM_cellTable = { - "SM: Find The Yellow Vent Switch": 86, - "SM: Stop The 3 Lurker Glacier Troops": 87, - "SM: Deactivate The Precursor Blockers": 88, - "SM: Open The Frozen Crate": 89, - "SM: Get Through The Lurker Fort": 90, - "SM: Open The Lurker Fort Gate": 91, - "SM: Survive The Lurker Infested Cave": 92, - "SM: Free 7 Scout Flies": 93 + 86: "SM: Find The Yellow Vent Switch", + 87: "SM: Stop The 3 Lurker Glacier Troops", + 88: "SM: Deactivate The Precursor Blockers", + 89: "SM: Open The Frozen Crate", + 90: "SM: Open The Lurker Fort Gate", + 91: "SM: Get Through The Lurker Fort", + 92: "SM: Survive The Lurker Infested Cave", + 93: "SM: Free 7 Scout Flies" } # Lava Tube locLT_cellTable = { - "LT: Cross The Lava Tube": 94, - "LT: Free 7 Scout Flies": 95 + 94: "LT: Cross The Lava Tube", + 95: "LT: Free 7 Scout Flies" } # Gol and Maias Citadel locGMC_cellTable = { - "GMC: Free The Blue Sage": 96, - "GMC: Free The Red Sage": 97, - "GMC: Free The Yellow Sage": 98, - "GMC: Free The Green Sage": 99, - "GMC: Free 7 Scout Flies ": 100 + 96: "GMC: Free The Blue Sage", + 97: "GMC: Free The Red Sage", + 98: "GMC: Free The Yellow Sage", + 99: "GMC: Free The Green Sage", + 100: "GMC: Free 7 Scout Flies" } diff --git a/worlds/jakanddaxter/locs/OrbLocations.py b/worlds/jakanddaxter/locs/OrbLocations.py new file mode 100644 index 0000000000..83037790d4 --- /dev/null +++ b/worlds/jakanddaxter/locs/OrbLocations.py @@ -0,0 +1,65 @@ +# Precursor Orbs start at ID 213 and end at ID 2212. + +# Geyser Rock +locGR_orbTable = { +} + +# Sandover Village +locSV_orbTable = { +} + +# Forbidden Jungle +locFJ_orbTable = { +} + +# Sentinel Beach +locSB_orbTable = { +} + +# Misty Island +locMI_orbTable = { +} + +# Fire Canyon +locFC_orbTable = { +} + +# Rock Village +locRV_orbTable = { +} + +# Precursor Basin +locPB_orbTable = { +} + +# Lost Precursor City +locLPC_orbTable = { +} + +# Boggy Swamp +locBS_orbTable = { +} + +# Mountain Pass +locMP_orbTable = { +} + +# Volcanic Crater +locVC_orbTable = { +} + +# Spider Cave +locSC_orbTable = { +} + +# Snowy Mountain +locSM_orbTable = { +} + +# Lava Tube +locLT_orbTable = { +} + +# Gol and Maias Citadel +locGMC_orbTable = { +} diff --git a/worlds/jakanddaxter/locs/ScoutLocations.py b/worlds/jakanddaxter/locs/ScoutLocations.py index 227380a443..fd1fe2f6dc 100644 --- a/worlds/jakanddaxter/locs/ScoutLocations.py +++ b/worlds/jakanddaxter/locs/ScoutLocations.py @@ -1,3 +1,5 @@ +# Scout Flies start at ID 101 and end at ID 212. + # Geyser Rock locGR_scoutTable = { }