From 1d2894b555fae990423f83a5039e4acb158623e3 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 8 Oct 2026 05:03:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E5=8D=A1=E2=93=AA?= =?UTF-8?q?=E2=91=A0=E2=91=A1=E2=80=94=E2=80=94=E4=B8=BB=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=BC=80=E6=96=B0/=E7=BB=AD=E7=8E=A9=E4=B8=A4=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E8=A1=A5=E4=BC=A0=E5=90=8C=E8=B0=83=E4=B8=89=E9=94=AE?= =?UTF-8?q?=EF=BC=88build=5Fadventure=5Fparams=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=9E=84=E9=80=A0=EF=BC=8C=E5=8F=96=E5=80=BC=E4=B8=8E=E8=90=A5?= =?UTF-8?q?=E5=9C=B0=E6=8A=95=E5=BD=B1=E5=90=8C=E6=BA=90=EF=BC=89+?= =?UTF-8?q?=E5=85=B3=E5=8D=A1=E5=BC=80=E5=9C=BA=E8=A1=8C=E6=94=B9=E4=BC=A0?= =?UTF-8?q?=20runner.effective=5F*=20=E5=BD=93=E5=89=8D=E7=94=9F=E6=95=88?= =?UTF-8?q?=E5=80=BC=E3=80=81=E5=90=AB=E9=9D=A2=E6=9D=BF=E5=8A=A0=E6=88=90?= =?UTF-8?q?=E5=90=8E=E7=BC=80=E6=94=B9=E8=AE=A4=E5=B1=80=E5=A4=96=E5=8A=A0?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/presentation/main.gd | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/game/presentation/main.gd b/game/presentation/main.gd index 69430c08..63d93708 100644 --- a/game/presentation/main.gd +++ b/game/presentation/main.gd @@ -467,7 +467,9 @@ func _resume_from_menu() -> void: log_view.clear() logger.start_session(int(bp.get("master_seed", 0))) adventure.set_hero_override(debug_overlay.atk_pct(), debug_overlay.hp_pct()) - if not adventure.resume_adventure(bp, {"hero_override": meta.hero_override() if meta != null else {}, "treasure_unlocked": _treasure_ui.unlocked_set()}): + # 迭代 19 卡⓪①——同调三键随续玩下传(build_adventure_params 统一构造,与开新局同源同口径) + if not adventure.resume_adventure(bp, build_adventure_params(save_manager, meta, + {"treasure_unlocked": _treasure_ui.unlocked_set()})): _fatal_screen("续玩恢复失败——见输出日志") return @@ -491,6 +493,23 @@ func _wire_adventure() -> void: adventure.set_save_manager(save_manager) # 断点承载注入(迭代 8 卡①——停点快照写盘;调试/模拟不经过此路径) +# 冒险开局参数面构造(主菜单开新/续玩两入口共用——迭代 19 卡⓪①:同调三键随开局下传,真实局此前恒空。 +# 取值口径与营地投影完全同源:装配集=save.attunement_equipped(save_manager.gd 访问器)、Y 刷新池= +# meta.attune_refresh_charges(当前等级行表值)、树 rule 键集=meta.tree_rule_keys(Fork 激活侧 effects); +# hero_override 沿用既有 meta 现算口径。static 形态=冒烟直呼单测本函数,免实例化整菜单场景)。 +# 注:runner 侧 resume_adventure 受理面现收 attunement/attune_refresh_y 两键(tree_rules 暂不消费—— +# 传参先行,受理缺口在册披露)。 +static func build_adventure_params(save_manager_ref, meta_ref, extra: Dictionary = {}) -> Dictionary: + var params: Dictionary = { + "hero_override": meta_ref.hero_override() if meta_ref != null else {}, + "attunement": save_manager_ref.attunement_equipped() if save_manager_ref != null else [], + "attune_refresh_y": meta_ref.attune_refresh_charges() if meta_ref != null else 0, + "tree_rules": meta_ref.tree_rule_keys() if meta_ref != null else [], + } + params.merge(extra, true) + return params + + # 冒险模式(三关连探——AdventureRunner 编排;转发信号签名与 runner 一致,接线照原样对接; # 信号连接只在组合根——ADR-0001) func _start_adventure() -> void: @@ -506,8 +525,10 @@ func _start_adventure() -> void: adventure.set_hero_override(debug_overlay.atk_pct(), debug_overlay.hp_pct()) # 永久强化注入(元进度实现批):冒险开始参数面——meta 现算 override 显式传参(全零 = 白板) # 首次冒险脚本(关卡节点图生成 v0.4):存档布尔位 false = 全关固定模板 0(教学重放);置位后逐关抽签 + # 迭代 19 卡⓪①——同调三键随开局下传(build_adventure_params 统一构造,与营地投影同源) var first_script: bool = not save_manager.is_first_adventure_done() - if not adventure.start_adventure(seed_val, {"hero_override": meta.hero_override() if meta != null else {}, "first_script": first_script, "treasure_unlocked": _treasure_ui.unlocked_set(), "shop_mode": "pool"}): + if not adventure.start_adventure(seed_val, build_adventure_params(save_manager, meta, + {"first_script": first_script, "treasure_unlocked": _treasure_ui.unlocked_set(), "shop_mode": "pool"})): _fatal_screen("冒险启动失败——见输出日志") return @@ -516,9 +537,14 @@ func _start_adventure() -> void: # 停点前移批 2026-09-23:本回调返回后才有 choices_presented 到达——入口选路层随即弹出) func _on_adventure_level_started(level_index: int, display_name: String) -> void: runner = adventure.runner() + # 迭代 19 卡⓪②——开场行改传当前生效值(runner.effective_atk/effective_max_hp 与战斗面板同源: + # 表值+永久强化 flat+加算区 flat 后乘调试浮窗 pct,本回调时点 runner 已带全部加成);「含面板加成」 + # 后缀判断同步改认局外加成——永久强化 atk/max_hp flat 或调试浮窗 pct 任一存在才带,白板局不带 + var ov: Dictionary = meta.hero_override() if meta != null else {} log_view.append_bb(Narrator.level_open_line(display_name, int(adventure.master_seed), - int(db.hero.atk), int(db.hero.max_hp), - debug_overlay.atk_pct() > 0 or debug_overlay.hp_pct() > 0)) + runner.effective_atk(), runner.effective_max_hp(), + int(ov.get("atk", 0)) > 0 or int(ov.get("max_hp", 0)) > 0 + or debug_overlay.atk_pct() > 0 or debug_overlay.hp_pct() > 0)) func _reset_run_scope() -> void: