Stardew Valley: Fixed Help wanted rules, added missing coffee bean to cropsanity (#2089)

* - Added missing coffee bean to cropsanity

* - Fix an issue with the seed having the same name as the crop

* - Fix a recently discovered bug with help wanted rules when using a number not divisible by 7
This commit is contained in:
agilbert1412 2023-08-11 04:58:27 -04:00 committed by GitHub
parent d5514c4635
commit 01e8e9576c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 19 deletions

View File

@ -7,6 +7,7 @@ Blueberry,Summer,Blueberry Seeds,Summer,"Pierre's General Store,JojaMart"
Bok Choy,Fall,Bok Choy Seeds,Fall,"Pierre's General Store,JojaMart"
Cactus Fruit,,Cactus Seeds,,Oasis
Cauliflower,Spring,Cauliflower Seeds,Spring,"Pierre's General Store,JojaMart"
Coffee Bean,"Spring,Summer",Coffee Bean,"Summer,Fall","Traveling Cart"
Corn,"Summer,Fall",Corn Seeds,"Summer,Fall","Pierre's General Store,JojaMart"
Cranberries,Fall,Cranberry Seeds,Fall,"Pierre's General Store,JojaMart"
Eggplant,Fall,Eggplant Seeds,Fall,"Pierre's General Store,JojaMart"

1 crop farm_growth_seasons seed seed_seasons seed_regions
7 Bok Choy Fall Bok Choy Seeds Fall Pierre's General Store,JojaMart
8 Cactus Fruit Cactus Seeds Oasis
9 Cauliflower Spring Cauliflower Seeds Spring Pierre's General Store,JojaMart
10 Coffee Bean Spring,Summer Coffee Bean Summer,Fall Traveling Cart
11 Corn Summer,Fall Corn Seeds Summer,Fall Pierre's General Store,JojaMart
12 Cranberries Fall Cranberry Seeds Fall Pierre's General Store,JojaMart
13 Eggplant Fall Eggplant Seeds Fall Pierre's General Store,JojaMart

View File

@ -272,6 +272,7 @@ id,name,classification,groups,mod_name
285,Ugly Baby,progression,"BABY",
286,Deluxe Scarecrow Recipe,progression,"FESTIVAL,RARECROW",
287,Treehouse,progression,"GINGER_ISLAND",
288,Coffee Bean,progression,CROPSANITY,
4001,Burnt,trap,TRAP,
4002,Darkness,trap,TRAP,
4003,Frozen,trap,TRAP,

1 id name classification groups mod_name
272 285 Ugly Baby progression BABY
273 286 Deluxe Scarecrow Recipe progression FESTIVAL,RARECROW
274 287 Treehouse progression GINGER_ISLAND
275 288 Coffee Bean progression CROPSANITY
276 4001 Burnt trap TRAP
277 4002 Darkness trap TRAP
278 4003 Frozen trap TRAP

View File

@ -1036,6 +1036,7 @@ id,region,name,tags,mod_name
2344,Farm,Harvest Peach,"CROPSANITY",
2345,Farm,Harvest Banana,"CROPSANITY,GINGER_ISLAND",
2346,Farm,Harvest Mango,"CROPSANITY,GINGER_ISLAND",
2347,Farm,Harvest Coffee Bean,"CROPSANITY",
5001,Stardew Valley,Level 1 Luck,"LUCK_LEVEL,SKILL_LEVEL",Luck Skill
5002,Stardew Valley,Level 2 Luck,"LUCK_LEVEL,SKILL_LEVEL",Luck Skill
5003,Stardew Valley,Level 3 Luck,"LUCK_LEVEL,SKILL_LEVEL",Luck Skill

1 id region name tags mod_name
1036 2344 Farm Harvest Peach CROPSANITY
1037 2345 Farm Harvest Banana CROPSANITY,GINGER_ISLAND
1038 2346 Farm Harvest Mango CROPSANITY,GINGER_ISLAND
1039 2347 Farm Harvest Coffee Bean CROPSANITY
1040 5001 Stardew Valley Level 1 Luck LUCK_LEVEL,SKILL_LEVEL Luck Skill
1041 5002 Stardew Valley Level 2 Luck LUCK_LEVEL,SKILL_LEVEL Luck Skill
1042 5003 Stardew Valley Level 3 Luck LUCK_LEVEL,SKILL_LEVEL Luck Skill

View File

@ -7,6 +7,7 @@ from typing import Dict, Union, Optional, Iterable, Sized, List, Set
from . import options
from .data import all_fish, FishItem, all_purchasable_seeds, SeedItem, all_crops, CropItem
from .data.bundle_data import BundleItem
from .data.crops_data import crops_by_name
from .data.fish_data import island_fish
from .data.museum_data import all_museum_items, MuseumItem, all_artifact_items, dwarf_scrolls
from .data.recipe_data import all_cooking_recipes, CookingRecipe, RecipeSource, FriendshipSource, QueenOfSauceSource, \
@ -139,7 +140,7 @@ class StardewLogic:
self.crop_rules.update({crop.name: self.can_grow_crop(crop) for crop in all_crops})
self.crop_rules.update({
Seed.coffee: (self.has_season(Season.spring) | self.has_season(
Season.summer)) & self.has_traveling_merchant(),
Season.summer)) & self.can_buy_seed(crops_by_name[Seed.coffee].seed),
Fruit.ancient_fruit: (self.received("Ancient Seeds") | self.received("Ancient Seeds Recipe")) &
self.can_reach_region(Region.greenhouse) & self.has(Machine.seed_maker),
})

