diff --git a/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml b/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml index 089d6e33..de8f6ebc 100644 --- a/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml +++ b/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml @@ -56,7 +56,7 @@ WULA_Colony_License_LV1_Technology 乌拉帝国的第一阶殖民地许可,代表此殖民地正式被乌拉帝国承认为其下辖殖民地之一。许可不会为殖民地带来什么好处,但是提升许可是继续研究乌拉帝国科技的重要条件。 - 10000 + 1000 0.00 3.20 1 @@ -118,7 +118,7 @@ WULA_Colony_License_LV2_Technology 乌拉帝国的第二阶殖民地许可,代表此殖民地已经被乌拉帝国赋予更多特权,许可不会为殖民地带来什么好处,但是提升许可是继续研究乌拉帝国科技的重要条件。\n\n要获得许可,你需要建造<color=#6BB7B7><i>乌拉帝国作业通讯台</i></color>,指派一名殖民者联系乌拉帝国行星封锁机关的长官,并开启审查流程任务,任务完成后将给予此许可。 - 15000 + 1500 4.00 3.20 1 @@ -180,7 +180,7 @@ WULA_Colony_License_LV3_Technology 乌拉帝国的第一阶殖民地许可,代表此殖民地已经被乌拉帝国赋予更多特权,许可不会为殖民地带来什么好处,但是提升许可是继续研究乌拉帝国科技的重要条件。 - 20000 + 2000 8.00 3.20 1 diff --git a/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml b/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml index 0be7c6c1..e2e1c1ab 100644 --- a/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml +++ b/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml @@ -137,6 +137,10 @@ StartingResearch WULA_Colony_License_LV1_Technology +
  • + StartingResearch + WULA_Structure_Technology +
  • StartingResearch BasicMechtech 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 fc6fd6a7..f632888e 100644 --- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml +++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml @@ -100,5 +100,18 @@ 自主机械体 自动战斗 切换到自动战斗模式 - 机械将自动寻找并攻击敌人 + + 切换自动召唤 + 启用或禁用所有信标的自动空投功能。启用后,信标在建造完成后会立即自动呼叫空投。 + 自动空投已启用。 + 自动空投已禁用。 + + + 装备 + 武器 + 机械体 + 请先选择一个分类 + 正在收集材料 + 已暂停 \ No newline at end of file diff --git a/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompProperties_SkyfallerCaller.cs b/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompProperties_SkyfallerCaller.cs index 80b009f8..04d985e5 100644 --- a/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompProperties_SkyfallerCaller.cs +++ b/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompProperties_SkyfallerCaller.cs @@ -8,6 +8,9 @@ namespace WulaFallenEmpire public ThingDef skyfallerDef; public bool destroyBuilding = true; public int delayTicks = 0; + + public bool canAutoCall = true; // 默认启用自动召唤 + public int autoCallDelayTicks = 600; // 默认10秒 // 新增:是否需要 FlyOver 作为前提条件 public bool requireFlyOver = false; // 默认不需要 FlyOver diff --git a/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompSkyfallerCaller.cs b/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompSkyfallerCaller.cs index ffdfa3bc..4ce61946 100644 --- a/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompSkyfallerCaller.cs +++ b/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/CompSkyfallerCaller.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using RimWorld; +using RimWorld.Planet; using UnityEngine; using Verse; using Verse.AI; @@ -10,6 +11,19 @@ namespace WulaFallenEmpire public class CompSkyfallerCaller : ThingComp { private CompProperties_SkyfallerCaller Props => (CompProperties_SkyfallerCaller)props; + + private WulaSkyfallerWorldComponent _worldComponent; + private WulaSkyfallerWorldComponent WorldComp + { + get + { + if (_worldComponent == null) + { + _worldComponent = Find.World.GetComponent(); + } + return _worldComponent; + } + } private bool used = false; private int callTick = -1; @@ -138,6 +152,15 @@ namespace WulaFallenEmpire } } + public override void PostSpawnSetup(bool respawningAfterLoad) + { + base.PostSpawnSetup(respawningAfterLoad); + if (!respawningAfterLoad && Props.canAutoCall && WorldComp.AutoCallSkyfaller && CanCallSkyfaller) + { + CallSkyfaller(true); + } + } + public override void PostExposeData() { base.PostExposeData(); @@ -156,7 +179,7 @@ namespace WulaFallenEmpire } } - public void CallSkyfaller() + public void CallSkyfaller(bool isAutoCall = false) { if (!CanCallSkyfaller) { @@ -183,15 +206,16 @@ namespace WulaFallenEmpire calling = true; used = true; - callTick = Find.TickManager.TicksGame + Props.delayTicks; + int delay = isAutoCall ? Props.autoCallDelayTicks : Props.delayTicks; + callTick = Find.TickManager.TicksGame + delay; - if (Props.delayTicks <= 0) + if (delay <= 0) { ExecuteSkyfallerCall(); } else { - Messages.Message("WULA_SkyfallerIncoming".Translate(Props.delayTicks.ToStringTicksToPeriod()), parent, MessageTypeDefOf.ThreatBig); + Messages.Message("WULA_SkyfallerIncoming".Translate(delay.ToStringTicksToPeriod()), parent, MessageTypeDefOf.ThreatBig); } } @@ -253,19 +277,42 @@ namespace WulaFallenEmpire foreach (var gizmo in base.CompGetGizmosExtra()) yield return gizmo; - if (!CanCall) - yield break; - - Command_Action callCommand = new Command_Action + if (CanCall) { - defaultLabel = "WULA_CallSkyfaller".Translate(), - defaultDesc = GetCallDescription(), - icon = ContentFinder.Get("Wula/UI/Commands/WULA_DropBuilding"), - action = CallSkyfaller, - disabledReason = GetDisabledReason() - }; + Command_Action callCommand = new Command_Action + { + defaultLabel = "WULA_CallSkyfaller".Translate(), + defaultDesc = GetCallDescription(), + icon = ContentFinder.Get("Wula/UI/Commands/WULA_DropBuilding"), + action = () => CallSkyfaller(false), + disabledReason = GetDisabledReason() + }; + yield return callCommand; + } - yield return callCommand; + if (Props.canAutoCall) + { + Command_Toggle toggleAutoCall = new Command_Toggle + { + defaultLabel = "WULA_ToggleAutoCallSkyfaller".Translate(), + defaultDesc = "WULA_ToggleAutoCallSkyfallerDesc".Translate(), + icon = ContentFinder.Get("Wula/UI/Commands/WULA_DropBuilding"), + isActive = () => WorldComp.AutoCallSkyfaller, + toggleAction = () => + { + WorldComp.AutoCallSkyfaller = !WorldComp.AutoCallSkyfaller; + if (WorldComp.AutoCallSkyfaller) + { + Messages.Message("WULA_AutoCallEnabled".Translate(), MessageTypeDefOf.PositiveEvent); + } + else + { + Messages.Message("WULA_AutoCallDisabled".Translate(), MessageTypeDefOf.NegativeEvent); + } + } + }; + yield return toggleAutoCall; + } } private string GetCallDescription() diff --git a/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/WulaSkyfallerWorldComponent.cs b/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/WulaSkyfallerWorldComponent.cs new file mode 100644 index 00000000..d59b0de3 --- /dev/null +++ b/Source/WulaFallenEmpire/BuildingComp/WULA_SkyfallerCaller/WulaSkyfallerWorldComponent.cs @@ -0,0 +1,21 @@ +using RimWorld.Planet; +using Verse; + +namespace WulaFallenEmpire +{ + public class WulaSkyfallerWorldComponent : WorldComponent + { + // 默认为 true,即自动召唤 + public bool AutoCallSkyfaller = true; + + public WulaSkyfallerWorldComponent(World world) : base(world) + { + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Values.Look(ref AutoCallSkyfaller, "AutoCallSkyfaller", true); + } + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj index e4f9b812..bc39de18 100644 --- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj +++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj @@ -116,6 +116,7 @@ +