mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Stardew Valley: Fix masteries logic so it requires levels and tools (#3640)
* fix and add test * add test to make sure we check xp can be earned * fix python 3.8 test my god I hope it gets removed soon * fixing some review comments * curse you monstersanity * move month rule to has_level vanilla, so next level is in logic once the previous item is received * use progressive masteries to skills in test alsanity * rename reset_collection_state * add more tests around skill and masteries rules * progressive level issue --------- Co-authored-by: agilbert1412 <alexgilbert@yahoo.com>
This commit is contained in:
@@ -154,7 +154,7 @@ def set_bundle_rules(bundle_rooms: List[BundleRoom], logic: StardewLogic, multiw
|
||||
extra_raccoons = extra_raccoons + num
|
||||
bundle_rules = logic.received(CommunityUpgrade.raccoon, extra_raccoons) & bundle_rules
|
||||
if num > 1:
|
||||
previous_bundle_name = f"Raccoon Request {num-1}"
|
||||
previous_bundle_name = f"Raccoon Request {num - 1}"
|
||||
bundle_rules = bundle_rules & logic.region.can_reach_location(previous_bundle_name)
|
||||
room_rules.append(bundle_rules)
|
||||
MultiWorldRules.set_rule(location, bundle_rules)
|
||||
@@ -168,13 +168,16 @@ def set_skills_rules(logic: StardewLogic, multiworld, player, world_options: Sta
|
||||
mods = world_options.mods
|
||||
if world_options.skill_progression == SkillProgression.option_vanilla:
|
||||
return
|
||||
|
||||
for i in range(1, 11):
|
||||
set_vanilla_skill_rule_for_level(logic, multiworld, player, i)
|
||||
set_modded_skill_rule_for_level(logic, multiworld, player, mods, i)
|
||||
if world_options.skill_progression != SkillProgression.option_progressive_with_masteries:
|
||||
|
||||
if world_options.skill_progression == SkillProgression.option_progressive:
|
||||
return
|
||||
|
||||
for skill in [Skill.farming, Skill.fishing, Skill.foraging, Skill.mining, Skill.combat]:
|
||||
MultiWorldRules.set_rule(multiworld.get_location(f"{skill} Mastery", player), logic.skill.can_earn_mastery_experience)
|
||||
MultiWorldRules.set_rule(multiworld.get_location(f"{skill} Mastery", player), logic.skill.can_earn_mastery(skill))
|
||||
|
||||
|
||||
def set_vanilla_skill_rule_for_level(logic: StardewLogic, multiworld, player, level: int):
|
||||
@@ -256,8 +259,7 @@ def set_entrance_rules(logic: StardewLogic, multiworld, player, world_options: S
|
||||
set_entrance_rule(multiworld, player, LogicEntrance.farmhouse_cooking, logic.cooking.can_cook_in_kitchen)
|
||||
set_entrance_rule(multiworld, player, LogicEntrance.shipping, logic.shipping.can_use_shipping_bin)
|
||||
set_entrance_rule(multiworld, player, LogicEntrance.watch_queen_of_sauce, logic.action.can_watch(Channel.queen_of_sauce))
|
||||
set_entrance_rule(multiworld, player, Entrance.forest_to_mastery_cave, logic.skill.can_enter_mastery_cave())
|
||||
set_entrance_rule(multiworld, player, Entrance.forest_to_mastery_cave, logic.skill.can_enter_mastery_cave())
|
||||
set_entrance_rule(multiworld, player, Entrance.forest_to_mastery_cave, logic.skill.can_enter_mastery_cave)
|
||||
set_entrance_rule(multiworld, player, LogicEntrance.buy_experience_books, logic.time.has_lived_months(2))
|
||||
set_entrance_rule(multiworld, player, LogicEntrance.buy_year1_books, logic.time.has_year_two)
|
||||
set_entrance_rule(multiworld, player, LogicEntrance.buy_year3_books, logic.time.has_year_three)
|
||||
|
||||
Reference in New Issue
Block a user