 205ca7fa37
			
		
	
	205ca7fa37
	
	
	
		
			
			* Fix logic bug on daggerfish * Make new region for pond. * Fix SVE logic for crops * Fix Distant Lands Cropsanity * Fix failing tests. * Reverting removing these for now. * Fix bugs, add combat requirement * convert str into tuple directly * add ginger island to mod tests * Move a lot of mod item logic to content pack * Gut the rules from DL while we're at it. * Import nuke * Fix alecto * Move back some rules for now. * Move archaeology rules * Add some comments why its done. * Clean up archaeology and fix sve * Moved dulse to water item class * Remove digging like worms for now * fix * Add missing shipsanity location * Move background names around or something idk * Revert ArchaeologyTrash for now --------- Co-authored-by: Jouramie <jouramie@hotmail.com>
		
			
				
	
	
		
			391 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			391 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from ..game_content import ContentPack
 | |
| from ...data import villagers_data, fish_data
 | |
| from ...data.game_item import GenericSource, ItemTag, Tag, CustomRuleSource
 | |
| from ...data.harvest import ForagingSource, SeasonalForagingSource, ArtifactSpotSource
 | |
| from ...data.requirement import ToolRequirement, BookRequirement, SkillRequirement, SeasonRequirement
 | |
| from ...data.shop import ShopSource, MysteryBoxSource, ArtifactTroveSource, PrizeMachineSource, FishingTreasureChestSource
 | |
| from ...strings.book_names import Book
 | |
| from ...strings.crop_names import Fruit
 | |
| from ...strings.fish_names import WaterItem
 | |
| from ...strings.food_names import Beverage, Meal
 | |
| from ...strings.forageable_names import Forageable, Mushroom
 | |
| from ...strings.fruit_tree_names import Sapling
 | |
| from ...strings.generic_names import Generic
 | |
| from ...strings.material_names import Material
 | |
| from ...strings.region_names import Region, LogicRegion
 | |
| from ...strings.season_names import Season
 | |
| from ...strings.seed_names import Seed, TreeSeed
 | |
| from ...strings.skill_names import Skill
 | |
| from ...strings.tool_names import Tool, ToolMaterial
 | |
| 
 | |
