战斗掉落渠道退役批(2026-10-01用户拍板甲): ①reward.tres删aux挖格投放四行(工兵令5/探巢摆钟4/爆破包1+惊扰负占位0)——战斗/挖格不掉魔法道具,唯一来路=三选一共享池(节点/通关,道具位门控独立不受影响)②config_db F2投放维度覆盖校验随渠道退役(共享池动态掷定不可静态校验维度,静态保证重立归同调/渠道设计批)③smoke行数断言22→18+reward_dangling_aux测试改追加式注入(旧锚行已删)④T17清单15项改写+批3判定记录入档;闸=冒烟628/0+run_all 15套全绿+ui_probe/ui_input绿
This commit is contained in:
1 parent
1306ba69f5
commit
684e93e71e
5 files changed
+29
-68
No files matched your search
@@ -46,7 +46,7 @@
|
|||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
||||||
|
|
||||||
**15. 魔法道具两步使用与拒绝零消耗**
|
**15. 魔法道具两步使用与拒绝零消耗**
|
||||||
- 操作:先看战斗信息栏的道具槽(挖安全格偶尔直接掉道具、槽位亮起;没掉就用第 14 项选的)。点空间类道具(探巢摆钟/爆破工兵包)槽位 → 点雷图目标格;点工兵令槽位;再拿空间类道具故意点一块**已开格**。
|
- 操作:先看战斗信息栏的道具槽(**道具只来自第 14 项奖励节点三选一/通关三选一**——战斗/挖格不掉道具,掉落渠道已于 2026-10-01 退役;工坊未解锁时三选一也不出道具件,本项可等抽到道具件再做)。点空间类道具(探巢摆钟/爆破工兵包)槽位 → 点雷图目标格;点工兵令槽位;再拿空间类道具故意点一块**已开格**。
|
||||||
- 预期:空间类点槽后槽位金框选中出提示,点目标格后真视红框/预读徽章出现(爆破包则该格爆开);工兵令点槽即用、本轮行动点立涨;点已开格则弹拒绝提示且**道具不消耗**。(顺手可验:对真视红框格插旗照常扣 1 行动点——真视给信息不给保护。)
|
- 预期:空间类点槽后槽位金框选中出提示,点目标格后真视红框/预读徽章出现(爆破包则该格爆开);工兵令点槽即用、本轮行动点立涨;点已开格则弹拒绝提示且**道具不消耗**。(顺手可验:对真视红框格插旗照常扣 1 行动点——真视给信息不给保护。)
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
||||||
|
|
||||||
@@ -201,6 +201,21 @@
|
|||||||
| 12 逐条结算 ★ | ❌→同 10 | 07⑩①演出复验=演出在滚✓,感知归 C′ |
|
| 12 逐条结算 ★ | ❌→同 10 | 07⑩①演出复验=演出在滚✓,感知归 C′ |
|
||||||
| 13 胜利结算框 | ✅ | — |
|
| 13 胜利结算框 | ✅ | — |
|
||||||
|
|
||||||
|
### 批 3(第 14–21 项+额外反馈,2026-10-02)
|
||||||
|
|
||||||
|
| 项 | 判定 | 备注 |
|
||||||
|
|---|---|---|
|
||||||
|
| 14 奖励节点三选一 | ✅ | — |
|
||||||
|
| 15 魔法道具两步使用 | ❌→渠道退役落 | 清单「挖安全格掉道具」系过渡渠道过时表述——**用户拍板甲:战斗掉落渠道即刻退役**(reward.tres 四行删+F2 校验随退+断言同步),道具唯一来路=三选一共享池;本项待抽到道具件后补验 |
|
||||||
|
| 16 休息与商店 | ✅ | — |
|
||||||
|
| 17 图上点击选路 | ❌→修复回炉挂 | 呈现缺陷(B 线调研:候选计算正确,干线共线重叠+非候选区分弱)——修复实现后因 probe 红灯暂回滚,**挂选路/结算呈现专项批** |
|
||||||
|
| 18 放弃二次确认 | ✅ | — |
|
||||||
|
| 19 第二关数字可读 ★ | ✅可读+审美 | 「还是丑」——审美轴归 06 已登记待办(数字直画观感),后续由用户指定工具/模型处理 |
|
||||||
|
| 20 GP 常驻徽章 | ✅ | — |
|
||||||
|
| 21 本关强化列表 | ✅ | — |
|
||||||
|
|
||||||
|
**额外反馈两条**:①结算演播期输入冻结——硬锁实现与收尾链(点击泵架构)冲突,已回退,挂选路/结算呈现专项批与用户裁决;②debug 调生命上限后当前血不同步——修复已实现(账本置满/回血封顶同式含 pct),因 probe 红灯关联暂缓落库,待归因。
|
||||||
|
|
||||||
三修闸:冒烟 628/0+run_all 15 套+五探针,worktree/master 双跑全绿(台账 301)。
|
三修闸:冒烟 628/0+run_all 15 套+五探针,worktree/master 双跑全绿(台账 301)。
|
||||||
|
|
||||||
## 来源与回流
|
## 来源与回流
|
||||||
|
|||||||
+4
-14
@@ -170,20 +170,10 @@ func _cross_validate(loaded: Dictionary) -> void:
|
|||||||
push_diag("error", "reward_dangling_aux", "RewardTable %s aux 行引用无效道具 %s(retired/deferred/不存在): %s" % [row.get("reward_id"), aux_eff, "双表校验"])
|
push_diag("error", "reward_dangling_aux", "RewardTable %s aux 行引用无效道具 %s(retired/deferred/不存在): %s" % [row.get("reward_id"), aux_eff, "双表校验"])
|
||||||
# ①c F2 投放维度覆盖(魔法道具 GDD——五维度各 ≥1 掉落权重为正的活行):豁免面 {plan, info, counter}
|
# ①c F2 投放维度覆盖(魔法道具 GDD——五维度各 ≥1 掉落权重为正的活行):豁免面 {plan, info, counter}
|
||||||
# = 罗盘退役(plan,2026-09-29 拍板①乙)+显影件 Alpha 重定(info/counter 悬置)——豁免随 Alpha 重定批消减
|
# = 罗盘退役(plan,2026-09-29 拍板①乙)+显影件 Alpha 重定(info/counter 悬置)——豁免随 Alpha 重定批消减
|
||||||
if aux_tab != null:
|
# ①c F2 投放维度覆盖校验随战斗掉落渠道退役(2026-10-01 用户拍板甲——挖格不掉道具,魔法道具
|
||||||
var covered := {}
|
# 唯一来路=三选一共享池〔节点/通关〕):旧校验=「掉落池五维度各 ≥1 正权重活行」,载体已随
|
||||||
for row in rt.rows:
|
# reward.tres aux 投放四行删除而消失;共享池为「抽到道具位再动态掷定具体道具」,维度覆盖不可
|
||||||
if String(row.get("cell_type", "")) != RewardTable.AUX_ITEM_TYPE or int(row.get("weight", 0)) <= 0:
|
# 静态校验。静态覆盖保证的重立(如按维度钉共享池抽签面)归同调实施批/渠道设计批。
|
||||||
continue
|
|
||||||
var arow: Dictionary = aux_tab.row_by_id(String(row.get("effect_id", "")))
|
|
||||||
for tag in arow.get("dimension_tags", []):
|
|
||||||
covered[String(tag)] = true
|
|
||||||
var f2_exempt := {"plan": true, "info": true, "counter": true} # 豁免面(随 Alpha 重定/天赋批消减)
|
|
||||||
for d in AuxItemTable.DIMENSIONS:
|
|
||||||
if f2_exempt.has(d):
|
|
||||||
continue
|
|
||||||
if not covered.has(d):
|
|
||||||
push_diag("error", "dimension_coverage", "F2 投放维度覆盖缺 %s(豁免面外零活行投放)" % d)
|
|
||||||
# ② SettlementTable.effect_pool_map 悬空
|
# ② SettlementTable.effect_pool_map 悬空
|
||||||
for eff in st_tab.effect_pool_map.keys():
|
for eff in st_tab.effect_pool_map.keys():
|
||||||
if not effect_ids.has(eff):
|
if not effect_ids.has(eff):
|
||||||
|
|||||||
@@ -200,49 +200,6 @@ rows = [{
|
|||||||
"weight": 0,
|
"weight": 0,
|
||||||
"pool_tag": "cell",
|
"pool_tag": "cell",
|
||||||
"tier": 1
|
"tier": 1
|
||||||
}, {
|
|
||||||
|
|
||||||
"reward_id": "aux_sapper_order",
|
|
||||||
"cell_type": "aux_item",
|
|
||||||
"polarity": "positive",
|
|
||||||
"effect_id": "sapper_order",
|
|
||||||
"display_name": "工兵令",
|
|
||||||
"power": 0,
|
|
||||||
"weight": 5,
|
|
||||||
"pool_tag": "cell",
|
|
||||||
"tier": 2
|
|
||||||
}, {
|
|
||||||
|
|
||||||
"reward_id": "aux_nest_pendulum",
|
|
||||||
"cell_type": "aux_item",
|
|
||||||
"polarity": "positive",
|
|
||||||
"effect_id": "nest_pendulum",
|
|
||||||
"display_name": "探巢摆钟",
|
|
||||||
"power": 0,
|
|
||||||
"weight": 4,
|
|
||||||
"pool_tag": "cell",
|
|
||||||
"tier": 2
|
|
||||||
}, {
|
|
||||||
|
|
||||||
"reward_id": "aux_blast_kit",
|
|
||||||
"cell_type": "aux_item",
|
|
||||||
"polarity": "positive",
|
|
||||||
"effect_id": "blast_kit",
|
|
||||||
"display_name": "爆破工兵包",
|
|
||||||
"power": 0,
|
|
||||||
"weight": 1,
|
|
||||||
"pool_tag": "cell",
|
|
||||||
"tier": 3
|
|
||||||
}, {
|
|
||||||
"reward_id": "aux_none",
|
|
||||||
"cell_type": "aux_item",
|
|
||||||
"polarity": "negative",
|
|
||||||
"effect_id": "",
|
|
||||||
"display_name": "惊扰的遗落物",
|
|
||||||
"power": 0,
|
|
||||||
"weight": 0,
|
|
||||||
"pool_tag": "cell",
|
|
||||||
"tier": 1
|
|
||||||
}]
|
}]
|
||||||
|
|
||||||
; 格面资源批(2026-09-15 用户拍板——registry reward_table 条目为现行 schema 事实源):
|
; 格面资源批(2026-09-15 用户拍板——registry reward_table 条目为现行 schema 事实源):
|
||||||
|
|||||||
@@ -3391,7 +3391,7 @@ func _smoke_nine_types_gp_stream() -> void:
|
|||||||
gp_pos = int(row.weight)
|
gp_pos = int(row.weight)
|
||||||
if String(row.get("reward_id", "")) == "gp_lose":
|
if String(row.get("reward_id", "")) == "gp_lose":
|
||||||
gp_neg = int(row.weight)
|
gp_neg = int(row.weight)
|
||||||
check(cell_rows == 22, "奖励字典 22 行(九型×正负 18 格 + aux 正三投放/负一占位——魔法道具内容批 2026-09-29;清图槽独立批尾不计)")
|
check(cell_rows == 18, "奖励字典 18 行(九型×正负 18 格——aux 挖格投放四行已退役 2026-10-01 用户拍板甲:战斗/挖格不掉道具,魔法道具唯一来路=三选一共享池〔节点/通关〕;清图槽独立批尾不计)")
|
||||||
# 雷格负向直伤当量(迭代 8 卡⑧——真人反馈「三雷 3/4 血无后果感」投值:三行各抬 +3 档,负向≈正向 2 倍定价)
|
# 雷格负向直伤当量(迭代 8 卡⑧——真人反馈「三雷 3/4 血无后果感」投值:三行各抬 +3 档,负向≈正向 2 倍定价)
|
||||||
var mine_power := {"heal_backlash": 6, "pierce_snare": 8, "magic_recoil": 8} # 数值修复批 2026-10-01 再抬档(旧 4/5/5,见 numfix 报告)
|
var mine_power := {"heal_backlash": 6, "pierce_snare": 8, "magic_recoil": 8} # 数值修复批 2026-10-01 再抬档(旧 4/5/5,见 numfix 报告)
|
||||||
for row in _db.reward.rows:
|
for row in _db.reward.rows:
|
||||||
|
|||||||
@@ -34,16 +34,15 @@ func _inject_violation() -> bool:
|
|||||||
return false
|
return false
|
||||||
var s := f.get_as_text()
|
var s := f.get_as_text()
|
||||||
f.close()
|
f.close()
|
||||||
# 工兵令投放行 → 引用已退役的 loot_compass:双表校验须拦(retired 不入投放面)
|
# 追加式注入(2026-10-01 战斗掉落渠道退役随批——现行表已无 aux 行可作锚):向 rows 尾追加
|
||||||
var blocks: PackedStringArray = s.split("}, {")
|
# 一块引用已退役 loot_compass 的 aux 投放行,双表校验须拦(retired 不入投放面)。
|
||||||
var hit := false
|
var inject := ', {\n\n"reward_id": "aux_dangling_probe",\n"cell_type": "aux_item",\n"polarity": "positive",\n"effect_id": "loot_compass",\n"display_name": "悬空探针",\n"power": 0,\n"weight": 1,\n"pool_tag": "cell",\n"tier": 1\n}'
|
||||||
for i in blocks.size():
|
var idx := s.rfind("\n}]")
|
||||||
if '"reward_id": "aux_sapper_order"' in blocks[i]:
|
if idx < 0:
|
||||||
blocks[i] = blocks[i].replace('"effect_id": "sapper_order"', '"effect_id": "loot_compass"')
|
return false
|
||||||
hit = true
|
s = s.substr(0, idx) + inject + s.substr(idx)
|
||||||
s = "}, {".join(blocks)
|
|
||||||
var w := FileAccess.open(path, FileAccess.WRITE)
|
var w := FileAccess.open(path, FileAccess.WRITE)
|
||||||
if w == null or not hit:
|
if w == null:
|
||||||
return false
|
return false
|
||||||
w.store_string(s)
|
w.store_string(s)
|
||||||
w.close()
|
w.close()
|
||||||
|
|||||||
Reference in new issue
Block a user