diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 918fd4d8..4d844f30 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/EventDefs/EventDef_Wula/Wula_MainEvent.xml b/1.6/1.6/Defs/EventDefs/EventDef_Wula/Wula_MainEvent.xml index b561a564..28342a2f 100644 --- a/1.6/1.6/Defs/EventDefs/EventDef_Wula/Wula_MainEvent.xml +++ b/1.6/1.6/Defs/EventDefs/EventDef_Wula/Wula_MainEvent.xml @@ -13,7 +13,7 @@
  • - + true (255,255,255,255) (157,201,185,195) @@ -23,24 +23,6 @@
  • -
  • - 增援 - 乌拉帝国 行星封锁机关的一支分队正在接近。 - 10000 - Wula_PIA_Legion_Faction - ImmediateAttack - EdgeDrop - Combat - -
  • - Combat - 100 - - 10 - -
  • - - @@ -91,4 +73,4 @@
    - + \ No newline at end of file diff --git a/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml b/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml index 5f8a0e91..5a023ae6 100644 --- a/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml +++ b/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml @@ -180,6 +180,17 @@ 8 1 + +
  • + WULA_GiveQuest_Intro_Spy + 6 + +
  • WULA_Awakened_Synth
  • + + + \ No newline at end of file diff --git a/Source/WulaFallenEmpire/Storyteller/StorytellerComp_SingleOnceFixed_FactionFilter.cs b/Source/WulaFallenEmpire/Storyteller/StorytellerComp_SingleOnceFixed_FactionFilter.cs new file mode 100644 index 00000000..685fe4d9 --- /dev/null +++ b/Source/WulaFallenEmpire/Storyteller/StorytellerComp_SingleOnceFixed_FactionFilter.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using RimWorld; +using Verse; + +namespace WulaFallenEmpire +{ + public class StorytellerComp_SingleOnceFixed_FactionFilter : StorytellerComp_SingleOnceFixed + { + private StorytellerCompProperties_SingleOnceFixed_FactionFilter PropsFilter => (StorytellerCompProperties_SingleOnceFixed_FactionFilter)props; + + public override IEnumerable MakeIntervalIncidents(IIncidentTarget target) + { + // 检查派系过滤条件 + if (!CheckFactionFilter()) + { + yield break; + } + + // 调用父类的逻辑 + foreach (var incident in base.MakeIntervalIncidents(target)) + { + yield return incident; + } + } + + private bool CheckFactionFilter() + { + if (Faction.OfPlayer == null) + return false; + + var playerFactionDef = Faction.OfPlayer.def; + + // 优先检查白名单:如果白名单有内容,只有白名单内的派系才能触发 + if (PropsFilter.allowedFactionTypes != null && PropsFilter.allowedFactionTypes.Count > 0) + { + return PropsFilter.allowedFactionTypes.Contains(playerFactionDef); + } + + // 然后检查黑名单:如果黑名单有内容,黑名单内的派系不能触发 + if (PropsFilter.excludedFactionTypes != null && PropsFilter.excludedFactionTypes.Count > 0) + { + return !PropsFilter.excludedFactionTypes.Contains(playerFactionDef); + } + + // 如果既没有白名单也没有黑名单,所有派系都能触发 + return true; + } + } + + public class StorytellerCompProperties_SingleOnceFixed_FactionFilter : StorytellerCompProperties_SingleOnceFixed + { + // 黑名单:这些派系类型不会触发事件 + public List excludedFactionTypes; + + // 白名单:只有这些派系类型会触发事件(优先级高于黑名单) + public List allowedFactionTypes; + + public StorytellerCompProperties_SingleOnceFixed_FactionFilter() + { + compClass = typeof(StorytellerComp_SingleOnceFixed_FactionFilter); + } + } +} diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj index 357129fe..ff80bf29 100644 --- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj +++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj @@ -207,6 +207,7 @@ +