1. CoreFeatureTag 位运算串扰:feature_tags 实为单选枚举(游戏设计器 core_tab 以 OptionButton 下标写入),但 spell_evaluator 用位与 `&` 判定,非 2 的幂 常量会串扰(如 3 & 1 = 1 误判持久内存)。改为 `==` 相等判定,常量值保持 与设计器下标一致;补充注释说明单选语义与未来多选(位标志)的迁移路径。 2. modifier_pierce_plus 空操作:MODIFIER 携带的 pierce 从未生效(可购买无效)。 新增 CastStats.pierce_add,_apply_modifier 累加,_push_projectile 叠加到 ACTION 自带 pierce。穿透修正现在生效。 3. 战前 Deck 防呆缺失:可带无 ACTION 卡组进战斗。新增 CombatManager.has_castable_action();商店"下一波"按钮校验,无 ACTION 时 显示警告并阻止进入(新增 SHOP_NEED_ACTION i18n 键,zh_CN/zh_TW/en/ja)。 静态审查通过;因本机无 Godot CLI 未经运行时验证,需在编辑器 play_scene 验收。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
26 lines
1.0 KiB
GDScript
26 lines
1.0 KiB
GDScript
## CastStats — 单次施法的可修改弹道参数负载
|
||
## 由 MODIFIER 节点在执行间修改;每次 execute_compiled 开始时从 SpellContext 隶新
|
||
extends RefCounted
|
||
class_name CastStats
|
||
|
||
var damage_add: float = 0.0 # 加法伤害加成
|
||
var damage_mult: float = 1.0 # 乘法伤害倍率
|
||
var spread_count: int = 1 # 单 ACTION 同时发射数量(扩散)
|
||
var multicast_count: int = 0 # S3:额外可执行的 ACTION 数(0=仅执行1个)
|
||
var lifetime: float = 0.0 # 对默认 lifetime 的差値(<0 缩短)
|
||
var speed_mult: float = 1.0 # 弹速倍率
|
||
var radius_mult: float = 1.0 # 弹体半径倍率
|
||
var crit_chance: float = 0.0 # 暴击概率
|
||
var pierce_add: int = 0 # MODIFIER 累加的穿透次数(叠加到 ACTION 自带 pierce)
|
||
|
||
func reset() -> void:
|
||
damage_add = 0.0
|
||
damage_mult = 1.0
|
||
spread_count = 1
|
||
multicast_count = 0
|
||
lifetime = 0.0
|
||
speed_mult = 1.0
|
||
radius_mult = 1.0
|
||
crit_chance = 0.0
|
||
pierce_add = 0
|