| pelican_town = ContentPack(
 | |
|     "Pelican Town (Vanilla)",
 | |
|     harvest_sources={
 | |
|         # Spring
 | |
|         Forageable.daffodil: (
 | |
|             ForagingSource(seasons=(Season.spring,), regions=(Region.bus_stop, Region.town, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.dandelion: (
 | |
|             ForagingSource(seasons=(Season.spring,), regions=(Region.bus_stop, Region.forest, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.leek: (
 | |
|             ForagingSource(seasons=(Season.spring,), regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.wild_horseradish: (
 | |
|             ForagingSource(seasons=(Season.spring,), regions=(Region.backwoods, Region.mountain, Region.forest, Region.secret_woods)),
 | |
|         ),
 | |
|         Forageable.salmonberry: (
 | |
|             SeasonalForagingSource(season=Season.spring, days=(15, 16, 17, 18),
 | |
|                                    regions=(Region.backwoods, Region.mountain, Region.town, Region.forest, Region.tunnel_entrance, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.spring_onion: (
 | |
|             ForagingSource(seasons=(Season.spring,), regions=(Region.forest,)),
 | |
|         ),
 | |
| 
 | |
|         # Summer
 | |
|         Fruit.grape: (
 | |
|             ForagingSource(seasons=(Season.summer,), regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.spice_berry: (
 | |
|             ForagingSource(seasons=(Season.summer,), regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.forest, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.sweet_pea: (
 | |
|             ForagingSource(seasons=(Season.summer,), regions=(Region.bus_stop, Region.town, Region.forest, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.fiddlehead_fern: (
 | |
|             ForagingSource(seasons=(Season.summer,), regions=(Region.secret_woods,)),
 | |
|         ),
 | |
| 
 | |
|         # Fall
 | |
|         Forageable.blackberry: (
 | |
|             ForagingSource(seasons=(Season.fall,), regions=(Region.backwoods, Region.town, Region.forest, Region.railroad)),
 | |
|             SeasonalForagingSource(season=Season.fall, days=(8, 9, 10, 11),
 | |
|                                    regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.town, Region.forest, Region.tunnel_entrance,
 | |
|                                             Region.railroad)),
 | |
|         ),
 | |
|         Forageable.hazelnut: (
 | |
|             ForagingSource(seasons=(Season.fall,), regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.wild_plum: (
 | |
|             ForagingSource(seasons=(Season.fall,), regions=(Region.mountain, Region.bus_stop, Region.railroad)),
 | |
|         ),
 | |
| 
 | |
|         # Winter
 | |
|         Forageable.crocus: (
 | |
|             ForagingSource(seasons=(Season.winter,),
 | |
|                            regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.town, Region.forest, Region.secret_woods)),
 | |
|         ),
 | |
|         Forageable.crystal_fruit: (
 | |
|             ForagingSource(seasons=(Season.winter,),
 | |
|                            regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.town, Region.forest, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.holly: (
 | |
|             ForagingSource(seasons=(Season.winter,),
 | |
|                            regions=(Region.backwoods, Region.mountain, Region.bus_stop, Region.town, Region.forest, Region.railroad)),
 | |
|         ),
 | |
|         Forageable.snow_yam: (
 | |
|             ForagingSource(seasons=(Season.winter,),
 | |
|                            regions=(Region.farm, Region.backwoods, Region.mountain, Region.bus_stop, Region.town, Region.forest, Region.railroad,
 | |
|                                     Region.secret_woods, Region.beach),
 | |
|                            other_requirements=(ToolRequirement(Tool.hoe),)),
 | |
|         ),
 | |
|         Forageable.winter_root: (
 | |
|             ForagingSource(seasons=(Season.winter,),
 | |
|                            regions=(Region.farm, Region.backwoods, Region.mountain, Region.bus_stop, Region.town, Region.forest, Region.railroad,
 | |
|                                     Region.secret_woods, Region.beach),
 | |
|                            other_requirements=(ToolRequirement(Tool.hoe),)),
 | |
|         ),
 | |
| 
 | |
|         # Mushrooms
 | |
|         Mushroom.common: (
 | |
|             ForagingSource(seasons=(Season.spring,), regions=(Region.secret_woods,)),
 | |
|             ForagingSource(seasons=(Season.fall,), regions=(Region.backwoods, Region.mountain, Region.forest)),
 | |
|         ),
 | |
|         Mushroom.chanterelle: (
 | |
|             ForagingSource(seasons=(Season.fall,), regions=(Region.secret_woods,)),
 | |
|         ),
 | |
|         Mushroom.morel: (
 | |
|             ForagingSource(seasons=(Season.spring, Season.fall), regions=(Region.secret_woods,)),
 | |
|         ),
 | |
|         Mushroom.red: (
 | |
|             ForagingSource(seasons=(Season.summer, Season.fall), regions=(Region.secret_woods,)),
 | |
|         ),
 | |
| 
 | |
|         # Beach
 | |
|         WaterItem.coral: (
 | |
|             ForagingSource(regions=(Region.tide_pools,)),
 | |
|             SeasonalForagingSource(season=Season.summer, days=(12, 13, 14), regions=(Region.beach,)),
 | |
|         ),
 | |
|         WaterItem.nautilus_shell: (
 | |
|             ForagingSource(seasons=(Season.winter,), regions=(Region.beach,)),
 | |
|         ),
 | |
|         Forageable.rainbow_shell: (
 | |
|             ForagingSource(seasons=(Season.summer,), regions=(Region.beach,)),
 | |
|         ),
 | |
|         WaterItem.sea_urchin: (
 | |
|             ForagingSource(regions=(Region.tide_pools,)),
 | |
|         ),
 | |
| 
 | |
|         Seed.mixed: (
 | |
|             ForagingSource(seasons=(Season.spring, Season.summer, Season.fall,), regions=(Region.town, Region.farm, Region.forest)),
 | |
|         ),
 | |
| 
 | |
|         Seed.mixed_flower: (
 | |
|             ForagingSource(seasons=(Season.summer,), regions=(Region.town, Region.farm, Region.forest)),
 | |
|         ),
 | |
| 
 | |
|         # Books
 | |
|         Book.jack_be_nimble_jack_be_thick: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ArtifactSpotSource(amount=22),),  # After 22 spots, there are 50.48% chances player received the book.
 | |
|         Book.woodys_secret: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             GenericSource(regions=(Region.forest, Region.mountain),
 | |
|                           other_requirements=(ToolRequirement(Tool.axe, ToolMaterial.iron), SkillRequirement(Skill.foraging, 5))),),
 | |
|     },
 | |
|     shop_sources={
 | |
|         # Saplings
 | |
|         Sapling.apple: (ShopSource(money_price=4000, shop_region=Region.pierre_store),),
 | |
|         Sapling.apricot: (ShopSource(money_price=2000, shop_region=Region.pierre_store),),
 | |
|         Sapling.cherry: (ShopSource(money_price=3400, shop_region=Region.pierre_store),),
 | |
|         Sapling.orange: (ShopSource(money_price=4000, shop_region=Region.pierre_store),),
 | |
|         Sapling.peach: (ShopSource(money_price=6000, shop_region=Region.pierre_store),),
 | |
|         Sapling.pomegranate: (ShopSource(money_price=6000, shop_region=Region.pierre_store),),
 | |
| 
 | |
|         # Crop seeds, assuming they are bought in season, otherwise price is different with missing stock list.
 | |
|         Seed.parsnip: (ShopSource(money_price=20, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.bean: (ShopSource(money_price=60, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.cauliflower: (ShopSource(money_price=80, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.potato: (ShopSource(money_price=50, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.tulip: (ShopSource(money_price=20, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.kale: (ShopSource(money_price=70, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.jazz: (ShopSource(money_price=30, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.garlic: (ShopSource(money_price=40, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
|         Seed.rice: (ShopSource(money_price=40, shop_region=Region.pierre_store, seasons=(Season.spring,)),),
 | |
| 
 | |
|         Seed.melon: (ShopSource(money_price=80, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.tomato: (ShopSource(money_price=50, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.blueberry: (ShopSource(money_price=80, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.pepper: (ShopSource(money_price=40, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.wheat: (ShopSource(money_price=10, shop_region=Region.pierre_store, seasons=(Season.summer, Season.fall)),),
 | |
|         Seed.radish: (ShopSource(money_price=40, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.poppy: (ShopSource(money_price=100, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.spangle: (ShopSource(money_price=50, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.hops: (ShopSource(money_price=60, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
|         Seed.corn: (ShopSource(money_price=150, shop_region=Region.pierre_store, seasons=(Season.summer, Season.fall)),),
 | |
|         Seed.sunflower: (ShopSource(money_price=200, shop_region=Region.pierre_store, seasons=(Season.summer, Season.fall)),),
 | |
|         Seed.red_cabbage: (ShopSource(money_price=100, shop_region=Region.pierre_store, seasons=(Season.summer,)),),
 | |
| 
 | |
|         Seed.eggplant: (ShopSource(money_price=20, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.pumpkin: (ShopSource(money_price=100, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.bok_choy: (ShopSource(money_price=50, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.yam: (ShopSource(money_price=60, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.cranberry: (ShopSource(money_price=240, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.fairy: (ShopSource(money_price=200, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.amaranth: (ShopSource(money_price=70, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.grape: (ShopSource(money_price=60, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
|         Seed.artichoke: (ShopSource(money_price=30, shop_region=Region.pierre_store, seasons=(Season.fall,)),),
 | |
| 
 | |
|         Seed.broccoli: (ShopSource(items_price=((5, Material.moss),), shop_region=LogicRegion.raccoon_shop),),
 | |
|         Seed.carrot: (ShopSource(items_price=((1, TreeSeed.maple),), shop_region=LogicRegion.raccoon_shop),),
 | |
|         Seed.powdermelon: (ShopSource(items_price=((2, TreeSeed.acorn),), shop_region=LogicRegion.raccoon_shop),),
 | |
|         Seed.summer_squash: (ShopSource(items_price=((15, Material.sap),), shop_region=LogicRegion.raccoon_shop),),
 | |
| 
 | |
|         Seed.strawberry: (ShopSource(money_price=100, shop_region=LogicRegion.egg_festival, seasons=(Season.spring,)),),
 | |
|         Seed.rare_seed: (ShopSource(money_price=1000, shop_region=LogicRegion.traveling_cart, seasons=(Season.spring, Season.summer)),),
 | |
| 
 | |
|         # Saloon
 | |
|         Beverage.beer: (ShopSource(money_price=400, shop_region=Region.saloon),),
 | |
|         Meal.salad: (ShopSource(money_price=220, shop_region=Region.saloon),),
 | |
|         Meal.bread: (ShopSource(money_price=100, shop_region=Region.saloon),),
 | |
|         Meal.spaghetti: (ShopSource(money_price=240, shop_region=Region.saloon),),
 | |
|         Meal.pizza: (ShopSource(money_price=600, shop_region=Region.saloon),),
 | |
|         Beverage.coffee: (ShopSource(money_price=300, shop_region=Region.saloon),),
 | |
| 
 | |
|         # Books
 | |
|         Book.animal_catalogue: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=5000, shop_region=Region.ranch),),
 | |
|         Book.book_of_mysteries: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             MysteryBoxSource(amount=38),),  # After 38 boxes, there are 49.99% chances player received the book.
 | |
|         Book.dwarvish_safety_manual: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=4000, shop_region=LogicRegion.mines_dwarf_shop),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.friendship_101: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             PrizeMachineSource(amount=9),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.horse_the_book: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=25000, shop_region=LogicRegion.bookseller_2),),
 | |
|         Book.jack_be_nimble_jack_be_thick: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.jewels_of_the_sea: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             FishingTreasureChestSource(amount=21),  # After 21 chests, there are 49.44% chances player received the book.
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.mapping_cave_systems: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             GenericSource(regions=(Region.adventurer_guild_bedroom,)),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.monster_compendium: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             CustomRuleSource(create_rule=lambda logic: logic.monster.can_kill_many(Generic.any)),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.ol_slitherlegs: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=25000, shop_region=LogicRegion.bookseller_2),),
 | |
|         Book.price_catalogue: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=3000, shop_region=LogicRegion.bookseller_2),),
 | |
|         Book.the_alleyway_buffet: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             GenericSource(regions=(Region.town,),
 | |
|                           other_requirements=(ToolRequirement(Tool.axe, ToolMaterial.iron), ToolRequirement(Tool.pickaxe, ToolMaterial.iron))),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.the_art_o_crabbing: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             GenericSource(regions=(Region.beach,),
 | |
|                           other_requirements=(ToolRequirement(Tool.fishing_rod, ToolMaterial.iridium),
 | |
|                                               SkillRequirement(Skill.fishing, 6),
 | |
|                                               SeasonRequirement(Season.winter))),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.treasure_appraisal_guide: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ArtifactTroveSource(amount=18),  # After 18 troves, there is 49,88% chances player received the book.
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
|         Book.raccoon_journal: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),
 | |
|             ShopSource(items_price=((999, Material.fiber),), shop_region=LogicRegion.raccoon_shop),),
 | |
|         Book.way_of_the_wind_pt_1: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=15000, shop_region=LogicRegion.bookseller_2),),
 | |
|         Book.way_of_the_wind_pt_2: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=35000, shop_region=LogicRegion.bookseller_2, other_requirements=(BookRequirement(Book.way_of_the_wind_pt_1),)),),
 | |
|         Book.woodys_secret: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_POWER),
 | |
|             ShopSource(money_price=20000, shop_region=LogicRegion.bookseller_3),),
 | |
| 
 | |
|         # Experience Books
 | |
|         Book.book_of_stars: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_SKILL),
 | |
|             ShopSource(money_price=5000, shop_region=LogicRegion.bookseller_1),),
 | |
|         Book.bait_and_bobber: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_SKILL),
 | |
|             ShopSource(money_price=5000, shop_region=LogicRegion.bookseller_1),),
 | |
|         Book.combat_quarterly: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_SKILL),
 | |
|             ShopSource(money_price=5000, shop_region=LogicRegion.bookseller_1),),
 | |
|         Book.mining_monthly: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_SKILL),
 | |
|             ShopSource(money_price=5000, shop_region=LogicRegion.bookseller_1),),
 | |
|         Book.stardew_valley_almanac: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_SKILL),
 | |
|             ShopSource(money_price=5000, shop_region=LogicRegion.bookseller_1),),
 | |
|         Book.woodcutters_weekly: (
 | |
|             Tag(ItemTag.BOOK, ItemTag.BOOK_SKILL),
 | |
|             ShopSource(money_price=5000, shop_region=LogicRegion.bookseller_1),),
 | |
|     },
 | |
|     fishes=(
 | |
|         fish_data.albacore,
 | |
|         fish_data.anchovy,
 | |
|         fish_data.bream,
 | |
|         fish_data.bullhead,
 | |
|         fish_data.carp,
 | |
|         fish_data.catfish,
 | |
|         fish_data.chub,
 | |
|         fish_data.dorado,
 | |
|         fish_data.eel,
 | |
|         fish_data.flounder,
 | |
|         fish_data.goby,
 | |
|         fish_data.halibut,
 | |
|         fish_data.herring,
 | |
|         fish_data.largemouth_bass,
 | |
|         fish_data.lingcod,
 | |
|         fish_data.midnight_carp,  # Ginger island override
 | |
|         fish_data.octopus,
 | |
|         fish_data.perch,
 | |
|         fish_data.pike,
 | |
|         fish_data.pufferfish,  # Ginger island override
 | |
|         fish_data.rainbow_trout,
 | |
|         fish_data.red_mullet,
 | |
|         fish_data.red_snapper,
 | |
|         fish_data.salmon,
 | |
|         fish_data.sardine,
 | |
|         fish_data.sea_cucumber,
 | |
|         fish_data.shad,
 | |
|         fish_data.slimejack,
 | |
|         fish_data.smallmouth_bass,
 | |
|         fish_data.squid,
 | |
|         fish_data.sturgeon,
 | |
|         fish_data.sunfish,
 | |
|         fish_data.super_cucumber,  # Ginger island override
 | |
|         fish_data.tiger_trout,
 | |
|         fish_data.tilapia,  # Ginger island override
 | |
|         fish_data.tuna,  # Ginger island override
 | |
|         fish_data.void_salmon,
 | |
|         fish_data.walleye,
 | |
|         fish_data.woodskip,
 | |
|         fish_data.blobfish,
 | |
|         fish_data.midnight_squid,
 | |
|         fish_data.spook_fish,
 | |
| 
 | |
|         # Legendaries
 | |
|         fish_data.angler,
 | |
|         fish_data.crimsonfish,
 | |
|         fish_data.glacierfish,
 | |
|         fish_data.legend,
 | |
|         fish_data.mutant_carp,
 | |
| 
 | |
|         # Crab pot
 | |
|         fish_data.clam,
 | |
|         fish_data.cockle,
 | |
|         fish_data.crab,
 | |
|         fish_data.crayfish,
 | |
|         fish_data.lobster,
 | |
|         fish_data.mussel,
 | |
|         fish_data.oyster,
 | |
|         fish_data.periwinkle,
 | |
|         fish_data.shrimp,
 | |
|         fish_data.snail,
 | |
|     ),
 | |
|     villagers=(
 | |
|         villagers_data.josh,
 | |
|         villagers_data.elliott,
 | |
|         villagers_data.harvey,
 | |
|         villagers_data.sam,
 | |
|         villagers_data.sebastian,
 | |
|         villagers_data.shane,
 | |
|         villagers_data.abigail,
 | |
|         villagers_data.emily,
 | |
|         villagers_data.haley,
 | |
|         villagers_data.leah,
 | |
|         villagers_data.maru,
 | |
|         villagers_data.penny,
 | |
|         villagers_data.caroline,
 | |
|         villagers_data.clint,
 | |
|         villagers_data.demetrius,
 | |
|         villagers_data.evelyn,
 | |
|         villagers_data.george,
 | |
|         villagers_data.gus,
 | |
|         villagers_data.jas,
 | |
|         villagers_data.jodi,
 | |
|         villagers_data.kent,
 | |
|         villagers_data.krobus,
 | |
|         villagers_data.lewis,
 | |
|         villagers_data.linus,
 | |
|         villagers_data.marnie,
 | |
|         villagers_data.pam,
 | |
|         villagers_data.pierre,
 | |
|         villagers_data.robin,
 | |
|         villagers_data.vincent,
 | |
|         villagers_data.willy,
 | |
|         villagers_data.wizard,
 | |
|     )
 | |
| )
 |