修改美容觉茧

This commit is contained in:
Tourswen
2025-09-24 23:42:16 +08:00
parent 992d1be5f1
commit 5c2de652b9
25 changed files with 318 additions and 270 deletions

View File

@@ -2,37 +2,13 @@
"Version": 1,
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_catastrophemissilesilo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_catastrophemissilesilo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\building_comps\\ara_nutrientvat\\building_nutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_nutrientvat\\building_nutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\wormhole\\complaunchablewormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:wormhole\\complaunchablewormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\wormhole\\building_wormholeportal_b.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:wormhole\\building_wormholeportal_b.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\wormhole\\travelingwormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:wormhole\\travelingwormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\wormhole\\jobdriver_deploywormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:wormhole\\jobdriver_deploywormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\wormhole\\defmodextension_travelingwormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:wormhole\\defmodextension_travelingwormhole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\wormhole\\building_wormholeportal_a.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:wormhole\\building_wormholeportal_a.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -51,99 +27,28 @@
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "ARA_HediffDefOf.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
"RelativeDocumentMoniker": "ARA_HediffDefOf.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
"RelativeToolTip": "ARA_HediffDefOf.cs",
"ViewState": "AgIAAAAAAAAAAAAAAADwvwcAAAAnAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-24T14:28:58.313Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Building_NutrientVat.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"RelativeToolTip": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAQBAABVAAAAAAAAAA==",
"ViewState": "AgIAAFkAAAAAAAAAAAASwIsAAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T16:34:34.794Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Building_CatastropheMissileSilo.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CatastropheMissileSilo.cs",
"RelativeDocumentMoniker": "Buildings\\Building_CatastropheMissileSilo.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CatastropheMissileSilo.cs",
"RelativeToolTip": "Buildings\\Building_CatastropheMissileSilo.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAACQAAABJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T16:30:21.768Z",
"WhenOpened": "2025-09-23T16:34:34.794Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "TravelingWormhole.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\TravelingWormhole.cs",
"RelativeDocumentMoniker": "Wormhole\\TravelingWormhole.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\TravelingWormhole.cs",
"RelativeToolTip": "Wormhole\\TravelingWormhole.cs",
"ViewState": "AgIAABYAAAAAAAAAAAAywBQAAAA0AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T14:38:30.02Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "JobDriver_DeployWormhole.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\JobDriver_DeployWormhole.cs",
"RelativeDocumentMoniker": "Wormhole\\JobDriver_DeployWormhole.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\JobDriver_DeployWormhole.cs",
"RelativeToolTip": "Wormhole\\JobDriver_DeployWormhole.cs",
"ViewState": "AgIAAAAAAAAAAAAAAADwvxQAAAAdAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T14:38:27.332Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "Building_WormholePortal_B.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\Building_WormholePortal_B.cs",
"RelativeDocumentMoniker": "Wormhole\\Building_WormholePortal_B.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\Building_WormholePortal_B.cs",
"RelativeToolTip": "Wormhole\\Building_WormholePortal_B.cs",
"ViewState": "AgIAAE0AAAAAAAAAAAAmwGcAAAAYAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T14:37:57.528Z"
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "DefModExtension_TravelingWormhole.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\DefModExtension_TravelingWormhole.cs",
"RelativeDocumentMoniker": "Wormhole\\DefModExtension_TravelingWormhole.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\DefModExtension_TravelingWormhole.cs",
"RelativeToolTip": "Wormhole\\DefModExtension_TravelingWormhole.cs",
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T14:38:25.789Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "CompLaunchableWormhole.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\CompLaunchableWormhole.cs",
"RelativeDocumentMoniker": "Wormhole\\CompLaunchableWormhole.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\CompLaunchableWormhole.cs",
"RelativeToolTip": "Wormhole\\CompLaunchableWormhole.cs",
"ViewState": "AgIAAAoAAAAAAAAAAIA2wCEAAABYAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T14:38:20.681Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "Building_WormholePortal_A.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\Building_WormholePortal_A.cs",
"RelativeDocumentMoniker": "Wormhole\\Building_WormholePortal_A.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Wormhole\\Building_WormholePortal_A.cs",
"RelativeToolTip": "Wormhole\\Building_WormholePortal_A.cs",
"ViewState": "AgIAAIUAAAAAAAAAAAAIwJgAAAA5AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-23T14:28:58.917Z"
}
]
}

