diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 692993c..0da3aff 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/DamageDefs/ARA_Damages.xml b/1.6/1.6/Defs/DamageDefs/ARA_Damages.xml index 95b5e08..dc673c9 100644 --- a/1.6/1.6/Defs/DamageDefs/ARA_Damages.xml +++ b/1.6/1.6/Defs/DamageDefs/ARA_Damages.xml @@ -103,7 +103,7 @@ - + ARA_Psi_Damage true diff --git a/1.6/1.6/Defs/HediffDefs/ARA_GuardianPsyField_Hediff.xml b/1.6/1.6/Defs/HediffDefs/ARA_GuardianPsyField_Hediff.xml index c197be1..f8d95bd 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_GuardianPsyField_Hediff.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_GuardianPsyField_Hediff.xml @@ -17,13 +17,17 @@ 1500 3200 60 - + - 0.001 0.1 0.01 + + true + false + true + (0.5, 0.3, 0.9, 0.5) Interceptor_BlockedProjectile diff --git a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml index fc57af6..788b960 100644 --- a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml +++ b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml @@ -430,10 +430,10 @@ 1300 3.5 - 0.35 - 0.5 - 0.85 - 1 + 0.60 + 0.70 + 0.65 + 0.55 2.2 diff --git a/Source/ArachnaeSwarm/ThingComp_GuardianPsyField.cs b/Source/ArachnaeSwarm/ThingComp_GuardianPsyField.cs index d8efac6..33dde60 100644 --- a/Source/ArachnaeSwarm/ThingComp_GuardianPsyField.cs +++ b/Source/ArachnaeSwarm/ThingComp_GuardianPsyField.cs @@ -14,7 +14,6 @@ namespace ArachnaeSwarm public int rechargeHitPointsIntervalTicks = 60; // Ticks to restore 1 HP // New properties for psyfocus/entropy mechanics - // Removed psyfocusCostForFullRecharge public float psyfocusCostPerInterval = 0.001f; // e.g., 0.1% of max psyfocus per recharge interval public float entropyGainPerDamage = 0.5f; // For self // Removed entropyGainPerAllyDamage @@ -22,6 +21,11 @@ namespace ArachnaeSwarm public EffecterDef absorbEffecter; // Removed transferAllyDamage + // Projectile interception properties + public bool interceptGroundProjectiles = false; + public bool interceptNonHostileProjectiles = false; + public bool interceptAirProjectiles = true; + public EffecterDef interceptEffecter; public EffecterDef breakEffecter; public EffecterDef reactivateEffecter; @@ -134,9 +138,10 @@ namespace ArachnaeSwarm { if (!Active) return false; - // We now intercept all projectiles, the filter will be done by the PostPreApplyDamage on self - // and the TryAbsorbDamageForAllyOnly for allies. - // This method is only for projectile visual/sound and psyfocus cost. + // Filter projectile types based on properties + if (projectile.def.projectile.flyOverhead && !Props.interceptAirProjectiles) return false; + if (!projectile.def.projectile.flyOverhead && !Props.interceptGroundProjectiles) return false; + if (projectile.Launcher != null && !projectile.Launcher.HostileTo(PawnOwner.Faction) && !Props.interceptNonHostileProjectiles) return false; // --- Interception Success --- lastInterceptTicks = Find.TickManager.TicksGame;