diff --git a/game/smoke/adventure_monte_carlo.gd b/game/smoke/adventure_monte_carlo.gd index 84f5b281..9ee0a3f3 100644 --- a/game/smoke/adventure_monte_carlo.gd +++ b/game/smoke/adventure_monte_carlo.gd @@ -62,6 +62,8 @@ func _initialize() -> void: "keystone_total": int(sum.get("keystone_total", -1)), "battles": int(st["battles"]), "rounds": int(st["rounds"]), "hero_dmg": int(st["hero_dmg"]), "mine_hits": int(st["mine_hits"]), + "mine_dmg": int(st.get("mine_dmg", 0)), + "taken": int(st["hero_dmg"]) + int(st.get("mine_dmg", 0)), "refreshes": int(st["refreshes"]), "choices": int(st["choices"]), "visited_count": (st["visited_ids"] as Array).size(), "encounter_max_hp_seq": st["encounter_max_hp_seq"], diff --git a/game/smoke/level_autoplay.gd b/game/smoke/level_autoplay.gd index 57b7699b..030674ac 100644 --- a/game/smoke/level_autoplay.gd +++ b/game/smoke/level_autoplay.gd @@ -55,7 +55,7 @@ static func run_level(db, seed_val: int, level_index: int, atk_pct: int, hp_pct: "rest_healed": 0, "hp_before_rest": -1, "defeat_node_index": -1, "defeat_node_id": -1, "defeat_node_type": "", "boss_depth": -1, "hp_at_boss": -1, "rows": [], "timeout": false, - "log_path": "", "policy": policy, "refreshes": 0, "mine_hits": 0, + "log_path": "", "policy": policy, "refreshes": 0, "mine_hits": 0, "mine_dmg": 0, "visited_ids": [], "choices": 0, "last_battle_enemies": [], "prng": _policy_rng(seed_val), "mine_slips": 0, "skip_digs": 0, "shop_buys": 0, } @@ -130,7 +130,7 @@ static func run_adventure(db, seed_val: int, atk_pct: int, hp_pct: int, collect_ "rest_healed": 0, "hp_before_rest": -1, "defeat_node_index": -1, "defeat_node_id": -1, "defeat_node_type": "", "boss_depth": -1, "hp_at_boss": -1, "rows": [], "timeout": false, - "log_path": "", "policy": policy, "refreshes": 0, "mine_hits": 0, + "log_path": "", "policy": policy, "refreshes": 0, "mine_hits": 0, "mine_dmg": 0, "visited_ids": [], "choices": 0, "last_battle_enemies": [], "summary": {}, "wallet_events": [], "encounter_max_hp_seq": [], "reward_events": [], "shop_gp_seq": [], # 商店房到达余额序(逐关 1 次——GP 跨关延续验收取数面) @@ -340,6 +340,8 @@ static func _on_step_row(row: Dictionary, _runner, st: Dictionary, collect_rows: if row.type == "damage" and row.source_class == "enemy_action": st.hero_dmg += int(row.value) _note_enemy(String(row.get("text", "")), st) + elif row.type == "damage" and row.source_class == "mine_hit" and "全体敌人" not in String(row.get("text", "")): + st.mine_dmg += int(row.value) # 踩雷直伤承伤(k 系数分母补算字段——口径与真人分析端「敌方行动+踩雷直伤」对齐) elif row.type == "cast" and row.source_class == "enemy_action": _note_enemy(String(row.get("text", "")), st) # 施放行(毒爆挂毒等——伤害行可能缺席的死亡遭遇仍可归因) if row.source_class == "mine_hit":