You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/需求-首局神将字.md

47 lines
2.1 KiB

# 需求:新号第一局神将字保底
> 状态:**已落地**
> 日期:2026-09-16
> 关联:[需求-背包刷新.md](./需求-背包刷新.md)、[开发规范.md](./开发规范.md)
## 1. 目标
新号进入游戏的 **第一局**,玩家前两次普通刷新保证能凑齐 **哪吒 / 杨戬 / 悟空** 之一的两字(`哪+吒` / `杨+戬` / `悟+空`)。
| 项 | 说明 |
|----|------|
| 对象 | **仅玩家背包**;AI 不走 |
| 时机 | 开战时 `RankDataManager.hasNoBattleHistory()`(尚无胜负场、总星仍为 1) |
| 入口 | 仅普通刷新;GM 固定 / 预设队列 **不走** |
| 配对源 | `Hero.name` ∈ `{哪吒, 杨戬, 悟空}` 的 `Hero.text`(两字一对;`悟` 只配 `空`,不配能/净) |
## 2. 规则
### 2.1 第一次刷新
必须出现上述六字之一。
- 抽出结果里 **已有** 六字之一:保留,不替换。从已出现的六字中等概率记一个,记下它的另一半。
- 抽出结果里 **已有完整一对**(例如同时有 `悟` 和 `空`):第一次已能合成,第二次不再补。
- 抽出结果里 **一个都没有**:从六字中等概率随机一个,替换其中一槽。替换时 **不得拿掉本批唯一的可攻击单字**(刀/枪/棍/弓,与首次刷新攻击字保底一致)。
记下的另一半与玩家是否把字拖到地图 **无关**。刷新会清掉未拖走的旧背包,第二次仍按记录给另一半。
### 2.2 第二次刷新
若第一次记下了另一半:本批必须出现该字。已抽出则不替换;否则随机换一槽。字池 `remaining` 不足时仍强制给字并打日志(必给,不静默改成别的字)。
第三次及之后不再干预。
### 2.3 例子
第一次没出六字 → 随机到 `悟` 替换一槽并记录。无论 `悟` 有没有上阵,第二次必给 `空`。
## 3. 验收
- [ ] 新号第一局第一次刷新必含 哪/吒/杨/戬/悟/空 之一
- [ ] 第二次刷新必含第一次所记字的另一半
- [ ] 第一次已成对则第二次不补
- [ ] 不替换第一次的唯一攻击字
- [ ] 仅玩家;AI / GM 不走
- [ ] 有过胜负场的对局不再触发