Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
35d18b9
moved shopsanity from expert to advanced regions since in vanilla it'…
dragonsbutalsorabbits May 14, 2025
a1675e0
-updated shopsanity description in options
dragonsbutalsorabbits May 14, 2025
9f2c814
finished entering the capital sequoia shops
dragonsbutalsorabbits May 14, 2025
199d89f
-added shopsanity checks to init
dragonsbutalsorabbits May 15, 2025
458107c
fixed incorrect artisan rapier id & one comment typo
dragonsbutalsorabbits May 15, 2025
15035b5
uncommented end-game shopsanity check in init
dragonsbutalsorabbits May 15, 2025
6ded450
added shop equipment to non_progressive_equipment tuple
dragonsbutalsorabbits May 15, 2025
255464c
added more shop locations
dragonsbutalsorabbits May 16, 2025
8d9770a
added more shop locations
dragonsbutalsorabbits May 16, 2025
5270e5e
added "or has glide" rule to a bunch of shoudu province locations
dragonsbutalsorabbits May 16, 2025
d5e8397
renamed Constants file to Keys bc it contains all the in-game keys
dragonsbutalsorabbits May 16, 2025
078b46f
made a constants file for key items
dragonsbutalsorabbits May 16, 2025
fa90142
-recategorized the Babel Quintar to a progression item because multip…
dragonsbutalsorabbits May 16, 2025
3a373a3
recategorized the Ancient Tablets to progression and added tablet A t…
dragonsbutalsorabbits May 16, 2025
fc1d4bd
fixed some incorrectly low shop ids and added the rest of the shops w…
dragonsbutalsorabbits May 16, 2025
d10cb3a
got some shit backwards oops
dragonsbutalsorabbits May 16, 2025
9cc5898
expert zone shop items are now in the shopsanity pool
dragonsbutalsorabbits May 16, 2025
9b54a18
Merge branch 'main' into shopsanity
FabulaFey May 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
804 changes: 435 additions & 369 deletions worlds/crystal_project/Items.py

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions worlds/crystal_project/KeyItems.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
BLACK_SQUIRREL = "Item - Black Squirrel"
DOG_BONE = "Item - Dog Bone"
CLAMSHELL = "Item - Clamshell"
DIGESTED_HEAD = "Item - Digested Head"
LOST_PENGUIN = "Item - Lost Penguin"
ELEVATOR_PART = "Item - Elevator Part"
UNDERSEA_CRAB = "Item - Undersea Crab"
WEST_LOOKOUT_TOKEN = "Item - West Lookout Token"
CENTRAL_LOOKOUT_TOKEN = "Item - Central Lookout Token"
NORTH_LOOKOUT_TOKEN = "Item - North Lookout Token"
BABEL_QUINTAR = "Item - Babel Quintar"
#"Item - Quintar Shedding"
CRAG_DEMON_HORN = "Item - Crag Demon Horn"
VERMILLION_BOOK = "Item - Vermillion Book"
VIRIDIAN_BOOK = "Item - Viridian Book"
CERULEAN_BOOK = "Item - Cerulean Book"
ANCIENT_TABLET_A = "Item - Ancient Tablet A"
ANCIENT_TABLET_B = "Item - Ancient Tablet B"
ANCIENT_TABLET_C = "Item - Ancient Tablet C"
TREASURE_FINDER = "Item - Treasure Finder"
PROGRESSIVE_LEVEL_CAP = "Item - Progressive Level Cap"
File renamed without changes.
495 changes: 466 additions & 29 deletions worlds/crystal_project/Locations.py

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions worlds/crystal_project/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ class KillBossesMode(Toggle):
"""
display_name = "Kill Bosses Mode"

When enabled, all shop inventories will be replaced with checks. Be prepared, adventurer.

class IncludedRegions(Choice):
"""
Expand Down
7 changes: 4 additions & 3 deletions worlds/crystal_project/Regions.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from .Options import CrystalProjectOptions
from .Locations import LocationData
from .rules import CrystalProjectLogic
from .Constants import *
from .Keys import *
from .KeyItems import *

