feat(迭代38卡⑤ 奖励节点清扫批): 「奖励节点零兑付直通占位」过时表述族判据面清扫——d1 level_runner 两注释换代(reward=三选一停点现状准确表述)+d2 autoplay :484 理由句换代(sim 策略选择语义,行为零触碰)+d3 battle_narrator 战报文案「节点内容待定——直通」→「三选一——选毕推进」(唯一玩家可见行为改动,wr2 专行);d4 wa4 条件断言转正——病根=原捕获条件查 _curio_pending(通关三选一停点态)与奖励头部「关卡奖励点」互斥、恒不可命中(拦截能力未证实况),随修挂 _node_curio_pending(奖励节点停点态,头部校验串零触碰)+定向选路小改(候选含奖励节点优先,press_candidate 真实命中路径零变化)+必达判据(全程未到停点即红);wr2 战报文案断言(同驱动路径承载);撤销证明两条实测:回退 d3→wr2 单红、回退 d4 条件→wa4 必达红、还原复绿(问题=0);wr1 两串 grep 判据零输出;探针不进验证集清单提取面(extract_checks 扫 tests/unit|integration|system_test——无同步义务)
This commit is contained in:
1 parent
a15370c524
commit
00ed023659
4 files changed
+32
-7
No files matched your search
@@ -7,7 +7,7 @@
|
||||
class_name LevelRunner
|
||||
extends RefCounted
|
||||
|
||||
signal node_entered(node: Dictionary, info: Dictionary) ## info 按 type:battle/boss={} · reward={}(内容待定) · rest={healed,hp,max_hp} · shop={gp}
|
||||
signal node_entered(node: Dictionary, info: Dictionary) ## info 按 type:battle/boss={} · reward={}(三选一停点空载荷——内容经 present_node_curio 拉取) · rest={healed,hp,max_hp} · shop={gp}
|
||||
signal choices_presented(candidates: Array) ## 选路口(兑付确认后——候选节点引用数组,零自动推进)
|
||||
signal step_row(row: Dictionary) ## 转发当前 战斗结算 结算行
|
||||
signal round_started(round_index: int)
|
||||
@@ -474,8 +474,8 @@ func _enter_node(node: Dictionary) -> bool:
|
||||
"battle", "boss":
|
||||
return _start_battle(node)
|
||||
"reward":
|
||||
# 奖励点内容未定(可选类道具不在池、功能道具渠道未定——
|
||||
# 节点保留占位、零兑付直通);推进 = 兑付确认后选路(零自动推进)
|
||||
# 奖励节点 = 三选一停点(与通关三选一同池同权重同上限);呈现编排归
|
||||
# curio_interact_controller.present_node_curio;推进 = 兑付确认后选路(零自动推进)
|
||||
node_entered.emit(node, {})
|
||||
return true
|
||||
"rest":
|
||||
|
||||
@@ -12,7 +12,7 @@ static func node_banner(runner: LevelRunner, node: Dictionary, t: String) -> Str
|
||||
|
||||
|
||||
static func reward_line() -> String:
|
||||
return "[color=#%s]关卡奖励点(节点内容待定——直通)[/color]" % UiKit.HEX_ROUTE_NOTE
|
||||
return "[color=#%s]关卡奖励点(三选一——选毕推进)[/color]" % UiKit.HEX_ROUTE_NOTE
|
||||
|
||||
|
||||
static func rest_line(healed: int, hp: int, max_hp: int) -> String:
|
||||
|
||||
@@ -415,16 +415,27 @@ func _ready() -> void:
|
||||
# 未适配则走到即卡死)。两态分派:result 态(兑付反馈——点继续推进)/
|
||||
# 待选态(点首件+确认)。真实信号路径全线。〔无替换子态——装配不可变契约。〕
|
||||
# 三选一停点输入锁定断言(停点态断言面:待选/兑付两态共用此层)。
|
||||
if not _tested_curio_head and main.run_scope.adventure != null and not main.run_scope.adventure._curio_pending.is_empty() and String(main.curio_overlay._header).contains("关卡奖励点"):
|
||||
if not _tested_curio_head and main.run_scope.adventure != null and not main.run_scope.adventure._node_curio_pending.is_empty() and String(main.curio_overlay._header).contains("关卡奖励点"):
|
||||
# 停点态判据 = _node_curio_pending(奖励节点三选一停点住此——原条件查
|
||||
# _curio_pending〔通关三选一态〕与奖励头部互斥、恒不可命中=拦截能力未证病根,
|
||||
# 卡⑤ d4 转正随修;头部校验串本体零触碰)
|
||||
_tested_curio_head = true
|
||||
var ch := String(main.curio_overlay._header)
|
||||
if not ch.contains("冒险牌库") or not ch.contains("属性值提升与补给") or ch.contains("同权重") or ch.contains("同上限") or ch.contains("提升池"):
|
||||
_problems.append("三选一头部旧话残留或新话缺失(wa4——%s)" % ch.replace("
|
||||
", "|"))
|
||||
# 奖励节点战报文案换代断言(卡⑤ wr2——reward_line 同屏打印于停点拉起前,
|
||||
# 同一驱动路径承载;旧「内容待定」残留或新话缺失即红)
|
||||
var logtext: String = main.log_view.parsed_text()
|
||||
if not logtext.contains("关卡奖励点(三选一——选毕推进)") or logtext.contains("内容待定"):
|
||||
_problems.append("奖励节点战报文案未换代(卡⑤ wr2——旧话残留或新话缺失)")
|
||||
if not main._input_locked():
|
||||
_problems.append("三选一停点打开时输入未锁定")
|
||||
if main.curio_overlay._continue_btn.visible:
|
||||
main.curio_overlay.press_continue()
|
||||
elif main.run_scope.adventure != null and not main.run_scope.adventure._node_curio_pending.is_empty():
|
||||
main.curio_overlay.press_card(0) # 奖励节点待选态:点首件+确认(真实按钮信号路径——与通关停点同形)
|
||||
main.curio_overlay.press_confirm()
|
||||
elif main.run_scope.adventure != null and not main.run_scope.adventure._curio_pending.is_empty():
|
||||
main.curio_overlay.press_card(0)
|
||||
main.curio_overlay.press_confirm()
|
||||
@@ -470,7 +481,16 @@ func _ready() -> void:
|
||||
cap_found = true
|
||||
if not cap_found:
|
||||
_problems.append("地图屏加成帽未换代为「属性值提升」(wa2)")
|
||||
main.level_screen.press_candidate(_route_clicks % 2)
|
||||
# 选路定向(卡⑤ d4——wa4 转正的必达前提):候选含奖励节点优先选(真实
|
||||
# press_candidate 命中路径零变化,只改索引策略);无奖励候选回退交替(岔路使用率观测面保留)
|
||||
var pick := _route_clicks % 2
|
||||
if main.run_scope.runner != null:
|
||||
for nd in main.run_scope.runner.nodes():
|
||||
var nd_id: int = main.run_scope.runner.node_id_of(nd)
|
||||
if String(nd.get("type", "")) == "reward" and main.level_screen._cand_ids.has(nd_id):
|
||||
pick = main.level_screen._cand_ids.find(nd_id)
|
||||
break
|
||||
main.level_screen.press_candidate(pick)
|
||||
_route_clicks += 1
|
||||
_seals_placed.clear()
|
||||
continue
|
||||
@@ -695,6 +715,11 @@ func _ready() -> void:
|
||||
else:
|
||||
print("[click_probe] 开场行②③判定:续玩重建开场行带后缀(bonus.atk=5、pct=0)— wait=%d 帧" % ol_r_wait)
|
||||
|
||||
# wa4 必达判据(卡⑤ d4 转正——条件位退役):定向选路保证到达奖励节点三选一停点,
|
||||
# 全程未命中即红(拦截能力必证——test-conventions §6 条件断言转正口径)
|
||||
if not _tested_curio_head:
|
||||
_problems.append("wa4 转正失守:探针全程未到达奖励节点三选一停点(定向选路失效或奖励节点不可达)〔卡⑤〕")
|
||||
|
||||
print("[click_probe] 循环退出(done=%s budget=%s)问题=%d" % [
|
||||
str(_done), str(action_budget), _problems.size()])
|
||||
for p in _problems:
|
||||
|
||||
@@ -481,7 +481,7 @@ static func _on_node_entered(node: Dictionary, info: Dictionary, runner, st: Dic
|
||||
st.boss_depth = int(node.get("depth", -1))
|
||||
st.hp_at_boss = runner.hero_hp
|
||||
elif t == "reward":
|
||||
runner.continue_after_node() # 奖励点 = 内容未定直通节点
|
||||
runner.continue_after_node() # autoplay 直通不解三选一——sim 策略选择(测量期不进兑付面,非机制缺位)
|
||||
elif t == "rest":
|
||||
st.rest_healed = int(info.get("healed", 0))
|
||||
st.hp_before_rest = int(info.get("hp", 0)) - st.rest_healed
|
||||
|
||||
Reference in new issue
Block a user