diff --git a/Defs/HediffDefs/Hediffs_Necro.xml b/Defs/HediffDefs/Hediffs_Necro.xml index ad989757..a967cab9 100644 --- a/Defs/HediffDefs/Hediffs_Necro.xml +++ b/Defs/HediffDefs/Hediffs_Necro.xml @@ -15,6 +15,11 @@ 4.0 0.95 false +
  • TorannMagic.HediffComp_Undead diff --git a/Source/TMagic/TMagic/DefModExtension_NecroStarvation.cs b/Source/TMagic/TMagic/DefModExtension_NecroStarvation.cs new file mode 100644 index 00000000..93248bbe --- /dev/null +++ b/Source/TMagic/TMagic/DefModExtension_NecroStarvation.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using RimWorld; +using AbilityUser; +using Verse; +using UnityEngine; + +namespace TorannMagic +{ + class DefModExtension_NecroStarvation : DefModExtension + { + public HediffDef effect; + public DefModExtension_NecroStarvation() : base() + { + } + } +} diff --git a/Source/TMagic/TMagic/HediffComp_Undead.cs b/Source/TMagic/TMagic/HediffComp_Undead.cs index 66c55e6f..3b114dac 100644 --- a/Source/TMagic/TMagic/HediffComp_Undead.cs +++ b/Source/TMagic/TMagic/HediffComp_Undead.cs @@ -11,6 +11,7 @@ namespace TorannMagic [StaticConstructorOnStartup] class HediffComp_Undead : HediffComp { + public HediffDef starvationEffect; private bool necroValid = true; private int lichStrike = 0; private bool initializing = true; @@ -37,7 +38,11 @@ private void Initialize() if (spawned) { //MoteMaker.ThrowLightningGlow(base.Pawn.TrueCenter(), base.Pawn.Map, 3f); - } + } + if (this.Def.HasModExtension()) + { + this.starvationEffect = this.Def.GetModExtension().effect; + } } public override void CompPostTick(ref float severityAdjustment) @@ -129,6 +134,10 @@ public override void CompPostTick(ref float severityAdjustment) //necromancer alive to sustain undead necroValid = true; lichStrike = 0; + if (starvationEffect != null && base.Pawn.health.hediffSet.HasHediff(starvationEffect)) + { + HealthUtility.CureHediff(base.Pawn.health.hediffSet.GetFirstHediffOfDef(starvationEffect)); + } } } } @@ -168,13 +177,17 @@ public override void CompPostTick(ref float severityAdjustment) if (!necroValid && orbEnergy <= 0) { - if (base.Pawn.Map != null) + if (starvationEffect != null) { - TM_MoteMaker.ThrowScreamMote(base.Pawn.Position.ToVector3(), base.Pawn.Map, .8f, 255, 255, 255); - base.Pawn.Kill(null, null); + ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef(); + HealthUtility.AdjustSeverity(base.Pawn, starvationEffect, settingsRef.undeadUpkeepMultiplier); } else { + if (base.Pawn.Map != null) + { + TM_MoteMaker.ThrowScreamMote(base.Pawn.Position.ToVector3(), base.Pawn.Map, .8f, 255, 255, 255); + } base.Pawn.Kill(null, null); } } diff --git a/Source/TMagic/TMagic/TorannMagic.csproj b/Source/TMagic/TMagic/TorannMagic.csproj index 3472ec86..1d56c517 100644 --- a/Source/TMagic/TMagic/TorannMagic.csproj +++ b/Source/TMagic/TMagic/TorannMagic.csproj @@ -640,6 +640,7 @@ +