Skip to content

GSanrio/Hpjyqaq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

五曜赐福

这个仓库是一个纯前端的抽奖模拟页面,入口是 index.html,实际页面在 wycf/Demo.html,主要逻辑在 wycf/Demo.js

下面的说明基于源码整理,不是官方文案复刻,而是按照程序实际行为逐条还原出的规则。

运行方式

这是静态页面项目,不需要安装依赖。

可直接打开:

  • index.html
  • wycf/Demo.html

界面元素

页面里主要有这些概念:

  • 余额:抽奖和保护追加时消耗的货币。
  • 当前结果:当前已经抽到的五曜属性和星级。
  • 五曜令牌:可以直接领取,也可以拿去商店兑换道具。
  • 奖励:达到一定星级后显示的物品奖励。
  • 玛莎拉蒂兑换徽章:高星奖励或商店兑换可获得,用于换车。
  • 我的:已经领取或兑换到的物品列表。

基础抽奖规则

点击一次 抽奖(6) 会发生两次随机:

  1. 随机一个五曜属性。
  2. 随机一个初始星级。

每次基础抽奖固定消耗 6 余额。

只有当当前没有未领取奖励时,才能再次开始新一轮抽奖。也就是说,上一轮必须先点击 领取奖励,新的抽奖按钮才算真正回到初始状态。

随机概率

源码中页面注释和 Demo.js 的实现一致,概率如下。

五曜属性概率

五种属性完全等概率:

属性 概率
金曜 20%
木曜 20%
水曜 20%
火曜 20%
土曜 20%

实现依据:

  • face() 中用 Math.floor(10 * Math.random())
  • 每两个整数映射一个属性,所以都是 2/10 = 20%

初始星级概率

初次抽奖时,星级概率如下:

初始星级 概率
1 星 82%
2 星 17%
3 星 1%

实现依据:

  • fott() 中:
  • < 8.2 返回 1 星
  • < 9.9 返回 2 星
  • 其余返回 3 星

追加机制

初次抽奖后,可以继续追加。追加本质上是“再抽一次五曜属性和星级”,然后判断这次抽到的属性是否与当前主属性一致。

当前结果的主属性,永远以第一次抽到的五曜属性为准。

普通追加

普通追加不额外扣余额。

每次普通追加会重新抽一次:

  • 五曜属性:20% 命中当前属性,80% 不命中
  • 星级:1/2/3 星概率仍然是 82% / 17% / 1%

判定规则:

  • 如果属性与当前主属性相同,则追加成功,当前星级增加本次抽到的星数。
  • 如果属性不同,则追加失败,并触发降星。

所以普通追加的单次成功率固定是:

结果 概率
追加成功 20%
追加失败 80%

保护追加

保护追加需要消耗余额,费用取决于当前星级:

当前星级 保护追加费用
1 星 6
2 星 17
3 星 51
4 星 153
5 星 440
6 星 827

保护追加的特殊规则:

  • 前两次保护追加仍然要随机属性。
  • 如果前两次都没命中当前属性,第 3 次会被代码强制改成当前属性,必定成功。
  • 保护追加失败时不会降星,只会累计一次“保护失败计数”。
  • 一旦保护追加成功,保护失败计数会清零。

因此,从单次点击的角度看:

  • 第 1 次保护追加成功率:20%
  • 如果第 1 次失败,第 2 次成功率仍是 20%
  • 如果前 2 次都失败,第 3 次成功率:100%

如果把连续最多 3 次保护追加看成一个完整保底周期,那么:

  • 1 次内成功:20%
  • 2 次内成功:0.8 * 0.2 = 16%
  • 第 3 次保底成功:0.8 * 0.8 = 64%
  • 最终总成功率:100%

追加失败后的降星规则

这部分只会发生在普通追加失败时。

页面注释和源码 adddefeat() 的实现一致:

失败后结果 概率
降 1 星 75%
降 2 星 25%

