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.
48 lines
2.1 KiB
48 lines
2.1 KiB
|
3 weeks ago
|
# 需求:新号第一局神将字保底
|
||
|
|
|
||
|
|
> 状态:**已落地**
|
||
|
|
> 日期: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 不走
|
||
|
|
- [ ] 有过胜负场的对局不再触发
|