源文件超过50行,已替换为不超过50行的伪代码。辅助函数为逻辑抽象,不直接执行。
1function fromTarget(target, condition) {2 const chance = condition === "above" ? 100 - target : target;3 const multiplier = 99 / chance;4 return { target, condition, chance, multiplier };5}67function fromChance(chance, condition) {8 const target = condition === "above" ? 100 - chance : chance;9 return fromTarget(target, condition);10}1112function flipCondition(state) {13 const condition = state.condition === "above" ? "below" : "above";14 return fromTarget(100 - state.target, condition);15}1617const initialState = fromTarget(50.50, "above");18// chance = 49.50; multiplier = 2.0019// 输入有效范围与精度由字段校验处理。已确认说明
- 前端胜率函数 chance(target,condition)=above?100-target:target;倍率=100/chance*(1-0.01)=99/chance。倍率输入反推 target=above?100-99/multiplier:99/multiplier;反推 target 经两位格式化。
- 纯函数 winChance block 计算 target 并按 above 2..99.99、below .01..98 校验;不合范围返回 stop/winChanceInvalid。增加/减少胜率、直接设置、重置、翻转条件被并入允许 action。