Introduce active diplomacy where rival leaders approach the player with requests, demands, trades, and gifts rather than passively waiting. New CivilizationDiplomacy.js module handles: - 9 request kinds (joinWar, breakTreaty, borderUltimatum, demandGold, demandTech, techTrade, ceasefire, peace, alliance) with initiative tiers so urgent calls to arms aren't drowned out by filler offers - Cooldowns per (leader, target, kind) plus a per-leader gap so a leader can't spam different requests to bypass rate limits - Frustration grudge (0-100) raised by refusals, decaying each turn and dragging attitude toward hostility through the ordinary war path - Escalation: frustrated leaders demand compensation, then renounce treaties at breaking point, with ordinary hostility finishing the job - Border ultimatum promises checked when pledges expire (double penalty for broken word) - Unprompted gold/tech gifts from leaders with high attitude - Staleness validation so requests the world invalidated are dropped - AI-to-AI requests resolve immediately through the same pipeline UI changes: - AI requests queued on state.pendingRequests, presented via audience popup at the start of the human turn (one per turn, configurable) - Diplomacy screen shows ACCEPT/REFUSE with consequence hints until answered; unanswered requests lapse with half-weight penalties - New event types: treatyRenounced, pledgeBroken/pledgeKept, aiGift - Leader dialogue for demands, refusals, gifts, and renouncements - Tetris Attack menu gets a title art backdrop Data/infra: - diplomacyRequests tuning in civilization-rules.json (thresholds, cooldowns, attitude weights, per-request config) - Frustration, requestCooldown, lastRequestTurn, pledges fields on civ state — all backward-compatible with old saves - Full verification suite covering eligibility, resolution, cooldowns, frustration arc, serialization, and fuzz testing |
||
|---|---|---|
| .. | ||
| advancewars | ||
| civilization | ||
| mahjong | ||
| originals | ||
| peggle | ||
| shift | ||
| slots | ||
| starcontrol | ||
| superkart | ||
| tetrisattack | ||
| tutorial-images | ||
| azul-tiles.png | ||
| azul-tiles.psd | ||
| background-casino.png | ||
| background-jewelquest.png | ||
| background-jewelquest.psd | ||
| background-menu.png | ||
| background-room.png | ||
| balatro-artwork.png | ||
| balatro-artwork.psd | ||
| balatro-bossicons.png | ||
| balatro-bossicons.psd | ||
| balatro-deckbacks.png | ||
| balatro-deckbacks.psd | ||
| balatro-packs.png | ||
| balatro-packs.psd | ||
| balatro-planets.png | ||
| balatro-planets.psd | ||
| balatro-spectrals.png | ||
| balatro-spectrals.psd | ||
| balatro-tarots.png | ||
| balatro-tarots.psd | ||
| balatro-vouchers.png | ||
| balatro-vouchers.psd | ||
| cardbacks.png | ||
| cardbacks.psd | ||
| catan-pirate.png | ||
| catan-robber.png | ||
| catan-special-cards.png | ||
| catan-special-cards.psd | ||
| catancards.png | ||
| catancards.psd | ||
| catantiles.png | ||
| catantiles.psd | ||
| dominion-cards.psd | ||
| dominion-prosperity.png | ||
| dominion-prosperity.psd | ||
| dominion-tokens.png | ||
| dominion-tokens.psd | ||
| dominioncards.png | ||
| dungeonboss-bosses.png | ||
| dungeonboss-bosses.psd | ||
| dungeonboss-deckbacks.png | ||
| dungeonboss-deckbacks.psd | ||
| dungeonboss-heroes.png | ||
| dungeonboss-heroes.psd | ||
| dungeonboss-icons.png | ||
| dungeonboss-icons.psd | ||
| dungeonboss-rooms.png | ||
| dungeonboss-rooms.psd | ||
| dungeonboss-spells.png | ||
| dungeonboss-spells.psd | ||
| forbiddenisland-cards.png | ||
| forbiddenisland-cards.psd | ||
| forbiddenisland-tiles.png | ||
| forbiddenisland-tiles.psd | ||
| game-icons.png | ||
| game-icons.psd | ||
| gofish-cards.png | ||
| gofish-cards.psd | ||
| jello-items.png | ||
| jello-items.psd | ||
| labyrinth-cards.png | ||
| labyrinth-cards.psd | ||
| labyrinth-tiles.png | ||
| labyrinth-tiles.psd | ||
| labyrinth-treasures.png | ||
| labyrinth-treasures.psd | ||
| main-title.png | ||
| monopoly-cards.png | ||
| monopoly-cards.psd | ||
| monopoly-pawns.png | ||
| oldmaid-cards.png | ||
| oldmaid-cards.psd | ||
| opponents.png | ||
| opponents.psd | ||
| peggle-sprites.png | ||
| peggle-sprites.psd | ||
| playfield-combat.png | ||
| playfield-fantasy.png | ||
| playfield-felt-blue.png | ||
| playfield-felt-green.png | ||
| playfield-felt-red.png | ||
| playfield-starscape.png | ||
| playfield-wood-cherry.png | ||
| playfield-wood-dark.png | ||
| playfield-wood-english.png | ||
| playfield-wood-light.png | ||
| risk-board.png | ||
| spireclimb-act1.png | ||
| spireclimb-act2.png | ||
| spireclimb-act3.png | ||
| spireclimb-cards.png | ||
| spireclimb-cards.psd | ||
| spireclimb-creatures.png | ||
| spireclimb-creatures.psd | ||
| spireclimb-rogue.png | ||
| spireclimb-rogue.psd | ||
| spireclimb-warrior.png | ||
| spireclimb-warrior.psd | ||
| splendor-cards.png | ||
| splendor-cards.psd | ||
| splendor-gems.png | ||
| splendor-gems.psd | ||
| stratego-pieces.png | ||
| stratego-pieces.psd | ||
| superkart-background.png | ||
| swdbg-bases-art.png | ||
| swdbg-bases-art.psd | ||
| swdbg-cards-art.png | ||
| swdbg-cards-art.psd | ||
| tab-icons.png | ||
| tab-icons.psd | ||
| tickettoride-cards.png | ||
| tickettoride-cards.psd | ||