⑦T4: ui_tune_probe 断言面换代全绿——①段改向启动即开(OS.set_environment DS_DEBUG=1 探针自设+P3甲默认开断言+树序新基准=确认弹窗后登记册末位)/⑧段显式种子42钉死+开冒险显式关浮窗断言+master_seed==42 真实路径显式优先断言/⑨段新增对局中可开(战斗屏角标真实信号路径+S1+停机点回归:棋盘输入不锁+暂停角标不置灰)+对局中两钮禁用断言+当局数据六项值对(种子/关卡/节点/HP/GP/钥石逐项对只读访问器)+⑨b 只读巡检(17卡③白名单外零连接形制,信号清单12名+视图七方法+引擎滚动条豁免,连接数=10)+零动效契约/⑩段种子三分单点断言(显式777优先/首局空档恒42/非首局连抽4次不全等42);随批修复:_seed_value 三分分支写反(原实现首局随机/非首局42与P5甲相反——⑩断言抓获,探针钉死显式值故轻闸未暴露)+当局数据钥石取数改向 adventure.keystone(LevelRunner 无 keystone 域——原 r.keystone 脚本错误致探针 _ready 中断挂死表象,两次按纪律杀本 worktree 匹配进程重试后定位)+debug_overlay 胜利演出切换 lambda 转命名方法 _on_fx_toggle(只读巡检白名单方法名精确可判);专闸 ui_tune_probe exit=0 全链路 PASS
This commit is contained in:
1 parent
5b3a8fd41b
commit
c36daa6cae
3 files changed
+167
-20
No files matched your search
@@ -1241,7 +1241,8 @@ func _sync_debug_overlay() -> void:
|
||||
|
||||
# 当局数据六项只读投影(P4 甲——C4 零直读内部状态、零写通路):种子=adventure.master_seed 现值
|
||||
# (非 _seed_value() 重算);调试两层/非对局无冒险对象=RNG 服务 master_seed 现值(E5 只读出口,
|
||||
# 未播种 -1 显「—」);其余五项=runner 成文出口;缺位=「—」占位。零动效(纯标签重查——17卡③契约)。
|
||||
# 未播种 -1 显「—」);关卡/节点/HP/GP=runner 成文出口、钥石=adventure 冒险账本(LevelRunner 无此域);
|
||||
# 缺位=「—」占位。零动效(纯标签重查——17卡③契约)。
|
||||
func _debug_run_data() -> Dictionary:
|
||||
var r = adventure.runner() if adventure != null else null
|
||||
var seed_now: int = _current_master_seed()
|
||||
@@ -1249,7 +1250,7 @@ func _debug_run_data() -> Dictionary:
|
||||
if r == null:
|
||||
return {"seed": seed_txt, "level": "—", "node": "—", "hp": "—", "gp": "—", "keystone": "—"}
|
||||
return {"seed": seed_txt, "level": int(adventure.level_index), "node": int(r.node_index),
|
||||
"hp": "%d/%d" % [int(r.hero_hp), int(r.effective_max_hp())], "gp": int(r.gp), "keystone": int(r.keystone)}
|
||||
"hp": "%d/%d" % [int(r.hero_hp), int(r.effective_max_hp())], "gp": int(r.gp), "keystone": int(adventure.keystone)}
|
||||
|
||||
|
||||
# 本局种子现值(只读单点——当局数据区块与诊断转储共用):冒险=adventure.master_seed 访问器现值;
|
||||
@@ -1283,12 +1284,12 @@ func _seed_value() -> int:
|
||||
# 种子三分判定单点(迭代 18 卡⑦ C1——全工程唯一种子框读取处,禁第二处读框):
|
||||
# ①显式合法整数全场景优先(含首局——测试/调试接口显式指定;第五路 DebugSession Callable
|
||||
# 经本函数=调试对局与玩家同口径,P6 甲);
|
||||
# ②首局固定 42(P5 甲——存档现役布尔 is_first_adventure_done:新档显式 false=教学局,
|
||||
# 老档缺省 true=有游玩史;教学重放模板 0 即在此种子下标定);
|
||||
# ②首局固定 42(P5 甲——存档现役布尔 is_first_adventure_done:新档显式 false=教学局恒 42〔教学
|
||||
# 重放模板 0 即在此种子下标定〕;置位 true=教学局已收束的非首局走 ③ 随机);
|
||||
# ③非首局空/非法框=引擎全局熵 randi()(Godot 4 启动自播种子,headless 同;不走 rng_service
|
||||
# 封闭流、禁 randomize()/自建 RNG——组合根建种子属 ADR-0007 豁免面,不进玩法 RNG 消费)
|
||||
if _seed_edit.text.is_valid_int():
|
||||
return int(_seed_edit.text)
|
||||
if save_manager != null and not save_manager.is_first_adventure_done():
|
||||
if save_manager != null and save_manager.is_first_adventure_done():
|
||||
return randi()
|
||||
return 42
|
||||
@@ -204,9 +204,7 @@ func _build() -> void:
|
||||
fx_row.add_child(UiKit.label("胜利演出",UiKit.FS_HINT, false, UiKit.WARM))
|
||||
var fx_btn := UiKit.button("纹章拼合" if UiKit.victory_fx_style == "crest" else "尘金粒子")
|
||||
fx_btn.tooltip_text = "两套演出并存——点击切换(会话级,不落盘)"
|
||||
fx_btn.pressed.connect(func() -> void:
|
||||
UiKit.victory_fx_style = "dust" if UiKit.victory_fx_style == "crest" else "crest"
|
||||
fx_btn.text = "纹章拼合" if UiKit.victory_fx_style == "crest" else "尘金粒子")
|
||||
fx_btn.pressed.connect(_on_fx_toggle.bind(fx_btn)) # 迭代 18 卡⑦——lambda 转命名方法(只读巡检白名单方法名精确可判)
|
||||
fx_row.add_child(fx_btn)
|
||||
|
||||
# 区块①随机种子(原开始覆盖层种子行迁入——种子三分判定归组合根 _seed_value 单点):
|
||||
@@ -310,3 +308,9 @@ func _emit_closed() -> void:
|
||||
|
||||
func _on_slider_value_changed(_value: float) -> void:
|
||||
_sync_labels()
|
||||
|
||||
|
||||
# 胜利演出切换(原 _build 内 lambda——迭代 18 卡⑦ 转命名方法,只读巡检白名单承载)
|
||||
func _on_fx_toggle(btn: Button) -> void:
|
||||
UiKit.victory_fx_style = "dust" if UiKit.victory_fx_style == "crest" else "crest"
|
||||
btn.text = "纹章拼合" if UiKit.victory_fx_style == "crest" else "尘金粒子"
|
||||
Reference in new issue
Block a user