View File

@@ -0,0 +1,19 @@
using RimWorld;
using Verse;
using Verse.Sound;
namespace ArachnaeSwarm
{
[DefOf]
public static class ARA_HediffDefOf
{
public static HediffDef ARA_AcidCoverd;
public static HediffDef ARA_HiveMindMaster;
public static HediffDef ARA_HiveMindDrone;
public static HediffDef ARA_HiveMindWorker;
static ARA_HediffDefOf()
{
DefOfHelper.EnsureInitializedInCtor(typeof(HediffDefOf));
}
}
}

View File

@@ -95,6 +95,7 @@
<Compile Include="Abilities\TrackingCharge\CompProperties_TrackingCharge.cs" />
<Compile Include="Abilities\TrackingCharge\PawnFlyer_TrackingCharge.cs" />
<Compile Include="Abilities\TrackingCharge\Verb_CastAbilityTrackingCharge.cs" />
<Compile Include="ARA_HediffDefOf.cs" />
<Compile Include="Building_Comps\ARA_BuildingTerrainSpawn\CompDelayedTerrainSpawn.cs" />
<Compile Include="Building_Comps\ARA_BuildingTerrainSpawn\CompProperties_DelayedTerrainSpawn.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\CompInteractiveProducer.cs" />

View File

@@ -23,7 +23,7 @@ namespace ArachnaeSwarm
StringBuilder sb = new StringBuilder();
float efficiency = Mathf.Clamp(parent.GetStatValue(StatDef.Named("NutrientTransmissionEfficiency")), 0f, Props.maxEfficiency);
sb.AppendLine("生物质传输效率".Translate() + ": " + efficiency.ToStringPercent());
sb.AppendLine("生物质传输效率".Translate() + ": +" + efficiency.ToStringPercent());
sb.AppendLine("链接的建筑".Translate() + ":");

View File

