diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index fffe6fb..e6dc5e6 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/HiveRaidDef/ARA_CustomRaidDef.xml b/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml index 9ef4f2f..2825e0b 100644 --- a/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml +++ b/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml @@ -1,8 +1,8 @@ - + - ARA_Stage1_Raid + ARA_SpecialAttack ARA_Hostile_Hive
  • @@ -56,6 +56,9 @@ ARA_Wave_Scout_Patrol 一支小型侦察队伍,主要由远程单位组成,进行骚扰射击 + +
  • CenterDrop
  • +
  • ARA_Raid_Shooter @@ -77,6 +80,9 @@ ARA_Wave_Assault_Team 以近战单位为主的快速突击队伍,擅长冲锋陷阵 + +
  • CenterDrop
  • +
  • ARA_Raid_Assault @@ -98,6 +104,9 @@ ARA_Wave_Acid_Swarm 大量酸噬种辅虫组成的虫海战术,数量庞大但个体脆弱 + +
  • CenterDrop
  • +
  • ARA_Raid_AcidSwarm @@ -119,6 +128,9 @@ ARA_Wave_Heavy_Defense 以盾头种为主的防御型队伍,移动缓慢但防御力强 + +
  • CenterDrop
  • +
  • ARA_Raid_Heavy @@ -140,13 +152,15 @@ 8
  • - Defensive ARA_Wave_Mixed_Forces 均衡配置的混合部队,包含各种单位类型 + +
  • CenterDrop
  • +
  • ARA_Raid_Assault @@ -174,7 +188,6 @@ true
  • - Balanced
    diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index c151d56..4c5d520 100644 Binary files a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo and b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo differ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json index 1c86b0f..9e1b40a 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -5,6 +5,10 @@ { "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\storyteller\\incidentworker_customraid.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:storyteller\\incidentworker_customraid.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\storyteller\\raidwavedef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:storyteller\\raidwavedef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -14,21 +18,34 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "RaidWaveDef.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\RaidWaveDef.cs", + "RelativeDocumentMoniker": "Storyteller\\RaidWaveDef.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\RaidWaveDef.cs*", + "RelativeToolTip": "Storyteller\\RaidWaveDef.cs*", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA9AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-10-16T09:14:26.956Z", + "EditorCaption": "" + }, { "$type": "Document", "DocumentIndex": 0, "Title": "IncidentWorker_CustomRaid.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs", "RelativeDocumentMoniker": "Storyteller\\IncidentWorker_CustomRaid.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs", - "RelativeToolTip": "Storyteller\\IncidentWorker_CustomRaid.cs", - "ViewState": "AgIAAAYBAAAAAAAAAAAgwBYBAAAyAAAAAAAAAA==", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs*", + "RelativeToolTip": "Storyteller\\IncidentWorker_CustomRaid.cs*", + "ViewState": "AgIAAHgBAAAAAAAAAAA1wJIBAAAfAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-10-16T07:14:58.682Z", "EditorCaption": "" diff --git a/Source/ArachnaeSwarm/Storyteller/IncidentWorker_CustomRaid.cs b/Source/ArachnaeSwarm/Storyteller/IncidentWorker_CustomRaid.cs index 2f13f16..affe99c 100644 --- a/Source/ArachnaeSwarm/Storyteller/IncidentWorker_CustomRaid.cs +++ b/Source/ArachnaeSwarm/Storyteller/IncidentWorker_CustomRaid.cs @@ -381,9 +381,35 @@ namespace ArachnaeSwarm Log.Message($"Raid arrival mode already set: {parms.raidArrivalMode.defName}"); return; } - // 对于自定义袭击,默认使用边缘进入 - parms.raidArrivalMode = PawnsArrivalModeDefOf.EdgeWalkIn; - Log.Message($"Set raid arrival mode: {parms.raidArrivalMode.defName}"); + // 从自定义波次定义中获取进场方式 + RaidWaveDef waveDef = parms.GetCustomRaidWave(); + if (waveDef != null) + { + // 如果波次定义了多个可能的进场方式 + if (waveDef.possibleArrivalModes != null && waveDef.possibleArrivalModes.Count > 0) + { + PawnsArrivalModeDef selectedMode; + selectedMode = waveDef.possibleArrivalModes.RandomElement(); + + parms.raidArrivalMode = selectedMode; + Log.Message($"Set random raid arrival mode from waveDef: {parms.raidArrivalMode.defName}"); + return; + } + } + // 回退到派系特定的逻辑 + Faction faction = parms.faction; + if (faction?.def?.defName == "ARA_Hostile_Hive") + { + // 阿拉克涅虫群默认使用空投 + parms.raidArrivalMode = PawnsArrivalModeDefOf.CenterDrop; + Log.Message($"Set ARA_Hostile_Hive default raid arrival mode: {parms.raidArrivalMode.defName}"); + } + else + { + // 默认使用边缘进入 + parms.raidArrivalMode = PawnsArrivalModeDefOf.EdgeWalkIn; + Log.Message($"Set default raid arrival mode: {parms.raidArrivalMode.defName}"); + } } // 可选:重写其他方法以提供更好的调试信息 diff --git a/Source/ArachnaeSwarm/Storyteller/RaidWaveDef.cs b/Source/ArachnaeSwarm/Storyteller/RaidWaveDef.cs index 800508b..321b9d9 100644 --- a/Source/ArachnaeSwarm/Storyteller/RaidWaveDef.cs +++ b/Source/ArachnaeSwarm/Storyteller/RaidWaveDef.cs @@ -1,3 +1,4 @@ +using RimWorld; using System.Collections.Generic; using Verse; @@ -6,7 +7,8 @@ namespace ArachnaeSwarm public class RaidWaveDef : Def { public List pawnComposition; - + public List possibleArrivalModes; + public override IEnumerable ConfigErrors() { foreach (string error in base.ConfigErrors())