秘宝批T7组E-2:内部标识符全族换词(inventory/unlocked/replace/overlays/slot/settlement use_aux等60+token)+存档键零触碰专项核通过(37文件六键普查零差异,点号访问零存在)+行为探针四件全绿+任务书§1.2基线回填(755/0实测)
This commit is contained in:
1 parent
f8c6db49c6
commit
cd73e62346
21 files changed
+205
-203
No files matched your search
+28
-28
@@ -62,10 +62,10 @@ var base_override := {"atk": 0, "max_hp": 0, "armor_class": 0} # 永久强化
|
||||
var _shop_purchased := {} # product_id → 已购档数(现价重算输入;冒险开始清零)
|
||||
# 协作对象私有(E1/E3 封装收口 2026-09-13):settlement 读取经 current_battle() 成文出口
|
||||
var _settlement: BattleOrchestrator = null # 当前战斗编排器(关卡结束置 null)
|
||||
var aux_inventory: TreasureItems = null # 秘宝 关卡域库存(迭代 7 T3——TreasureItems;跨战斗延续,
|
||||
var _aux_unlocked := {} # aux 解锁门控集(迭代 7 T5——拍板③甲;空集=零投放)
|
||||
var treasure_inventory: TreasureItems = null # 秘宝 关卡域库存(迭代 7 T3——TreasureItems;跨战斗延续,
|
||||
var _treasure_unlocked := {} # aux 解锁门控集(迭代 7 T5——拍板③甲;空集=零投放)
|
||||
var _attunement: Array = [] # 同调装配集(迭代 11 第①批 T5——adventure params.attunement 下传,begin_battle enc 携带进战斗结算;空集=off 零扰动)
|
||||
var _attune_charges: Dictionary = {} # 同调主动件充能账本(迭代 11 第①批 T6——adventure 共享 dict 引用;settlement use_aux 扣减直改同引用)
|
||||
var _attune_charges: Dictionary = {} # 同调主动件充能账本(迭代 11 第①批 T6——adventure 共享 dict 引用;settlement use_treasure 扣减直改同引用)
|
||||
# 关卡末清空+快照计数入 level_finished 载荷)
|
||||
# ---- 商店共享池模式态(迭代 11 第②批 T3——缺省 legacy=固定三件加定价 off 对照承载,零 RNG 零池消费;TP0 令牌池换代)----
|
||||
var _shop_pool_mode := false # pool 模式旗(set_shop_pool 注入时置位——AdventureRunner 按 params.shop_mode 下传)
|
||||
@@ -295,11 +295,11 @@ func present_resumed_choice() -> bool:
|
||||
|
||||
|
||||
# 断点道具库存回填(迭代 8 卡①——奖励节点已选道具随停点快照回局;幂等,先清后入受理序重排)
|
||||
func restore_aux_items(items: Array) -> void:
|
||||
if aux_inventory == null:
|
||||
aux_inventory = TreasureItems.new(db)
|
||||
aux_inventory.reset()
|
||||
aux_inventory.restore_inventory(items)
|
||||
func restore_treasure_items(items: Array) -> void:
|
||||
if treasure_inventory == null:
|
||||
treasure_inventory = TreasureItems.new(db)
|
||||
treasure_inventory.reset()
|
||||
treasure_inventory.restore_inventory(items)
|
||||
|
||||
|
||||
func _find_level_row(level_index: int) -> Dictionary:
|
||||
@@ -460,11 +460,11 @@ func _enter_node(node: Dictionary) -> bool:
|
||||
|
||||
func _start_battle(node: Dictionary) -> bool:
|
||||
_settlement = BattleOrchestrator.new(db, rng)
|
||||
if aux_inventory == null:
|
||||
aux_inventory = TreasureItems.new(db) # 惰性建——关卡域单实例(跨战斗延续)
|
||||
_settlement.aux_inventory = aux_inventory # 迭代 7 T3——库存注入(授予路由+use_aux 编排消费面)
|
||||
if treasure_inventory == null:
|
||||
treasure_inventory = TreasureItems.new(db) # 惰性建——关卡域单实例(跨战斗延续)
|
||||
_settlement.treasure_inventory = treasure_inventory # 迭代 7 T3——库存注入(授予路由+use_treasure 编排消费面)
|
||||
if _settlement != null:
|
||||
_settlement.set_aux_unlocked(_aux_unlocked) # 迭代 7 T5——解锁门控下传(装板摇号前)
|
||||
_settlement.set_treasure_unlocked(_treasure_unlocked) # 迭代 7 T5——解锁门控下传(装板摇号前)
|
||||
# core↔core 接线只许方法 Callable(ADR-0001 静态规则 S6——lambda 捕获 self 会延长
|
||||
# RefCounted 生命周期乃至成环:settlement 的信号持捕获 runner 的 lambda,runner 又持 settlement)
|
||||
_settlement.step_row.connect(_forward_step_row)
|
||||
@@ -514,13 +514,13 @@ func _on_battle_finished(payload: Dictionary) -> void:
|
||||
close_wallet() # 单关模式:关卡收束即冒险收束(GP 清零);冒险模式归 AdventureRunner._settle
|
||||
_phase = Phase.ENDED
|
||||
_settlement = null
|
||||
var aux_cleared := 0
|
||||
if aux_inventory != null:
|
||||
aux_cleared = aux_inventory.inventory_count() # 快照计数(清空前——「剩余道具随关卡结束清空」可见反馈取数)
|
||||
aux_inventory.reset() # 迭代 7 T3——关卡末库存清空(无论输赢,幂等)
|
||||
var treasure_cleared := 0
|
||||
if treasure_inventory != null:
|
||||
treasure_cleared = treasure_inventory.inventory_count() # 快照计数(清空前——「剩余道具随关卡结束清空」可见反馈取数)
|
||||
treasure_inventory.reset() # 迭代 7 T3——关卡末库存清空(无论输赢,幂等)
|
||||
level_finished.emit({"result": level_result, "hp": hp_left, "node_index": node_index,
|
||||
"node_id": _node_id(node), "node_type": String(node.get("type", "")),
|
||||
"aux_cleared": aux_cleared}) # additive 扩签(不参与派生——node_map 扩签先例)
|
||||
"aux_cleared": treasure_cleared}) # additive 扩签(不参与派生——node_map 扩签先例)
|
||||
return
|
||||
# 接口漂移清偿(关卡节点地图 v1.0 ⑦):战斗胜利不再自动推进——确认后进选路口
|
||||
_settlement = null
|
||||
@@ -579,10 +579,10 @@ func current_battle():
|
||||
return _settlement
|
||||
|
||||
# aux 解锁门控集注入(迭代 7 T5——AdventureRunner 自 params 传递)
|
||||
func set_aux_unlocked(ids: Dictionary) -> void:
|
||||
_aux_unlocked = ids
|
||||
func set_treasure_unlocked(ids: Dictionary) -> void:
|
||||
_treasure_unlocked = ids
|
||||
if _settlement != null:
|
||||
_settlement.set_aux_unlocked(ids)
|
||||
_settlement.set_treasure_unlocked(ids)
|
||||
|
||||
|
||||
# 同调装配集注入(迭代 11 第①批 T5——冒险开始参数面;AdventureRunner 唯一调用方)
|
||||
@@ -617,23 +617,23 @@ func set_tree_rules(rules: Array) -> void:
|
||||
# 差额注入防续玩双份——resume 路径 restore_inventory 已含断点内 attune 记录)
|
||||
func set_attune_charges(charges: Dictionary) -> void:
|
||||
_attune_charges = charges
|
||||
if aux_inventory == null:
|
||||
aux_inventory = TreasureItems.new(db)
|
||||
if treasure_inventory == null:
|
||||
treasure_inventory = TreasureItems.new(db)
|
||||
for iid in charges:
|
||||
var existing := 0
|
||||
for r in aux_inventory.snapshot_inventory():
|
||||
for r in treasure_inventory.snapshot_inventory():
|
||||
if String(r.item_id) == String(iid) and String(r.source_class) == "attunement" and not bool(r.used):
|
||||
existing += 1
|
||||
for i in range(maxi(0, int(charges[iid]) - existing)):
|
||||
aux_inventory.add_item(String(iid), "attunement", Vector2i(-1, -1), 0)
|
||||
treasure_inventory.add_item(String(iid), "attunement", Vector2i(-1, -1), 0)
|
||||
|
||||
# 奖励节点兑付透传(迭代 7 T5——呈现层三选一 → 关卡域库存;来源归因 reward_node)。
|
||||
# 迭代 11 第①批 T7——同调位持有闸随过渡键退役拆除(aux 卡出池后仅剩防御面;能力件容量闸
|
||||
# 正主 = 营地装配面 Attunement.slots 满位禁选)。
|
||||
func grant_aux_item(item_id: String, source: String) -> Dictionary:
|
||||
if aux_inventory == null:
|
||||
aux_inventory = TreasureItems.new(db)
|
||||
return aux_inventory.add_item(item_id, source, Vector2i(-1, -1), 0)
|
||||
func grant_treasure_item(item_id: String, source: String) -> Dictionary:
|
||||
if treasure_inventory == null:
|
||||
treasure_inventory = TreasureItems.new(db)
|
||||
return treasure_inventory.add_item(item_id, source, Vector2i(-1, -1), 0)
|
||||
|
||||
|
||||
# 三选一 GP 袋件入账(迭代 10——钱包收口扩「奖励入账」入口;复用战斗完成同一入账原语,
|
||||
|
||||
Reference in new issue
Block a user