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 @@
+