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

3.2 KiB
Raw Blame History

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。

关卡结果见 候选池扫描。第二池兜底为共 68 个关卡;第 68 关自身选择第一池(7 个普通候选)。主线 911、1608、1740 三池为空,按约定跳过。