diff --git a/Defs/RecipeDefs/Recipes_RemoveEnemyImplants.xml b/Defs/RecipeDefs/Recipes_RemoveEnemyImplants.xml index ad537dacb16cc18f26ea464b8154a9925859d42d..cea66cac337c5453583656a8e7f96f210136ea39 100644 --- a/Defs/RecipeDefs/Recipes_RemoveEnemyImplants.xml +++ b/Defs/RecipeDefs/Recipes_RemoveEnemyImplants.xml @@ -20,7 +20,7 @@ <workSkill>Medicine</workSkill> <workSkillLearnFactor>1</workSkillLearnFactor> <hideBodyPartNames>true</hideBodyPartNames> - <targetsBodyPart>false</targetsBodyPart> + <targetsBodyPart>true</targetsBodyPart> </RecipeDef> <RecipeDef Abstract="True" ParentName="RJW_RemoveEnemyImplants" Name="RJW_RemoveInsectEgg"> @@ -153,7 +153,7 @@ <defName>RJW_RemoveRestraints</defName> <label>remove restraints</label> <description>Removes restraints.</description> - <workerClass>Recipe_RemoveHediff</workerClass> + <workerClass>rjw.Recipe_RemoveRestraints</workerClass> <jobString>Removing restraints.</jobString> <workAmount>1000</workAmount> <removesHediff>RJW_Restraints</removesHediff> @@ -178,7 +178,7 @@ <defName>RJW_RemoveCocoon</defName> <label>remove cocoon</label> <description>Removes cocoon.</description> - <workerClass>Recipe_RemoveHediff</workerClass> + <workerClass>rjw.Recipe_RemoveRestraints</workerClass> <jobString>Removing cocoon.</jobString> <workAmount>1000</workAmount> <removesHediff>RJW_Cocoon</removesHediff> diff --git a/Source/Recipes/Recipe_Restraints.cs b/Source/Recipes/Recipe_Restraints.cs new file mode 100644 index 0000000000000000000000000000000000000000..dd7d08c7770cb425728d39f5ffb24898b9a1b2d6 --- /dev/null +++ b/Source/Recipes/Recipe_Restraints.cs @@ -0,0 +1,32 @@ +using RimWorld; +using System.Collections.Generic; +using Verse; + +namespace rjw +{ + /// <summary> + /// Removes heddifs (restraints/cocoon) + /// </summary> + public class Recipe_RemoveRestraints : Recipe_RemoveHediff + { + public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe) + { + List<Hediff> allHediffs = pawn.health.hediffSet.hediffs; + int i = 0; + while (true) + { + if (i >= allHediffs.Count) + { + yield break; + } + if (allHediffs[i].def == recipe.removesHediff && allHediffs[i].Visible) + { + break; + } + i++; + } + + yield return allHediffs[i].Part; + } + } +}