class CrystalProjectLocation(Location):
game: str = "CrystalProject"
Expand Down Expand Up @@ -61,6 +62,7 @@ def init_areas(world: MultiWorld, locations: List[LocationData], options: Crysta
create_region(world, player, locations_per_region, "Greenshire Reprise", excluded),
create_region(world, player, locations_per_region, "Salmon Pass", excluded),
create_region(world, player, locations_per_region, "Salmon River", excluded),
create_region(world, player, locations_per_region, "Shoudu Waterfront", excluded), #moved Shoudu Waterfront from Expert to Advanced
create_region(world, player, locations_per_region, "Poko Poko Desert", excluded),
create_region(world, player, locations_per_region, "Sara Sara Bazaar", excluded),
create_region(world, player, locations_per_region, "Sara Sara Beach", excluded),
Expand All @@ -76,7 +78,6 @@ def init_areas(world: MultiWorld, locations: List[LocationData], options: Crysta

expert_regions = [
create_region(world, player, locations_per_region, "The Open Sea", excluded),
create_region(world, player, locations_per_region, "Shoudu Waterfront", excluded),
create_region(world, player, locations_per_region, "Shoudu Province", excluded),
create_region(world, player, locations_per_region, "The Undercity", excluded),
create_region(world, player, locations_per_region, "Ganymede Shrine", excluded),
Expand Down Expand Up @@ -211,7 +212,7 @@ def init_areas(world: MultiWorld, locations: List[LocationData], options: Crysta
{"Ancient Reservoir": lambda state: logic.has_key(state, PYRAMID_KEY) and logic.is_area_in_level_range(state, 3),
"Lake Delende": lambda state: logic.has_vertical_movement and logic.is_area_in_level_range(state, 3),
"Salmon Bay": logic.has_horizontal_movement and logic.has_vertical_movement,
"Ancient Labyrinth": lambda state: logic.has_vertical_movement and logic.has_glide and logic.is_area_in_level_range(state, 5)})
"Ancient Labyrinth": lambda state: state.has(ANCIENT_TABLET_A, player) and logic.has_vertical_movement and logic.has_glide and logic.is_area_in_level_range(state, 5)})
multiworld.get_region("Sara Sara Bazaar", player).add_exits(["Poko Poko Desert", "Sara Sara Beach", "Shoudu Province", "The Open Sea", "Continental Tram"],
{"Poko Poko Desert": lambda state: logic.is_area_in_level_range(state, 2),
"Sara Sara Beach": lambda state: logic.has_horizontal_movement and logic.is_area_in_level_range(state, 3),
Expand Down
10 changes: 10 additions & 0 deletions worlds/crystal_project/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,13 +346,23 @@ def get_item_pool(self, excluded_items: Set[str]) -> List[Item]:

for name, data in item_table.items():
if name not in excluded_items:
#Check region and add the region amounts; then check Shopsanity and add the shop amounts
amount:int = data.beginnerAmount
if self.options.shopsanity == self.options.shopsanity.option_true:
amount = amount + data.beginnerShops
if self.options.includedRegions == self.options.includedRegions.option_advanced:
amount = amount + data.advancedAmount
if self.options.shopsanity == self.options.shopsanity.option_true:
amount = amount + data.advancedShops
elif self.options.includedRegions == self.options.includedRegions.option_expert:
amount = amount + data.advancedAmount + data.expertAmount
if self.options.shopsanity == self.options.shopsanity.option_true:
amount = amount + data.expertShops
elif self.options.includedRegions == self.options.includedRegions.option_all:
amount = amount + data.advancedAmount + data.expertAmount + data.endGameAmount
#atm there are no end-game specific shopsanity items
if self.options.shopsanity == self.options.shopsanity.option_true:
amount = amount + data.endGameShops
for _ in range(amount):
item = self.set_classifications(name)
pool.append(item)
Expand Down
2 changes: 1 addition & 1 deletion worlds/crystal_project/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
from . import CrystalProjectWorld
from .Constants import *
from .Keys import *

class CrystalProjectLogic:
player: int
Expand Down
Loading