49 lines
3.2 KiB
GDScript
49 lines
3.2 KiB
GDScript
## 战斗事实件:战斗事实的唯一记录面——本战受理事实(encounter:打什么、带什么进来)、
|
||
## 同调装配事实(attunement)、轮 facts 缓冲(reveals/seals/path)、封印判定账(去重两集+完美三账)、
|
||
## 装板溯源(seq/provenance)、条件事实计数(refresh_used、feat_first_dig_used、attune_safe_seen)。
|
||
## 零注入引用、零信号、零协作对象调用——纯数据+谓词+写口;缓冲写入点在宿主 A2 处理器,
|
||
## 身份快照捕获留宿主(fact 件不持协作引用,防它变成第二编排面)。
|
||
## 完美账写口单点=三 mark 方法(契约 2:perfect_hit_false 保持纯净,豁免只累加 perfect_forgiven);
|
||
## 其余成员公有直读写(段类/快照/宿主经 oc._facts.X——fx_host._fx_bonus_delta 跨件直读写同款形态)。
|
||
## reset_round 只清 reveals/seals/path 三项、不碰 refresh_used(_battle_over 后快照读到的
|
||
## refresh_used 必须保持末轮值)。
|
||
## 成员冻结:15/15 贴顶——实现期禁增员;扩容阀=先把封印判定账五成员二次拆出(SealLedger)再落新账。
|
||
class_name BattleFacts
|
||
extends RefCounted
|
||
|
||
var encounter: Dictionary[String, Variant] = {} # 本战受理事实(begin_battle assign 后全生命期只读)
|
||
var reveals: Array[Dictionary] = [] # 轮 facts 缓冲(cell_revealed 批)
|
||
var seals: Array[Dictionary] = [] # 封印判定批缓冲(seal_judged 批)
|
||
var path := "" # 轮末路径事实(round_end 载荷 path_tag)
|
||
var refresh_used := 0 # 本轮刷新计数(复位点=出口分发,语句随迁)
|
||
var board_seq := 0 # 板序号(本战斗第几张板——快照归因用)
|
||
var board_from_midround := false # 装板 provenance:轮内刷新换来的图=刷新图(清图奖励不发)
|
||
var seal_consumed := {} # 封印兑付资格账(危险格实例为键;install 重置)
|
||
var seal_miss_seen := {} # 封印未中行去重(每安全格实例一次)
|
||
var perfect_hit_true := 0 # 整图完美封印计数(install 重置)
|
||
var perfect_hit_false := 0 # 完美误标计数(纯净禁回退改写——契约 2)
|
||
var perfect_forgiven := 0 # 完美保险豁免累计(单向累加自有账)
|
||
var feat_first_dig_used := false # 条件事实计数(魔矢每战首次)
|
||
var attunement: Array[Variant] = [] # 本战装配集快照(enc.attunement 受理携带;受理后只读)
|
||
var attune_safe_seen := 0 # 积点制件安全开格计数(装配集自动兑付进度)
|
||
|
||
|
||
# 轮复位(原宿主 _reset_round_facts 逐字——三调用点:begin_battle 首板 install 后/出口分发/终局序列)
|
||
func reset_round() -> void:
|
||
reveals.clear()
|
||
seals.clear()
|
||
path = ""
|
||
|
||
|
||
# 完美封印三账写口(授予段直写升级为账本单点——契约 2 执行点)
|
||
func mark_perfect_hit() -> void:
|
||
perfect_hit_true += 1
|
||
|
||
|
||
func mark_perfect_miss() -> void:
|
||
perfect_hit_false += 1
|
||
|
||
|
||
func mark_perfect_forgiven() -> void:
|
||
perfect_forgiven += 1
|