From fb845b78dcdf5e7ce4f7693f68c36d7a5f769a97 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 8 Oct 2026 05:05:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E5=8D=A1=E2=93=AA?= =?UTF-8?q?=E2=91=A2=E2=80=94=E2=80=94=E5=86=92=E7=83=9F=E8=A1=A5=E4=B8=BB?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=B8=A4=E5=85=A5=E5=8F=A3=E4=BC=A0=E5=8F=82?= =?UTF-8?q?=E6=96=AD=E8=A8=80=EF=BC=88=E7=9B=B4=E5=91=BC=20build=5Fadventu?= =?UTF-8?q?re=5Fparams=20=E5=8D=95=E6=B5=8B=E7=BB=9F=E4=B8=80=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E9=9D=A2=EF=BC=9A=E5=BC=80=E6=96=B0/=E7=BB=AD?= =?UTF-8?q?=E7=8E=A9=C3=97attunement/attune=5Frefresh=5Fy/tree=5Frules=20?= =?UTF-8?q?=E4=B8=8E=E6=9D=A5=E6=BA=90=E4=B8=80=E8=87=B4=20+840=20?= =?UTF-8?q?=E6=80=BB=E9=87=8F+6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/smoke/smoke_all.gd | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index 9da0c5a9..ceb995a1 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -4658,6 +4658,33 @@ func _meta_settle_and_workshop() -> void: a12._reset_refresh_x() check(a12.attune_refresh_left() == 1, "刷新 X 每碰三选一重置(不结转——重碰面 x 回表值 1)") + # ⑬ 主菜单开局传参面(迭代 19 卡⓪①③——开新/续玩两入口同调三键随开局下传防回归:真实入口此前 + # 三键恒空(缺陷①),冒烟夹具直呼 runner 参数面拦不住——此处直呼 main.build_adventure_params + # 单测统一构造面(static 免实例化整菜单场景;真实两入口共用本构造),取值与营地投影同源) + var sv_e = _meta_new_save(_META_SMOKE_PATHS[8]) + sv_e.set_attunement_equipped(["luck_coin"]) + sv_e.set_attune_refresh_level(2) + sv_e.set_fork_side("fg_posture", "a") + var mp_e = load("res://core/meta_progression.gd").new(_db, sv_e) + var rules_e: Array = mp_e.tree_rule_keys() + check(rules_e.has("posture_first_strike") and mp_e.attune_refresh_charges() == 2, + "开局传参夹具前置:Fork 侧 a 激活 rule 键非空 + Y=Lv2 行表值 2(防断言空转)") + var p_new: Dictionary = load("res://presentation/main.gd").build_adventure_params(sv_e, mp_e, + {"first_script": true, "treasure_unlocked": {}, "shop_mode": "pool"}) + check((p_new.get("attunement", []) as Array) == (sv_e.attunement_equipped() as Array), + "主菜单开新冒险参数面:同调装配 = 存档装配集(营地装了什么开局就带什么)") + check(int(p_new.get("attune_refresh_y", -1)) == mp_e.attune_refresh_charges(), + "主菜单开新冒险参数面:Y 刷新池 = 当前等级行表值(营地升几档开局就给几次)") + check((p_new.get("tree_rules", []) as Array) == rules_e, + "主菜单开新冒险参数面:树 rule 键集 = Fork 激活侧 effects(点哪侧带哪侧)") + check(bool(p_new.get("first_script", false)) and String(p_new.get("shop_mode", "")) == "pool", + "主菜单开新冒险参数面:入口特有键(first_script/shop_mode)随 extra 原样并入") + var p_resume: Dictionary = load("res://presentation/main.gd").build_adventure_params(sv_e, mp_e, + {"treasure_unlocked": {}}) + check((p_resume.get("attunement", []) as Array) == (sv_e.attunement_equipped() as Array) + and int(p_resume.get("attune_refresh_y", -1)) == mp_e.attune_refresh_charges() + and (p_resume.get("tree_rules", []) as Array) == rules_e, + "主菜单继续上局参数面:三键与开新冒险同源同值(续玩不吃白板开局)") _meta_smoke_cleanup()