MatchMaster/docs/rainbow-old-implementation.md
WIN-GKKD951VVMJ\Administrator 74cf4413b5 增加一版彩虹机制
2026-09-20 17:14:40 +08:00

31 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# C 老彩虹实现与验证
## 临时测试开关
`GameConfig.forceOldRainbowWinStreakC = true` 当前默认开启:强制使用 C 组,启动、登录、回首页、进关时设为十连胜,输赢或退出都保持十连胜;临时跳过连胜关卡解锁门槛。真实 AB 分组不被覆盖,候选池、空池跳过和帮助关限制不变。
测试完成后将此开关改为 `false`,重新启动即可恢复真实 AB 分组、解锁门槛和正常连胜增减规则。测试过程中保存在本地的十连胜不回滚,关闭后下一次失败会按正常规则清零。
## 行为
- `abTests.layer_two === 3` 启用 C;资格沿用连胜解锁、十连胜、主线限制。
- 开局显示 B 同款满彩虹瓶,墙体和方块就绪后按三池优先级选择完整方块,待转场揭幕后自动播放 B 同款飞行。落地时转换,尾迹消散后隐藏瓶子及背景并开放操作;开场引导延后显示。保留真实 `color`、类型、附件及限制,以 `oldRainbow` 标记通色能力。
- 彩虹只能忽略门和单色地块的颜色要求;其他门、墙和方块机制照常判断。正常出门及锤子消除仍走原事件流程。
- 同局只发一次,复活不重发,重新开局重新判断资格。空池跳过,后续不补发;生产队列不入开局池。
- C 首页、胜负结算、连胜说明与底部布局复用 B 展示;彩虹瓶只用于开场这一次动画,之后不收集、不再次施放,也不发放连胜锤子。空池直接隐藏瓶子并跳过动画。
## 预制体
使用已有 `Block_Prop[25]` 的 `rainbow_old`。`bg` 使用对应形状的 `100color0~22`,`mask` 使用原方块颜色的 SpriteFrame;保留两张大彩虹纹理并按整块尺寸适配。原底色隐藏,钥匙、花瓣及其他机制附件保留。
## 验证记录(2026-09-20)
- 5 个 `tools/test-rainbow-old-*.cjs` 文件共 29 项通过,包括 2,030 份配置分类一致性、满瓶飞行、落地转换、尾迹结束后解锁、转场与前后台暂停、失败重试、单次转换、空池、门消除事件、23 种形状 × 10 种颜色及连续滚动覆盖。
- 本轮 `test-rainbow-streak.cjs`、`test-first-game-entry.cjs` 共 128 项:127 通过,1 项为已确认在 HEAD 上也失败的 B 彩虹能量旧期望,未调整原断言。新增 C 首入、后续进关的不同转场时序、销毁中断及满瓶隐藏不重排验证均通过。
- 修改的 TypeScript 转译检查通过;新视觉脚本语义检查通过;`git diff --check` 通过。
- 点击 Cocos 预览的 Recompile 更新缓存脚本后,在浏览器第 1 关观察到左下满瓶、飞行粒子、落地整块转换、尾迹结束后瓶子及背景隐藏,随后显示首关引导。动画期间倒计时未开始,结束后方块可正常拖动。未记录到警告或错误;尚未在手机上验收。
测试使用 Node 内置测试器;未安装本地 TypeScript 时,可将 `TYPESCRIPT_PATH` 指向编辑器附带的 `typescript.js`。
关卡结果见 [候选池扫描](rainbow-old-candidate-scan.md)。第二池兜底为共 68 个关卡;第 68 关自身选择第一池(7 个普通候选)。主线 911、1608、1740 三池为空,按约定跳过。