Give the fishing business a tycoon-style identity and progression#103
Merged
Conversation
Replaces the flat one-time boat purchase with a named business that grows: - Boat tiers (Rowboat -> Trawler -> Fishing Fleet) raise crew capacity and each worker's daily catch as you upgrade, via a data-driven BOAT_TIERS list - Players can name (and rename) their business; it shows up in the Docks status line and flavor text - New lifetime stats (days in business, workers hired, fish caught by crew, wages paid) surface on the Home stats screen - Three new milestones (First Mate, Full Crew, Fishing Fleet Tycoon) reward business growth Player/Stats gain boatTier, businessName, and four lifetime counters, all following the existing get-with-default JSON fallback pattern so old saves load unaffected (currentTier() treats an unset boatTier as tier 1).
NPC.get_dialogue_response now accepts a zero-arg callable in addition to a plain string, evaluated on demand so a response can reflect live game state instead of being frozen at NPC-construction time. Sam the Dock Worker and Gilbert the Shopkeeper each get a new dialogue question whose answer is staged by the player's boat tier/crew size: no boat, boat with no crew, Rowboat crew, Trawler, and Fishing Fleet all get distinct commentary, and Gilbert calls out the crew's actual daily catch total once there is one.
Rounds out the staged NPC dialogue added for Sam and Gilbert: Margaret the Teller now comments on the business through a savings/interest lens (no boat -> no crew -> lifetime wages paid -> fleet-tier "retire wealthy" line), and Old Tom the Barkeep gives tier-based barroom banter, naming the business once it's named. Both use the same NPC.get_dialogue_response callable support introduced for the docks/shop dialogue.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The fishing business was a single flat $500 boat + 5 interchangeable workers — a toggle, not something that felt like yours. This gives it a tycoon-game arc:
BOAT_TIERSlist inbusiness.py(mirrors the existingFISH_TYPES/rod-upgrade patterns). Tier 1 numbers are unchanged from before, so existing saves/behavior are untouched until a player chooses to upgrade.<name>is docked and ready for the day.").PlayergainsboatTier/businessName;Statsgains 4 lifetime counters — both follow the existing get-with-default JSON fallback pattern (schemas/*.jsonupdated too), andbusiness.currentTier()treats an unsetboatTieras tier 1 so old saves and boat-related tests that only sethasBoatkeep working unchanged.Test plan
python3 -m pytest -q— 226 passed (13 new tests), same 11 pre-existing pygame-video-device failures asmain(no video device in CI/sandbox, unrelated)🤖 Generated with Claude Code