## VERTICAL SLICE - NOT FOR PRODUCTION ## 难度修饰表 schema:按 (level_index, node_depth) 精确匹配施加乘数的类型化读取(空表=零行为合法态)。 ## Boss 数值走行值直填不经本表;乘数越域仅告警、使用时 clamp(组合事故不作配置事故拒载)。 class_name DifficultyTable extends Resource @export var rows: Array[Dictionary] = [] # Array[Dictionary]:{level_index, node_depth, hp_mult, atk_mult} const MULT_MIN := 0.1 const MULT_MAX := 10.0 func validate() -> Array: var errs: Array[Dictionary] = [] var seen := {} for row in rows: var L: int = int(row.get("level_index", 0)) var D: int = int(row.get("node_depth", -1)) var key := "%d_%d" % [L, D] if seen.has(key): errs.append({"category": "dup_key", "message": "DifficultyTable 键重复: %s" % key}) seen[key] = true if L < 1 or D < 0: errs.append({"category": "domain", "message": "难度键越域 (%d,%d)" % [L, D]}) # 乘数越域 = warning 级(使用时 clamp 到 MULT_MIN/MULT_MAX——组合事故非配置事故,warning 预登记) for k in ["hp_mult", "atk_mult"]: var v: float = float(row.get(k, 1.0)) if v < MULT_MIN or v > MULT_MAX: errs.append({"category": "mult_oor_warning", "message": "%s (%s) 越域 [0.1,10] 使用时 clamp: %f" % [key, k, v]}) return errs var _resolver # R1 解析协作件(ConfigDB load_tables 装配段经 bind_resolver 注入——resolver 文件与键零搬移) # 解析协作件挂载口(ConfigDB 装配段公开面〔5.1 封装修复——直写 _resolver 改经此口〕) func bind_resolver(resolver: ConfigDbResolver) -> void: _resolver = resolver ## 难度修饰解析委托(消费面 db.run.difficulty.resolve_modifiers——clamp 语义归 ConfigDbResolver) func resolve_modifiers(L: int, D: int) -> Dictionary: return _resolver.resolve_difficulty_modifiers(L, D)