但在 1 星 状态下继续普通追加失败时,代码不会真的变成 0 星等待,而是直接:

  • 清空当前结果
  • 立即补发 五曜令牌×2

换句话说,1 星失败 相当于这一轮直接结束并给 2 令牌。

不同星级失败后的实际结算

失败前星级 75% 情况 25% 情况
1 星 直接结算 2 令牌 不会出现
2 星 直接结算 12 令牌 直接结算 4 令牌
3 星 直接结算 36 令牌 直接结算 12 令牌
4 星 回到 3 星,可领取 54 令牌或 3 星奖励 回到 2 星,直接结算 36 令牌
5 星 回到 4 星,可领取 160 令牌或 4 星奖励 回到 3 星,可领取 54 令牌或 3 星奖励
6 星 回到 5 星,可领取 480 令牌或 5 星奖励 回到 4 星,可领取 160 令牌或 4 星奖励

补充说明:

  • 失败后如果降到 3 星及以上,页面会重新生成该星级对应的奖励显示。
  • 失败后如果降到 2 星及以下,物品奖励会变成 NULL,只能领令牌。

星级上限

代码通过 uplimit() 限制最终可达到的最高星级为 7 星

达到 7 星及以上后:

  • 不再允许继续普通追加
  • 不再允许继续保护追加
  • 页面提示去领取奖励

虽然部分函数写了 7/8/9 星 的兼容判断,但按页面实际流程,正常可到达的上限就是 7 星

不同星级的令牌奖励

每个可领取状态都对应一份五曜令牌数量:

星级 五曜令牌
1 星 12
2 星 36
3 星 54
4 星 160
5 星 480
6 星 1440
7 星 4320

注意有两种令牌来源:

  • 正常到达某个星级后,勾选左侧奖励并点击 领取奖励
  • 普通追加失败后,代码有时会直接结算较低档位令牌

物品奖励规则

3 星 开始,页面会同时显示一个可领取的物品奖励。

领取时,玩家只能二选一:

  • 领取五曜令牌
  • 领取当前物品奖励

3 星奖励

3 星奖励分三类,各占约三分之一:

奖励类型 概率
背包挂件-对应五曜套系 33%
至尊龙雀降落伞 33%
平底锅-五爪金龙 34%

更精确地说,代码是:

  • rdm <= 3.3:对应五曜的背包挂件
  • 3.3 < rdm <= 6.6:至尊龙雀降落伞
  • rdm > 6.6:平底锅-五爪金龙

其中“对应五曜套系”指:

  • 金曜白虎
  • 木曜青龙
  • 水曜玄武
  • 火曜朱雀
  • 土曜战麒

4 星奖励

4 星奖励固定是当前五曜套系中的一种:

奖励类型 概率
对应五曜背包 50%
对应五曜头盔 50%

5 星奖励

5 星奖励分三类,各占约三分之一:

奖励类型 概率
对应五曜套装 33%
至尊龙雀飞行服 33%
M416-五爪金龙 34%

更精确地说,代码是:

  • rdm <= 3.3:对应五曜套装
  • 3.3 < rdm <= 6.6:至尊龙雀飞行服
  • rdm > 6.6:M416-五爪金龙

6 星与 7 星奖励

星级 奖励
6 星 玛莎拉蒂兑换徽章×1
7 星 玛莎拉蒂兑换徽章×3

代码中 7/8/9 星 都会返回 玛莎拉蒂兑换徽章×3,但正常流程最多 7 星。

领取奖励规则

每一轮结束时,必须手动勾选并点击 领取奖励

领取左侧令牌奖励

如果勾选左侧的 五曜令牌

  • 对应数量会加入 我的五曜令牌
  • 当前轮次结束

领取右侧物品奖励

如果勾选右侧的 物品奖励

  • 3/4/5 星的普通物品会加入 我的
  • 6 星会给 玛莎拉蒂兑换徽章 +1
  • 7 星会给 玛莎拉蒂兑换徽章 +3
  • 当前轮次结束

