diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index 205fb0e2..bb793e00 100644
Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Missile_Weapon.xml b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Missile_Weapon.xml
index b78f9a0f..8df6bee0 100644
--- a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Missile_Weapon.xml
+++ b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Missile_Weapon.xml
@@ -42,6 +42,11 @@
RocketswarmLauncher_Fire
GunTail_Heavy
12
+
+ true
+ true
+ true
+
diff --git a/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveTrackingBullet.cs b/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveTrackingBullet.cs
index c742e789..2e319def 100644
--- a/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveTrackingBullet.cs
+++ b/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveTrackingBullet.cs
@@ -50,7 +50,7 @@ namespace WulaFallenEmpire
protected override void Impact(Thing hitThing, bool blockedByShield = false)
{
- bool flag = blockedByShield || ExplosiveDef.explosionDelay == 0; // Use ExplosiveDef for explosionDelay
+ bool flag = hitThing == null || blockedByShield || ExplosiveDef.explosionDelay == 0; // Use ExplosiveDef for explosionDelay
if (flag)
{
this.Explode();
diff --git a/Source/WulaFallenEmpire/Projectiles/Projectile_TrackingBullet.cs b/Source/WulaFallenEmpire/Projectiles/Projectile_TrackingBullet.cs
index 094b5567..822d7ab3 100644
--- a/Source/WulaFallenEmpire/Projectiles/Projectile_TrackingBullet.cs
+++ b/Source/WulaFallenEmpire/Projectiles/Projectile_TrackingBullet.cs
@@ -84,8 +84,13 @@ namespace WulaFallenEmpire
if (homing)
{
+ // 首先检查目标是否是一个有效的 Thing
+ if (!intendedTarget.HasThing)
+ {
+ homing = false; // 如果目标是地面,则禁用追踪
+ }
// 如果目标消失或距离太远,停止追踪
- if (!intendedTarget.IsValid || !intendedTarget.Thing.Spawned || (intendedTarget.Cell.ToVector3() - ExactPosition).magnitude > def.projectile.speed * 2f) // 假设2倍速度为最大追踪距离
+ else if (!intendedTarget.IsValid || !intendedTarget.Thing.Spawned || (intendedTarget.Cell.ToVector3() - ExactPosition).magnitude > def.projectile.speed * 2f) // 假设2倍速度为最大追踪距离
{
homing = false;
destroyTicksAfterLosingTrack = TrackingDef.destroyTicksAfterLosingTrack.RandomInRange; // 失去追踪后根据XML配置的范围自毁