From cc5206c3c6ffc2b2f82d460a5b86fba88c4e3adc Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Wed, 10 Sep 2025 12:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 180736 -> 190976 bytes .../Defs/HediffDefs/ARA_Hediffs_Damage.xml | 137 ------- .../ARA_Hediffs_Mutants_Configurable.xml | 249 ++++++++++++ .../Defs/ThingDef_Races/ARA_RaceMutant.xml | 36 +- .../Defs/Thing_Misc/Weapons/ARA_Weapon.xml | 64 +++ Source/ArachnaeSwarm/ArachnaeSwarm.csproj | 1 + .../HediffComp_NecroticTransformation.cs | 3 + .../Hediff_ConfigurableMutant.cs | 374 ++++++++++++++++++ .../Hediff_NecroticVirus_Configurable.cs | 11 +- .../NecroticTransformationUtility.cs | 34 +- 10 files changed, 760 insertions(+), 149 deletions(-) create mode 100644 1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants_Configurable.xml create mode 100644 Source/ArachnaeSwarm/Hediff_ConfigurableMutant.cs diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 9c8e840e004fee09748949361b4ea0508fdf6afe..ccf51d0dd69eaf20f787e727f3dd5d268a4c0d07 100644 GIT binary patch delta 63826 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 S%9m_S^;y4RKT^*C!~X$}*NANZ diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml index fabf12f..d23ca6d 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml @@ -197,142 +197,5 @@ - - ARA_MimicNematode - - 被阿拉克涅拟线种虫族寄生了,如果不加以干预,拟线虫最终会杀死宿主并将其转化为没有意识的寄生体。拟线虫会通过寄生体的攻击行为感染其他躯体。 - - ArachnaeSwarm.Hediff_NecroticVirus - (0.6, 0.4, 0.8) - - true - 1.0 - 1.0 - 0.001 - 0.001 - false - - -

  • - - false - 5 -
  • -
  • - - 0.5 - 1 - 0.5 - false - -
  • - Talking - 0 -
  • - - -
  • - - 0.7 - 0.5 - 0 - true - true - -
  • - Talking - 0 -
  • -
  • - Consciousness - 0.7 -
  • - - -
  • - - 0.9 - 0.5 - 2.0 - true - true - -
  • - Talking - 0 -
  • -
  • - Consciousness - 0.1 -
  • - - - - true - - -
  • - 0.3 -
  • -
  • - -1 - 24 -
  • -
  • - 1800000~2400000 - true -
  • -
  • - - - Shambler -
  • -
    - - -
  • - - ARA_MimicNematode - - - true - 0.05 - ARA_MimicNematodeBite -
  • -
    - - - - - ARA_CureBloodRot - - 通过多种药物联合靶向治疗清除患者体内的阿拉克涅拟线种虫族感染。 - Recipe_RemoveHediff - 清除拟线虫感染. - 2000 - true - false - false - ARA_MimicNematode - {0} 成功清除了 {1} 体内的拟线虫感染. - - 5 - - -
  • - - -
  • MedicineUltratech
  • - - - 10 - -
    - - -
  • Medicine
  • -
    -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants_Configurable.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants_Configurable.xml new file mode 100644 index 0000000..4e7ec6a --- /dev/null +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants_Configurable.xml @@ -0,0 +1,249 @@ + + + + + ARA_MimicNematode + + 被阿拉克涅拟线种虫族寄生了,如果不加以干预,拟线虫最终会杀死宿主并将其转化为没有意识的寄生体。拟线虫会通过寄生体的攻击行为感染其他躯体。 + + + ArachnaeSwarm.Hediff_NecroticVirus + (0.6, 0.4, 0.8) + + true + 1.0 + 1.0 + 0.001 + 0.001 + false + + +
  • + + false + 5 +
  • +
  • + + 0.5 + 1 + 0.5 + false + +
  • + Talking + 0 +
  • + + +
  • + + 0.7 + 0.5 + 0 + true + true + +
  • + Talking + 0 +
  • +
  • + Consciousness + 0.7 +
  • + + 50 + +
  • + + 0.9 + 0.5 + 2.0 + true + true + +
  • + Talking + 0 +
  • +
  • + Consciousness + 0.1 +
  • + + 50 + +
    + true + + +
  • + 0.3 +
  • +
  • + -1 + 24 +
  • +
  • + 1800000~2400000 + true +
  • +
  • + + + ARA_MimicNematodeShambler + 0.7 +
  • +
    + + +
  • + + ARA_MimicNematode + + + true + 0.05 + ARA_MimicNematodeBite +
  • +
    + +
    + + + ARA_CureBloodRot + + 通过多种药物联合靶向治疗清除患者体内的阿拉克涅拟线种虫族感染。 + Recipe_RemoveHediff + 清除拟线虫感染. + 2000 + true + false + false + ARA_MimicNematode + {0} 成功清除了 {1} 体内的拟线虫感染. + + 5 + + +
  • + + +
  • MedicineUltratech
  • + + + 10 + +
    + + +
  • Medicine
  • +
    +
    +
    + + + + ARA_MimicNematodeShambler + + 这具尸体被一种阿拉克涅拟线虫所寄生并重新激活。被寄生的生物行动迟缓、没有心智,只会无情地攻击任何活物。在活动几天后,寄生体将因宿主新陈代谢衰竭而死亡。被捕获并固定后,寄生体无法移动,因此其生命活动会暂停。 + ArachnaeSwarm.Hediff_ConfigurableMutant + (0.6, 0.4, 0.8) + false + false + True + +
  • + 0 + 0 + + 1.5 + 0 + + + -60 + 30 + 25 + 1 + + +
  • Talking0
  • +
  • Consciousness0.7
  • + + 200 + +
    + + +
  • + HediffComp_DisappearsAndKills_Shambler + 1800000~2400000 + true +
  • +
  • +
  • + + +
  • + + ARA_Rising + ARA_MimicNematodeShamblerShamblerCorpse + + + 0 + 0 +
  • +
    +
    + + + + + + + ARA_Rising + + 阿拉克涅拟线虫寄生赋予的强大再生能力正在复苏这具身体。 + false + false + (0.6, 0.4, 0.8) + +
  • + 0 + +
  • Moving0
  • +
  • Manipulation0
  • +
  • Talking0
  • +
  • Consciousness0.1
  • + + +
    +
    + + + ARA_MimicNematodeShamblerShamblerCorpse + + 这具身体刚刚被阿拉克涅拟线种寄生"复活"过。 + true + (0.6, 0.4, 0.8) + +
  • + Shambler wounds + PawnRenderNodeWorker_OverlayShambler + Body + 20 + HumanlikeOnly +
  • +
  • + Shambler wounds + PawnRenderNode_AnimalPart + PawnRenderNodeWorker_OverlayShambler + Body + 20 + NonHumanlikeOnly +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceMutant.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceMutant.xml index 2b5799a..d567d28 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceMutant.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceMutant.xml @@ -3,14 +3,14 @@ ARA_MimicNematodeShambler - - A creature who has been raised from the dead by corrupted nano-scale archites.\n\nAbout shamblers: Shamblers are corpses which have been reanimated by archotechnology. They attack living creatures relentlessly and their immunity to pain makes them difficult to kill. However, the archites which animate them cannot sustain the rotting body for long, so shamblers expire after a few days of movement.\n\nThere are ways to raise your own shamblers and make yourself invisible to them, so they attack only outsiders. - Shambler + + 阿拉克涅拟线种是虫群中最神秘的分支之一。它们与原虫种同源,但在进化之路上并未发展出高级智慧,而是走向了一条截然不同的道路:寄生。拟线种是无法脱离宿主独立存活的寄生虫。一旦寄生于生物体内,它们会长期潜伏,最终逐步接管宿主的神经与代谢系统,将其变为受其操控的行尸走肉——“寄生体”。得益于超凡的细胞复制与再生能力,拟线种能够模仿并替代宿主的细胞结构,这使得寄生体拥有了惊人的自我修复能力。然而,这种寄生关系也极具侵略性:拟线种的虫卵遍布寄生体体表,任何被寄生体攻击的生物都有可能被感染,最终沦为新的寄生体。尽管拟线虫将寄生体的新陈代谢维持在极低水平,但寄生体本身并不会主动觅食。因此,当能量耗尽后,它们终将迎来“死亡”。 + ARA_MimicNematodeShambler Shambler ShamblerConstant true - shambler - true + 拟线种寄生体 + false true Filth_DarkBlood Filth_DarkBloodSmear @@ -34,7 +34,7 @@ (0.3, 0.3, 0.0, 1.0) 0 Basic - Shambler + 0.25 Pawn_Shambler_Call @@ -64,7 +64,7 @@
  • -
  • Bite
  • +
  • ARA_MimicNematodeShamblerBite
  • 8.2 2 @@ -100,14 +100,32 @@
    + + ARA_MimicNematodeShamblerBite + + + + ARA_MimicNematodeShamblerBite + ARA_MimicNematodeShamblerBite + + Verb_MeleeAttackDamage + ARA_MimicNematodeBite + + MeleeAttack + Maneuver_Slash_MeleeHit + Maneuver_Slash_MeleeDeflect + Maneuver_Slash_MeleeMiss + Maneuver_Slash_MeleeDodge + + - Shambler + ARA_MimicNematodeShambler false ARA_MimicNematodeShamblerSwarmer - + 40 0.2~0.4 Poor diff --git a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml index e54884e..1fbb4db 100644 --- a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml +++ b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml @@ -564,4 +564,68 @@ + + + ARA_MW_Mimic_Niddle + + 阿拉克涅虫群督虫使用基础近战武装器官,通过多根外露神经束与督虫的辅肢相连。这根毒针中藏有休眠中的阿拉克涅拟线种虫卵,攻击将感染受害者使其最终成为被拟线虫操控的寄生体。 + +
  • ARA_Armed_Organ
  • +
  • ARA_Armed_Organ_Melee
  • +
  • ARA_Armed_Organ_T1
  • +
    + + ArachnaeSwarm/Weapon/ARA_MW_Bone_Sword + Graphic_Single + CutoutComplex + 1 + + 1 + + Animal + + 0 + + + 50 + + + 1000 + 5 + + +
  • + + +
  • Cut
  • + + 15 + 1.3 + 0.50 + +
  • + + +
  • Poke
  • + + 12 + 0.20 + 1.5 + +
  • + ARA_MimicNematodeBite + 4 +
  • +
    + +
    + + + + UnfinishedWeapon + + +
  • RewardStandardQualitySuper
  • +
    +
    \ No newline at end of file diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index fc3601e..c6152d2 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -189,6 +189,7 @@ + diff --git a/Source/ArachnaeSwarm/HediffComp_NecroticTransformation.cs b/Source/ArachnaeSwarm/HediffComp_NecroticTransformation.cs index ac96aa0..6219903 100644 --- a/Source/ArachnaeSwarm/HediffComp_NecroticTransformation.cs +++ b/Source/ArachnaeSwarm/HediffComp_NecroticTransformation.cs @@ -10,6 +10,9 @@ namespace ArachnaeSwarm { // 在XML中需要指定的MutantDef的defName public MutantDef mutantDef; + + // 在XML中配置触发转变所需的严重性阈值 + public float triggerSeverity = 0.7f; public HediffCompProperties_NecroticTransformation() { diff --git a/Source/ArachnaeSwarm/Hediff_ConfigurableMutant.cs b/Source/ArachnaeSwarm/Hediff_ConfigurableMutant.cs new file mode 100644 index 0000000..6498f1a --- /dev/null +++ b/Source/ArachnaeSwarm/Hediff_ConfigurableMutant.cs @@ -0,0 +1,374 @@ +using System.Collections.Generic; +using RimWorld; +using UnityEngine; +using Verse; +using Verse.AI; +using Verse.AI.Group; +using Verse.Sound; + +namespace ArachnaeSwarm +{ + public class HediffCompProperties_ConfigurableMutant : HediffCompProperties + { + // --- 可配置的Hediff --- + public HediffDef risingHediff; + public HediffDef corpseHediff; + + // --- 可配置的时间和范围 --- + public FloatRange resurrectionSecondsRange = new FloatRange(5f, 10f); + public FloatRange stunSecondsRange = new FloatRange(1f, 3f); + public FloatRange alertSecondsRange = new FloatRange(0.5f, 3f); + public IntRange selfRaiseHoursRange = new IntRange(3, 4); + public IntRange checkForTargetTicksInterval = new IntRange(900, 1800); + + // --- 可配置的杂项值 --- + public float particleSpawnMTBSeconds = 1f; + public float extinguishFireMTB = 45f; + public float bioferriteOnDeathChance = 0.04f; + public int bioferriteAmountOnDeath = 10; + + public HediffCompProperties_ConfigurableMutant() + { + this.compClass = typeof(HediffComp_ConfigurableMutant); + } + } + + public class HediffComp_ConfigurableMutant : HediffComp + { + public HediffCompProperties_ConfigurableMutant Props => (HediffCompProperties_ConfigurableMutant)this.props; + } + + public class Hediff_ConfigurableMutant : HediffWithComps + { + // 运行时状态字段,保持不变 + public float headRotation; + private float resurrectTimer; + private float selfRaiseTimer; + private float alertTimer; + private int nextTargetCheckTick = -99999; + private Thing alertedTarget; + private Effecter riseEffecter; + private Sustainer riseSustainer; + private float corpseDamagePct = 1f; + + private HediffComp_ConfigurableMutant PropsComp => this.TryGetComp(); + + public bool IsRising => PropsComp?.Props.risingHediff != null && pawn.health.hediffSet.HasHediff(PropsComp.Props.risingHediff); + + public override void PostMake() + { + base.PostMake(); + headRotation = Rand.RangeSeeded(-20f, 20f, pawn.thingIDNumber); + if (!pawn.Dead) + { + pawn.timesRaisedAsShambler++; + } + } + + public override void PostAdd(DamageInfo? dinfo) + { + if (!ModLister.CheckAnomaly("Shambler")) + { + pawn.health.RemoveHediff(this); + } + else + { + base.PostAdd(dinfo); + } + } + + public override void Notify_Spawned() + { + base.Notify_Spawned(); + pawn.Map.mapPawns.RegisterShambler(pawn); + } + + public override void TickInterval(int delta) + { + base.TickInterval(delta); + var compProps = PropsComp?.Props; + if (compProps == null) return; // 如果没有Comp,则不执行任何操作 + + if (IsRising) + { + if ((float)Find.TickManager.TicksGame > resurrectTimer) + { + FinishRising(); + } + if (!pawn.Spawned) return; + + if ((float)Find.TickManager.TicksGame > resurrectTimer - 15f) + { + riseSustainer?.End(); + } + else if (IsRising) + { + if (riseSustainer == null || riseSustainer.Ended) + { + riseSustainer = SoundDefOf.Pawn_Shambler_Rise.TrySpawnSustainer(SoundInfo.InMap(pawn, MaintenanceType.PerTick)); + } + if (riseEffecter == null) + { + riseEffecter = EffecterDefOf.ShamblerRaise.Spawn(pawn, pawn.Map); + } + if (pawn.Drawer.renderer.CurAnimation != AnimationDefOf.ShamblerRise) + { + pawn.Drawer.renderer.SetAnimation(AnimationDefOf.ShamblerRise); + } + riseSustainer.Maintain(); + riseEffecter.EffectTick(pawn, TargetInfo.Invalid); + } + return; + } + + if (Rand.MTBEventOccurs(compProps.particleSpawnMTBSeconds, 60f, 1f)) + { + FleckMaker.ThrowShamblerParticles(pawn); + } + if (pawn.IsBurning() && !pawn.Downed && Rand.MTBEventOccurs(compProps.extinguishFireMTB, 60f, 1f)) + { + ((Fire)pawn.GetAttachment(ThingDefOf.Fire))?.Destroy(); + pawn.records.Increment(RecordDefOf.FiresExtinguished); + } + if (pawn.Spawned && pawn.mutant != null && !pawn.mutant.IsPassive && !pawn.Drafted) + { + if (Find.TickManager.TicksGame > nextTargetCheckTick) + { + nextTargetCheckTick = Find.TickManager.TicksGame + compProps.checkForTargetTicksInterval.RandomInRange; + Thing thing = MutantUtility.FindShamblerTarget(pawn); + if (thing != null) + { + Notify_DelayedAlert(thing); + MutantUtility.ActivateNearbyShamblers(pawn, thing); + } + } + if (alertedTarget != null && (float)Find.TickManager.TicksGame > alertTimer) + { + pawn.mindState.enemyTarget = alertedTarget; + pawn.mindState.lastEngageTargetTick = Find.TickManager.TicksGame; // 直接给public字段赋值,绕过internal方法 + pawn.jobs.EndCurrentJob(JobCondition.InterruptForced); + alertedTarget = null; + if (DebugViewSettings.drawShamblerAlertMote) + { + MoteMaker.MakeColonistActionOverlay(pawn, ThingDefOf.Mote_ShamblerAlert); + } + SoundDefOf.Pawn_Shambler_Alert.PlayOneShot(pawn); + } + } + if (ShouldSelfRaise()) + { + StartRising(); + } + } + + private bool ShouldSelfRaise() + { + if (pawn.DevelopmentalStage == DevelopmentalStage.Baby) return false; + return pawn.Downed && pawn.CarriedBy == null && (float)Find.TickManager.TicksGame > selfRaiseTimer; + } + + public void StartRising(int lifespanTicks = -1) + { + var compProps = PropsComp?.Props; + if (compProps?.risingHediff == null) + { + Log.Error($"[ConfigurableMutant] risingHediff is not defined in XML for {this.def.defName}"); + return; + } + + if (!pawn.Dead && !pawn.Downed) + { + Log.Error("Tried to raise non dead/downed pawn as shambler"); + if(pawn.mutant != null) pawn.mutant.Turn(clearLord: true); + return; + } + + MutantUtility.RestoreBodyParts(pawn); + pawn.Notify_DisabledWorkTypesChanged(); + + if (!pawn.Dead || ResurrectionUtility.TryResurrect(pawn, new ResurrectionParams { noLord = true, restoreMissingParts = false, removeDiedThoughts = false })) + { + pawn.jobs?.EndCurrentJob(JobCondition.InterruptForced); + resurrectTimer = Find.TickManager.TicksGame + compProps.resurrectionSecondsRange.RandomInRange.SecondsToTicks(); + pawn.health.AddHediff(compProps.risingHediff); + } + } + + private void CancelRising() + { + var risingHediff = PropsComp?.Props.risingHediff; + if (risingHediff == null) return; + + riseSustainer?.End(); + resurrectTimer = -99999f; + if (pawn.health.hediffSet.TryGetHediff(risingHediff, out var hediff)) + { + pawn.health.RemoveHediff(hediff); + } + if (!pawn.Dead) + { + pawn.Kill(null, null); + } + } + + private void FinishRising(bool stun = true) + { + var compProps = PropsComp?.Props; + if (compProps?.risingHediff != null && pawn.health.hediffSet.TryGetHediff(compProps.risingHediff, out var hediff)) + { + pawn.health.RemoveHediff(hediff); + } + + if (pawn.ParentHolder is Pawn_CarryTracker pawn_CarryTracker) + { + pawn_CarryTracker.TryDropCarriedThing(pawn_CarryTracker.pawn.Position, ThingPlaceMode.Near, out var _); + pawn_CarryTracker.pawn.jobs.EndCurrentJob(JobCondition.InterruptForced); + } + + if (pawn.mutant != null && !pawn.mutant.HasTurned) + { + pawn.mutant.Turn(); + } + pawn.timesRaisedAsShambler++; + MutantUtility.RestoreUntilNotDowned(pawn); + + if (pawn.Spawned && stun) + { + pawn.Rotation = Rot4.South; + if(compProps != null) + pawn.stances.stunner.StunFor(compProps.stunSecondsRange.RandomInRange.SecondsToTicks(), pawn, addBattleLog: false, showMote: false); + } + + pawn.Drawer.renderer.SetAnimation(null); + StartSelfRaiseTimer(); + } + + private void StartSelfRaiseTimer() + { + var selfRaiseHoursRange = PropsComp?.Props.selfRaiseHoursRange ?? new IntRange(3, 4); + selfRaiseTimer = Find.TickManager.TicksGame + 2500 * selfRaiseHoursRange.RandomInRange; + } + + public override void Notify_PawnPostApplyDamage(DamageInfo dinfo, float totalDamageDealt) + { + base.Notify_PawnPostApplyDamage(dinfo, totalDamageDealt); + if (dinfo.Instigator != null && pawn.HostileTo(dinfo.Instigator)) + { + if (pawn.Spawned && dinfo.Instigator is IAttackTarget && dinfo.Instigator.Spawned && pawn.CanSee(dinfo.Instigator)) + { + pawn.mindState.enemyTarget = dinfo.Instigator; + pawn.mindState.lastEngageTargetTick = Find.TickManager.TicksGame; // 直接给public字段赋值,绕过internal方法 + pawn.jobs.EndCurrentJob(JobCondition.InterruptOptional); + pawn.GetLord()?.Notify_PawnAcquiredTarget(pawn, dinfo.Instigator); + } + MutantUtility.ActivateNearbyShamblers(pawn, dinfo.Instigator); + } + } + + public void Notify_DelayedAlert(Thing target) + { + var alertSecondsRange = PropsComp?.Props.alertSecondsRange ?? new FloatRange(0.5f, 3f); + if (pawn.mutant != null && !pawn.mutant.IsPassive && !pawn.Drafted && pawn.mindState.enemyTarget == null) + { + alertTimer = Find.TickManager.TicksGame + alertSecondsRange.RandomInRange.SecondsToTicks(); + alertedTarget = target; + pawn.GetLord()?.Notify_PawnAcquiredTarget(pawn, target); + } + } + + public override void Notify_Downed() + { + StartSelfRaiseTimer(); + } + + public override void Notify_PawnKilled() + { + corpseDamagePct = pawn.health.summaryHealth.SummaryHealthPercent; + base.Notify_PawnKilled(); + } + + public override void Notify_PawnDied(DamageInfo? dinfo, Hediff culprit = null) + { + if (IsRising) + { + CancelRising(); + } + + var compProps = PropsComp?.Props; + if (compProps != null && pawn.timesRaisedAsShambler == 1 && Rand.Chance(compProps.bioferriteOnDeathChance) && pawn.SpawnedOrAnyParentSpawned) + { + Thing thing = ThingMaker.MakeThing(ThingDefOf.Bioferrite); + thing.stackCount = compProps.bioferriteAmountOnDeath; + GenPlace.TryPlaceThing(thing, pawn.PositionHeld, pawn.MapHeld, ThingPlaceMode.Near, out var lastResultingThing); + lastResultingThing.SetForbidden(value: true); + } + + if (pawn.Corpse != null) + { + pawn.Corpse.HitPoints = Mathf.Max(Mathf.RoundToInt((float)pawn.Corpse.MaxHitPoints * corpseDamagePct), 10); + } + + if (compProps?.corpseHediff != null) + { + pawn.health.AddHediff(compProps.corpseHediff); + } + + base.Notify_PawnDied(dinfo, culprit); + } + + public override void PreRemoved() + { + pawn.MapHeld?.mapPawns.DeregisterShambler(pawn); + base.PreRemoved(); + } + + public override void PostRemoved() + { + base.PostRemoved(); + if (pawn.Dead) return; + if (IsRising) CancelRising(); + if (pawn.IsMutant) + { + if (pawn.mutant.HasTurned) pawn.mutant.Revert(); + else pawn.mutant = null; + } + } + + public override IEnumerable GetGizmos() + { + foreach (Gizmo gizmo in base.GetGizmos()) + { + yield return gizmo; + } + if (DebugSettings.ShowDevGizmos && pawn.Downed && !IsRising) + { + var command_Action = new Command_Action + { + defaultLabel = "Self Raise", + action = () => StartRising() + }; + yield return command_Action; + } + } + + public override string GetInspectString() + { + if (ShouldSelfRaise()) return "ShamblerRegenerating".Translate(); + if (IsRising) return "ShamblerRising".Translate(); + if (pawn.CurJobDef == JobDefOf.Wait_Wander || pawn.CurJobDef == JobDefOf.Wait_MaintainPosture) return "ShamblerStanding".Translate(); + if (pawn.CurJobDef == JobDefOf.GotoWander || pawn.CurJobDef == JobDefOf.Goto) return "ShamblerShuffling".Translate(); + return ""; + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Values.Look(ref alertTimer, "alertTimer", 0f); + Scribe_Values.Look(ref nextTargetCheckTick, "nextTargetCheckTick", 0); + Scribe_References.Look(ref alertedTarget, "alertedTarget"); + Scribe_Values.Look(ref resurrectTimer, "resurrectTimer", 0f); + Scribe_Values.Look(ref selfRaiseTimer, "selfRaiseTimer", 0f); + Scribe_Values.Look(ref headRotation, "headRotation", 0f); + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Hediff_NecroticVirus_Configurable.cs b/Source/ArachnaeSwarm/Hediff_NecroticVirus_Configurable.cs index 8192b5c..c8c151b 100644 --- a/Source/ArachnaeSwarm/Hediff_NecroticVirus_Configurable.cs +++ b/Source/ArachnaeSwarm/Hediff_NecroticVirus_Configurable.cs @@ -36,6 +36,12 @@ namespace ArachnaeSwarm return; } + // 检查严重性是否达到XML中配置的阈值 + if (this.Severity < comp.Props.triggerSeverity) + { + return; + } + try { if (pawn.Corpse == null || pawn.Corpse.Destroyed) @@ -46,9 +52,10 @@ namespace ArachnaeSwarm Map map = pawn.Corpse.Map; IntVec3 position = pawn.Corpse.Position; - if (!MutantUtility.CanResurrectAsShambler(pawn.Corpse)) + // 使用我们自己的、更安全的检查方法 + if (!NecroticTransformationUtility.CanResurrect(pawn.Corpse)) { - Log.Warning($"[NecroticVirus] Cannot resurrect {pawn.LabelShort} as a shambler-like creature."); + Log.Warning($"[NecroticVirus] Pawn {pawn.LabelShort} does not meet conditions for resurrection."); return; } diff --git a/Source/ArachnaeSwarm/NecroticTransformationUtility.cs b/Source/ArachnaeSwarm/NecroticTransformationUtility.cs index 2ace4c5..fefaaf1 100644 --- a/Source/ArachnaeSwarm/NecroticTransformationUtility.cs +++ b/Source/ArachnaeSwarm/NecroticTransformationUtility.cs @@ -5,9 +5,41 @@ namespace ArachnaeSwarm { public static class NecroticTransformationUtility { + /// + /// 检查一个尸体是否可以被我们的逻辑转化为变异体。 + /// 这是对原版 MutantUtility.CanResurrectAsShambler 的复制,但移除了对 canBecomeShambler 的检查。 + /// + public static bool CanResurrect(Corpse corpse, bool ignoreIndoors = false) + { + if (corpse?.InnerPawn == null) return false; + if (!corpse.InnerPawn.RaceProps.IsFlesh) return false; + // 我们移除了对 corpse.InnerPawn.RaceProps.canBecomeShambler 的检查 + if (corpse.InnerPawn.IsMutant) return false; + if (corpse is UnnaturalCorpse) return false; + + Room room = corpse.PositionHeld.GetRoom(corpse.MapHeld); + if (room != null && !ignoreIndoors && corpse.PositionHeld.Roofed(corpse.MapHeld) && (room.ProperRoom || room.IsDoorway)) + { + return false; + } + + if (!Find.Storyteller.difficulty.childShamblersAllowed && !corpse.InnerPawn.ageTracker.Adult) + { + return false; + } + + Hediff_DeathRefusal firstHediff = corpse.InnerPawn.health.hediffSet.GetFirstHediff(); + if (firstHediff != null && (firstHediff.InProgress || firstHediff.UsesLeft > 0)) + { + return false; + } + + return true; + } + /// /// 将一个Pawn复活为指定的自定义变异体. - /// 这个方法是模仿原版 MutantUtility.ResurrectAsShambler, + /// 这个方法是模仿原版 MutantUtility.ResurrectAsShambler, /// 但允许传入一个自定义的 MutantDef. /// public static void ResurrectAsCustomMutant(Pawn pawn, MutantDef mutantDef, Faction faction = null, int lifespanTicks = -1)