commit 653308817db388a4d88571fcc2f6261f456a9d26 Author: Jarvis Date: Sat Feb 21 01:35:37 2026 +0000 Initial: monop-board site files diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8e5a3f --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# monop-board Static Site + +Visual Monopoly board viewer that reads `game-state.json` and displays the board. + +## Usage + +```bash +# Serve from the site directory (game-state.json should be in this dir or parent) +cd site/ +python3 -m http.server 8080 +``` + +Then open http://localhost:8080 in your browser. + +## Features + +- Classic Monopoly board layout +- Player tokens with colors and initials +- Property ownership indicators +- Houses (green) and hotels (red) +- Color-coded property groups +- Player info panels with money, properties, cards +- Game log with recent events +- Auto-refreshes every 2 seconds +- Demo mode when no live game is running +- Mobile-responsive dark theme diff --git a/game-state.json b/game-state.json new file mode 100644 index 0000000..c664db6 --- /dev/null +++ b/game-state.json @@ -0,0 +1,1216 @@ +{ + "players": [ + { + "name": "Alice", + "number": 1, + "money": 641, + "location": 28, + "inJail": false, + "jailTurns": 0, + "goJailFreeCards": 0, + "properties": [], + "numRailroads": 0, + "numUtilities": 0 + }, + { + "name": "Bob", + "number": 2, + "money": 630, + "location": 14, + "inJail": false, + "jailTurns": 0, + "goJailFreeCards": 0, + "properties": [], + "numRailroads": 0, + "numUtilities": 0 + }, + { + "name": "Charlie", + "number": 3, + "money": 365, + "location": 26, + "inJail": false, + "jailTurns": 0, + "goJailFreeCards": 0, + "properties": [], + "numRailroads": 0, + "numUtilities": 0 + } + ], + "currentPlayer": 2, + "squares": [ + { + "id": 0, + "name": "Go", + "type": "safe", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 1, + "name": "Mediterranean Ave.", + "type": "property", + "owner": -1, + "cost": 60, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "purple", + "rent": [ + 2, + 10, + 30, + 90, + 160, + 250 + ] + }, + { + "id": 2, + "name": "Community Chest", + "type": "cc", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 3, + "name": "Baltic Ave.", + "type": "property", + "owner": -1, + "cost": 60, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "purple", + "rent": [ + 4, + 20, + 60, + 180, + 320, + 450 + ] + }, + { + "id": 4, + "name": "Income Tax", + "type": "tax", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 5, + "name": "Reading Railroad", + "type": "railroad", + "owner": -1, + "cost": 200, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "railroad", + "rent": [ + 0 + ] + }, + { + "id": 6, + "name": "Oriental Ave.", + "type": "property", + "owner": -1, + "cost": 100, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "lightblue", + "rent": [ + 6, + 30, + 90, + 270, + 400, + 550 + ] + }, + { + "id": 7, + "name": "Chance", + "type": "chance", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 8, + "name": "Vermont Ave.", + "type": "property", + "owner": -1, + "cost": 100, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "lightblue", + "rent": [ + 6, + 30, + 90, + 270, + 400, + 550 + ] + }, + { + "id": 9, + "name": "Connecticut Ave.", + "type": "property", + "owner": -1, + "cost": 120, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "lightblue", + "rent": [ + 8, + 40, + 100, + 300, + 450, + 600 + ] + }, + { + "id": 10, + "name": "Just Visiting", + "type": "jail", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 11, + "name": "St. Charles Place", + "type": "property", + "owner": -1, + "cost": 140, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "pink", + "rent": [ + 10, + 50, + 150, + 450, + 625, + 750 + ] + }, + { + "id": 12, + "name": "Electric Company", + "type": "utility", + "owner": -1, + "cost": 150, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "utility", + "rent": [ + 0 + ] + }, + { + "id": 13, + "name": "States Ave.", + "type": "property", + "owner": -1, + "cost": 140, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "pink", + "rent": [ + 10, + 50, + 150, + 450, + 625, + 750 + ] + }, + { + "id": 14, + "name": "Virginia Ave.", + "type": "property", + "owner": -1, + "cost": 160, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "pink", + "rent": [ + 12, + 60, + 180, + 500, + 700, + 900 + ] + }, + { + "id": 15, + "name": "Pennsylvania Railroad", + "type": "railroad", + "owner": -1, + "cost": 200, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "railroad", + "rent": [ + 0 + ] + }, + { + "id": 16, + "name": "St. James Place", + "type": "property", + "owner": -1, + "cost": 180, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "orange", + "rent": [ + 14, + 70, + 200, + 550, + 750, + 950 + ] + }, + { + "id": 17, + "name": "Community Chest", + "type": "cc", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 18, + "name": "Tennessee Ave.", + "type": "property", + "owner": -1, + "cost": 180, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "orange", + "rent": [ + 14, + 70, + 200, + 550, + 750, + 950 + ] + }, + { + "id": 19, + "name": "New York Ave.", + "type": "property", + "owner": -1, + "cost": 200, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "orange", + "rent": [ + 16, + 80, + 220, + 600, + 800, + 1000 + ] + }, + { + "id": 20, + "name": "Free Parking", + "type": "safe", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 21, + "name": "Kentucky Ave.", + "type": "property", + "owner": -1, + "cost": 220, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "red", + "rent": [ + 18, + 90, + 250, + 700, + 875, + 1050 + ] + }, + { + "id": 22, + "name": "Chance", + "type": "chance", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 23, + "name": "Indiana Ave.", + "type": "property", + "owner": -1, + "cost": 220, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "red", + "rent": [ + 18, + 90, + 250, + 700, + 875, + 1050 + ] + }, + { + "id": 24, + "name": "Illinois Ave.", + "type": "property", + "owner": -1, + "cost": 240, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "red", + "rent": [ + 20, + 100, + 300, + 750, + 925, + 1100 + ] + }, + { + "id": 25, + "name": "B&O Railroad", + "type": "railroad", + "owner": -1, + "cost": 200, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "railroad", + "rent": [ + 0 + ] + }, + { + "id": 26, + "name": "Atlantic Ave.", + "type": "property", + "owner": -1, + "cost": 260, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "yellow", + "rent": [ + 22, + 110, + 330, + 800, + 975, + 1150 + ] + }, + { + "id": 27, + "name": "Ventnor Ave.", + "type": "property", + "owner": -1, + "cost": 260, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "yellow", + "rent": [ + 22, + 110, + 330, + 800, + 975, + 1150 + ] + }, + { + "id": 28, + "name": "Water Works", + "type": "utility", + "owner": -1, + "cost": 150, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "utility", + "rent": [ + 0 + ] + }, + { + "id": 29, + "name": "Marvin Gardens", + "type": "property", + "owner": -1, + "cost": 280, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "yellow", + "rent": [ + 24, + 120, + 360, + 850, + 1025, + 1200 + ] + }, + { + "id": 30, + "name": "Go to Jail", + "type": "gotojail", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 31, + "name": "Pacific Ave.", + "type": "property", + "owner": -1, + "cost": 300, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "green", + "rent": [ + 26, + 130, + 390, + 900, + 1100, + 1275 + ] + }, + { + "id": 32, + "name": "North Carolina Ave.", + "type": "property", + "owner": -1, + "cost": 300, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "green", + "rent": [ + 26, + 130, + 390, + 900, + 1100, + 1275 + ] + }, + { + "id": 33, + "name": "Community Chest", + "type": "cc", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 34, + "name": "Pennsylvania Ave.", + "type": "property", + "owner": -1, + "cost": 320, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "green", + "rent": [ + 28, + 150, + 450, + 1000, + 1200, + 1400 + ] + }, + { + "id": 35, + "name": "Short Line Railroad", + "type": "railroad", + "owner": -1, + "cost": 200, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "railroad", + "rent": [ + 0 + ] + }, + { + "id": 36, + "name": "Chance", + "type": "chance", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 37, + "name": "Park Place", + "type": "property", + "owner": -1, + "cost": 350, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "darkblue", + "rent": [ + 35, + 175, + 500, + 1100, + 1300, + 1500 + ] + }, + { + "id": 38, + "name": "Luxury Tax", + "type": "tax", + "owner": -1, + "cost": 0, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": null, + "rent": [ + 0 + ] + }, + { + "id": 39, + "name": "Boardwalk", + "type": "property", + "owner": -1, + "cost": 400, + "mortgaged": false, + "houses": 0, + "monopoly": false, + "group": "darkblue", + "rent": [ + 50, + 200, + 600, + 1400, + 1700, + 2000 + ] + } + ], + "log": [ + { + "timestamp": "2026-02-20T21:39:19.034618+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:22.779902+00:00", + "text": "roll is 6, 2", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:23.123928+00:00", + "text": "Landed on Short Line RR", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:27.279901+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:30.019353+00:00", + "text": "roll is 3, 6", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:31.074039+00:00", + "text": "Landed on Illinois ave. (R)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:35.123174+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:39:38.134720+00:00", + "text": "roll is 1, 2", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:39:39.163241+00:00", + "text": "Landed on Tennessee ave. (O)", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:39:42.230156+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:44.163436+00:00", + "text": "roll is 5, 3", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:45.045396+00:00", + "text": "Passed Go, collected $200", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:46.391752+00:00", + "text": "Landed on Baltic ave. (P)", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:39:50.021719+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:53.143646+00:00", + "text": "roll is 2, 2", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:54.173590+00:00", + "text": "Landed on Water Works", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:58.115643+00:00", + "text": "Charlie rolled doubles", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:39:59.080645+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:02.516642+00:00", + "text": "roll is 3, 6", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:03.072707+00:00", + "text": "Landed on Park place (D)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:07.092191+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:10.057107+00:00", + "text": "roll is 6, 1", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:11.114690+00:00", + "text": "Landed on B&O RR", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:15.056021+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:40:18.086192+00:00", + "text": "roll is 6, 1", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:40:19.201126+00:00", + "text": "Landed on Just Visiting", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:40:21.069006+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:23.195811+00:00", + "text": "roll is 5, 3", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:24.173276+00:00", + "text": "Passed Go, collected $200", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:25.308366+00:00", + "text": "Landed on Reading RR", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:29.019020+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:32.986793+00:00", + "text": "roll is 1, 2", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:33.285561+00:00", + "text": "Landed on Water Works", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:36.013021+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:40:38.121899+00:00", + "text": "roll is 5, 4", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:40:39.067813+00:00", + "text": "Landed on New York ave. (O)", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:40:43.366029+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:46.420151+00:00", + "text": "roll is 5, 6", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:47.087758+00:00", + "text": "Landed on St. James pl. (O)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:40:51.069278+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:54.148542+00:00", + "text": "roll is 2, 3", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:55.034677+00:00", + "text": "Landed on Community Chest iii", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:40:59.106075+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:01.390892+00:00", + "text": "roll is 6, 4", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:02.281377+00:00", + "text": "Landed on Marvin Gardens (Y)", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:06.033576+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:09.122805+00:00", + "text": "roll is 6, 4", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:10.028567+00:00", + "text": "Landed on Atlantic ave. (Y)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:14.271012+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:17.086682+00:00", + "text": "roll is 3, 5", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:18.412540+00:00", + "text": "Passed Go, collected $200", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:19.060568+00:00", + "text": "Landed on Mediterranean ave. (P)", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:23.195426+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:26.183722+00:00", + "text": "roll is 1, 3", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:27.350831+00:00", + "text": "Landed on Community Chest iii", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:32.741099+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:34.090879+00:00", + "text": "roll is 6, 4", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:35.615507+00:00", + "text": "Landed on Chance iii", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:41.150155+00:00", + "text": "Passed Go, collected $200", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:42.051902+00:00", + "text": "Landed on Reading RR", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:41:44.873855+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:46.150406+00:00", + "text": "roll is 6, 5", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:47.344608+00:00", + "text": "Landed on Electric Co.", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:41:51.109979+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:54.161887+00:00", + "text": "roll is 5, 2", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:55.135301+00:00", + "text": "Passed Go, collected $200", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:56.182383+00:00", + "text": "Landed on === GO ===", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:41:58.460317+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:00.020890+00:00", + "text": "roll is 2, 2", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:01.217135+00:00", + "text": "Landed on Connecticut ave. (L)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:03.685544+00:00", + "text": "Charlie rolled doubles", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:04.090943+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:06.046296+00:00", + "text": "roll is 2, 4", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:07.155630+00:00", + "text": "Landed on Pennsylvania RR", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:09.228934+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:11.048543+00:00", + "text": "roll is 1, 2", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:12.051441+00:00", + "text": "Landed on Pennsylvania RR", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:15.096187+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:17.074310+00:00", + "text": "roll is 4, 1", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:18.121182+00:00", + "text": "Landed on Reading RR", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:21.099989+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:23.078664+00:00", + "text": "roll is 3, 1", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:24.102379+00:00", + "text": "Landed on New York ave. (O)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:27.389260+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:29.160348+00:00", + "text": "roll is 5, 3", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:30.028084+00:00", + "text": "Landed on Indiana ave. (R)", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:34.089933+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:37.120805+00:00", + "text": "roll is 3, 2", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:38.308047+00:00", + "text": "Landed on Just Visiting", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:40.075722+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:42.133113+00:00", + "text": "roll is 4, 3", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:43.352306+00:00", + "text": "Landed on Atlantic ave. (Y)", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:42:45.107489+00:00", + "text": "Alice's turn", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:47.079074+00:00", + "text": "roll is 1, 4", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:48.023267+00:00", + "text": "Landed on Water Works", + "player": "Alice" + }, + { + "timestamp": "2026-02-20T21:42:51.109849+00:00", + "text": "Bob's turn", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:53.121783+00:00", + "text": "roll is 3, 1", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:54.178974+00:00", + "text": "Landed on Virginia ave. (V)", + "player": "Bob" + }, + { + "timestamp": "2026-02-20T21:42:58.078507+00:00", + "text": "Charlie's turn", + "player": "Charlie" + }, + { + "timestamp": "2026-02-20T21:43:01.027491+00:00", + "text": "roll is 3, 4", + "player": "Charlie" + } + ], + "lastUpdated": "2026-02-20T21:43:01.027510+00:00" +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..9a82e8d --- /dev/null +++ b/index.html @@ -0,0 +1,468 @@ + + + + + +Monopoly Board Viewer + + + +
+
+

๐ŸŽฒ Monopoly Board

+
Loading game state...
+
+
+
+
+ MONOPOLY +
IRC Edition
+
+
+
+
+

๐Ÿ“œ Game Log

+
+
+
+ + + +