You run a dive resort on a shared island. Every turn you flip an event card and live with the consequences, then spend your cash on staff and rooms to keep guests happy and coming back. Happy guests pay rent; sad guests pack their bags; an empty wallet sinks you. Outlast your rivals โ or out-earn them by the final bell.
npm start) and shares the Browser URL (e.g. http://192.168.0.48:3000).Each round of play is a Day on the island. The header shows your progress along with the weekday and week (e.g. Day 3 / 10 ยท Wed W1), and a small daytime badge indicating where the current turn falls in the round: ๐
Sunrise for the first player of the round, ๐ค๏ธ High Noon for anyone in between, and ๐น Sunset for the last player.
Every game starts on a random weekday and advances one day each round; weeks roll over every 7 days. When all players have taken their turn, the sun rises on a new day.
Every few days Dr. Squiddington announces the new day with a pop quiz for everyone at once โ see Quiz cards below.
On your turn (highlighted with โญ):
| Step | Action |
|---|---|
| 1 | Click ๐ Draw Event Card โ a random event fires and affects your resort (or everyone's). This is required first: until you draw, the Draw Card button pulses and the hire/buy/challenge/End Turn buttons stay disabled |
| 2.1 | Optionally click ๐ฅ Hire & Fire Staff โ opens a popup to hire or fire staff; they charge wages each turn but boost guest happiness |
| 2.2 | Optionally click ๐ Buy & Sell โ opens a popup to buy or sell inventory that gains income per turn (boats and rooms); the cost is paid once, immediately |
| 2.3 | Optionally click โ๏ธ Challenge (N) โ spend a joker to challenge a rival for money, a guest or happiness; see Challenge Jokers below |
| 3 | Click โ End Turn โ wages are paid, each guest generates โฌ25 revenue (plus their room & boat bonus), then guests may leave if happiness is below 30 |
The header shows a red FINAL badge on the last day. To keep resorts sustainable and protect staff, firing staff and selling inventory are blocked โ the โ buttons in the Hire & Fire and Buy & Sell popups are dimmed and a hint appears. Buying and hiring still work normally (you can still invest on the final day). Bankruptcy still applies if wages can't be paid, and event cards that fire staff or destroy inventory are unaffected.
| Resource | What it does |
|---|---|
| ๐ฐ Money | Starts at โฌ1000. Each guest earns โฌ25/turn plus the revenue of their assigned room & boat. Pay staff wages each turn. Go below โฌ0 โ bankrupt (sitting at exactly โฌ0 is broke but alive) |
| ๐ Happiness | 0โ200. Drops from bad events. If < 30, you lose a guest per turn (the newest arrival leaves first) |
| ๐ฅ Guests | Start with 2. Max 10. Each guest is a unique person (name, nationality, profession) and gets assigned a room + a boat. More & better-housed guests = stronger score + more revenue |
There is no upfront hire cost. Wages are charged at the end of every turn (including the turn you hired them). To hire, you must be able to afford at least one turn of wages. Each staff type also has a maximum number you may employ at once, and a minimum you must always keep โ the Manager (You) starts on your team and can never be fired.
Each staff member you hire is a unique person (name, nationality). Click the ๐ next to My Staff in your resort panel to open the My Staff Roster โ a read-only popup listing everyone you employ, their job, nationality, and the wage & happiness they contribute per turn.
| Staff | Wage / turn | Happiness boost | โฌ per happiness pt | Max employed | Start / Min |
|---|---|---|---|---|---|
| ๐คฟ Dive Instructor | โฌ250 | +18 per turn | 13.9 | 2 | 0 |
| โ Skilled Captain | โฌ200 | +13 per turn | 15.4 | 2 | 0 |
| ๐ฆบ Divemaster | โฌ150 | +9 per turn | 16.7 | 2 | 0 |
| ๐ Creative Cook | โฌ75 | +4 per turn | 18.75 | 2 | 0 |
| ๐ฅ Camera & VJ Guy | โฌ60 | +3 per turn | 20.0 | 2 | 0 |
| โฏ๏ธ Yoga Teacher | โฌ50 | +2 per turn | 25.0 | 1 | 0 |
| ๐ Resident Cat | โฌ25 | +1 per turn | 25.0 | 1 | 0 |
| ๐ Manager (You) | โฌ0 | โ | โ | 1 | 1 |
Hire carefully. Staff boost happiness but drain money fast โ if wages exceed your balance, you go bankrupt.
Cost-efficiency improves with price. Premium staff give more happiness per euro (the Dive Instructor is the best value per point at โฌ13.9), but their high wages and the happiness cap of 150 mean they only pay off when you have deep pockets and room left to grow. Cheap staff (Cat, Yoga) are the affordable trickle for small resorts.
Every hire gets a random persona โ a first name (locale-aware where possible), gender, country of origin with flag emoji, and an avatar emoji โ that sticks with them until they leave. Names show up in your resort's staff list and in the game log (e.g. "Alice hired Chiara ๐ฎ๐น from Italy as Dive Instructor"). The Manager persona is simply you, using your own name. Staff identities are freshly generated each game via chance.js.
Inventory items are one-time purchases, unlike staff wages. Buying deducts the full price immediately; selling returns a percentage of the original price (rounded down) and frees up the slot. Each item has a maximum quantity you may own โ some are buy-once โ and a minimum you must always keep. Every resort starts with one free Walk In Deck and one free Shared Dorm that can never be sold off to ensure at least basic accommodation and diving capacities for all guests. Rooms resell poorly, so think before you build.
Inventory is split into two categories: SLEEP (where a guest stays) and FLOAT (the deck or vessel they dive from). Every turn, each guest is assigned exactly one SLEEP item and one FLOAT item, and earns that item's revenue/guest on top of the base โฌ25. Better items pay more but hold fewer guests, so investing in upgrades pays off โ until you outgrow their capacity.
| Stuff | Category | Buy price | Resale | Revenue / guest | Capacity | Max owned | Start / Min |
|---|---|---|---|---|---|---|---|
| ๐๏ธ Walk In Deck | FLOAT | โฌ0 | โ | โฌ0 | โ | 1 | 1 |
| ๐ Inflatable Boat | FLOAT | โฌ60 | 40% (โฌ24) | โฌ6 | 5 | 2 | 0 |
| โต Day Boat | FLOAT | โฌ200 | 35% (โฌ70) | โฌ15 | 5 | 2 | 0 |
| ๐๏ธ Shared Dorm | SLEEP | โฌ40 | โ | โฌ0 | โ | 1 | 1 |
| ๐ณ Tree House w/ Fan | SLEEP | โฌ60 | 15% (โฌ9) | โฌ8 | 3 | 5 | 0 |
| ๐ ๏ธ Bungalow w/ A/C | SLEEP | โฌ150 | 20% (โฌ30) | โฌ20 | 2 | 5 | 0 |
Assignment is automatic and re-evaluated every turn. Guests are sorted by how long they have stayed โ longer-staying guests get first pick of the best-paying rooms and boats. Once a premium item's capacity is full, the remaining guests fall back to the free unlimited dorm / walk-in deck (which earn no bonus). Click ๐ My Guests in the bottom panel to see your happy divers โ exactly where each guest sleeps, which boat they dive from, and the income they generate. Click ๐ My Stuff to open the My Stuff Inventory popup showing detailed utilization metrics for every room and boat you own.
Cards are shuffled and drawn one per turn. Effects are marked:
Many card titles and descriptions include dynamic names, countries, and animals โ resolved fresh on every draw using chance.js. Template syntax: {{random.first()}}, {{random.last()}}, {{random.country()}}, {{random.gender()}}, {{random.animal()}}, {{random.cocktail()}}, {{random.color()}}, {{random.pub()}}, {{random.song()}}, {{random.accessory()}}, {{random.title()}}, {{random.divesite()}}. Every draw of the same card shows a different name or place.
Categories and example cards:
{{random.first()}} {{random.last()}} (self: guests +3, happiness +20), ๐ Group Booking from {{random.country()}} (self: guests +3, money +โฌ200){{random.first()}} Visits! (self: happiness +25), ๐ฅ Beach Bonfire Jam Session with {{random.song()}} (self: guests +2, happiness +20){{random.country()}} (self: money +โฌ200){{random.animal()}} Spotted! (all: guests +1, happiness +5){{random.first()}} {{random.last()}} (self: money โโฌ150), ๐ Island Dive Festival (all: guests +1, happiness +10)The authoritative card list lives in server/eventCards.ts.
Event cards that would push a resort's guest count over the cap don't just waste the extra guests โ up to 1 overflow guest checks in at the resort with the fewest guests instead. If several resorts are tied for fewest, the closest one in turn order gets it first, since guests are lazy โ with more overflow to redirect than one resort can use, other equally weak resorts share in it too. A separate card, ๐ฃ Local Business Promotion Campaign, directly gives every weakest resort a guest each, no overflow required.
Every few days the whole island stops for a pop quiz hosted by ๐ Dr.
Squiddington, the resident quizmaster octopus โ a real ocean, diving and maritime
trivia question that fires for all players at once at the start of every
Nth day (default: every 3rd day, configurable via quizInterval).
It is a real-time race: every connected, non-bankrupt player sees a brief Dr. Squiddington countdown (3 seconds, non-interactive) so everyone's options unlock at the same moment regardless of network latency, then the same single-choice question with four options and a 30-second countdown to answer.
The first player to pick the correct answer wins โ everyone else gets nothing but loses nothing either. You get one guess; a wrong answer locks you out of that quiz (no penalty).
Rewards scale with difficulty (cash plus new guests, since a guest is a compounding asset worth far more than its face value over the rest of the game):
| Difficulty | Reward |
|---|---|
| Easy | โฌ50 |
| Medium | โฌ75 + 1 guest |
| Hard | โฌ125 + 2 guests |
Won guests check in with full identities, just like guests from event cards. If your resort is already at the guest cap, you still get the full cash; the extra guests are simply turned away.
If nobody answers correctly before the timer runs out, the answer is revealed and play resumes with no reward paid.
The authoritative quiz list (50 verified facts) lives in server/quizCards.ts.
Once per day (round), after drawing your event card, you can spend a challenge joker to go head-to-head against a rival for their money, a guest, or their happiness. Each player starts the game with 3 jokers (shown as the number in parentheses on the โ๏ธ Challenge button). Jokers are consumed on use regardless of outcome. Some event cards can grant an extra joker โ the pool is capped at 6 total, so a lucky draw once you're already stacked up won't do anything.
Challenge types โ each requires the defender to have enough at stake. Money and guests can each be won via either of two mini-games:
| Type | Stakes | Defender must have |
|---|---|---|
| ๐ฐ Money (Flip & Flop) | โฌ150 | โฅ โฌ200 balance |
| ๐ฐ Money (Coin Catch) | โฌ150 | โฅ โฌ200 balance |
| ๐ฅ Guest (๐ Fish) | 1 guest | โฅ 2 guests |
| ๐ฅ Guest (๐ฅฅ Coconuts) | 1 guest | โฅ 2 guests |
| ๐ Happiness (Find Balance) | 25 points | โฅ 40 happiness |
How it works:
20ยฐ) wins. A tie (or nobody finishing in time) goes to the defender.Restrictions โ the challenge button is greyed out when:
You haven't drawn your event card yet this turn
You've already used a challenge this day
You have 0 jokers remaining
Another challenge or quiz is already in progress
No opponent qualifies (not enough money, guests, happiness, or staff)
The moment your money drops below โฌ0 โ you are bankrupt and eliminated. This can strike at the end of your turn (when wages are paid) or instantly mid-turn if a brutal event card drains your account. A drawn-out engine explosion has ended many a promising resort.
In a multiplayer game, if only one player remains โ they win immediately.
In a solo game (one player), there is no rival to outlast, so the game always runs to the final day โ it only ends early if the solo player goes bankrupt (the island wins).
After the final day (set by host at game start), the player with the highest score wins, calculated according to the following formular:
score = happiness + (guests ร 10) + (money / 100)
When the game ends, a winner announcement pops up for everyone. Tap it to dismiss and reveal the final standings of every resort underneath โ handy for comparing scores.
After dismissing the announcement, the host gets a floating ๐ Play Again button on the island map, and everyone gets a floating ๐ Resort Legends button next to it. Because "Play Again" is a separate step, the host can wait while everyone studies the results, then click it to reset to the lobby so everyone can re-join and start a new game.
๐ Resort Legends is a persistent Hall of Fame: every player's final result (name, resort, score, and the money/happiness/guests that made it up) is saved to scores.json in the application directory at game end, capped at the 50 best scores ever recorded across all games and restarts. Open it from the lobby (before joining) or from the post-game button above.