 62657df3fb
			
		
	
	62657df3fb
	
	
	
		
			
			## What is this fixing or adding? Major content update for Stardew Valley ## How was this tested? One large-scale public Beta on the archipelago server, plus several smaller private asyncs and test runs You can go to https://github.com/agilbert1412/StardewArchipelago/releases to grab the mod (latest 4.x.x version), the supported mods and the apworld, to test this PR ## New Features: - Festival Checks [Easy mode or Hard Mode] - Special Orders [Both Board and Qi] - Willy's Boat - Ginger Island Parrots - TV Channels - Trap Items [Available in various difficulty levels] - Entrance Randomizer: Buildings and Chaos - New Fishsanity options: Exclude Legendaries, Exclude Hard fish, Only easy fish - Resource Pack overhaul [Resource packs are now more enjoyable and varied] - Goal: Greatest Walnut Hunter [Find every single Golden Walnut] - Goal: Perfection [Achieve Perfection] - Option: Profit Margin [Multiplier over all earnings] - Option: Friendsanity Heart Size [Reduce clutter from friendsanity hearts] - Option: Exclude Ginger Island - will exclude many locations and items to generate a playthrough that does not go to the island - Mod Support [Curated list of mods] ## New Contributors: @Witchybun for the mod support --------- Co-authored-by: Witchybun <embenham05@gmail.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from dataclasses import dataclass
 | |
| from typing import List
 | |
| 
 | |
| from .. import data
 | |
| 
 | |
| 
 | |
| @dataclass(frozen=True)
 | |
| class SeedItem:
 | |
|     name: str
 | |
|     seasons: List[str]
 | |
|     regions: List[str]
 | |
| 
 | |
| 
 | |
| @dataclass(frozen=True)
 | |
| class CropItem:
 | |
|     name: str
 | |
|     farm_growth_seasons: List[str]
 | |
|     seed: SeedItem
 | |
| 
 | |
| 
 | |
| def load_crop_csv():
 | |
|     import csv
 | |
|     try:
 | |
|         from importlib.resources import files
 | |
|     except ImportError:
 | |
|         from importlib_resources import files  # noqa
 | |
| 
 | |
|     with files(data).joinpath("crops.csv").open() as file:
 | |
|         reader = csv.DictReader(file)
 | |
|         crops = []
 | |
|         seeds = []
 | |
| 
 | |
|         for item in reader:
 | |
|             seeds.append(SeedItem(item["seed"],
 | |
|                                   [season for season in item["seed_seasons"].split(",")]
 | |
|                                   if item["seed_seasons"] else [],
 | |
|                                   [region for region in item["seed_regions"].split(",")]
 | |
|                                   if item["seed_regions"] else []))
 | |
|             crops.append(CropItem(item["crop"],
 | |
|                                   [season for season in item["farm_growth_seasons"].split(",")]
 | |
|                                   if item["farm_growth_seasons"] else [],
 | |
|                                   seeds[-1]))
 | |
|         return crops, seeds
 | |
| 
 | |
| 
 | |
| # TODO Those two should probably be split to we can include rest of seeds
 | |
| all_crops, all_purchasable_seeds = load_crop_csv()
 | |
| crops_by_name = {crop.name: crop for crop in all_crops}
 |