fertig-classic-games/assets/images
Brian Fertig 4fcae92e59 feat(civ): AI-initiated diplomacy with frustration escalation
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
2026-07-23 16:26:15 -06:00
..
advancewars feat(tetrisattack): add Panel de Pon-style tile clear animation and update assets 2026-07-22 18:40:26 -06:00
civilization feat(civilization): add japanese city theme and improve world generation 2026-07-22 23:48:41 -06:00
mahjong
…
originals refactor: reduce kart rotation frames from 16 to 8 and add racer artwork 2026-07-17 21:38:18 -06:00
peggle
…
shift
…
slots
…
starcontrol
…
superkart feat: update superkart icons and add tetrisattack background frames 2026-07-21 20:54:31 -06:00
tetrisattack feat(civ): AI-initiated diplomacy with frustration escalation 2026-07-23 16:26:15 -06:00
tutorial-images
…
azul-tiles.png
…
azul-tiles.psd
…
background-casino.png
…
background-jewelquest.png
…
background-jewelquest.psd
…
background-menu.png feat(tetris-attack): smooth panel fall animation and settling frame 2026-07-20 19:21:08 -06:00
background-room.png feat(tetris-attack): smooth panel fall animation and settling frame 2026-07-20 19:21:08 -06:00
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 feat(tetris-attack): smooth panel fall animation and settling frame 2026-07-20 19:21:08 -06:00
game-icons.psd feat(tetris-attack): smooth panel fall animation and settling frame 2026-07-20 19:21:08 -06:00
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 feat(tetris-attack): smooth panel fall animation and settling frame 2026-07-20 19:21:08 -06:00
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 Add custom background artwork to Super Kart menu screens 2026-07-17 15:09:01 -06:00
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
…