- TypeScript 94.7%
- CSS 4.9%
- HTML 0.2%
- JavaScript 0.2%
| 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 | ||
| renovate.json | ||
| 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.beginChance()
cheat.forceChanceDie(3) // or '?'
cheat.chanceCash(12, 0)
cheat.chancePlace('virginia', 4, 0)
cheat.chance()
cheat.whiteHouse(0) // House Divided White House (null clears)
cheat.oneRing('Baltic') // Lord of the Rings One Ring ('next' advances; null resets)
cheat.offline('Boardwalk') // Monopoly .com Offline cloud (alias: cheat.cloud; null/'go' → GO)
cheat.parties() // Team Red / Team Blue
cheat.beginIVoted('sweaty-lip')
cheat.iVoted()
cheat.corruptSave() // invalid save → recovery screen (reloads)
Useful helpers: cheat.player(), cheat.board(), cheat.vault(), cheat.secretVault(), cheat.chance(), cheat.chanceHand('flip-2'), cheat.chanceEvent('bank-closed'), cheat.chanceSettle(), cheat.bonus('jackpot'), cheat.sale('jet-pack'), cheat.corruption('snitch'), cheat.dealMobile(playerId), cheat.whiteHouse(playerId), cheat.oneRing(id|name|'next'), cheat.offline(id|name|'go') / cheat.cloud(...), cheat.parties(), cheat.beginIVoted(cardId?), cheat.iVotedTop(cardId), cheat.refillIVoted(), 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 — 126 spaces total (82 outer + 44 Empire). Each brand adds a dollar value to your tower ($50–$200); rent and Empire GO payout equal total tower dollars (min $50 on Empire GO). Unowned Empire brands show how much they add. +1 Office / utilities are +$50 each; unlimited offices, one buy per turn ($500); free +1 on completing an Empire color set. No tower-value cap or win condition. Empire cards separate deck; land on Empire spaces to draw
-
Monopoly Chance (mini-board): after each normal turn, the same player plays a Chance turn on a 12-space board between the Empire and outer tracks. A personal 20-card decks (Cash ₩2–12M, Bankrupt, Lucky Break, Token, Flip 2, Nope); roll for flip count (
?draws an event). Place Cash that beats the property’s printed value (or the current top Cash if claimed); Token chooses a corner action (no token movement). Round ends when all properties have cards + one more turn each; winners stack Chance buildings onto their Empire tower ($10 / $15 / $20 / $25 by side) with no accumulation limit. Five event cards are Amalgolopoly custom stand-ins (Big Bet, Cash Grab, Market Crash, Second Chance, Double Down) until the full official list is confirmed. -
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 / crosshair / boogie bomb / brick×2
- Boss fights when passing GO or Empire GO.
-
Monopoly House Divided:
- Each Gamer character is on Team Red or Team Blue (shown on the player list; token colors stay unique)
- White House: roll doubles (or draw a Chance/CC card) to take it; while you hold it, all rent you charge is doubled
- 4 I Voted spaces (one per outer side): draw a vote card; players vote (only for their own party); most votes carries out the card
-
Monopoly Lord of the Rings Trilogy (2003):
- One face of a white die is the One Ring (still counts as 1 for movement / doubles)
- Each Ring roll advances the One Ring token to the next property (streets, railroads, utilities, and Empire brands; starts on Mediterranean)
- Land on the Ring’s unowned property → take it free; land on an owned Ring property → pay double rent (stacks with White House / skyscraper / Tower)
-
Monopoly Marvel Deadpool:
- Cheap Shot (between New York & New Jersey): steal $100 from the player with the least money
- Low Blow (between Florida Avenue & Park Place): steal one property from any player
-
Monopoly Marvel Avengers:
- Children of Thanos (Cull Obsidian / Proxima Midnight / Corvus Glaive / Ebony Maw) between Vermont & Connecticut, States & Virginia, Marvin & California, and South & North Carolina: black spaces with a target die face (1–4)
- Battle: roll 1 die + 1 per property you own; match the face → another turn; miss → pay $200 to the jackpot
-
Monopoly .com Edition:
- Offline token (shown as a cloud) starts on GO
- On doubles, the roller may move the cloud to any space
- While the cloud sits on a property you own, you cannot collect rent there
- If a player lands on the cloud’s space, the owner may move it elsewhere
-
Monopoly Fortnite:
- 3 Damage Traps (pay $100), 4 Campfires (get $100), Motorboat / Helicopter (advance to nearest unowned property; walls stop you)
- 2 outer Empire spaces draw Loot Crate cards (16-card deck; Bush is official, other texts invented where unpublished)
- Passing GO places a Storm on a random space; land there → pay $200 then resolve normally
- Power-Up die adds Crosshair, Boogie Bomb, and 2× Brick (walls on properties; movement stops at walls)
-
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).