你的收藏卡牌终于有用了:租金加成
你赢得的地产卡牌现在会提升你自己在该格子上的租金——卡牌越稀有,加成越大,上限为 +30%。

通俗版
赢下一局会往你的库存里掉落一张可收藏的地产卡牌。在此之前,那张卡牌纯属摆设。如今它开始为你效力:拥有一张卡牌,会在整局游戏中提升你在那个特定格子上所收取的租金。
加成随稀有度递增,而且只有你在某个格子上所拥有的最稀有那张卡牌才算数——加成永不叠加。总量上限为 +30%,所以没有任何一张卡牌能独自左右整局游戏。
技术细节
新的引擎模块 cards.ts 是稀有度阶梯的唯一真实来源(普通 5 / 稀有 10 / 史诗 20 / 传说 30,硬性上限 30)。GameState 新增了一张按位次的映射,从格子 → 加成百分比;computeRent 和 rentForDisplay 会在未开发垄断的 ×2 之后套用 round(rent × (1 + pct/100)),因此两个乘数可交换次序,而没有卡牌的默认对局仍保持逐字节一致的整数租金。
// 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 stack守护进程在开局时一次性读取每位在座玩家的库存(user_inventory ⋈ inventory_items),为每个格子保留最高的稀有度,并把这张按位次的映射烘焙进初始状态——于是整局游戏在无需游戏中途读取数据库的情况下依旧可确定性地重放。机器人不持有任何卡牌,而当牌桌上无人持有卡牌时,这张映射会被完全省略。
第 2 阶段仅以代码发布——加成存放在 engine_state 的 JSON 里。随后的迁移 0032 又把 28 张初始卡牌按格子分组分级,并加入了一个加权抽取器(在 普通 / 稀有 / 史诗 / 传说 之间为 70 / 20 / 8 / 2),让胜利随着时间真正掉落更稀有的卡牌,而不再只是普通卡。
