⑦T1: 种子三分判定单点落码——_seed_value() 改三分(显式合法整数全场景优先含首局/首局存档布尔判定恒42 P5甲/非首局空框引擎全局熵randi() 不走rng_service封闭流ADR-0007豁免面);调试浮窗种子框默认文本42改空框+占位提示「留空=随机 · 首局恒 42」(代拍板白名单);五探针种子钉死审计🔴(ui_input/ui_layout/ui_click/ui_probe/ui_struct 显式填42禁依赖默认分支——ui_probe系审计三件外同病灶随批修复);ui_click_probe 调试入口断言改向P2甲迁宿主(开始层角标退役断言+DS_DEBUG未设不默认开断言——暂态红待T2落码消);冒烟811/0三闸全过=S2确定性反证通过

This commit is contained in:
DKChan committed 2026-10-07 06:36:19 +08:00
1 parent adadf56376
commit 40fb4a5c1b
7 files changed
+24 -6

No files matched your search

+9
View File
@@ -1208,6 +1208,15 @@ func _on_tune_simulate(n: int) -> void:
# ==================== 工具 ====================
func _seed_value() -> int:
# 种子三分判定单点(迭代 18 卡⑦ C1——全工程唯一种子框读取处,禁第二处读框):
# ①显式合法整数全场景优先(含首局——测试/调试接口显式指定;第五路 DebugSession Callable
# 经本函数=调试对局与玩家同口径,P6 甲);
# ②首局固定 42(P5 甲——存档现役布尔 is_first_adventure_done:新档显式 false=教学局,
# 老档缺省 true=有游玩史;教学重放模板 0 即在此种子下标定);
# ③非首局空/非法框=引擎全局熵 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():
return randi()
return 42
+4 -2
View File
@@ -158,12 +158,14 @@ func _build() -> void:
fx_btn.text = "纹章拼合" if UiKit.victory_fx_style == "crest" else "尘金粒子")
fx_row.add_child(fx_btn)
# 区块①随机种子(原开始覆盖层种子行迁入——非法定值回退 42 的口径归组合根 _seed_value)
# 区块①随机种子(原开始覆盖层种子行迁入——种子三分判定归组合根 _seed_value 单点):
# 默认空框(迭代 18 卡⑦ C1——空=随全局规则:首局恒 42/非首局随机;显式填入全场景优先)
var seed_row := HBoxContainer.new()
list.add_child(seed_row)
seed_row.add_child(UiKit.label("随机种子",UiKit.FS_BODY, false))
seed_edit = LineEdit.new()
seed_edit.text = "42"
seed_edit.text = ""
seed_edit.placeholder_text = "留空=随机 · 首局恒 42"
seed_edit.custom_minimum_size = Vector2(120, 0)
seed_row.add_child(seed_edit)
list.add_child(HSeparator.new())
+7 -4
View File
@@ -131,10 +131,12 @@ func _ready() -> void:
_problems.append("音量滑杆未实时生效(master bus db %f ≠ %f)" % [AudioServer.get_bus_volume_db(master_idx), expect_db])
if absf(iso_s.volume_linear - 0.3) > 0.001:
_problems.append("音量未入 store(%f ≠ 0.3)" % iso_s.volume_linear)
# 调试入口默认隐藏门控(卡④ AC④——探针环境 DS_DEBUG 未设)
var dbg_btn: Button = ProbeUiUtil.find_button(main._start_overlay, "调试", "prefix")
if dbg_btn != null and dbg_btn.visible:
_problems.append("调试入口未隐藏(DS_DEBUG 门控失守——卡④ AC④)")
# 调试入口断言改向(迭代 18 卡⑦ P2 甲——开始层角标退役迁宿主两屏;探针环境 DS_DEBUG 未设
# =浮窗不默认开〔P3 门控〕、DS_DEBUG 门控由开始层角标移两屏角标)
if ProbeUiUtil.find_button(main._start_overlay, "调试", "prefix") != null:
_problems.append("开始层调试角标未退役(迭代 18 卡⑦ P2 甲迁宿主失守)")
if main.debug_overlay.visible:
_problems.append("DS_DEBUG 未设时浮窗默认开(P3 启动门控失守)")
var settings_close: Button = ProbeUiUtil.find_button(main.settings_overlay, "返回", "prefix")
if settings_close == null:
_problems.append("设置面返回按钮缺失")
@@ -160,6 +162,7 @@ func _ready() -> void:
elif resume_btn0.visible:
_problems.append("无断点态继续上局按钮未隐藏(卡② AC①——新档合法空态)")
main.debug_overlay.set_sliders(400, 200) # 高加成保 L1 可通关——L2 岔路选路段只能经冒险推进到达(单关直入口退役)
main.debug_overlay.seed_edit.text = "42" # 种子钉死(迭代 18 卡⑦审计🔴——种子框默认改空后空框=非首局随机,行为走查确定性禁依赖默认分支)
var t1 := Time.get_ticks_msec()
main._start_adventure_from_menu()
await get_tree().process_frame
+1
View File
@@ -31,6 +31,7 @@ func _ready() -> void:
# 同 ui_click_probe 隔离纪律。首次冒险布尔位置位=对齐真实档游玩史口径,模板抽签路径不变;
# isolate_save 先删后建——上次运行的残留断点会触发互斥确认早退)
ProbeUiUtil.isolate_save(main, "smoke_input_probe_save", true, false, true)
main.debug_overlay.seed_edit.text = "42" # 种子钉死(迭代 18 卡⑦审计🔴——种子框默认改空后空框=非首局随机,探针确定性禁依赖默认分支)
main._start_adventure_from_menu()
await get_tree().process_frame
# ---- ⑫ 图上命中真实输入(关卡画面实装批 2026-09-28 回归闸):入口停点候选节点中心
+1
View File
@@ -15,6 +15,7 @@ func _ready() -> void:
# 存档隔离(迭代 8 卡①②——停点断点写盘随 main.save_manager;探针禁碰真实档,同族探针隔离纪律;
# isolate_save 先删后建——上次运行的残留断点会触发互斥确认早退)
ProbeUiUtil.isolate_save(main, "smoke_layout_probe_save", true, false, true)
main.debug_overlay.seed_edit.text = "42" # 种子钉死(迭代 18 卡⑦审计🔴——种子框默认改空后空框=非首局随机,探针确定性禁依赖默认分支)
main._start_adventure_from_menu()
for i in range(3):
await get_tree().process_frame
+1
View File
@@ -54,6 +54,7 @@ func _ready() -> void:
problems.append("营地关闭后未恢复开始层(开合往返失守)")
# 换回全新零档(营地段购买态不泄入后续冒险段——确定性;先删后建防陈旧档泄入)
ProbeUiUtil.isolate_save(main, "smoke_ui_probe_camp", true, false, true)
main.debug_overlay.seed_edit.text = "42" # 种子钉死(迭代 18 卡⑦——种子框默认改空后空框=非首局随机;本探针 start_single 第五路同吃此框,确定性禁依赖默认分支)
main._start_adventure_from_menu()
await get_tree().process_frame
await get_tree().process_frame
+1
View File
@@ -62,6 +62,7 @@ func _ready() -> void:
# ---- 冒险簇(真流推进:开冒险→地图选路态→选战斗节点→战斗 HUD)----
ProbeUiUtil.isolate_save(main, "smoke_ui_struct_probe_adv", true, false, true)
main.debug_overlay.seed_edit.text = "42" # 种子钉死(迭代 18 卡⑦——种子框默认改空后空框=非首局随机,结构采样确定性禁依赖默认分支)
main._start_adventure_from_menu()
_settle(4)
await _audit("level_map", [main.level_screen])