原创
DemolisherFix —— 自爆军肥引爆修复
问题描述
七日杀 V3.0(b257)专用服务器上,Demolisher(自爆军肥)被击中胸部电荷包后不会进入引爆倒计时——没有滴滴声、没有红灯闪烁、也不会爆炸。单机/本地游戏正常。
根因分析
这是原版 NetPackageDamageEntity 的序列化遗漏 bug。
完整调用链
NetPackageDamageEntity.Setup() 序列化了 HitBodyPart、Strength、DamageMultiplier、AttackingItem 等几十个字段,唯独遗漏了 canHitSpecialBodyParts。服务端反序列化重建 DamageSourceEntity 时,该字段保持 C# bool 默认值 false。
EntityZombieCop.ProcessDamageResponseLocal 要求四个条件全部满足才触发引爆:
为什么单机正常?
单机模式下伤害在本地直接处理,DamageSourceEntity 不经网络序列化,canHitSpecialBodyParts 保持原始值 true。
修复策略
Harmony 前缀补丁 EntityZombieCop.ProcessDamageResponseLocal,在检测到 Special 身体部件被击中时,直接调用 HandlePrimingDetonator() 绕过已失真的 canHitSpecialBodyParts 检查。
HandlePrimingDetonator() 会立即设置 isPrimed = true,因此原方法后续执行时条件 !isPrimed 为 false,不会重复触发——单机和专服均安全。
安装方法
-
1将
DemolisherFix文件夹放入服务器的Mods目录 -
2重启服务器
-
3检查日志中出现
[DemolisherFix] v1.0.0 已就绪,补丁安装成功
仅需服务端安装,客户端无需任何操作。
技术要求
-
•七日杀 V3.0+ 专用服务器
-
•需要
0_TFP_Harmony前置(原版自带)
文件结构
许可证
可自由使用、修改和再分发。如需在社区发布,请保留原作者署名。








鄂公网安备42011202002543号




隐藏内容需要回复可以看见