• TypeScript 94.7%
  • CSS 4.9%
  • HTML 0.2%
  • JavaScript 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Renovate Bot d5afbb2944
All checks were successful
Deploy / build (pull_request) Successful in 7s
Deploy / deploy (pull_request) Successful in 3s
Cleanup preview / cleanup-preview (pull_request) Successful in 2s
Deploy / build (push) Successful in 11s
Deploy / deploy (push) Successful in 2s
Update all non-major dependencies
2026-08-06 18:01:58 -04:00
.forgejo Improve deploy workflow 2026-08-02 21:16:41 -04:00
public Initial monopoly version 2026-07-25 12:48:45 -04:00
src Implement Monopoly fortnite edition 2026-08-06 18:00:43 -04:00
.gitignore Initial monopoly version 2026-07-25 12:48:45 -04:00
.oxlintrc.json Initial monopoly version 2026-07-25 12:48:45 -04:00
AGENTS.md Implement Monopoly fortnite edition 2026-08-06 18:00:43 -04:00
ARCHITECTURE.md Support saving 2026-07-27 22:01:03 -04:00
index.html Implement Monopoly fortnite edition 2026-08-06 18:00:43 -04:00
LICENSE Add MIT license 2026-07-26 19:27:02 -04:00
package-lock.json Update all non-major dependencies 2026-08-06 18:01:58 -04:00
package.json Update dependency typescript to v7 2026-08-01 20:07:38 -04:00
README.md Implement Monopoly fortnite edition 2026-08-06 18:00:43 -04:00
renovate.json Add renovate.json 2026-07-30 23:46:38 +00:00
tsconfig.app.json Initial monopoly version 2026-07-25 12:48:45 -04:00
tsconfig.json Initial monopoly version 2026-07-25 12:48:45 -04:00
tsconfig.node.json Initial monopoly version 2026-07-25 12:48:45 -04:00
vite.config.ts Implement pr previews 2026-08-02 19:39:50 -04:00

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

  • 28 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 streets deed price to green it (light-green tint on the board): unlocks City building and doubles that streets 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 (13 / 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 youd 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 ₩212M, Bankrupt, Lucky Break, Token, Flip 2, Nope); roll for flip count (? draws an event). Place Cash that beats the propertys 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 Rings 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 (14)
    • 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 clouds 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 215 (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).