- action_economy/damage_controller/reward_economy: dispatch 加 _ctx、写口改 EffectEngine.counter_add/counter(_ctx,...) - battle_orchestrator: _fx_emit→dispatch(counters_ctx)、counter_spend 静态化、删 counters_seed 回灌与 counters_export 战末导出、_feat_yield_adjust 删 dig_combo 死读数与 combo_cap 第五参(零行为差) - grant_segment: counter 读/value_counter/per ctx 化、_apply_counter_hit 写口静态化、combo_cap 收集删除 - run_ledger: 删 counters_seed_snapshot/counters_merge_export + 头注/字段注改 ctx 直写口径 数据行 domain/reset_at 删除与 feats.tres id 改名见 T6;核心层调用面已对齐新 API。
40 lines
2.2 KiB
GDScript
40 lines
2.2 KiB
GDScript
class_name RunLedger
|
||
extends RefCounted
|
||
# 共享四本账显式承载(审计 P1-4「共享可变字典跨三层:所有权名义单点、实际三处
|
||
# 可写」收口 = 单类持四账)。
|
||
# 所有权:AdventureRunner 持有(开局构造、冒险全程唯一宿主);LevelRunner 经 set_run_ledger
|
||
# 下传并装配 encounter;战斗侧(BattleOrchestrator)经 encounter["ledger"] 拿本类引用,
|
||
# 只走下方 read/append 原语;adventure 桶经 EffectContext 引用被效果引擎就地直写(无战末 export/
|
||
# 开局 seed 搬运时点——跨战持久=同一字典引用,随本类生灭)。
|
||
var attune_charges: Dictionary[Variant, Variant] = {} # 同调主动件充能账(use_treasure 扣减;断点随局回档)
|
||
var vision_counter: Dictionary[Variant, Variant] = {} # 真视类使用计数(冒险开始置 {"used":0};
|
||
# 缺省空 = 调试/单场战斗不计——enc 缺键守卫语义)
|
||
var adventure_counters: Dictionary[Variant, Variant] = {} # adventure 桶(adv_ 前缀计数器;经 EffectContext 引用被引擎就地直写、跨战持久随本类生灭)
|
||
var bonus: Dictionary[Variant, Variant] = {} # 统一冒险加算区(冒险开始置四轴零账——商店购买/三选一属性件/战末 bonus_delta 汇入)
|
||
|
||
|
||
# ---- 战斗侧原语(裁点②甲:战斗侧只拿 read/append 两族;宿主侧冒险/关卡域直读字段域) ----
|
||
|
||
func attune_charge_has(item_id: String) -> bool:
|
||
return attune_charges.has(item_id)
|
||
|
||
|
||
func attune_charge_set(item_id: String, value: int) -> void:
|
||
attune_charges[item_id] = value
|
||
|
||
|
||
func attune_charge_consume(item_id: String) -> void:
|
||
# 原编排器 use_treasure 扣减语义逐字(has 闸 + maxi(0,·) 下限)
|
||
if attune_charges.has(item_id):
|
||
attune_charges[item_id] = maxi(0, int(attune_charges[item_id]) - 1)
|
||
|
||
|
||
func vision_count_add(n: int) -> void:
|
||
vision_counter["used"] = int(vision_counter.get("used", 0)) + n
|
||
|
||
|
||
func bonus_add_axis(axis: String, delta: int) -> void:
|
||
# 原编排器战末汇入逐字语义(has 闸——账外轴丢弃)
|
||
if bonus.has(axis):
|
||
bonus[axis] = int(bonus.get(axis, 0)) + delta
|