Stardew Valley 6.x.x: The Content Update (#3478)

Focus of the Update: Compatibility with Stardew Valley 1.6 Released on March 19th 2024
This includes randomization for pretty much all of the new content, including but not limited to
- Raccoon Bundles
- Booksanity
- Skill Masteries
- New Recipes, Craftables, Fish, Maps, Farm Type, Festivals and Quests

This also includes a significant reorganisation of the code into "Content Packs", to allow for easier modularity of various game mechanics between the settings and the supported mods. This improves maintainability quite a bit.

In addition to that, a few **very** requested new features have been introduced, although they weren't the focus of this update
- Walnutsanity
- Player Buffs
- More customizability in settings, such as shorter special orders, ER without farmhouse
- New Remixed Bundles
This commit is contained in:
agilbert1412
2024-07-07 16:04:25 +03:00
committed by GitHub
parent f99ee77325
commit 9b22458f44
210 changed files with 10298 additions and 4540 deletions

View File

@@ -1,11 +1,11 @@
from typing import Union
from .magic_logic import MagicLogicMixin
from ...data.villagers_data import all_villagers
from ...logic.action_logic import ActionLogicMixin
from ...logic.base_logic import BaseLogicMixin, BaseLogic
from ...logic.building_logic import BuildingLogicMixin
from ...logic.cooking_logic import CookingLogicMixin
from ...logic.crafting_logic import CraftingLogicMixin
from ...logic.fishing_logic import FishingLogicMixin
from ...logic.has_logic import HasLogicMixin
from ...logic.received_logic import ReceivedLogicMixin
@@ -14,10 +14,9 @@ from ...logic.relationship_logic import RelationshipLogicMixin
from ...logic.tool_logic import ToolLogicMixin
from ...mods.mod_data import ModNames
from ...options import SkillProgression
from ...stardew_rule import StardewRule, False_, True_
from ...strings.ap_names.mods.mod_items import SkillLevel
from ...strings.craftable_names import ModCraftable, ModMachine
from ...stardew_rule import StardewRule, False_, True_, And
from ...strings.building_names import Building
from ...strings.craftable_names import ModCraftable, ModMachine
from ...strings.geode_names import Geode
from ...strings.machine_names import Machine
from ...strings.region_names import Region
@@ -33,7 +32,7 @@ class ModSkillLogicMixin(BaseLogicMixin):
class ModSkillLogic(BaseLogic[Union[HasLogicMixin, ReceivedLogicMixin, RegionLogicMixin, ActionLogicMixin, RelationshipLogicMixin, BuildingLogicMixin,
ToolLogicMixin, FishingLogicMixin, CookingLogicMixin, MagicLogicMixin]]):
ToolLogicMixin, FishingLogicMixin, CookingLogicMixin, CraftingLogicMixin, MagicLogicMixin]]):
def has_mod_level(self, skill: str, level: int) -> StardewRule:
if level <= 0:
return True_()
@@ -77,9 +76,10 @@ ToolLogicMixin, FishingLogicMixin, CookingLogicMixin, MagicLogicMixin]]):
def can_earn_socializing_skill_level(self, level: int) -> StardewRule:
villager_count = []
for villager in all_villagers:
if villager.mod_name in self.options.mods or villager.mod_name is None:
villager_count.append(self.logic.relationship.can_earn_relationship(villager.name, level))
for villager in self.content.villagers.values():
villager_count.append(self.logic.relationship.can_earn_relationship(villager.name, level))
return self.logic.count(level * 2, *villager_count)
def can_earn_archaeology_skill_level(self, level: int) -> StardewRule:
@@ -89,12 +89,12 @@ ToolLogicMixin, FishingLogicMixin, CookingLogicMixin, MagicLogicMixin]]):
shifter_rule = self.logic.has(ModCraftable.water_shifter)
preservation_rule = self.logic.has(ModMachine.hardwood_preservation_chamber)
if level >= 8:
return (self.logic.action.can_pan() & self.logic.tool.has_tool(Tool.hoe, ToolMaterial.gold)) & shifter_rule & preservation_rule
return (self.logic.tool.has_tool(Tool.pan, ToolMaterial.iridium) & self.logic.tool.has_tool(Tool.hoe, ToolMaterial.gold)) & shifter_rule & preservation_rule
if level >= 5:
return (self.logic.action.can_pan() & self.logic.tool.has_tool(Tool.hoe, ToolMaterial.iron)) & shifter_rule
return (self.logic.tool.has_tool(Tool.pan, ToolMaterial.gold) & self.logic.tool.has_tool(Tool.hoe, ToolMaterial.iron)) & shifter_rule
if level >= 3:
return self.logic.action.can_pan() | self.logic.tool.has_tool(Tool.hoe, ToolMaterial.copper)
return self.logic.action.can_pan() | self.logic.tool.has_tool(Tool.hoe, ToolMaterial.basic)
return self.logic.tool.has_tool(Tool.pan, ToolMaterial.iron) | self.logic.tool.has_tool(Tool.hoe, ToolMaterial.copper)
return self.logic.tool.has_tool(Tool.pan, ToolMaterial.copper) | self.logic.tool.has_tool(Tool.hoe, ToolMaterial.basic)
def can_earn_cooking_skill_level(self, level: int) -> StardewRule:
if level >= 6:
@@ -104,7 +104,13 @@ ToolLogicMixin, FishingLogicMixin, CookingLogicMixin, MagicLogicMixin]]):
return self.logic.cooking.can_cook()
def can_earn_binning_skill_level(self, level: int) -> StardewRule:
if level >= 6:
return self.logic.has(Machine.recycling_machine)
else:
return True_() # You can always earn levels 1-5 with trash cans
if level <= 2:
return True_()
binning_rule = [self.logic.has(ModMachine.trash_bin) & self.logic.has(Machine.recycling_machine)]
if level > 4:
binning_rule.append(self.logic.has(ModMachine.composter))
if level > 7:
binning_rule.append(self.logic.has(ModMachine.recycling_bin))
if level > 9:
binning_rule.append(self.logic.has(ModMachine.advanced_recycling_machine))
return And(*binning_rule)