// ponytail: 赏金区间与等级上限先写成常量;PRD 说「由运营配置」,要在后台改时换成配置表(W5 等级系统一起做)。 /** 稀有度 n(1–10)的赏金下限;低于第二档的都是 1。 */ const RARITY_MIN_REWARD = Object.freeze([1, 50, 100, 200, 400, 800, 1600, 3200, 6400, 12800]) /** * 稀有度按赏金区间自动得出:1 最小,10 最大。 * @param {number} reward 正整数 * @returns {number} */ export function rarityForReward(reward) { if (!Number.isSafeInteger(reward) || reward < 1) throw new Error(`rarityForReward: reward invalid: ${reward}`) return RARITY_MIN_REWARD.findLastIndex((min) => reward >= min) + 1 } /** * 等级决定可接的稀有度上限:1 级可接到 3,每升一级 +1,封顶 10。 * @param {number} level 从 1 起 * @returns {number} */ export function maxRarityForLevel(level) { if (!Number.isSafeInteger(level) || level < 1) throw new Error(`maxRarityForLevel: level invalid: ${level}`) return Math.min(10, level + 2) }