diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index e204c939..0811d107 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/Assemblies/WulaFallenEmpire.pdb b/1.6/1.6/Assemblies/WulaFallenEmpire.pdb index 206026ca..1144fdc1 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.pdb and b/1.6/1.6/Assemblies/WulaFallenEmpire.pdb differ diff --git a/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml b/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml index e115f8ff..1e5d702b 100644 --- a/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml +++ b/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml @@ -143,16 +143,18 @@ 1 Misc12 false + true + false Verb_CastAbility false false - 0 - 500 - true + 2 + -1 + false - false - true + true + false @@ -161,23 +163,8 @@ 15000 1 -
  • - WULA_MotherShip_Planet_Interdiction - GroundStrafing - 0.02 - 20 - true - Perpendicular - - - true - - - false - - - true - (0.3,0.7,1.0,0.3) +
  • + 180
  • Wula_PIA_Legion_Faction diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml index 155b58c7..cab90bf5 100644 --- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml +++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml @@ -170,8 +170,7 @@ 错误:连接丢失。“军团”保持沉默。 思考中...({0}秒 阶段{1}/{2}{3}) 重试中 - {FACTION_name}已经在附近投下了一些资源。 - + {FACTION_name}已经在附近投下了一些资源。 P.I.A 正在接管轨道防御! diff --git a/Source/WulaFallenEmpire/EventSystem/AI/CompAbilityEffect_EnableOverwatch.cs b/Source/WulaFallenEmpire/EventSystem/AI/CompAbilityEffect_EnableOverwatch.cs new file mode 100644 index 00000000..f4a09294 --- /dev/null +++ b/Source/WulaFallenEmpire/EventSystem/AI/CompAbilityEffect_EnableOverwatch.cs @@ -0,0 +1,76 @@ +using System; +using RimWorld; +using Verse; +using WulaFallenEmpire.EventSystem.AI; + +namespace WulaFallenEmpire +{ + public class CompProperties_AbilityEnableOverwatch : CompProperties_AbilityEffect + { + public int durationSeconds = 180; // Default 3 minutes + + public CompProperties_AbilityEnableOverwatch() + { + compClass = typeof(CompAbilityEffect_EnableOverwatch); + } + } + + public class CompAbilityEffect_EnableOverwatch : CompAbilityEffect + { + public new CompProperties_AbilityEnableOverwatch Props => (CompProperties_AbilityEnableOverwatch)props; + + public override void Apply(LocalTargetInfo target, LocalTargetInfo dest) + { + base.Apply(target, dest); + + Map map = parent.pawn?.Map ?? Find.CurrentMap; + if (map == null) + { + Messages.Message("Error: No active map.", MessageTypeDefOf.RejectInput); + return; + } + + var overwatch = map.GetComponent(); + if (overwatch == null) + { + overwatch = new MapComponent_AIOverwatch(map); + map.components.Add(overwatch); + } + + overwatch.EnableOverwatch(Props.durationSeconds); + } + + public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest) + { + if (!base.CanApplyOn(target, dest)) + return false; + + Map map = parent.pawn?.Map ?? Find.CurrentMap; + if (map == null) + return false; + + var overwatch = map.GetComponent(); + if (overwatch != null && overwatch.IsEnabled) + { + // Already active, show remaining time + return false; + } + + return true; + } + + public override string ExtraLabelMouseAttachment(LocalTargetInfo target) + { + Map map = parent.pawn?.Map ?? Find.CurrentMap; + if (map != null) + { + var overwatch = map.GetComponent(); + if (overwatch != null && overwatch.IsEnabled) + { + return $"Already active ({overwatch.DurationTicks / 60}s remaining)"; + } + } + return base.ExtraLabelMouseAttachment(target); + } + } +} diff --git a/Source/WulaFallenEmpire/EventSystem/AI/MapComponent_AIOverwatch.cs b/Source/WulaFallenEmpire/EventSystem/AI/MapComponent_AIOverwatch.cs index 349377e9..9e811e5e 100644 --- a/Source/WulaFallenEmpire/EventSystem/AI/MapComponent_AIOverwatch.cs +++ b/Source/WulaFallenEmpire/EventSystem/AI/MapComponent_AIOverwatch.cs @@ -63,10 +63,10 @@ namespace WulaFallenEmpire.EventSystem.AI { try { - var flyOverDef = DefDatabase.GetNamedSilentFail("WULA_AircraftCarrier"); + var flyOverDef = DefDatabase.GetNamedSilentFail("WULA_MotherShip_Planet_Interdiction"); if (flyOverDef == null) { - WulaLog.Debug("[AI Overwatch] Could not find WULA_AircraftCarrier ThingDef."); + WulaLog.Debug("[AI Overwatch] Could not find WULA_MotherShip_Planet_Interdiction ThingDef."); return; } @@ -80,14 +80,14 @@ namespace WulaFallenEmpire.EventSystem.AI startPos, endPos, map, - speed: 0.03f, + speed: 0.02f, // Slower for mothership height: 20f ); if (flyOver != null) { Messages.Message("WULA_AIOverwatch_FleetCalled".Translate(), MessageTypeDefOf.PositiveEvent); - WulaLog.Debug($"[AI Overwatch] Called fleet: WULA_AircraftCarrier spawned from {startPos} to {endPos}."); + WulaLog.Debug($"[AI Overwatch] Called fleet: WULA_MotherShip_Planet_Interdiction spawned from {startPos} to {endPos}."); } } catch (Exception ex)