因此,6 星和 7 星右侧显示的其实不是普通道具,而是徽章。

商店兑换规则

点击 打开碎片商店 后,可以用五曜令牌或玛莎拉蒂兑换徽章兑换物品。

五曜令牌兑换

物品 价格
套装-金曜白虎 972 令牌
背包挂件-金曜白虎 108 令牌
金曜白虎头盔 324 令牌
金曜白虎背包 324 令牌
套装-木曜青龙 972 令牌
背包挂件-木曜青龙 108 令牌
木曜青龙头盔 324 令牌
木曜青龙背包 324 令牌
套装-水曜玄武 972 令牌
背包挂件-水曜玄武 108 令牌
水曜玄武头盔 324 令牌
水曜玄武背包 324 令牌
套装-火曜朱雀 972 令牌
背包挂件-火曜朱雀 108 令牌
火曜朱雀头盔 324 令牌
火曜朱雀背包 324 令牌
套装-土曜战麒 972 令牌
背包挂件-土曜战麒 108 令牌
土曜战麒头盔 324 令牌
土曜战麒背包 324 令牌
至尊龙雀飞行服 972 令牌
M416-五爪金龙 972 令牌
至尊龙雀降落伞 108 令牌
平底锅-五爪金龙 108 令牌
玛莎拉蒂兑换徽章×1 2916 令牌

玛莎拉蒂徽章兑换

物品 价格
玛莎拉蒂 Ghibli(蓝) 1 徽章
玛莎拉蒂 Ghibli(粉) 1 徽章
玛莎拉蒂 Ghibli(金) 3 徽章

可以直接推出来的关键结论

1. 普通追加非常看脸

因为普通追加只看属性是否匹配,而五曜属性是五选一等概率,所以:

  • 每次普通追加的成功率固定只有 20%
  • 每次普通追加的失败率固定是 80%

2. 保护追加是“三次内必成”

保护追加并不是简单的“失败不掉星”,它实际上还有明确保底:

  • 连续两次保护失败后
  • 第三次直接强制改成当前属性
  • 所以三次保护内必定成功一次

3. 3 星和 5 星奖励不是完全平均分布

代码阈值写的是 3.3 / 6.6 / 10,因此更精确的概率是:

  • 第一档 33%
  • 第二档 33%
  • 第三档 34%

4. 高星阶段失败并不一定直接结算

4 星以上普通追加失败时,代码有可能只是把你打回更低一档“仍可领奖”的状态,而不是立刻结束整轮。

例如:

  • 5 星失败后,可能掉到 4 星或 3 星
  • 6 星失败后,可能掉到 5 星或 4 星

这时你仍然要手动点击 领取奖励 来结束这一轮。

5. 代码里有少量“显示层”和“逻辑层”混合的实现

例如:

  • 当前星级是靠字符串长度推算的
  • 7 星以上的奖励函数写了兼容分支
  • 奖励展示会在降星后重新按当前星级即时刷新

所以阅读源码时,最好把“当前结果字符串”和“真实星级状态”一起看。

源码对应关系

如果后续要继续维护,这几个函数最关键:

  • face():五曜属性概率
  • fott():初始或追加星级概率
  • f():开始新一轮抽奖
  • f1():普通追加
  • f2():保护追加
  • adddefeat():普通追加失败后的降星与补偿
  • getdebris():各星级令牌数量
  • getprize():各星级物品奖励池
  • spendbhzj():保护追加价格
  • f5() / ff0() / ff1():商店兑换逻辑

一句话总结

这个页面模拟的是一个“先抽五曜和初始星级,再通过追加冲高星,最后在令牌和物品之间二选一领取”的活动。核心概率可以概括成:

  • 五曜属性:每种 20%
  • 初始星级:1 星 82%,2 星 17%,3 星 1%
  • 普通追加成功:20%
  • 普通追加失败后:降 1 星 75%,降 2 星 25%
  • 保护追加:前两次各 20% 成功,第 3 次保底成功

About

和平精英抽车模拟

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors