- TypeScript 93.8%
- CSS 5.9%
- HTML 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo | ||
| public | ||
| src | ||
| .gitignore | ||
| .oxlintrc.json | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Amalgolopoly — Local Multiplayer
Hot-seat Amalgolopoly in React with rules based off of https://www.youtube.com/watch?v=QpBjWFin4LI and https://www.youtube.com/watch?v=aSnzlXGodp4&t=181s. You can also view it at https://amalgolopoly.lschaefer.xyz/. You can email me at amalgolopoly@lschaefer.xyz if you are interested in working on this too. Note this is vibe coded and more meant to try out the rules of the game then to be a polished app.
See ARCHITECTURE.md for module layers and how to add a phase.
Run
npm install
npm run dev
Saves
Games auto-save to browser localStorage. From the in-game toolbar you can
Download save (.amalgolopoly file). On the setup screen you can Upload save
to resume from a file. If a save fails to load, a recovery screen lets you
download the corrupt file, report an issue, or start a new game.
Cheats (console)
Open DevTools and use window.cheat to set up scenarios:
cheat.help()
cheat.ownGroup('orange', 0)
cheat.ownGroup('railroad', 0)
cheat.own('GO', 0)
cheat.ownGroup('corner', 0)
cheat.sale('the-bank', 0)
cheat.corruption('framed', 0)
cheat.superCorruption('blackmail', 0)
cheat.superJail(1, 0) // Bob in Super Jail; Alice is sender
cheat.houses('New York Avenue', 3) // residential blocks (clears industrial)
cheat.industrial('Boardwalk', 2)
cheat.hazard('Park Place', 'prison')
cheat.cityBonus('Boardwalk', 'park')
cheat.stadium('Boardwalk')
cheat.skyscraper('Park Place')
cheat.money(5000, 0)
cheat.pos(28, 1) // Bob on New York Avenue
cheat.phase('roll')
cheat.turn(1)
cheat.soreLoserTokens(4, 0)
cheat.mrMonopoly(0)
cheat.forceDice(1, 1) // next roll only
cheat.forceSpeedDie('sneaky-swapper') // or 'mr-monopoly' / 'bus' / 1|2|3
cheat.forcePowerUpDie('coins') // or 'green-shell' / 'red-shell' / 'pow' / 'blooper' / 'vault'
cheat.forceBuyDie('buy') // next Buy die only
cheat.depot('Reading Railroad')
cheat.forceEscapeDie({ type: 'corruption', count: 2 })
cheat.actions.rollDice()
cheat.secretVault()
cheat.lock('Vermont Avenue')
cheat.vaultCombo(4)
cheat.emptyVault(0)
cheat.corruptSave() // invalid save → recovery screen (reloads)
Useful helpers: cheat.player(), cheat.board(), cheat.vault(), cheat.secretVault(), cheat.bonus('jackpot'), cheat.sale('jet-pack'), cheat.corruption('snitch'), cheat.dealMobile(playerId), cheat.forceWedge('jackpot'), cheat.forceHeistDie({ type: 'money', amount: 200 }), cheat.set({ ... }).
Rules covered
-
2–8 players; hot-seat local multiplayer
-
Doubles (extra turn); three doubles → Jail (see Pokémon for optional doubles bonuses)
-
Buy or auction unowned properties
-
Rent (City blocks; railroads; utilities ×4/×10/×20; skyscraper / Monopoly Tower multipliers)
-
Monopoly City building (replaces classic houses/hotels — see below)
-
Mortgage / unmortgage (+10%)
-
Chance & Community Chest
-
Income Tax ($200) & Luxury Tax ($100)
-
Monopoly City:
- Streets use residential and industrial blocks (max 8 combined; industrial costs 2× residential). No color monopoly or even-building required to build.
- Rent uses block count (industrial-only while a hazard is on the property). Empty land uses the land rent tier (no classic monopoly ×2).
- 4 Planning Permission spaces (one per outer side): free hazard or bonus (mutually exclusive; stadiums block hazards).
- Stadium $200 (need 3 of a color; bank of 2; one per color): each owned stadium adds +50% to GO salary.
- Skyscraper (deed cost; one per full Mega color set): ×2 rent for the whole set.
- Monopoly Tower $700 (need 2+ full sets; bank of 1): ×2 all your street rents; stacks with skyscraper.
- Streets must be greened or a monopoly before city builds (see Go Green).
- Board pieces: green/blue residential, gray/red industrial; hazard ⚠; bonus shield; stadium; cyan skyscraper outline on the set; Tower marked on the owner (not the tile).
-
Monopoly Go Green:
- Pay a street’s deed price to green it (light-green tint on the board): unlocks City building and doubles that street’s rent. Completing a color set greens the whole set for free.
- 4 Bike Share spaces (midway between Warp Pipes: outer left/right, empire top-left / bottom-right): pay $10 to move to any space until the next Bike Share clockwise.
-
Free Parking Jackpot expansion: +6 Spin spaces (3 outer / 3 Empire); Deal Mobile; Bonus cards; Free Parking spinner / jackpot pot
-
Secret Vault: +6 guess spaces (4 Guess for Free / 2 Pay to Guess — Empire on top & bottom); separate vault money pot (seeds $400; +$50 on pass GO; pay-to-guess $100 and Power-Up vault face pay go into the vault); Free Parking / jackpot wedge still collect only the Jackpot; opening the vault collects Jackpot + vault money plus stadium/Tower and a locked deed, then choose Deal Mobile or Mr. Monopoly; stadium in vault then Monopoly Tower when stadiums are out; 6 locked outer deeds; every guess draws a bonus card; Power-Up die Vault face (optional $100 pay-to-guess).
-
Buy Everything expansion: purchasable corners/taxes/Chance/CC, Sale Vault + Buy die (instant-win Sale cards omitted). Owner of Jail / Just Visiting receives jail bail instead of the Jackpot when someone pays to leave Jail.
-
Go to Jail expansion:
- Jail bail is $100 (not classic $50); Get Out of Jail Free or roll doubles still work (max 3 turns; may stay to farm Corruption)
- Corruption + Heist (split across outer / Empire); Corruption / Super Corruption cards
- Super Jail (Go To Jail corner): pay $300 to the sender, give Super Corruption cards drawn this stay, or stay to farm (max 3 turns). Super Jail turns allow only that one choice — no Buy Die, bonus/corruption plays, or other post-roll actions
- Three Go To Jail spaces (one outer mid-track, one Empire, Super Jail corner); landing on any sends you to Jail
-
Mega Edition:
- Starting cash $2500 / $2700 / $2900 (male / other / female)
- Mega streets, Gas Company, Auction, Bus Ticket, Birthday Gift
- 16 one-use bus tickets (1 expires all); train depots ($100, bank of 4, double RR rent)
- 3-utility rent ×4/×10/×20
- Speed Die (1–3 / Bus / Mr. Monopoly / Sneaky Swapper) with doubles-on-white, triples-to-any-space
-
Ms. Monopoly: GO salary wage gap (Male $200, Female $240, Other $220 when passing GO); Warp Pipes (2 outer + 2 Empire; land → next pipe clockwise)
-
Monopoly for Sore Losers:
- Electric Bill and Water Bill spaces ($150 each; pay Jackpot, earn a Sore Loser token). Mr. Monopoly collects $150 from the bank instead.
- Earn Sore Loser tokens (pay rent/tax/bill/utility, go to Jail, land on own property, trapped by Mr. Monopoly); cash 4 → become Mr. Monopoly (separate from Deal Mobile — both allowed). Powers: send someone else when you’d go to Jail; reverse rent; collect taxes/bills; free house whenever anyone rolls doubles; land on another player → skip their next turn + steal a property. Becoming Mr. Monopoly frees you from Jail / Super Jail.
-
Monopoly Empire (inner board): after Boardwalk you enter Empire GO, then the Empire loop (22 brands, 2 Empire card spaces, Chance replaced by Super Star on Empire, Electric/Water Empire, Rival Tower Tax / Tower Tax, 1 of 3 Go To Jail), then back to outer GO — 120 spaces total (76 outer + 44 Empire). Billboard rent = $50 × tower height; pass Empire GO collects tower value (min $50). +1 Office tiles: unlimited, one buy per turn ($500); free +1 on completing an Empire color set. No tower-height cap or win condition. Empire cards separate deck; land on Empire spaces to draw
-
Monopoly Gamer (Mario):
- Characters (13, unique at setup): Mario, Peach, Yoshi, Donkey Kong + collectors (Bowser, Luigi, Toad, Wario, Rosalina, Boo, Diddy Kong, Fire Mario, Tanooki Mario) with Super Star abilities and Power-Up boosts
- Spaces: 2 Coin Block, 2 Thwomp, 1 Super Star; dropped coins stay on spaces until picked up when passing/landing
- Power-Up die (optional before or after move): coins / green shell / red shell / POW / blooper / vault (7 faces; vault = optional $100 pay-to-guess)
- Boss fights when passing GO or Empire GO.
-
Monopoly Pokémon (1995 doubles):
- After doubles you may take a face bonus instead of the extra turn: 6s duel for an opponent property not in a completed set; 5s Community Chest; 4s Chance; 3s steal $50; 2s $200 from the bank
- Snake eyes (1s): choose before moving — pick a move of 2–15 (replaces the doubles move and the re-roll), or confirm the normal doubles move and keep the extra turn
Persistence
Game state is saved to localStorage (key amalgolopoly-game) with a version string and an optional migration chain (MIGRATIONS in src/game/persist.ts). Refresh keeps the current game when the version matches or can be migrated; unsupported older versions are dropped and you start at setup. Use New Game in the sidebar (or after Game Over) to discard the save and return to setup.
When changing the save shape, bump the version, add a migrator, and drop a fixture under src/game/__tests__/fixtures/persist/ (see AGENTS.md).