View File

@ -357,25 +357,51 @@ def set_special_order_rules(all_location_names: List[str], logic: StardewLogic,
MultiWorldRules.set_rule(multi_world.get_location(qi_order.name, player), order_rule.simplify())
def set_help_wanted_quests_rules(logic: StardewLogic, multi_world, player, world_options):
desired_number_help_wanted: int = world_options[options.HelpWantedLocations] // 7
for i in range(0, desired_number_help_wanted):
prefix = "Help Wanted:"
delivery = "Item Delivery"
rule = logic.has_lived_months(i).simplify()
fishing_rule = rule & logic.can_fish()
slay_rule = rule & logic.can_do_combat_at_level("Basic")
item_delivery_index = (i * 4) + 1
for j in range(item_delivery_index, item_delivery_index + 4):
location_name = f"{prefix} {delivery} {j}"
MultiWorldRules.set_rule(multi_world.get_location(location_name, player), rule)
help_wanted_prefix = "Help Wanted:"
item_delivery = "Item Delivery"
gathering = "Gathering"
fishing = "Fishing"
slay_monsters = "Slay Monsters"
MultiWorldRules.set_rule(multi_world.get_location(f"{prefix} Gathering {i + 1}", player),
rule)
MultiWorldRules.set_rule(multi_world.get_location(f"{prefix} Fishing {i + 1}", player),
fishing_rule.simplify())
MultiWorldRules.set_rule(multi_world.get_location(f"{prefix} Slay Monsters {i + 1}", player),
slay_rule.simplify())
def set_help_wanted_quests_rules(logic: StardewLogic, multi_world, player, world_options):
help_wanted_number = world_options[options.HelpWantedLocations]
for i in range(0, help_wanted_number):
set_number = i // 7
month_rule = logic.has_lived_months(set_number).simplify()
quest_number = set_number + 1
quest_number_in_set = i % 7
if quest_number_in_set < 4:
quest_number = set_number * 4 + quest_number_in_set + 1
set_help_wanted_delivery_rule(multi_world, player, month_rule, quest_number)
elif quest_number_in_set == 4:
set_help_wanted_fishing_rule(logic, multi_world, player, month_rule, quest_number)
elif quest_number_in_set == 5:
set_help_wanted_slay_monsters_rule(logic, multi_world, player, month_rule, quest_number)
elif quest_number_in_set == 6:
set_help_wanted_gathering_rule(multi_world, player, month_rule, quest_number)
def set_help_wanted_delivery_rule(multi_world, player, month_rule, quest_number):
location_name = f"{help_wanted_prefix} {item_delivery} {quest_number}"
MultiWorldRules.set_rule(multi_world.get_location(location_name, player), month_rule)
def set_help_wanted_gathering_rule(multi_world, player, month_rule, quest_number):
location_name = f"{help_wanted_prefix} {gathering} {quest_number}"
MultiWorldRules.set_rule(multi_world.get_location(location_name, player), month_rule)
def set_help_wanted_fishing_rule(logic: StardewLogic, multi_world, player, month_rule, quest_number):
location_name = f"{help_wanted_prefix} {fishing} {quest_number}"
fishing_rule = month_rule & logic.can_fish()
MultiWorldRules.set_rule(multi_world.get_location(location_name, player), fishing_rule.simplify())
def set_help_wanted_slay_monsters_rule(logic: StardewLogic, multi_world, player, month_rule, quest_number):
location_name = f"{help_wanted_prefix} {slay_monsters} {quest_number}"
slay_rule = month_rule & logic.can_do_combat_at_level("Basic")
MultiWorldRules.set_rule(multi_world.get_location(location_name, player), slay_rule.simplify())
def set_fishsanity_rules(all_location_names: List[str], logic: StardewLogic, multi_world: MultiWorld, player: int):