diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 2feb296..73da13b 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/Source/ArachnaeSwarm/Verbs/Projectiles/Projectile_CruiseMissile.cs b/Source/ArachnaeSwarm/Verbs/Projectiles/Projectile_CruiseMissile.cs index 647dbb0..1225d94 100644 --- a/Source/ArachnaeSwarm/Verbs/Projectiles/Projectile_CruiseMissile.cs +++ b/Source/ArachnaeSwarm/Verbs/Projectiles/Projectile_CruiseMissile.cs @@ -178,8 +178,8 @@ namespace ArachnaeSwarm protected override void Tick() { - // 不调用 base.Tick() 来阻止直线运动逻辑 - // base.Tick(); + // 首先调用base.Tick(),让它处理组件更新(比如拖尾特效)和ticksToImpact + base.Tick(); // 更新目标位置 if (intendedTarget.Thing is Pawn pawn && pawn.Spawned && !pawn.Destroyed) @@ -191,16 +191,13 @@ namespace ArachnaeSwarm destination = pawn.DrawPos; } - // 更新ticksToImpact,这是从基类Projectile复制过来的逻辑 - ticksToImpact--; - if (ticksToImpact <= 0) + // 如果base.Tick()已经处理了撞击,我们就不再继续 + if (this.Destroyed) { - // 时间到了,强制撞击 - Impact(null); return; } - // 更新我们自己的位置 + // 用我们自己的曲线位置覆盖掉base.Tick()计算的直线位置 exactPositionInt = BPos(this.DistanceCoveredFraction); // 检查是否到达终点