TYPE74 武器前置施法运行时
触发位置
TYPE74 CAST SKILL 是普通攻击“选定目标”阶段的事件,不是命中事件。
CCharacter::strike_resolveTargets(0x553900)的顺序为:
CBaseUnit::fireProcEffects(..., 74, other, ...)(0x553989);- 检查武器
[SKILL]; sub_51EFE0执行直接武器技能,或继续普通 missile/strike。
因此迁移实现必须在普通命中结算前派发 TYPE74,并在后续步骤缺少输入时回滚整段暂存状态。
装备路径
装备使用 0x7C8130 → 0x7CB870 → 0x582380,与身上效果扫描不同:
- 概率前把 volatile seed 复制到物品技能管理器;
- 概率使用 effect slot0 的 float 值;
- 判定为闭区间
rand(0,100) <= chance,100% 不短路; - 查找物品上已安装的真实技能实例,并按底层定义共享冷却;
CANPROC=false会让 proc 模式拒绝启动,但不取消后续直接武器技能入口。
WC_EVISCERATE 程序
来源:MEDIA/SKILLS/ARBITER/WANDCHAOS/WC_EVISCERATE.DAT,EVENT_START 指向 MEDIA/SKILLS/BERSERKER/EVISCERATE/EVISCERATE.LAYOUT。
| 字段 | 原始值 |
|---|---|
| SPEED | 1.4 |
| COOLDOWNMS | 50 |
| WEAPONDAMAGEPCT | 70 |
| SOAKSCALEPCT | 70 |
| Damage Shape 最大半径 | 2.7 |
| Damage Shape 角度 | 130° |
| TIMER | 0.3 |
| LOOPS / LOOP COUNT | false / 1 |
CDamageShape 的 615CB0 表明:非 DOT、非循环、单次且 TIMER 为正时,唯一查询在 TIMER 到期后发生。迁移将该形状降低为布局时间 0.3 的单脉冲,并按技能 SPEED 1.4 推进,所以墙钟触发时间约为 0.2142857 秒。
TYPE74 属于施法模式 0(0x53CDAC):布局原点取施法者位置。它不能复用 sub_51EFE0 直接武器技能的手部水平距离/Y+0.5 原点;那样会把近身扇形推到目标身后。
物品保存以下状态:技能实例、同名重等级、charges、manager seed、private effect seed、冷却、执行标志及布局时钟。空间伤害另以可保存的武器技能布局实例运行,二者在同一事务内启动。
AXETHROW 为什么不能双发
AXES/AXE_U05X 同时声明 [SKILL] AXETHROW 和 TYPE74 AXETHROW。AXETHROW.DAT 又明确写有 CANPROC:false。
所以真实结果是:
- TYPE74 装备路径复制 seed、掷 100% 的外层概率;
- proc 模式因
CANPROC=false不启动 AXETHROW; 0x553900随后进入直接[SKILL]路径;- 只生成一枚
THROWINGAXE。
这不是为了去重而添加的端口特判,而是原始技能标志与调用顺序共同产生的行为。
覆盖与边界
原版武器共有 9 把、10 条 TYPE74:八把使用 WC_EVISCERATE,AXE_U05X 使用 AXETHROW;FIST_U01B 同时带 15% 与 5% 两条 Eviscerate,同定义冷却会使先成功启动的实例约束后续实例。
Godot 已接入伤害程序、原始粒子和两组声音。Eviscerate LAYOUT 的半透明 Werewolf Generic Model 带 slash 动画和 OPACITY 轨道;当前通用模型层仍把骨骼动画标为 deferred,因此不能声称该层已经逐帧等价。当前构造审计为 1180 / 1419,这一数字只证明构造入口,不替代视觉与全世界运行时完成证明。