From 6f11f4c4028a2026627d9726a2d52b955595c702 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Fri, 31 Jul 2026 11:38:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(attr):=20=E4=BF=AE=E5=A4=8D=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E5=9C=BA=E6=99=AF=E5=9B=A0=20cpu=5Flimit=20=E5=9F=BA?= =?UTF-8?q?=E5=87=86=E6=94=B9=E4=B8=BA=200=20=E8=80=8C=E9=80=80=E5=8C=96?= =?UTF-8?q?=EF=BC=9B=E8=AE=B0=E5=BD=95=20cast=5Fdelay=5Fmod=20=E5=BF=AB?= =?UTF-8?q?=E7=85=A7=E6=97=B6=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit combat_test 绕过 CombatManager 直接 equip_wand,拿不到 _rebuild_wand 注入的 "core" 份额,导致 cpu_limit=0 触发守卫报错、MAX_OPS 由 200 退化为 40。 镜像 _rebuild_wand 的做法在该场景自行注入(先 remove 再 add),仅修本次弄坏 的部分;该场景整体绕过 CombatManager(如从不设 mana_leech)属既有分歧,不在 本次范围内。 _cast_interval 仅在 equip_wand 时快照,install_spell 只调 _rebuild_wand 不调 equip_wand,实际再同步点是每波开战的 _transition_to_battle。行为不改,加注释 记下时序,免得后续属性商店的实现者误以为购买即时生效。 Co-Authored-By: Claude Opus 5 --- scenes/main/combat_test.gd | 3 +++ scripts/domain/player_manager.gd | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scenes/main/combat_test.gd b/scenes/main/combat_test.gd index 521ca98..ff68326 100644 --- a/scenes/main/combat_test.gd +++ b/scenes/main/combat_test.gd @@ -14,6 +14,9 @@ func _ready() -> void: PlayerManager.set_player_node(_player_node) # 装备法杯:wand_basic + spark_bolt var loadout: Dictionary = WandPreset.make_default_loadout() + # 本场景绕过 CombatManager,故须自行注入法杖运算力份额(否则 cpu_limit=0 → MAX_OPS 退化) + PlayerStats.remove_modifiers_from("core") + PlayerStats.add_modifier("cpu_limit", "flat", float(loadout["core"].cpu_limit), "core") PlayerManager.equip_wand(loadout["core"], loadout["compiled"]) _run_spawn() diff --git a/scripts/domain/player_manager.gd b/scripts/domain/player_manager.gd index c79a1fd..bc60d5c 100644 --- a/scripts/domain/player_manager.gd +++ b/scripts/domain/player_manager.gd @@ -14,7 +14,8 @@ var _player_node: Node2D = null var _equipped_core: CoreDefinition = null var _equipped_compiled: CompiledDeck = null var _cast_timer: float = 0.0 -var _cast_interval: float = 0.5 +var _cast_interval: float = 0.5 # equip_wand 时快照 core.cast_interval × cast_delay_mod; + # 中途改 cast_delay_mod 要到下次 equip_wand(每波开战 _transition_to_battle)才生效 var _is_moving: bool = false var _stationary_time: float = 0.0