Stardew Valley

File information

Last updated

Original upload

Created by

barteke22

Uploaded by

barteke22

Virus scan

Safe to use

About this mod

Customisable overlays that show fish in current area when holding a fishing rod (or crab pot), and give preview during the fishing minigame.

Requirements
Permissions and credits
Translations
  • Mandarin
  • German
Changelogs
Donations


General info:

This mod only displays information about the fish (and fishable items) available in your area, as well as a preview during the fishing minigame. It does not alter any mechanics and has been coded to be as compatible with other fish-related mods as possible. It's very customisable, check out the screenshots.

Uses Data\\Fish + Fishing Simulation combo, for best mod compatibility. This method simulates the fishing minigame at a configurable interval (per UI Update) after getting the generic fish data. The higher the interval, the more accurate (and less glitchy looking) the information, but also higher performance cost. This should be near 100% accurate for anything (vanilla or modded) that uses the fishing minigame (getFish method).

Project story:
Spoiler:  
Show

This little project started out as me wanting to update Teh's Overhaul, because even the unofficial 1.5 update appears to outright prevent you from obtaining certain 1.5 items, and requires tonnes of workarounds for certain modded fish. Teh's Overhaul is, as the name suggests, an overhaul - meaning it has its own logic for the fishing minigame. I was mainly interested in the overlay portion of it, since there's plenty of decent alternatives on the minigame difficulty front. That mod however, is pretty massive - with data spread across many files, classes and APIs. I quickly gave up on trying to make any sense of it, decided to start from scratch and properly wrap my head around how the vanilla game does its thing.

So is this actually based on Teh's Overhaul? Well, yes, but actually... who knows? The visual concept/initial idea maybe, but the code is purely SMAPI/Vanilla Stardew based.



Installation:
  • Download and Install the latest version of SMAPI. Made for 3.10+, earlier versions might not work.
  • [Optional] Download and install Generic Mod Config Menu (GMCM). If you want an easy way to customise the overlays on the fly, with in-depth explanations.
  • Download this mod from Files, and unzip the FishingInfoOverlays folder into your Mods folder.




Compatibility:
  • Tested with Stardew Valley Expanded (SVE), Ridgeside Village, Stardew Aquarium, Fishing Made Easy Suite, Fishing Minigames. Anything that adds fish via simple mechanics should work, and mods that modify difficulty via simple ways like Content Patcher should be fine.
  • Location bar: By default it checks the Fish Data and simulates the location's getFish (fishing minigame's success method) 100 times per UI Update. Meaning that any fish obtainable through the location's getFish should be found. It should work unless a mod completely overhauls the vanilla fishing.
  • Minigame: Uses Reflection to get the active BobberBar's current fish and its position (plus some extra bits). It should work unless a mod completely overhauls the vanilla fishing, though it might still work if said mod updates BobberBar's variables.
  • Singleplayer, multiplayer and split screen (local coop).


Issues:
  • Some items and locations had to be hardcoded to work and appear on preview: Golden Walnuts, Spines, Skulls, CalderaPainting (furniture), Railroad and IslandFarmCave (locations). Can't really do anything, as the game uses Game1.player directly there instead of the provided 'who'. As a side effect of this the overlay became a bit psychic on Ginger Island - predicting if next click on one of the nearest water tiles will grant certain items.
  • Minor flicker/jumping when using magic bait in some locations. It's because some items are less than 1% chance then.


Config (without GMCM):
Spoiler:  
Show

From version 1.1.0, most of the variables are arrays of 4 - representing each split-screen screen, GMCM has a proper setup for this. Manual example:
"BarIconMode": [
    2,- This is screen 1: Split-screen host, or any non split-screen player.
    0,- This is screen 2: Split-screen (top) right. Non split-screen players can ignore this and the next 2 values.
    1,- Screen 3.
    0- Screen 4.
  ]

Just like in GMCM, if you're holding a fishing rod in game (near water), you can preview any changes made to the config.json (save it first) by pressing F5.
If you're using GMCM it has detailed ingame explanations of each position, otherwise run the game once to generate the config.json for this mod:
  • BarIconMode (0-3): Direction the icons will travel, before eventually swapping row/column. 0= Horisontal Icons, 1= Vertical Icons, 2= Vertical Icons + Text, 3= Disabled (no location bar for rods/pots, just minigame preview).
  • BarTopLeftLocationX (0-X): X coordinate of top left bar corner.
  • BarTopLeftLocationY (0-X): Y coordinate of top left bar corner.
  • BarScale (0.1-10): The bar already scales along with the UI, this allows you to fine-tune it.
  • BarMaxIcons (4-500): Maximum amount of icons displayed at the same time.
  • BarMaxIconsPerRow (4-500): Maximum amount of icons displayed before they change row/column.
  • BarBackgroundMode (0-2): Dark transparent background(s). 0= Circles behind each icon, 1= Single rectangle behind all icons, 2= Off.
  • BarBackgroundColorRGBA: Colour of background in Integer RGBA, so 0-255 x4. Google a colour picker, the alpha value is also 0-255 (not 0-1).
  • BarTextColorRGBA: Colour of text in Integer RGBA, so 0-255 x4, like [255, 255, 255, 255].
  • BarShowBaitAndTackleInfo: true= Displays bait and tackle icons + counts in the bar (if equipped). false= off.
  • BarShowPercent: true= Displays percentage chance of catching a fish under its icon. Accuracy based on ExtraCheckFrequency, false= off.
  • BarSortMode (0-2): 0= Icons are sorted by name. 1= Icons are sorted by catch chance percentage (heavily based on ExtraCheckFrequency, will likely jump), 2= Off (Trash, then IDs, then extras).
  • BarExtraCheckFrequency (0-200): 20-220= Generic +  Simulated, runs the fishing minigame 20-220 times per UI Update (higher is more accurate, but can impact performance).
  • BarScanRadius (1-50): Scans X tiles around player for water, and only shows fish info for the nearest tile found (if any).
  • BarLegendaryMode (0-2) (pre 1.0.5): If BarExtraCheckFrequency is above 0, this is ignored. 0= Vanilla Legendary Fish logic, 1= Vanilla + Always Show (cool if you have a mod that only makes them re-catchable), 2= Never Show (cool if you don't want to see them, or have a mod that alters them).
  • BarCrabPotEnabled: true= Enables the above preview for Crab Pots. false= Off.
  • UncaughtFishAreDark: Applies to both the above bar and the minigame. true= Uncaught fish will appear darker (like in collections tab) and will be named "???" if text mode enabled. false= Fish will always show full colour and their names.
  • OnlyFish: Only show things from the official fish list (and trash), skipping things like furniture or notes. Keep in mind that there's a tiny chance that some mod didn't add its fish to this list, though those wouldn't really count as fish.
  • MinigamePreviewMode (0-3): Fishing minigame style. 0= Full, copies 6 layers for best visuals. 1= Simple, copies 1 for best performance. 2= Only appears in the above bar (also part of mode 0 and 1). 3= Off, no minigame preview.


My other mod(s):

Source and Translation:
The source code is available here if I ever vanish from Nexus, I tried keeping it as simple as I could, so feel free to take over/reupload if it breaks and I'm gone for too long. Item names are already localised, you can find the GMCM translation base here (i18n) - feel free to PM me your translations (or upload them yourself).