test(迁移): 批 B 波 1 G4 套3 乘区接线四条迁入 roll_multiplier_test.gd——剪切挂载绿(宿主 24 检查)+变异 4/4 验红全红唯一(分量键改名/attack_up 40/sapped -10/fortify -20);套内独占 _hero_attack_row_with 随迁,smoke_all.gd 同批删函数节头与调用行;闸01 剩余面 994 绿
This commit is contained in:
1 parent
58054819ca
commit
d7def000a3
3 files changed
+44
-42
No files matched your search
@@ -153,7 +153,6 @@ var _rng
|
||||
func _run_core_smoke(db, rng) -> void:
|
||||
_db = db
|
||||
_rng = rng
|
||||
_smoke_pool_wiring()
|
||||
_smoke_type_glow()
|
||||
_smoke_variant_placement(1)
|
||||
_smoke_variant_placement(2)
|
||||
@@ -1398,47 +1397,6 @@ func _smoke_level() -> void:
|
||||
|
||||
|
||||
|
||||
# ---- 主角乘区接线 + 硬化折半方向 ----
|
||||
# 同种子停手轮恒同掷点(效果只改乘区、不动掷点流)→ 落地伤害精确关系:
|
||||
# 增伤 = 基线 ×1.5、乏力 = ×0.75(hero_offense 池乘攻击合计 = 单分量,无直乘旁路);
|
||||
# 硬化 = 基线 ×0.5 且 < 基线(enemy_defense 池负值折半)。
|
||||
# 基线构成:基线 100——hero 攻击类型=normal(锻造工坊配置默认值,
|
||||
# hero.tres 无两轴字段)对轻甲中性 0 修正(目标 = L1 地精轻甲;AC 0 恒全额非暴击种子)。
|
||||
func _smoke_pool_wiring() -> void:
|
||||
print("--- 主角乘区接线 + 硬化折半方向 ---")
|
||||
var base_row := _hero_attack_row_with({}, 100, 20260918)
|
||||
var up_row := _hero_attack_row_with({"effects": ["attack_up"]}, 100, 20260918)
|
||||
var sapped_row := _hero_attack_row_with({"effects": ["sapped"]}, 100, 20260918)
|
||||
var fortify_row := _hero_attack_row_with({"effects": ["fortify"]}, 100, 20260918)
|
||||
var base_v := int(base_row.get("value", -1))
|
||||
check(int(base_row.get("normal", -1)) == base_v and base_v > 0, "单分量基线在位(normal 分量 = 落地值、基线 %d——充能退役批)" % base_v)
|
||||
check(int(up_row.get("value", -1)) == int(floor(base_v * 1.5)),
|
||||
"增伤经乘区加成合计(%d → %d = ×1.5——attack_up 直乘旁路退役,覆盖面=攻击合计)" % [base_v, int(up_row.get("value", -1))])
|
||||
check(int(sapped_row.get("value", -1)) == int(floor(base_v * 0.75)),
|
||||
"乏力经乘区削减合计(%d → %d = ×0.75)" % [base_v, int(sapped_row.get("value", -1))])
|
||||
check(int(fortify_row.get("value", -1)) == int(floor(base_v * 0.5)) and int(fortify_row.get("value", -1)) < base_v,
|
||||
"硬化折半方向(%d → %d = ×0.5 且 < 基线——敌方防御池负值减伤,翻倍 bug 退役)" % [base_v, int(fortify_row.get("value", -1))])
|
||||
|
||||
|
||||
# 构造停手轮首行主角攻击行:opts = {effects: Array};hero_atk 覆盖 100 拉开量级
|
||||
# (floor 关系可精确断言);效果直授沿 _weaken_refresh_probe 前例。
|
||||
func _hero_attack_row_with(opts: Dictionary, hero_atk_val: int, seed_val: int) -> Dictionary:
|
||||
var rng = load("res://core/rng_service.gd").new()
|
||||
rng.set_master_seed(seed_val)
|
||||
var settlement = load("res://core/battle_orchestrator.gd").new(_db, rng)
|
||||
var rows: Array = []
|
||||
settlement.step_row.connect(func(row): rows.append(row))
|
||||
if not settlement.begin_battle({"level_index": 1, "node_depth": 0, "hero_hp": int(_db.hero.max_hp), "hero_atk": hero_atk_val}):
|
||||
return {}
|
||||
for eff in opts.get("effects", []):
|
||||
settlement._status_effects.apply_effect(String(eff), {"source_class": "mine_hit", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index})
|
||||
settlement.minesweeper.settle_batch([{"action": "stop"}])
|
||||
for row in rows:
|
||||
if String(row.get("type", "")) == "damage" and String(row.get("source_class", "")) == "hero_attack":
|
||||
return row
|
||||
return {}
|
||||
|
||||
|
||||
func _mk_stream(stream_name: String, scope: int) -> RandomNumberGenerator:
|
||||
# stream_name = 调用点自述标签(不参与派生),保留参数零改调用方
|
||||
var rg := RandomNumberGenerator.new()
|
||||
|
||||
@@ -31,6 +31,7 @@ func _init() -> void:
|
||||
# 套执行序沿源编排序
|
||||
_smoke_enemy_attack_type()
|
||||
_smoke_armor_roll()
|
||||
_smoke_pool_wiring()
|
||||
quit(Kit.finish("roll_multiplier_test"))
|
||||
|
||||
|
||||
@@ -289,3 +290,45 @@ func _auto_play_round(settlement, out: Dictionary) -> void:
|
||||
minesweeper.settle_batch([{"action": "dig", "cell": plan.dig_cell}])
|
||||
if action_economy.phase == "Active" and settlement.round_index == start_round and out.result == "":
|
||||
minesweeper.settle_batch([{"action": "stop"}])
|
||||
|
||||
|
||||
# ---- 主角乘区接线 + 硬化折半方向 ----
|
||||
# 同种子停手轮恒同掷点(效果只改乘区、不动掷点流)→ 落地伤害精确关系:
|
||||
# 增伤 = 基线 ×1.5、乏力 = ×0.75(hero_offense 池乘攻击合计 = 单分量,无直乘旁路);
|
||||
# 硬化 = 基线 ×0.5 且 < 基线(enemy_defense 池负值折半)。
|
||||
# 基线构成:基线 100——hero 攻击类型=normal(锻造工坊配置默认值,
|
||||
# hero.tres 无两轴字段)对轻甲中性 0 修正(目标 = L1 地精轻甲;AC 0 恒全额非暴击种子)。
|
||||
func _smoke_pool_wiring() -> void:
|
||||
print("--- 主角乘区接线 + 硬化折半方向 ---")
|
||||
var base_row := _hero_attack_row_with({}, 100, 20260918)
|
||||
var up_row := _hero_attack_row_with({"effects": ["attack_up"]}, 100, 20260918)
|
||||
var sapped_row := _hero_attack_row_with({"effects": ["sapped"]}, 100, 20260918)
|
||||
var fortify_row := _hero_attack_row_with({"effects": ["fortify"]}, 100, 20260918)
|
||||
var base_v := int(base_row.get("value", -1))
|
||||
Kit.check("单分量基线在位(normal 分量 = 落地值、基线 %d——充能退役批)" % base_v,
|
||||
int(base_row.get("normal", -1)) == base_v and base_v > 0)
|
||||
Kit.check("增伤经乘区加成合计(%d → %d = ×1.5——attack_up 直乘旁路退役,覆盖面=攻击合计)" % [base_v, int(up_row.get("value", -1))],
|
||||
int(up_row.get("value", -1)) == int(floor(base_v * 1.5)))
|
||||
Kit.check("乏力经乘区削减合计(%d → %d = ×0.75)" % [base_v, int(sapped_row.get("value", -1))],
|
||||
int(sapped_row.get("value", -1)) == int(floor(base_v * 0.75)))
|
||||
Kit.check("硬化折半方向(%d → %d = ×0.5 且 < 基线——敌方防御池负值减伤,翻倍 bug 退役)" % [base_v, int(fortify_row.get("value", -1))],
|
||||
int(fortify_row.get("value", -1)) == int(floor(base_v * 0.5)) and int(fortify_row.get("value", -1)) < base_v)
|
||||
|
||||
|
||||
# 构造停手轮首行主角攻击行:opts = {effects: Array};hero_atk 覆盖 100 拉开量级
|
||||
# (floor 关系可精确断言);效果直授沿 _weaken_refresh_probe 前例。
|
||||
func _hero_attack_row_with(opts: Dictionary, hero_atk_val: int, seed_val: int) -> Dictionary:
|
||||
var rng = load("res://core/rng_service.gd").new()
|
||||
rng.set_master_seed(seed_val)
|
||||
var settlement = load("res://core/battle_orchestrator.gd").new(_db, rng)
|
||||
var rows: Array = []
|
||||
settlement.step_row.connect(func(row): rows.append(row))
|
||||
if not settlement.begin_battle({"level_index": 1, "node_depth": 0, "hero_hp": int(_db.hero.max_hp), "hero_atk": hero_atk_val}):
|
||||
return {}
|
||||
for eff in opts.get("effects", []):
|
||||
settlement._status_effects.apply_effect(String(eff), {"source_class": "mine_hit", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index})
|
||||
settlement.minesweeper.settle_batch([{"action": "stop"}])
|
||||
for row in rows:
|
||||
if String(row.get("type", "")) == "damage" and String(row.get("source_class", "")) == "hero_attack":
|
||||
return row
|
||||
return {}
|
||||
Reference in new issue
Block a user