接手前任中断的 T3 半成品(脏文件三件:battle_orchestrator/effects engine/feats.tres),方向核实无误后续做收口; 承接修正四处随本提交留痕:①perfect_defense 的 when 用了 fact 封闭 9 项外的 flags_hit_all(装载校验必红)—— 改 flags_count gte 1 保守判定,全中闸=flag_settle 发射点施加面承载(载荷字段仅供观测);②has 算子语义与行 不匹配(数组包含对 String 恒假)——落非空在场判定(value 缺省)+数组包含(value 给定),查询面落法=代拍板 白名单;③前任漏写 _harmful_adjacent 助手(flag_hit 发射点调用必炸);④counter_add set 键语义 bool() 吞 0 (清零行 set:0 被当 false 走加零通道)——改 has(set) 置值模式,四处施加点同修。 本提交主干(专长族全量迁移——任务书 §六 T3): - damage_controller:feat_flags 旗面整体退役,五事件施加面接线——attack_commit 命中随单据 context 携带 (发射点=开单入口,任务书 §3.1 定稿位;主角攻击单恒段内首单,开单现场=结账现场),rider/改写/加值/ 段数/状态五族按迁移前算序施加(重锤两拍/专注/spike 恒全额/猎弱移档/魔网湛蓝猎手克制直调/整备每层 +1/厚积满层倍乘/奥术+猎巢+执拗 rider 合计后档位暴击);armor_roll 免掷恒折扣、clamp_check 双面 (hero+board_typed)delta 窗口、kill 溢出弹射(landed×value%)、damage_taken shield 加法族合计。 _feat_clamp_bonus/13 处旗消费点拆除。 - battle_orchestrator:_combat_segment 换代(dig_streak/charge_layers 注伤害控制器运行态;连珠矢段数 施加位紧随主角攻击单开立=迁移前开单位,flush 兑现序逐位一致);round_start 发射位前移至行动经济轮 切换前(树规则 grant_ap queue 当轮入队当轮兑现——先手压制首轮语义锚);深挖快照滚动拆除(计数器 reset_at 声明承载);熔火/连击旧计数变量退役。 - action_economy:feat_ap_carry/feat_dig_extra/deep_paid_count 旧注入旗拆除;dig_paid 施加面落地 (counter_spend 对价:AP 富余付全价积计数、不足 fallback 只付基础 1——2026-10-04 降级口径逐位保留)。 - feat_table schema:HOOKS 23 挂点枚举/MINE_HOOKS/EFFECT_KEYS/hook+effects 双形态校验全删——triggers 订阅形态唯一合法行形(行键白名单收口 feat_id/display_name/rarity/archetype/triggers/desc/note)。 - feats_engine:hooks_for 挂点投影退役(订阅装载序=feats 表序,由效果引擎 rebuild 承载)。 - battle_narrator:专长卡片文案表值化(summaries 硬编码映射拆除,读行 desc——27 件措辞逐字迁移)。 - smoke 断言面随迁(任务书 v1.1 补列项):构造表 5 行换代 triggers 形态;挂点投影断言换代订阅装载面; ④-⑧ 求值断言(_feat_flags_for 直呼+旗读数)全量改写为 rebuild+dispatch 命中面(27 件逐事件覆盖); 深挖钻头付费开掘回归闸改 counter_spend 计数器面;特性卡 desc 直读断言新增。 映射表对拍注记(行为等价优先,.tres 尾注同步留痕):猎巢人/矿工的执拗映射表标 modify_ticket/attack_bonus, 现行为必中附加通道(hero_rider 后置于乘区与下限)——落 add_ticket_rider(per 取数载荷);整备军备现行为 双效果(轮末转蓄力+每层首段攻 +1)——两行订阅;深挖钻头 per-round 计数器对(paid/given)复刻旧 v2 跨轮不对称语义(given 不随轮重置)。 验证:冒烟 800 项 0 失败(三闸过)· 单元 17 套全绿 · S1 魔法流对拍预检=MC formed/off 两态与 T0 pre 锚 (83000 种子段)同种子逐位一致(2×5 局,三档只测不判)——14 件迁移行实战斗承载零分岔。 设计权威:design/research/研究-内容数据驱动扩展架构-2026-10-06.md(案乙)。 任务书:design/research/任务书-内容数据驱动扩展批-2026-10-06.md §六 T3、§五映射表、§七契约 2/4。
40 lines
1.7 KiB
GDScript
40 lines
1.7 KiB
GDScript
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||
# Date: 2026-10-04(双层 BD 实施批 T1——标签档位激活引擎)
|
||
# 流派成型判据机制化(整合定稿 设计工具 1——以撒套装/小骨铭文先例):
|
||
# 同流派标签 relic 计数 ≥2 → 档一(流派核心规则);≥4 → 档二(完全体);<2 = 散件(单体保底——
|
||
# 每件效果独立生效,档位只做质变不做启动,反例 B-2)。
|
||
# 纯函数零 await 零 RNG 零副作用(Attunement 求值服务同款纪律);核心层零特判延伸——引擎只读
|
||
# feat_table 行集与持有集,接线点消费 tiers/hooks 投影。
|
||
class_name FeatsEngine
|
||
extends RefCounted
|
||
|
||
|
||
## 档位求值:feat_ids 持有集 × 行集 → {archetype: tier}(tier ∈ 0/1/2;无行流派不出现)
|
||
static func tiers_for(feat_ids: Array, table: FeatTable) -> Dictionary:
|
||
var counts := {}
|
||
for rid in feat_ids:
|
||
var row: Dictionary = table.row_by_id(String(rid)) if table != null else {}
|
||
if row.is_empty():
|
||
continue
|
||
var arch := String(row.get("archetype", ""))
|
||
counts[arch] = int(counts.get(arch, 0)) + 1
|
||
var out := {}
|
||
for arch in counts.keys():
|
||
var n := int(counts[arch])
|
||
if n >= 4:
|
||
out[arch] = 2
|
||
elif n >= 2:
|
||
out[arch] = 1
|
||
else:
|
||
out[arch] = 0
|
||
return out
|
||
|
||
|
||
## 挂点投影随 T3 退役(内容数据驱动扩展批——hook 词族消亡:订阅投影=效果引擎 rebuild 装载序
|
||
## (feats 表序),投影稳定性由 EffectEngine._triggers 声明序承载)
|
||
|
||
|
||
## 成型判读(读数面口径):流派 tier ≥1 = 成型(档一即判——任务书完成定义「标签+档位激活引擎可判成型」)
|
||
static func is_formed(tiers: Dictionary, archetype: String) -> bool:
|
||
return int(tiers.get(archetype, 0)) >= 1
|