mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user