From aea910d3b410b2d07d895e94e39cb7fcc33a7ed7 Mon Sep 17 00:00:00 2001 From: Ed86 <email@email.com> Date: Mon, 24 Jun 2019 23:06:40 +0300 Subject: [PATCH] hidded restraints/cocoon operation if those hediffs not present --- .../Recipes_RemoveEnemyImplants.xml | 6 ++-- Source/Recipes/Recipe_Restraints.cs | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 Source/Recipes/Recipe_Restraints.cs diff --git a/Defs/RecipeDefs/Recipes_RemoveEnemyImplants.xml b/Defs/RecipeDefs/Recipes_RemoveEnemyImplants.xml index ad537dac..cea66cac 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 00000000..dd7d08c7 --- /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; + } + } +} -- GitLab