This commit is contained in:
2025-10-16 17:25:29 +08:00
parent e42c88ef5a
commit ca1b2744de
6 changed files with 70 additions and 12 deletions

View File

@@ -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": ""

View File

@@ -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}");
}
}
// 可选:重写其他方法以提供更好的调试信息

View File

@@ -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> pawnComposition;
public List<PawnsArrivalModeDef> possibleArrivalModes;
public override IEnumerable<string> ConfigErrors()
{
foreach (string error in base.ConfigErrors())