Archipelago/worlds/stardew_valley/content/mods/sve.py

127 lines
5.8 KiB
Python

from ..game_content import ContentPack, StardewContent
from ..mod_registry import register_mod_content_pack
from ..override import override
from ..vanilla.ginger_island import ginger_island_content_pack as ginger_island_content_pack
from ...data import villagers_data, fish_data
from ...data.harvest import ForagingSource
from ...data.requirement import YearRequirement
from ...mods.mod_data import ModNames
from ...strings.crop_names import Fruit
from ...strings.fish_names import WaterItem
from ...strings.flower_names import Flower
from ...strings.forageable_names import Mushroom, Forageable
from ...strings.region_names import Region, SVERegion
from ...strings.season_names import Season
class SVEContentPack(ContentPack):
def fish_hook(self, content: StardewContent):
if ginger_island_content_pack.name not in content.registered_packs:
content.fishes.pop(fish_data.baby_lunaloo.name)
content.fishes.pop(fish_data.clownfish.name)
content.fishes.pop(fish_data.lunaloo.name)
content.fishes.pop(fish_data.seahorse.name)
content.fishes.pop(fish_data.shiny_lunaloo.name)
content.fishes.pop(fish_data.starfish.name)
content.fishes.pop(fish_data.sea_sponge.name)
# Remove Highlands fishes at it requires 2 Lance hearts for the quest to access it
content.fishes.pop(fish_data.daggerfish.name)
content.fishes.pop(fish_data.gemfish.name)
# Remove Fable Reef fishes at it requires 8 Lance hearts for the event to access it
content.fishes.pop(fish_data.torpedo_trout.name)
def villager_hook(self, content: StardewContent):
if ginger_island_content_pack.name not in content.registered_packs:
# Remove Lance if Ginger Island is not in content since he is first encountered in Volcano Forge
content.villagers.pop(villagers_data.lance.name)
register_mod_content_pack(SVEContentPack(
ModNames.sve,
weak_dependencies=(
ginger_island_content_pack.name,
ModNames.jasper, # To override Marlon and Gunther
),
harvest_sources={
Mushroom.red: (
ForagingSource(regions=(SVERegion.forest_west,), seasons=(Season.summer, Season.fall)), ForagingSource(regions=(SVERegion.sprite_spring_cave,), )
),
Mushroom.purple: (
ForagingSource(regions=(SVERegion.forest_west,), seasons=(Season.fall,)), ForagingSource(regions=(SVERegion.sprite_spring_cave,), )
),
Mushroom.morel: (
ForagingSource(regions=(SVERegion.forest_west,), seasons=(Season.fall,)), ForagingSource(regions=(SVERegion.sprite_spring_cave,), )
),
Mushroom.chanterelle: (
ForagingSource(regions=(SVERegion.forest_west,), seasons=(Season.fall,)), ForagingSource(regions=(SVERegion.sprite_spring_cave,), )
),
Flower.tulip: (ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.spring,)),),
Flower.blue_jazz: (ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.spring,)),),
Flower.summer_spangle: (ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.summer,)),),
Flower.sunflower: (ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.summer,)),),
Flower.fairy_rose: (ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.fall,)),),
Fruit.ancient_fruit: (
ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.spring, Season.summer, Season.fall), other_requirements=(YearRequirement(3),)),
ForagingSource(regions=(SVERegion.sprite_spring_cave,)),
),
Fruit.sweet_gem_berry: (
ForagingSource(regions=(SVERegion.sprite_spring,), seasons=(Season.spring, Season.summer, Season.fall), other_requirements=(YearRequirement(3),)),
),
# Fable Reef
WaterItem.coral: (ForagingSource(regions=(SVERegion.fable_reef,)),),
Forageable.rainbow_shell: (ForagingSource(regions=(SVERegion.fable_reef,)),),
WaterItem.sea_urchin: (ForagingSource(regions=(SVERegion.fable_reef,)),),
},
fishes=(
fish_data.baby_lunaloo, # Removed when no ginger island
fish_data.bonefish,
fish_data.bull_trout,
fish_data.butterfish,
fish_data.clownfish, # Removed when no ginger island
fish_data.daggerfish,
fish_data.frog,
fish_data.gemfish,
fish_data.goldenfish,
fish_data.grass_carp,
fish_data.king_salmon,
fish_data.kittyfish,
fish_data.lunaloo, # Removed when no ginger island
fish_data.meteor_carp,
fish_data.minnow,
fish_data.puppyfish,
fish_data.radioactive_bass,
fish_data.seahorse, # Removed when no ginger island
fish_data.shiny_lunaloo, # Removed when no ginger island
fish_data.snatcher_worm,
fish_data.starfish, # Removed when no ginger island
fish_data.torpedo_trout,
fish_data.undeadfish,
fish_data.void_eel,
fish_data.water_grub,
fish_data.sea_sponge, # Removed when no ginger island
),
villagers=(
villagers_data.claire,
villagers_data.lance, # Removed when no ginger island
villagers_data.mommy,
villagers_data.sophia,
villagers_data.victor,
villagers_data.andy,
villagers_data.apples,
villagers_data.gunther,
villagers_data.martin,
villagers_data.marlon,
villagers_data.morgan,
villagers_data.scarlett,
villagers_data.susan,
villagers_data.morris,
# The wizard leaves his tower on sunday, for like 1 hour... Good enough for entrance rando!
override(villagers_data.wizard, locations=(Region.wizard_tower, Region.forest), bachelor=True, mod_name=ModNames.sve),
)
))