@@ -1,5 +1,7 @@
using RimWorld;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using Verse;
@@ -104,6 +106,52 @@ namespace ArachnaeSwarm
base.DeSpawn(mode);
}
//修改点:对里面的人员进行酸蚀伤害
private Dictionary<Pawn, int> pawnTickCounters = new Dictionary<Pawn, int>();
private BodyPartRecord GetRandomBodyPart(Pawn pawn)
{
var parts = pawn.health.hediffSet.GetNotMissingParts().ToList();
return parts.Count > 0 ? parts.RandomElement() : pawn.RaceProps.body.corePart;
}
private void ApplyAcidDamage(Pawn pawn)
{
try
{
BodyPartRecord targetPart = GetRandomVulnerablePart(pawn);
DamageDef acidDamageDef = DefDatabase<DamageDef>.GetNamed("AcidBurn") ?? DamageDefOf.Burn;
DamageInfo acidDamage = new DamageInfo(
acidDamageDef,
1f, // 每次1点伤害
0.1f, // 轻微护甲穿透
-1f, // 随机角度
instigator: null,
hitPart: targetPart
);
// 应用伤害
pawn.TakeDamage(acidDamage);
}
catch (Exception ex)
{
Log.Error($"Error applying acid damage to {pawn}: {ex.Message}");
}
}
private BodyPartRecord GetRandomVulnerablePart(Pawn pawn)
{
// 优先选择外部身体部位
var vulnerableParts = pawn.health.hediffSet.GetNotMissingParts()
.Where(part => part.depth == BodyPartDepth.Outside &&
!part.def.conceptual &&
part.def.hitPoints > 0)
.ToList();
return vulnerableParts.Count > 0 ?
vulnerableParts.RandomElement() :
pawn.RaceProps.body.corePart;
}
protected override void Tick()
{
base.Tick();
@@ -116,6 +164,31 @@ namespace ArachnaeSwarm
if (base.Working && selectedPawn != null)
{
//修改点:对里面的人员进行酸蚀伤害
if (pawnTickCounters.TryGetValue(selectedPawn, out int tickCount))
{
tickCount++;
pawnTickCounters[selectedPawn] = tickCount;
if (tickCount >= 6000)
{
DamageInfo acidDamage = new DamageInfo(
DefDatabase<DamageDef>.GetNamed("AcidBurn") ?? DamageDefOf.Burn,
1f,
100f, // 完全护甲穿透
-1f,
instigator: null,
hitPart: GetRandomBodyPart(selectedPawn)
);
pawnTickCounters[selectedPawn] = 0;
ApplyAcidDamage(selectedPawn);
}
}
else
{
pawnTickCounters[selectedPawn] = 0;
}
// Update BioStarvation
float biostarvationOffset = BiostarvationDailyOffset / 60000f * HediffDefOf.BioStarvation.maxSeverity;
Hediff biostarvation = selectedPawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.BioStarvation);
@@ -169,6 +242,11 @@ namespace ArachnaeSwarm
{
return "PawnBiostarving".Translate(pawn.Named("PAWN"));
}
//修改点:禁止置入虫群成员
if (pawn.health.hediffSet.HasHediff(ARA_HediffDefOf.ARA_HiveMindMaster) || pawn.health.hediffSet.HasHediff(ARA_HediffDefOf.ARA_HiveMindDrone) ||pawn.health.hediffSet.HasHediff(ARA_HediffDefOf.ARA_HiveMindWorker))
{
return "PawnIsHiveMember".Translate(pawn.Named("PAWN"));
}
return pawn.IsColonist && !pawn.IsQuestLodger();
}
@@ -235,40 +313,40 @@ namespace ArachnaeSwarm
{
yield return gizmo;
}
//修改点:删除了弹出功能
if (base.Working)
{
yield return new Command_Action
{
defaultLabel = "CommandCancelGrowth".Translate(), // Label can be changed
defaultDesc = "CommandCancelGrowthDesc".Translate(), // Desc can be changed
icon = ContentFinder<Texture2D>.Get("UI/Designators/Cancel"),
action = () =>
{
Finish();
innerContainer.TryDropAll(InteractionCell, base.Map, ThingPlaceMode.Near);
}
};
//yield return new Command_Action
//{
// defaultLabel = "CommandCancelGrowth".Translate(), // Label can be changed
// defaultDesc = "CommandCancelGrowthDesc".Translate(), // Desc can be changed
// icon = ContentFinder<Texture2D>.Get("UI/Designators/Cancel"),
// action = () =>
// {
// Finish();
// innerContainer.TryDropAll(InteractionCell, base.Map, ThingPlaceMode.Near);
// }
//};
}
else
{
if (selectedPawn != null)
{
yield return new Command_Action
{
defaultLabel = "CommandCancelLoad".Translate(),
defaultDesc = "CommandCancelLoadDesc".Translate(),
icon = ContentFinder<Texture2D>.Get("UI/Designators/Cancel"),
action = () =>
{
if (selectedPawn?.CurJobDef == JobDefOf.EnterBuilding)
{
selectedPawn.jobs.EndCurrentJob(JobCondition.InterruptForced);
}
OnStop();
}
};
}
//if (selectedPawn != null)
//{
// yield return new Command_Action
// {
// defaultLabel = "CommandCancelLoad".Translate(),
// defaultDesc = "CommandCancelLoadDesc".Translate(),
// icon = ContentFinder<Texture2D>.Get("UI/Designators/Cancel"),
// action = () =>
// {
// if (selectedPawn?.CurJobDef == JobDefOf.EnterBuilding)
// {
// selectedPawn.jobs.EndCurrentJob(JobCondition.InterruptForced);
// }
// OnStop();
// }
// };
//}
var command_Action = new Command_Action
{