Skip to content

Give the fishing business a tycoon-style identity and progression#103

Merged
dmccoystephenson merged 3 commits into
mainfrom
feature/business-tycoon
Jul 4, 2026
Merged

Give the fishing business a tycoon-style identity and progression#103
dmccoystephenson merged 3 commits into
mainfrom
feature/business-tycoon

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

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 tiers: Rowboat ($500, 5 crew, 5 fish/day/worker) → Trawler ($2000, 8 crew, 7 fish/day) → Fishing Fleet ($6000, 12 crew, 10 fish/day), via a data-driven BOAT_TIERS list in business.py (mirrors the existing FISH_TYPES/rod-upgrade patterns). Tier 1 numbers are unchanged from before, so existing saves/behavior are untouched until a player chooses to upgrade.
  • Business identity: name (and rename) your business from the "Manage Boat & Crew" menu; it shows up in the Docks status line/flavor text ("<name> is docked and ready for the day.").
  • Lifetime stats: Home's "See Stats" screen now shows Days in Business, lifetime Crew Hired, Fish Caught by Crew, and Wages Paid.
  • Milestones: three new business-themed entries — First Mate, Full Crew, Fishing Fleet Tycoon.

Player gains boatTier/businessName; Stats gains 4 lifetime counters — both follow the existing get-with-default JSON fallback pattern (schemas/*.json updated too), and business.currentTier() treats an unset boatTier as tier 1 so old saves and boat-related tests that only set hasBoat keep working unchanged.

Test plan

  • python3 -m pytest -q — 226 passed (13 new tests), same 11 pre-existing pygame-video-device failures as main (no video device in CI/sandbox, unrelated)
  • Manual end-to-end smoke test via the web front-end: bought a Rowboat, renamed the business, upgraded Rowboat → Trawler → Fishing Fleet, hired 6 workers (past the old 5-worker cap), slept a day and confirmed the crew's catch matched the tier's fish/day rate, and confirmed the Home stats screen and First Mate/Full Crew/First Catch milestones all fired correctly

🤖 Generated with Claude Code

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.
@dmccoystephenson dmccoystephenson merged commit 7af8176 into main Jul 4, 2026
1 check passed
@dmccoystephenson dmccoystephenson deleted the feature/business-tycoon branch July 4, 2026 19:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant