Vos cartes à collectionner servent enfin à quelque chose : des bonus de loyer
Les cartes de propriété que vous gagnez augmentent désormais votre propre loyer sur cette case — plus la carte est rare, plus le bonus est grand, plafonné à +30%.

En clair
Gagner une partie fait tomber une carte de propriété à collectionner dans votre inventaire. Jusqu’ici, cette carte n’était que décoration. Désormais elle travaille pour vous : posséder une carte augmente le loyer que vous percevez sur cette case précise pendant toute la partie.
Le bonus croît avec la rareté, et seule la carte la plus rare que vous possédez sur une case compte — les bonus ne se cumulent jamais. Le total est plafonné à +30%, si bien qu’aucune carte ne fait à elle seule basculer la partie.
Pour les curieux techniques
Un nouveau module moteur cards.ts est l’unique source de vérité pour l’échelle de rareté (commune 5 / rare 10 / épique 20 / légendaire 30, plafonnée en dur à 30). GameState gagne une carte par emplacement, de la case → au pourcentage de bonus ; computeRent et rentForDisplay appliquent round(rent × (1 + pct/100)) après le ×2 du monopole non bâti, de sorte que les deux multiplicateurs commutent et que les parties par défaut sans cartes conservent des loyers entiers identiques octet pour octet.
// cards.ts — the single source of truth (web catalog.ts re-exports it)
export const CARD_RARITY_BOOST = { common: 5, rare: 10, epic: 20, legendary: 30 };
export const MAX_CARD_BOOST_PCT = 30; // total cap; boosts never stackLe démon lit l’inventaire de chaque joueur assis une seule fois au début de la partie (user_inventory ⋈ inventory_items), conserve la rareté la plus élevée par case et intègre la carte par emplacement dans l’état initial — si bien que toute la partie reste rejouable de façon déterministe sans aucune lecture de la base de données en cours de jeu. Les bots ne possèdent aucune carte, et la carte est entièrement omise quand personne à la table n’en détient.
La Phase 2 a été livrée uniquement en code — les bonus vivent dans le JSON de engine_state. Une migration ultérieure, 0032, a ensuite hiérarchisé les 28 cartes de départ par groupe de cases et ajouté un sélecteur pondéré (70 / 20 / 8 / 2 entre commune / rare / épique / légendaire) pour que les victoires fassent réellement tomber des cartes plus rares au fil du temps, et non seulement des communes.
