From 7a6d5380e1f32f0411ad206bb0a4d34505fdbf21 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Sun, 7 Sep 2025 17:11:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 93184 -> 93184 bytes .../AbilityDefs/Abilities_TrackingCharge.xml | 10 +++---- .../Abilities/PawnFlyer_TrackingCharge.cs | 19 ++++++++----- .../Verb_CastAbilityTrackingCharge.cs | 25 ++++++++++++++++-- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 54e8aea1ef660515e91e662296188a35106edc14..7cdd6efe33047a68ba7c2c23981e01d2064a5812 100644 GIT binary patch delta 19519 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 b7sd+}dxIVn{#1!qviF)N373R5S=#>(-jZ#( delta 19137 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ℜAKXcgd}QZ!94)JxH% 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 ArachnaeSwarm.PawnFlyer_TrackingCharge - 0.1 - 0.1 + 0.5 + 0 @@ -16,7 +16,7 @@ ARA_Ability_TrackingCharge 阿拉克涅盾头种对目标发起蓄势冲撞,对路径上的一切造成伤害。飞行的距离越远,伤害越高。 - UI/Abilities/Charge + UI/Commands/WarTrumpet 600 ArachnaeSwarm.Verb_CastAbilityTrackingCharge @@ -36,8 +36,8 @@ 1.5 15 2 - 4 - Crush + 6 + Blunt ARA_Flyer_TrackingCharge diff --git a/Source/ArachnaeSwarm/Abilities/PawnFlyer_TrackingCharge.cs b/Source/ArachnaeSwarm/Abilities/PawnFlyer_TrackingCharge.cs index d15706d..de8bea8 100644 --- a/Source/ArachnaeSwarm/Abilities/PawnFlyer_TrackingCharge.cs +++ b/Source/ArachnaeSwarm/Abilities/PawnFlyer_TrackingCharge.cs @@ -17,6 +17,7 @@ namespace ArachnaeSwarm public float inertiaDistance; public DamageDef collisionDamageDef; public LocalTargetInfo primaryTarget; + public int maxFlightTicks; // --- Internal state --- private Vector3 currentSpeed; @@ -24,6 +25,7 @@ namespace ArachnaeSwarm private bool homing = true; private int inertiaTicks = -1; private Vector3 exactPosition; + private bool hasHitPrimaryTarget = false; // --- Reflection Fields --- private static FieldInfo TicksFlyingInfo; @@ -112,8 +114,9 @@ namespace ArachnaeSwarm float calculatedDamage = this.initialDamage + (this.distanceTraveled * this.damagePerTile); var dinfo = new DamageInfo(this.collisionDamageDef, calculatedDamage, 1f, -1, this.FlyingPawn); - if (homing && primaryTarget.HasThing && (this.exactPosition - primaryTarget.Thing.DrawPos).sqrMagnitude < 1.5f * 1.5f) + if (!hasHitPrimaryTarget && homing && primaryTarget.HasThing && primaryTarget.Thing.Spawned && (this.exactPosition - primaryTarget.Thing.DrawPos).sqrMagnitude < 1.5f * 1.5f) { + hasHitPrimaryTarget = true; // Mark as hit to prevent re-triggering primaryTarget.Thing.TakeDamage(dinfo); homing = false; this.inertiaTicks = (int)(this.inertiaDistance / this.currentSpeed.magnitude); @@ -121,7 +124,9 @@ namespace ArachnaeSwarm foreach (var thing in GenRadial.RadialDistinctThingsAround(this.exactPosition.ToIntVec3(), this.Map, 1.0f, false)) { - if (thing == this.FlyingPawn || thing == this || thing == primaryTarget.Thing) continue; + // Avoid damaging self or the primary target (which is handled above) + if (thing == this.FlyingPawn || thing == this || (hasHitPrimaryTarget && thing == primaryTarget.Thing)) continue; + if (thing is Pawn pawn && !pawn.Downed && pawn.HostileTo(this.FlyingPawn)) pawn.TakeDamage(dinfo); else if (thing.def.destroyable && thing.def.building != null) thing.TakeDamage(dinfo); } @@ -129,8 +134,10 @@ namespace ArachnaeSwarm try { + // We still need to update the destination for the base flyer logic to work correctly DestCellInfo.SetValue(this, this.exactPosition.ToIntVec3()); - TicksFlightTimeInfo.SetValue(this, ticksFlying + 2); + // --- FIX for infinite flight --- + // The old TicksFlightTimeInfo update logic is removed. } catch (System.Exception ex) { @@ -138,9 +145,9 @@ namespace ArachnaeSwarm } TicksFlyingInfo.SetValue(this, ticksFlying + 1); - - int flightTime = (int)TicksFlightTimeInfo.GetValue(this); - if (!this.exactPosition.ToIntVec3().InBounds(this.Map) || ticksFlying > flightTime * 2) + + // --- RELIABLE TIMEOUT & BOUNDS CHECK --- + if (ticksFlying > this.maxFlightTicks || !this.exactPosition.ToIntVec3().InBounds(this.Map)) { Land(); } diff --git a/Source/ArachnaeSwarm/Abilities/Verb_CastAbilityTrackingCharge.cs b/Source/ArachnaeSwarm/Abilities/Verb_CastAbilityTrackingCharge.cs index 0cb816c..71f2a6f 100644 --- a/Source/ArachnaeSwarm/Abilities/Verb_CastAbilityTrackingCharge.cs +++ b/Source/ArachnaeSwarm/Abilities/Verb_CastAbilityTrackingCharge.cs @@ -21,11 +21,21 @@ namespace ArachnaeSwarm return false; } + // --- Best Practice: Cache Map and Position FIRST --- + // Per MCP analysis, Caster.Map is the most reliable source. + // Cache this before ANY other logic. + Map map = this.Caster.Map; + if (map == null) + { + Log.Error($"Verb_CastAbilityTrackingCharge: Caster {this.Caster.LabelCap} has a null map. Cannot cast."); + return false; + } + if (this.CasterPawn == null || !this.CasterPawn.Spawned) { return false; } - + // --- This is now a fully custom Thing, so we spawn it directly --- var trackingCharge = (PawnFlyer_TrackingCharge)ThingMaker.MakeThing(props.flyerDef); @@ -37,9 +47,20 @@ namespace ArachnaeSwarm trackingCharge.collisionDamageDef = props.collisionDamageDef; trackingCharge.primaryTarget = this.currentTarget; + // --- Dynamic Timeout Calculation --- + float flightSpeed = props.flyerDef.pawnFlyer.flightSpeed; + if (flightSpeed <= 0) + { + Log.Error("flyerDef has no flightSpeed, cannot calculate timeout."); + return false; + } + // Timeout is twice the time it would take to fly the max range in a straight line + int maxTicks = (int)((this.verbProps.range / flightSpeed) * 2.0f); + trackingCharge.maxFlightTicks = maxTicks; + // Setup and spawn trackingCharge.StartFlight(this.CasterPawn, this.currentTarget.Cell); - GenSpawn.Spawn(trackingCharge, this.CasterPawn.Position, this.CasterPawn.Map); + GenSpawn.Spawn(trackingCharge, this.CasterPawn.Position, map); // Use the cached map return true; }