From bd32d509a1dfc3f91359787b3e0096e8e1bdb08c Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Fri, 4 Jul 2025 13:14:41 +0800 Subject: [PATCH] =?UTF-8?q?1.6=E5=85=A8=E7=83=82=E4=BA=86=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/Core/Assemblies/2_AutomataRace.dll | Bin 78848 -> 136192 bytes 1.6/Core/Assemblies/2_AutomataRace.pdb | Bin 37544 -> 64088 bytes .../Assemblies/FULLMOHAR/MoharHediffs.sln | 20 - .../MoharHediffs/ActivityRestriction.cs | 42 - .../MoharHediffs/BodyPartCondition.cs | 47 -- .../FULLMOHAR/MoharHediffs/BodyPartsTools.cs | 307 ------- .../FULLMOHAR/MoharHediffs/BodyTypeOffset.cs | 13 - .../MoharHediffs/BodyTypeSpecificities.cs | 12 - .../MoharHediffs/ChannelColorCondition.cs | 11 - .../FULLMOHAR/MoharHediffs/ColorRange.cs | 14 - .../FULLMOHAR/MoharHediffs/CommonSettings.cs | 11 - .../MoharHediffs/ConditionBuilder.cs | 83 -- .../MoharHediffs/ConditionValidation.cs | 115 --- .../MoharHediffs/CopyPawnSettings.cs | 57 -- .../MoharHediffs/DrawingSpecificities.cs | 33 - .../MoharHediffs/FactionPickerParameters.cs | 113 --- .../MoharHediffs/FactionPickerUtils.cs | 161 ---- .../FULLMOHAR/MoharHediffs/FilthSettings.cs | 14 - .../FULLMOHAR/MoharHediffs/Footprint.cs | 27 - .../FULLMOHAR/MoharHediffs/GeneralSettings.cs | 44 - .../FULLMOHAR/MoharHediffs/GfxEffects.cs | 153 ---- .../HeDiffCompProperties_HediffExclusive.cs | 30 - .../HeDiffComp_HediffExclusive.cs | 341 -------- .../MoharHediffs/HediffAndBodyPart.cs | 24 - .../HediffCompProperties_AnotherRandom.cs | 54 -- .../HediffCompProperties_Filther.cs | 21 - .../HediffCompProperties_HediffNullifier.cs | 30 - .../HediffCompProperties_HediffRandom.cs | 26 - .../HediffCompProperties_InnerShine.cs | 44 - .../HediffCompProperties_MultipleHediff.cs | 24 - .../HediffCompProperties_OnTheCarpet.cs | 48 -- ...pProperties_PostRemoveTrigger_HediffAdd.cs | 18 - .../HediffCompProperties_RainbowTrail.cs | 46 -- ...ediffCompProperties_RandySpawnUponDeath.cs | 45 - .../HediffCompProperties_RandySpawner.cs | 28 - .../HediffCompProperties_Spawner.cs | 55 -- .../HediffCompProperties_Steamer.cs | 27 - .../HediffCompProperties_TrailLeaver.cs | 85 -- .../MoharHediffs/HediffComp_AnotherRandom.cs | 322 -------- .../MoharHediffs/HediffComp_Filther.cs | 64 -- .../HediffComp_HediffNullifier.cs | 230 ------ .../MoharHediffs/HediffComp_HediffRandom.cs | 178 ---- .../MoharHediffs/HediffComp_InnerShine.cs | 209 ----- .../MoharHediffs/HediffComp_MultipleHediff.cs | 287 ------- .../MoharHediffs/HediffComp_OnTheCarpet.cs | 146 ---- .../HediffComp_PostRemoveTrigger_HediffAdd.cs | 99 --- .../MoharHediffs/HediffComp_RainbowTrail.cs | 514 ------------ .../HediffComp_RandySpawnUponDeath.cs | 587 ------------- .../MoharHediffs/HediffComp_RandySpawner.cs | 450 ---------- .../MoharHediffs/HediffComp_Spawner.cs | 778 ------------------ .../MoharHediffs/HediffComp_Steamer.cs | 80 -- .../MoharHediffs/HediffComp_TrailLeaver.cs | 236 ------ .../FULLMOHAR/MoharHediffs/HediffCondition.cs | 27 - .../FULLMOHAR/MoharHediffs/HediffIntersect.cs | 159 ---- .../FULLMOHAR/MoharHediffs/HediffItem.cs | 26 - .../MoharHediffs/HediffItemToRemove.cs | 20 - .../MoharHediffs/HediffKeepingCondition.cs | 58 -- .../HediffRemovalConditionBuilder.cs | 107 --- .../MoharHediffs/HediffRequirementSettings.cs | 20 - .../MoharHediffs/HediffSeverityCondition.cs | 30 - .../FULLMOHAR/MoharHediffs/InnerShineDef.cs | 25 - .../FULLMOHAR/MoharHediffs/InnerShineItem.cs | 88 -- .../MoharHediffs/InnerShineRecord.cs | 42 - .../MoharHediffs/InnerShinerUtils.cs | 189 ----- .../FULLMOHAR/MoharHediffs/ItemParameter.cs | 104 --- .../KeepingConditionCompatibility.cs | 69 -- .../FULLMOHAR/MoharHediffs/LightCondition.cs | 29 - .../MoharHediffs/MentalStateOption.cs | 24 - .../MoharHediffs/MentalStatePicker.cs | 87 -- .../MoharHediffs/MoharHediffs.csproj | 151 ---- .../MoharHediffs/MoteColorChangeUtils.cs | 63 -- .../FULLMOHAR/MoharHediffs/MoteLink.cs | 33 - .../FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs | 111 --- .../FULLMOHAR/MoharHediffs/MyDefs.cs | 9 - .../FULLMOHAR/MoharHediffs/MyGfx.cs | 24 - .../FULLMOHAR/MoharHediffs/NeedCondition.cs | 23 - .../MoharHediffs/NoMsgRandHediffGiver.cs | 19 - .../MoharHediffs/ParametersHandlingsUtils.cs | 96 --- .../FULLMOHAR/MoharHediffs/PawnCondition.cs | 31 - .../FULLMOHAR/MoharHediffs/PawnCopyUtils.cs | 344 -------- .../MoharHediffs/PawnRedressUtils.cs | 63 -- .../MoharHediffs/Properties/AssemblyInfo.cs | 9 - .../MoharHediffs/RandomFactionParameter.cs | 96 --- .../FULLMOHAR/MoharHediffs/RandomPicker.cs | 73 -- .../MoharHediffs/RandyPickerUtils.cs | 281 ------- .../MoharHediffs/RandySpawnerUtils.cs | 348 -------- .../FULLMOHAR/MoharHediffs/RedressSettings.cs | 17 - .../MoharHediffs/RequirementSettings.cs | 72 -- .../MoharHediffs/RequirementUtils.cs | 177 ---- .../FULLMOHAR/MoharHediffs/Restriction.cs | 32 - .../FULLMOHAR/MoharHediffs/RotationOffset.cs | 13 - .../FULLMOHAR/MoharHediffs/SpawnRules.cs | 20 - .../FULLMOHAR/MoharHediffs/SpawnerUtils.cs | 372 --------- .../FULLMOHAR/MoharHediffs/StackCalculator.cs | 49 -- .../FULLMOHAR/MoharHediffs/StackSettings.cs | 12 - .../MoharHediffs/TerrainRestriction.cs | 31 - .../MoharHediffs/ThingRequirementSettings.cs | 46 -- .../FULLMOHAR/MoharHediffs/ThingSettings.cs | 129 --- .../FULLMOHAR/MoharHediffs/Tools.cs | 215 ----- .../FULLMOHAR/MoharHediffs/TracerUtils.cs | 149 ---- .../FULLMOHAR/MoharHediffs/TrailUtils.cs | 61 -- 1.6/Core/Assemblies/MoharHediffs.dll | Bin 37888 -> 0 bytes 1.6/Core/Assemblies/MoharHediffs.sln | 32 - .../Assemblies/MoharHediffs/BodyPartsTools.cs | 262 ------ .../MoharHediffs/HediffAndBodyPart.cs | 24 - .../HediffCompProperties_HediffNullifier.cs | 30 - .../HediffCompProperties_HediffRandom.cs | 26 - .../HediffCompProperties_MultipleHediff.cs | 24 - .../HediffCompProperties_Spawner.cs | 55 -- .../HediffComp_HediffNullifier.cs | 199 ----- .../MoharHediffs/HediffComp_HediffRandom.cs | 156 ---- .../MoharHediffs/HediffComp_MultipleHediff.cs | 262 ------ .../MoharHediffs/HediffComp_Spawner.cs | 644 --------------- .../CodeAnalysis/EmbeddedAttribute.cs | 11 - .../MoharHediffs/MoharHediffs.csproj | 65 -- .../MoharHediffs/Properties/AssemblyInfo.cs | 8 - .../RefSafetyRulesAttribute.cs | 18 - 1.6/Core/Assemblies/MoharHediffs/Tools.cs | 181 ---- 1.6/Core/Assemblies/MoharThoughts.sln | 20 - .../Assemblies/MoharThoughts/BodyPartUtils.cs | 81 -- 1.6/Core/Assemblies/MoharThoughts/MTWDef.cs | 111 --- .../MoharThoughts/MoharThoughts.csproj | 52 -- .../MoharThoughts/Properties/AssemblyInfo.cs | 18 - .../Assemblies/MoharThoughts/RaceBPHediff.cs | 73 -- 1.6/Core/Assemblies/MoharThoughts/Tools.cs | 13 - 1.6/Core/Assemblies/WearSetting.dll | Bin 40960 -> 0 bytes 1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml | 106 +-- .../Defs/AutomataRace/AutomataWearSetting.xml | 4 +- 1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml | 37 +- 1.6/Core/Defs/Drugs/Drugs_Fuel.xml | 59 +- .../Defs/HediffDefs/Hediffs_Abilities.xml | 89 ++ .../Defs/HediffDefs/Hediffs_AutomatonBase.xml | 26 +- .../HediffDefs/Hediffs_AutomatonGrade.xml | 34 +- .../HediffDefs/Hediffs_AutomatonGrade_PA.xml | 94 +-- .../Defs/HediffDefs/Hediffs_BodyParts.xml | 8 +- .../Defs/HediffDefs/Hediffs_Maintenance.xml | 8 +- 1.6/Core/Defs/Scenarios/Scenarios.xml | 2 +- .../Ideo_Hediffs_Cast_Industrial.xml | 4 +- .../HediffDefs/Ideo_Hediffs_Cast_Spacer.xml | 43 +- .../HediffDefs/HediffDef_PNE_BodyParts.xml | 15 +- LoadFolders.xml | 2 +- about/About.xml | 3 +- 142 files changed, 269 insertions(+), 13306 deletions(-) delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ActivityRestriction.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartsTools.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeOffset.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeSpecificities.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ChannelColorCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ColorRange.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CommonSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionBuilder.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionValidation.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CopyPawnSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/DrawingSpecificities.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerParameters.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FilthSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Footprint.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GeneralSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GfxEffects.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffCompProperties_HediffExclusive.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffComp_HediffExclusive.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffAndBodyPart.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_AnotherRandom.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Filther.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffNullifier.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffRandom.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_InnerShine.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_MultipleHediff.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_OnTheCarpet.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_PostRemoveTrigger_HediffAdd.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RainbowTrail.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawnUponDeath.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawner.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Spawner.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Steamer.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_TrailLeaver.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_AnotherRandom.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Filther.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffNullifier.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffRandom.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_InnerShine.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_MultipleHediff.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_OnTheCarpet.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_PostRemoveTrigger_HediffAdd.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RainbowTrail.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawnUponDeath.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawner.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Spawner.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Steamer.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_TrailLeaver.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffIntersect.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItem.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItemToRemove.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffKeepingCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRemovalConditionBuilder.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRequirementSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffSeverityCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineDef.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineItem.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineRecord.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShinerUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ItemParameter.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/KeepingConditionCompatibility.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/LightCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStateOption.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStatePicker.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoharHediffs.csproj delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteColorChangeUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteLink.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyDefs.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyGfx.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NeedCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NoMsgRandHediffGiver.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ParametersHandlingsUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCondition.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCopyUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnRedressUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Properties/AssemblyInfo.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomFactionParameter.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomPicker.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandyPickerUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandySpawnerUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RedressSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Restriction.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RotationOffset.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnRules.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnerUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackCalculator.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TerrainRestriction.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingRequirementSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingSettings.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Tools.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TracerUtils.cs delete mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TrailUtils.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs.dll delete mode 100644 1.6/Core/Assemblies/MoharHediffs.sln delete mode 100644 1.6/Core/Assemblies/MoharHediffs/BodyPartsTools.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffAndBodyPart.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffNullifier.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffRandom.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_MultipleHediff.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_Spawner.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffNullifier.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffRandom.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_MultipleHediff.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_Spawner.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/Microsoft/CodeAnalysis/EmbeddedAttribute.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/MoharHediffs.csproj delete mode 100644 1.6/Core/Assemblies/MoharHediffs/Properties/AssemblyInfo.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/System/Runtime/CompilerServices/RefSafetyRulesAttribute.cs delete mode 100644 1.6/Core/Assemblies/MoharHediffs/Tools.cs delete mode 100644 1.6/Core/Assemblies/MoharThoughts.sln delete mode 100644 1.6/Core/Assemblies/MoharThoughts/BodyPartUtils.cs delete mode 100644 1.6/Core/Assemblies/MoharThoughts/MTWDef.cs delete mode 100644 1.6/Core/Assemblies/MoharThoughts/MoharThoughts.csproj delete mode 100644 1.6/Core/Assemblies/MoharThoughts/Properties/AssemblyInfo.cs delete mode 100644 1.6/Core/Assemblies/MoharThoughts/RaceBPHediff.cs delete mode 100644 1.6/Core/Assemblies/MoharThoughts/Tools.cs delete mode 100644 1.6/Core/Assemblies/WearSetting.dll create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_Abilities.xml diff --git a/1.6/Core/Assemblies/2_AutomataRace.dll b/1.6/Core/Assemblies/2_AutomataRace.dll index 66f56de7018deab6a99565327d189430d756383d..eebdd4d82fcfc3d428fc80e45d5818d9e9efe78e 100644 GIT binary patch literal 136192 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

Q99D`kOp8H~E!WrDPf;7)og=)cY6NoCbE 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 Y`dcf90Xo?D`~RrD{Qr&rzZ3%h50|Y<#Q*>R delta 28600 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

CD< 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 LNh^D~9|!&mdOaR= diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln deleted file mode 100644 index b08108b..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoharHediffs", "MoharHediffs\MoharHediffs.csproj", "{7ACFB1B0-3B20-48B9-BA73-48DD6353ABED}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7ACFB1B0-3B20-48B9-BA73-48DD6353ABED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7ACFB1B0-3B20-48B9-BA73-48DD6353ABED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7ACFB1B0-3B20-48B9-BA73-48DD6353ABED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7ACFB1B0-3B20-48B9-BA73-48DD6353ABED}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ActivityRestriction.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ActivityRestriction.cs deleted file mode 100644 index 491e09a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ActivityRestriction.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class ActivityRestriction - { - public bool HasPostureRestriction - { - get - { - return !this.allowedPostures.NullOrEmpty(); - } - } - - public bool HasJobRestriction - { - get - { - return !this.allowedJobs.NullOrEmpty(); - } - } - - public bool HasAllowedRotation - { - get - { - return !this.allowedRotation.NullOrEmpty(); - } - } - - public bool onlyWhenMoving = true; - - public List allowedPostures; - - public List allowedJobs; - - public List allowedRotation; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartCondition.cs deleted file mode 100644 index bc2ad45..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartCondition.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class BodyPartCondition - { - public bool HasLabel - { - get - { - return !this.bodyPartLabel.NullOrEmpty(); - } - } - - public bool HasDef - { - get - { - return !this.bodyPartDef.NullOrEmpty(); - } - } - - public bool HasTag - { - get - { - return !this.bodyPartTag.NullOrEmpty(); - } - } - - public bool HasBPCondition - { - get - { - return this.HasLabel || this.HasDef || this.HasTag; - } - } - - public List bodyPartLabel; - - public List bodyPartDef; - - public List bodyPartTag; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartsTools.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartsTools.cs deleted file mode 100644 index 2e43755..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartsTools.cs +++ /dev/null @@ -1,307 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class BodyPartsTools - { - public static BodyPartRecord GetBPRWithoutHediff(this Pawn pawn, BodyPartDef bpd, HediffDef hediffDef) - { - IEnumerable source; - bool flag = (source = from b in pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null) - where b.def == bpd - select b) == null; - BodyPartRecord result; - if (flag) - { - result = null; - } - else - { - List bprToExclude = new List(); - IEnumerable hediffs = pawn.health.hediffSet.hediffs; - Func <>9__1; - Func predicate; - if ((predicate = <>9__1) == null) - { - predicate = (<>9__1 = ((Hediff h) => h.def == hediffDef)); - } - foreach (Hediff hediff in hediffs.Where(predicate)) - { - bool flag2 = !bprToExclude.Contains(hediff.Part); - if (flag2) - { - bprToExclude.Add(hediff.Part); - } - } - bool flag3 = bprToExclude.NullOrEmpty(); - if (flag3) - { - result = source.RandomElementWithFallback(null); - } - else - { - IEnumerable source2; - bool flag4 = (source2 = from b in source - where !bprToExclude.Contains(b) - select b) == null; - if (flag4) - { - result = null; - } - else - { - result = source2.RandomElementWithFallback(null); - } - } - } - return result; - } - - public static bool CheckIfExistingNaturalBP(this Pawn pawn, BodyPartDef bodyPartDef, bool myDebug = false) - { - BodyPartRecord bodyPartRecord = pawn.GetBPRecord(bodyPartDef, false) ?? null; - bool flag = bodyPartRecord == null || pawn.health.hediffSet.PartIsMissing(bodyPartRecord) || pawn.health.hediffSet.AncestorHasDirectlyAddedParts(bodyPartRecord); - return !flag; - } - - public static BodyPartRecord GetBPRecord(this Pawn pawn, BodyPartDef bodyPartDef, bool myDebug = false) - { - IEnumerable enumerable = from b in DefDatabase.AllDefs - where b == bodyPartDef - select b; - bool flag = enumerable.EnumerableNullOrEmpty(); - BodyPartRecord result; - if (flag) - { - if (myDebug) - { - string label = pawn.Label; - string str = " - GetBPRecord - did not find any "; - BodyPartDef bodyPartDef2 = bodyPartDef; - Log.Warning(label + str + ((bodyPartDef2 != null) ? bodyPartDef2.defName : null)); - } - result = null; - } - else - { - BodyPartDef def = enumerable.RandomElement(); - BodyPartRecord bodyPartRecord; - pawn.RaceProps.body.GetPartsWithDef(def).TryRandomElement(out bodyPartRecord); - if (myDebug) - { - string label2 = pawn.Label; - string str2 = "GetBPRecord - DID find "; - BodyPartDef bodyPartDef3 = bodyPartDef; - Log.Warning(label2 + str2 + ((bodyPartDef3 != null) ? bodyPartDef3.defName : null)); - } - result = bodyPartRecord; - } - return result; - } - - public static bool IsMissingBPR(this Pawn pawn, BodyPartRecord BPR, out Hediff missingHediff) - { - bool flag = BPR == null; - bool result; - if (flag) - { - missingHediff = null; - result = false; - } - else - { - missingHediff = (from h in pawn.health.hediffSet.hediffs - where h.def == HediffDefOf.MissingBodyPart && h.Part == BPR - select h).FirstOrFallback(null); - result = (missingHediff != null); - } - return result; - } - - public static bool HasMissingChildren(this Pawn pawn, BodyPartRecord bpr) - { - List missingPartsCommonAncestors = pawn.health.hediffSet.GetMissingPartsCommonAncestors(); - return missingPartsCommonAncestors.Any((Hediff_MissingPart HMP) => HMP.Part == bpr); - } - - public static bool IsMissingOrHasMissingChildren(this Pawn pawn, BodyPartRecord bpr) - { - return pawn.health.hediffSet.PartIsMissing(bpr) || pawn.HasMissingChildren(bpr); - } - - public static IEnumerable GetAllBPR(this Pawn pawn, string bodyPartLabel, BodyPartDef bodyPartDef) - { - bool HasLabel = !bodyPartLabel.NullOrEmpty(); - bool HasDef = bodyPartDef != null; - return from bpr in pawn.RaceProps.body.AllParts - where (!HasLabel || bpr.customLabel == bodyPartLabel) && (!HasDef || bpr.def == bodyPartDef) - select bpr; - } - - public static IEnumerable GetAllNotMissingBPR(this Pawn pawn, string bodyPartLabel, BodyPartDef bodyPartDef) - { - bool HasLabel = !bodyPartLabel.NullOrEmpty(); - bool HasDef = bodyPartDef != null; - return from bpr in pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null) - where (!HasLabel || bpr.customLabel == bodyPartLabel) && (!HasDef || bpr.def == bodyPartDef) - select bpr; - } - - public static BodyPartRecord GetBPRecordWithoutHediff(this Pawn pawn, string bodyPartLabel, BodyPartDef bodyPartDef, HediffDef hd, bool AllowMissing = false, bool PrioritizeMissing = false, bool AllowAddedPart = true, bool myDebug = false) - { - bool flag = hd != null; - bool flag2 = !bodyPartLabel.NullOrEmpty(); - bool flag3 = bodyPartDef != null; - string text = pawn.Label + " GetBPRecordWithoutHediff - "; - if (myDebug) - { - string[] array = new string[5]; - array[0] = text; - array[1] = string.Format("HasDef?{0} bodyPartDef:{1} ", flag3, (bodyPartDef != null) ? bodyPartDef.defName : null); - array[2] = string.Format("HasLabel?{0} bodyPartLabel:{1} ", flag2, bodyPartLabel); - int num = 3; - string format = "HasHediffDef?{0} Hediff:{1} "; - object arg = flag; - HediffDef hd2 = hd; - array[num] = string.Format(format, arg, (hd2 != null) ? hd2.defName : null); - array[4] = string.Format("AllowMissing:{0} PrioritizeMissing:{1} AllowAddedPart:{2}", AllowMissing, PrioritizeMissing, AllowAddedPart); - Log.Warning(string.Concat(array)); - } - List bprToExclude = new List(); - bool flag4 = flag; - if (flag4) - { - IEnumerable hediffs = pawn.health.hediffSet.hediffs; - Func <>9__3; - Func predicate; - if ((predicate = <>9__3) == null) - { - predicate = (<>9__3 = ((Hediff h) => h.def == hd)); - } - foreach (Hediff hediff in hediffs.Where(predicate)) - { - bool flag5 = !bprToExclude.Contains(hediff.Part); - if (flag5) - { - bprToExclude.Add(hediff.Part); - } - } - if (myDebug) - { - object[] array2 = new object[5]; - array2[0] = text; - array2[1] = "found "; - int num2 = 2; - List bprToExclude2 = bprToExclude; - array2[num2] = ((bprToExclude2 != null) ? new int?(bprToExclude2.Count) : null); - array2[3] = " bpr to exclude bc they had "; - array2[4] = hd.defName; - Log.Warning(string.Concat(array2)); - } - } - BodyPartRecord bodyPartRecord = null; - IEnumerable enumerable; - if (AllowMissing) - { - enumerable = pawn.GetAllBPR(bodyPartLabel, bodyPartDef); - if (myDebug) - { - Log.Warning(text + "Allow missing - found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - bool flag6 = PrioritizeMissing && !enumerable.EnumerableNullOrEmpty() && enumerable.Any((BodyPartRecord bpr) => pawn.IsMissingOrHasMissingChildren(bpr)); - if (flag6) - { - enumerable = from bpr in enumerable - where pawn.IsMissingOrHasMissingChildren(bpr) - select bpr; - if (myDebug) - { - Log.Warning(text + "Prioritize Missing - found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - } - } - else - { - enumerable = pawn.GetAllNotMissingBPR(bodyPartLabel, bodyPartDef); - if (myDebug) - { - Log.Warning(text + "Not missing - found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - } - bool flag7 = enumerable.EnumerableNullOrEmpty(); - BodyPartRecord result; - if (flag7) - { - result = null; - } - else - { - bool flag8 = !AllowAddedPart; - if (flag8) - { - Tools.Warn(text + "Trying to exlude addedpart", myDebug); - bool flag9 = enumerable.Any((BodyPartRecord bpr) => pawn.health.hediffSet.HasDirectlyAddedPartFor(bpr)); - if (flag9) - { - enumerable = from bpr in enumerable - where !pawn.health.hediffSet.HasDirectlyAddedPartFor(bpr) - select bpr; - if (myDebug) - { - Log.Warning(text + "Added parts(bionics) forbidden- found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - } - else if (myDebug) - { - Log.Warning(text + "found no addedpart to exclude"); - } - } - bool flag10 = bprToExclude.NullOrEmpty(); - if (flag10) - { - enumerable.TryRandomElement(out bodyPartRecord); - } - else - { - bool flag11 = enumerable.Any((BodyPartRecord bp) => !bprToExclude.Contains(bp)); - if (flag11) - { - (from bp in enumerable - where !bprToExclude.Contains(bp) - select bp).TryRandomElement(out bodyPartRecord); - } - else - { - bodyPartRecord = null; - } - } - if (myDebug) - { - Log.Warning(string.Concat(new string[] - { - pawn.Label, - "GetBPRecord - did ", - (bodyPartRecord == null) ? "not" : "", - " find with def ", - (bodyPartDef != null) ? bodyPartDef.defName : null, - " without hediff def ", - hd.defName - })); - } - result = bodyPartRecord; - } - return result; - } - - public static BodyPartRecord GetBrain(this Pawn pawn) - { - BodyPartRecord result; - pawn.RaceProps.body.GetPartsWithTag(BodyPartTagDefOf.ConsciousnessSource).TryRandomElement(out result); - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeOffset.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeOffset.cs deleted file mode 100644 index 7e5d88e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeOffset.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using RimWorld; -using UnityEngine; - -namespace MoharHediffs -{ - public class BodyTypeOffset - { - public BodyTypeDef bodyType; - - public Vector3 offset; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeSpecificities.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeSpecificities.cs deleted file mode 100644 index 423944e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeSpecificities.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using RimWorld; - -namespace MoharHediffs -{ - public class BodyTypeSpecificities - { - public BodyTypeDef bodyTypeDef; - - public DrawingSpecificities drawRules; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ChannelColorCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ChannelColorCondition.cs deleted file mode 100644 index bd0a06d..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ChannelColorCondition.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace MoharHediffs -{ - public class ChannelColorCondition - { - public string channelName; - - public int channelNum = 0; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ColorRange.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ColorRange.cs deleted file mode 100644 index eea67be..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ColorRange.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using UnityEngine; - -namespace MoharHediffs -{ - public class ColorRange - { - public Color colorA; - - public Color colorB; - - public float variationPerIteration; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CommonSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CommonSettings.cs deleted file mode 100644 index bbf6b84..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CommonSettings.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace MoharHediffs -{ - public class CommonSettings - { - public StackSettings stack; - - public FilthSettings filth; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionBuilder.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionBuilder.cs deleted file mode 100644 index 4f478cf..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionBuilder.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public static class ConditionBuilder - { - public static void CopyHediffCondition(HediffCondition source, HediffCondition dest, bool debug = false) - { - string str = debug ? "CopyHediffCondition - " : ""; - bool hasBodypartCondition = source.HasBodypartCondition; - if (hasBodypartCondition) - { - Tools.Warn(str + "found HasBodypartCondition, copying", debug); - bool hasDef = source.bodyPart.HasDef; - if (hasDef) - { - dest.bodyPart.bodyPartDef = source.bodyPart.bodyPartDef.ListFullCopy(); - } - bool hasLabel = source.bodyPart.HasLabel; - if (hasLabel) - { - dest.bodyPart.bodyPartLabel = source.bodyPart.bodyPartLabel.ListFullCopy(); - } - bool hasTag = source.bodyPart.HasTag; - if (hasTag) - { - dest.bodyPart.bodyPartTag = source.bodyPart.bodyPartTag.ListFullCopy(); - } - } - bool hasPawnCondition = source.HasPawnCondition; - if (hasPawnCondition) - { - Tools.Warn(str + "found HasPawnCondition, copying", debug); - bool hasRace = source.pawn.HasRace; - if (hasRace) - { - dest.pawn.race = source.pawn.race.ListFullCopy(); - } - bool hasGender = source.pawn.HasGender; - if (hasGender) - { - dest.pawn.gender = source.pawn.gender.ListFullCopy(); - } - dest.pawn.ageRange = source.pawn.ageRange; - } - } - - public static HediffCondition GetDefaultPlusSpecificHediffCondition(HediffCondition defaultHC, HediffCondition specificHC, bool debug = false) - { - string str = debug ? "GetDefaultPlusSpecificHediffCondition - " : ""; - Tools.Warn(str + "allocating answerHC", debug); - HediffCondition hediffCondition = new HediffCondition - { - bodyPart = new BodyPartCondition - { - bodyPartDef = new List(), - bodyPartLabel = new List(), - bodyPartTag = new List() - }, - pawn = new PawnCondition - { - race = new List(), - gender = new List() - } - }; - bool flag = defaultHC != null; - if (flag) - { - Tools.Warn(str + "found defaultHC, copying", debug); - ConditionBuilder.CopyHediffCondition(defaultHC, hediffCondition, debug); - } - bool flag2 = specificHC != null; - if (flag2) - { - Tools.Warn(str + "found specificHC, copying", debug); - ConditionBuilder.CopyHediffCondition(specificHC, hediffCondition, debug); - } - return hediffCondition; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionValidation.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionValidation.cs deleted file mode 100644 index da42e86..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionValidation.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace MoharHediffs -{ - public static class ConditionValidation - { - public static bool ValidateCompatibilityOfHediffWithPawn(this PawnCondition pCon, Pawn pawn, bool debug = false) - { - string text = debug ? (pawn.LabelShort + " ValidateCompatibilityOfHediffWithPawn - ") : ""; - bool hasRace = pCon.HasRace; - if (hasRace) - { - bool flag = !pCon.race.Contains(pawn.def); - if (flag) - { - Tools.Warn(text + " does not belong to the good race", debug); - return false; - } - } - bool hasGender = pCon.HasGender; - if (hasGender) - { - bool flag2 = !pCon.gender.Contains(pawn.gender); - if (flag2) - { - Tools.Warn(text + " does not belong to the good gender", debug); - return false; - } - } - bool flag3 = !pCon.ageRange.Includes((float)pawn.ageTracker.AgeBiologicalYears); - bool result; - if (flag3) - { - Tools.Warn(string.Concat(new object[] - { - text, - " does not have the good age : ", - pawn.ageTracker.AgeBiologicalYears, - " => ", - pCon.ageRange - }), debug); - result = false; - } - else - { - Tools.Warn(text + " valid ok", debug); - result = true; - } - return result; - } - - public static bool InitialHediffConditionCheck(this HediffComp_AnotherRandom comp, bool debug = false) - { - string str = debug ? (comp.Pawn.LabelShort + " InitialHediffConditionCheck - ") : ""; - Tools.Warn(str + " Entering", debug); - bool result = !comp.GetCompatibleItems().NullOrEmpty(); - Tools.Warn(str + "found anyAppliableItem:" + result.ToString(), debug); - return result; - } - - public static bool GetBPRFromHediffCondition(this BodyPartCondition bpCon, Pawn pawn, out BodyPartRecord BPR, bool debug = false) - { - string text = debug ? (pawn.LabelShort + " GetBPRFromHediffCondition - ") : ""; - BPR = null; - Tools.Warn(text + " Entering", debug); - bool flag = bpCon == null; - bool result; - if (flag) - { - Tools.Warn(text + " Found no condition, returning null aka body", debug); - result = true; - } - else - { - bool flag2 = !bpCon.HasBPCondition; - if (flag2) - { - Tools.Warn(text + " Found no BP condition, returning null aka body", debug); - result = true; - } - else - { - Tools.Warn(string.Concat(new string[] - { - text, - " Found BP conditions, selecting : Label:", - bpCon.HasLabel.ToString(), - "; Def:", - bpCon.HasDef.ToString(), - "; Tag:", - bpCon.HasTag.ToString() - }), debug); - IEnumerable enumerable = from bpr in pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null) - where (!bpCon.HasLabel || bpCon.bodyPartLabel.Any((string s) => s == bpr.customLabel)) && (!bpCon.HasDef || bpCon.bodyPartDef.Any((BodyPartDef d) => d == bpr.def)) && (!bpCon.HasTag || (!bpr.def.tags.NullOrEmpty() && !bpCon.bodyPartTag.Intersect(bpr.def.tags).EnumerableNullOrEmpty())) - select bpr; - bool flag3 = !enumerable.EnumerableNullOrEmpty(); - if (flag3) - { - BPR = enumerable.RandomElement(); - result = true; - } - else - { - Tools.Warn(pawn.LabelShort + " does not have any compatible bodypart", debug); - result = false; - } - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CopyPawnSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CopyPawnSettings.cs deleted file mode 100644 index bc4a81f..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CopyPawnSettings.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class CopyPawnSettings - { - public bool HasHediffExclusion - { - get - { - return !this.excludeHediff.NullOrEmpty(); - } - } - - public bool name = false; - - public bool pawnKind = false; - - public bool age = false; - - public bool gender = false; - - public bool melanin = false; - - public bool skinColorChannel = false; - - public bool bodyType = false; - - public bool crownType = false; - - public bool hair = false; - - public bool hairColor = false; - - public bool hediff = false; - - public List excludeHediff; - - public bool excludeTendableHediffs = false; - - public bool excludePermanentHediffs = false; - - public bool childBS = false; - - public bool adultBS = false; - - public bool skills = false; - - public FloatRange skillDecay = new FloatRange(1f, 1f); - - public bool passions = false; - - public bool traits = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/DrawingSpecificities.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/DrawingSpecificities.cs deleted file mode 100644 index 1b02741..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/DrawingSpecificities.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public class DrawingSpecificities - { - public Vector3 GetRotationOffset(Pawn p) - { - RotationOffset rotationOffset; - bool flag = (rotationOffset = (from ro in this.rotationOffset - where ro.rot == p.Rotation - select ro).FirstOrFallback(null)) != null; - Vector3 result; - if (flag) - { - result = rotationOffset.offset; - } - else - { - result = Vector3.zero; - } - return result; - } - - public FloatRange randomScale = new FloatRange(0.5f, 0.8f); - - public List rotationOffset; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerParameters.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerParameters.cs deleted file mode 100644 index 4b07566..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerParameters.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class FactionPickerParameters - { - public bool HasInheritedFaction - { - get - { - return this.inheritedFaction; - } - } - - public bool HasForcedFaction - { - get - { - return this.forcedFaction != null; - } - } - - public bool HasPlayerFaction - { - get - { - return this.playerFaction; - } - } - - public bool HasNoFaction - { - get - { - return this.noFaction; - } - } - - public bool HasDefaultPawnKindFaction - { - get - { - return this.defaultPawnKindFaction; - } - } - - public bool IsLegitRandomFactionParameter() - { - int num = 0; - bool hasInheritedFaction = this.HasInheritedFaction; - checked - { - if (hasInheritedFaction) - { - num++; - } - bool hasForcedFaction = this.HasForcedFaction; - if (hasForcedFaction) - { - num++; - } - bool hasPlayerFaction = this.HasPlayerFaction; - if (hasPlayerFaction) - { - num++; - } - bool hasNoFaction = this.HasNoFaction; - if (hasNoFaction) - { - num++; - } - bool hasDefaultPawnKindFaction = this.HasDefaultPawnKindFaction; - if (hasDefaultPawnKindFaction) - { - num++; - } - return num == 1; - } - } - - public void Dump() - { - Log.Warning(string.Concat(new string[] - { - "inherited:", - this.HasInheritedFaction.ToString(), - "; forced:", - this.HasForcedFaction.ToString(), - "; player:", - this.HasPlayerFaction.ToString(), - "; noFaction:", - this.HasNoFaction.ToString(), - "; defaultPawnKindFaction:", - this.HasDefaultPawnKindFaction.ToString(), - "; " - })); - } - - public bool inheritedFaction = false; - - public FactionDef forcedFaction = null; - - public bool playerFaction = false; - - public bool defaultPawnKindFaction = false; - - public bool noFaction = false; - - public float weight = 1f; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerUtils.cs deleted file mode 100644 index 8693c91..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerUtils.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class FactionPickerUtils - { - public static float FactionTotalWeight(this List FPP) - { - float num = 0f; - for (int i = 0; i < FPP.Count; i = checked(i + 1)) - { - num += FPP[i].weight; - } - return num; - } - - public static void ComputeRandomFaction(this HediffComp_RandySpawnUponDeath comp) - { - bool flag = !comp.ChosenItem.HasFactionParams; - if (!flag) - { - int weightedRandomFaction = comp.GetWeightedRandomFaction(); - bool flag2 = weightedRandomFaction == -1; - if (flag2) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("ComputeRandomFaction - found no index"); - } - } - else - { - FactionPickerParameters factionPickerParameters = comp.ChosenItem.faction[weightedRandomFaction]; - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - factionPickerParameters.Dump(); - } - comp.RandomFaction = comp.GetFaction(factionPickerParameters); - bool myDebug3 = comp.MyDebug; - if (myDebug3) - { - string str = "ComputeRandomFaction - found:"; - Faction randomFaction = comp.RandomFaction; - Log.Warning(str + ((randomFaction != null) ? randomFaction.GetCallLabel() : null)); - } - } - } - } - - public static int GetWeightedRandomFaction(this HediffComp_RandySpawnUponDeath comp) - { - bool flag = !comp.HasChosenPawn || !comp.ChosenItem.HasFactionParams; - checked - { - int result; - if (flag) - { - result = -1; - } - else - { - List faction = comp.ChosenItem.faction; - float num = Rand.Range(0f, faction.FactionTotalWeight()); - for (int i = 0; i < faction.Count; i++) - { - bool flag2 = unchecked(num -= faction[i].weight) < 0f; - if (flag2) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("GetWeightedRandomIndex : returning " + i); - } - return i; - } - } - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning("GetWeightedRandomFaction : failed to return proper index, returning -1"); - } - result = -1; - } - return result; - } - } - - public static Faction GetFaction(this HediffComp_RandySpawnUponDeath comp, FactionPickerParameters FPP) - { - FactionDef fDef = comp.GetFactionDef(FPP); - bool flag = fDef == null; - Faction result; - if (flag) - { - result = null; - } - else - { - result = (from F in Find.FactionManager.AllFactions - where F.def == fDef - select F).FirstOrFallback(null); - } - return result; - } - - public static FactionDef GetFactionDef(this HediffComp_RandySpawnUponDeath comp, FactionPickerParameters FPP) - { - Pawn pawn = comp.Pawn; - bool flag = FPP.HasInheritedFaction && pawn.Faction != null; - FactionDef result; - if (flag) - { - result = pawn.Faction.def; - } - else - { - bool hasForcedFaction = FPP.HasForcedFaction; - if (hasForcedFaction) - { - result = FPP.forcedFaction; - } - else - { - bool hasPlayerFaction = FPP.HasPlayerFaction; - if (hasPlayerFaction) - { - result = Faction.OfPlayer.def; - } - else - { - bool hasNoFaction = FPP.HasNoFaction; - if (hasNoFaction) - { - result = null; - } - else - { - bool hasDefaultPawnKindFaction = FPP.HasDefaultPawnKindFaction; - if (hasDefaultPawnKindFaction) - { - PawnKindDef pawnKindToSpawn = comp.ChosenItem.pawnKindToSpawn; - result = (((pawnKindToSpawn != null) ? pawnKindToSpawn.defaultFactionType : null) ?? null); - } - else - { - result = null; - } - } - } - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FilthSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FilthSettings.cs deleted file mode 100644 index 54be685..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FilthSettings.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class FilthSettings - { - public ThingDef filthDef = null; - - public IntRange filthNum = new IntRange(1, 1); - - public FloatRange filthRadius = new FloatRange(1f, 1f); - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Footprint.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Footprint.cs deleted file mode 100644 index e6c8ddd..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Footprint.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using UnityEngine; - -namespace MoharHediffs -{ - public class Footprint - { - public string Dump() - { - return string.Concat(new object[] - { - "intervalDistance:", - this.intervalDistance, - "; offset:", - this.offset, - "; distanceBetweenFeet:", - this.distanceBetweenFeet - }); - } - - public float intervalDistance = 0.632f; - - public Vector3 offset = new Vector3(0f, 0f, -0.3f); - - public float distanceBetweenFeet = 0.17f; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GeneralSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GeneralSettings.cs deleted file mode 100644 index 6075da4..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GeneralSettings.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class GeneralSettings - { - public bool HasSomethingToSpawn - { - get - { - return !this.things.NullOrEmpty(); - } - } - - public bool HasDefaultSettings - { - get - { - return this.defaultSettings != null; - } - } - - public void LogParams(bool myDebug = false) - { - if (myDebug) - { - Log.Warning(string.Concat(new string[] - { - "HasSomethingToSpawn:", - this.HasSomethingToSpawn.ToString(), - "; HasDefaultSettings:", - this.HasDefaultSettings.ToString(), - "; " - })); - } - } - - public List things; - - public CommonSettings defaultSettings; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GfxEffects.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GfxEffects.cs deleted file mode 100644 index 8fd89c0..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GfxEffects.cs +++ /dev/null @@ -1,153 +0,0 @@ -using System; -using AlienRace; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class GfxEffects - { - public static Color ClosestColor(Pawn pawn, bool complementary = false, bool myDebug = false) - { - AlienPartGenerator.AlienComp alien = Tools.GetAlien(pawn); - bool flag = alien == null; - Color color; - if (flag) - { - color = pawn.DrawColor; - } - else - { - color = alien.GetChannel("skin").first; - if (myDebug) - { - Log.Warning(pawn.LabelShort + " is alien, color=" + color); - } - } - Color color2 = Color.blue; - float num = 1000f; - float num2 = Math.Abs(color.r - MyGfx.Purple.r) + Math.Abs(color.g - MyGfx.Purple.g) / 4f + Math.Abs(color.b - MyGfx.Purple.b); - float num3 = Math.Abs(color.r - MyGfx.Blue.r) / 2f + Math.Abs(color.g - MyGfx.Blue.g) / 2f + Math.Abs(color.b - MyGfx.Blue.b); - float num4 = Math.Abs(color.r - MyGfx.Cyan.r) / 4f + Math.Abs(color.g - MyGfx.Cyan.g) + Math.Abs(color.b - MyGfx.Cyan.b); - float num5 = Math.Abs(color.r - MyGfx.Green.r) / 2f + Math.Abs(color.g - MyGfx.Green.g) + Math.Abs(color.b - MyGfx.Green.b) / 2f; - float num6 = Math.Abs(color.r - MyGfx.Yellow.r) + Math.Abs(color.g - MyGfx.Yellow.g) + Math.Abs(color.b - MyGfx.Yellow.b) / 4f; - float num7 = Math.Abs(color.r - MyGfx.Orange.r) + Math.Abs(color.g - MyGfx.Orange.g) / 1.6f + Math.Abs(color.b - MyGfx.Orange.b) / 2.5f; - float num8 = Math.Abs(color.r - MyGfx.Red.r) + Math.Abs(color.g - MyGfx.Red.g) / 2f + Math.Abs(color.b - MyGfx.Red.b) / 2f; - if (myDebug) - { - Log.Warning(pawn.LabelShort + "'s pColor: " + color); - Log.Warning(string.Concat(new object[] - { - "purpleDiff: ", - num2, - "; blueDiff: ", - num3, - "; cyanDiff: ", - num4, - "; greenDiff: ", - num5, - "; yellowDiff: ", - num6, - "; orangeDiff: ", - num7, - "; redDiff: ", - num8 - })); - } - bool flag2 = num2 < num; - if (flag2) - { - num = num2; - color2 = MyGfx.Purple; - } - bool flag3 = num3 < num; - if (flag3) - { - num = num3; - color2 = MyGfx.Blue; - } - bool flag4 = num4 < num; - if (flag4) - { - num = num4; - color2 = MyGfx.Blue; - } - bool flag5 = num5 < num; - if (flag5) - { - num = num5; - color2 = MyGfx.Green; - } - bool flag6 = num6 < num; - if (flag6) - { - num = num6; - color2 = MyGfx.Yellow; - } - bool flag7 = num7 < num; - if (flag7) - { - num = num7; - color2 = MyGfx.Orange; - } - bool flag8 = num8 < num; - if (flag8) - { - color2 = MyGfx.Red; - } - if (complementary) - { - bool flag9 = color2 == MyGfx.Purple; - if (flag9) - { - color2 = MyGfx.Yellow; - } - else - { - bool flag10 = color2 == MyGfx.Blue || color2 == MyGfx.Cyan; - if (flag10) - { - color2 = MyGfx.Orange; - } - else - { - bool flag11 = color2 == MyGfx.Green; - if (flag11) - { - color2 = MyGfx.Red; - } - else - { - bool flag12 = color2 == MyGfx.Yellow; - if (flag12) - { - color2 = MyGfx.Purple; - } - else - { - bool flag13 = color2 == MyGfx.Orange; - if (flag13) - { - color2 = MyGfx.Blue; - } - else - { - bool flag14 = color2 == MyGfx.Red; - if (flag14) - { - color2 = MyGfx.Green; - } - } - } - } - } - } - } - if (myDebug) - { - Log.Warning(complementary ? "complementary" : ("closest Color=" + color2)); - } - return color2; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffCompProperties_HediffExclusive.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffCompProperties_HediffExclusive.cs deleted file mode 100644 index 65eb369..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffCompProperties_HediffExclusive.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HeDiffCompProperties_HediffExclusive : HediffCompProperties - { - public HeDiffCompProperties_HediffExclusive() - { - this.compClass = typeof(HeDiffComp_HediffExclusive); - } - - public List hediffToNullify; - - public List hediffPatternToNullify; - - public HediffDef hediffToApply = null; - - public BodyDef bodyDef; - - public List bodyDefWhiteList; - - public List bodyDefBlackList; - - public BodyPartDef bodyPartDef; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffComp_HediffExclusive.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffComp_HediffExclusive.cs deleted file mode 100644 index 2a4d8e6..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffComp_HediffExclusive.cs +++ /dev/null @@ -1,341 +0,0 @@ -using System; -using System.Linq; -using Verse; - -namespace MoharHediffs -{ - public class HeDiffComp_HediffExclusive : HediffComp - { - private bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public HeDiffCompProperties_HediffExclusive Props - { - get - { - return (HeDiffCompProperties_HediffExclusive)this.props; - } - } - - public bool HasHediffToNullify - { - get - { - return !this.Props.hediffToNullify.NullOrEmpty(); - } - } - - public bool HasHediffPatternToNullify - { - get - { - return !this.Props.hediffPatternToNullify.NullOrEmpty(); - } - } - - public bool HasHediffToApply - { - get - { - return this.Props.hediffToApply != null; - } - } - - private bool HasWhiteList - { - get - { - return !this.Props.bodyDefWhiteList.NullOrEmpty(); - } - } - - private bool HasBlackList - { - get - { - return !this.Props.bodyDefBlackList.NullOrEmpty(); - } - } - - private bool WhiteListCompliant - { - get - { - return !this.HasWhiteList || this.Props.bodyDefWhiteList.Contains(base.Pawn.def.race.body); - } - } - - private bool BlackListCompliant - { - get - { - return !this.HasBlackList || !this.Props.bodyDefBlackList.Contains(base.Pawn.def.race.body); - } - } - - private bool HasAccessList - { - get - { - return this.HasWhiteList || this.HasBlackList; - } - } - - private string DebugStr - { - get - { - return this.MyDebug ? (base.Pawn.LabelShort + " HediffExclusive " + this.parent.def.defName + " - ") : ""; - } - } - - private bool PatternMatch(string MyHediffDefname) - { - foreach (string value in this.Props.hediffPatternToNullify) - { - bool flag = MyHediffDefname.Contains(value); - if (flag) - { - return true; - } - } - return false; - } - - public void NullifyHediff() - { - int num = 0; - checked - { - foreach (Hediff hediff in base.Pawn.health.hediffSet.hediffs) - { - Tools.Warn(string.Concat(new object[] - { - base.Pawn.Label, - " hediff #", - num, - ": ", - hediff.def.defName - }), this.MyDebug); - int num2 = 0; - foreach (HediffDef hediffDef in this.Props.hediffToNullify) - { - Tools.Warn(string.Concat(new object[] - { - " Props.hediffToNullify #", - num2, - ": ", - hediffDef - }), this.MyDebug); - bool flag = hediff.def == hediffDef && this.Props.hediffToApply != hediffDef; - if (flag) - { - hediff.Severity = 0f; - Tools.Warn(hediff.def.defName + " removed", this.MyDebug); - } - num2++; - } - num++; - } - } - } - - public void PatternNullifyHediff() - { - int num = 0; - checked - { - foreach (Hediff hediff in base.Pawn.health.hediffSet.hediffs) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning(string.Concat(new object[] - { - base.Pawn.LabelShort, - " hediff #", - num, - ": ", - hediff.def.defName - })); - } - int num2 = 0; - foreach (string text in this.Props.hediffPatternToNullify) - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning(string.Concat(new object[] - { - " Props.hediffPatternToNullify #", - num2, - ": ", - text - })); - } - bool flag = this.PatternMatch(hediff.def.defName); - if (flag) - { - hediff.Severity = 0f; - Tools.Warn(hediff.def.defName + " severity = 0", this.MyDebug); - } - num2++; - } - num++; - } - } - } - - public void ApplyHediff() - { - HediffDef hediffToApply = this.Props.hediffToApply; - bool flag = hediffToApply == null; - if (flag) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning("cant find hediff called: " + this.Props.hediffToApply); - } - } - else - { - BodyPartDef bodyPartDef = (from b in DefDatabase.AllDefs - where b == this.Props.bodyPartDef - select b).RandomElementWithFallback(null); - BodyPartRecord bodyPartRecord = null; - bool flag2 = bodyPartDef != null; - if (flag2) - { - bodyPartRecord = base.Pawn.RaceProps.body.GetPartsWithDef(bodyPartDef).RandomElementWithFallback(null); - bool flag3 = bodyPartRecord == null; - if (flag3) - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning("cant find body part record called: " + this.Props.bodyPartDef.defName); - } - return; - } - } - Hediff hediff = HediffMaker.MakeHediff(hediffToApply, base.Pawn, bodyPartRecord); - bool flag4 = hediff == null; - if (flag4) - { - bool myDebug3 = this.MyDebug; - if (myDebug3) - { - Log.Warning("cant create hediff " + hediffToApply.defName + " to apply on " + this.Props.bodyPartDef.defName); - } - } - else - { - base.Pawn.health.AddHediff(hediff, bodyPartRecord, null, null); - } - } - } - - public bool CheckProps() - { - string text = this.DebugStr + "ApplyHediff - "; - bool flag = this.Props.bodyDef != null; - if (flag) - { - bool flag2 = base.Pawn.def.race.body != this.Props.bodyDef; - if (flag2) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning(string.Concat(new string[] - { - base.Pawn.Label, - " has not a bodyDef like required: ", - base.Pawn.def.race.body.ToString(), - "!=", - this.Props.bodyDef.ToString() - })); - } - return false; - } - } - bool hasAccessList = this.HasAccessList; - if (hasAccessList) - { - bool blackListCompliant = this.BlackListCompliant; - bool whiteListCompliant = this.WhiteListCompliant; - bool flag3 = !blackListCompliant || !whiteListCompliant; - if (flag3) - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning(string.Concat(new string[] - { - text, - this.HasWhiteList ? string.Format("Props.BodyDefWhiteList contains {0} elements", this.Props.bodyDefWhiteList.Count) : "No whitelist", - ", compliant: ", - whiteListCompliant.ToString(), - "; ", - this.HasBlackList ? string.Format("Props.BodyDefBlackList contains {0} elements", this.Props.bodyDefBlackList.Count) : "No blacklist", - ", compliant:", - blackListCompliant.ToString() - })); - } - return false; - } - bool myDebug3 = this.MyDebug; - if (myDebug3) - { - Log.Warning(text + " AccessList compliant ok"); - } - } - return true; - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = base.Pawn.Negligible(); - if (!flag) - { - bool flag2 = this.CheckProps(); - if (flag2) - { - bool hasHediffToNullify = this.HasHediffToNullify; - if (hasHediffToNullify) - { - this.NullifyHediff(); - } - bool hasHediffPatternToNullify = this.HasHediffPatternToNullify; - if (hasHediffPatternToNullify) - { - this.PatternNullifyHediff(); - } - bool hasHediffToApply = this.HasHediffToApply; - if (hasHediffToApply) - { - this.ApplyHediff(); - } - } - Tools.DestroyParentHediff(this.parent, this.MyDebug); - } - } - - public override string CompTipStringExtra - { - get - { - string empty = string.Empty; - return empty + "This should disappear very fast"; - } - } - - private const int tickLimiterModulo = 60; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffAndBodyPart.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffAndBodyPart.cs deleted file mode 100644 index 61d575e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffAndBodyPart.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffAndBodyPart - { - public HediffDef hediff; - - public BodyPartDef bodyPart; - - public string bodyPartLabel; - - public bool prioritizeMissing = false; - - public bool allowMissing = true; - - public bool regenIfMissing = true; - - public bool allowAddedPart = true; - - public bool wholeBodyFallback = true; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_AnotherRandom.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_AnotherRandom.cs deleted file mode 100644 index 90c33eb..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_AnotherRandom.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_AnotherRandom : HediffCompProperties - { - public bool HasConditionsToApplyHediffs - { - get - { - return this.conditionsToApplyHediffs != null; - } - } - - public bool HasDefaultCondition - { - get - { - return this.defaultCondition != null; - } - } - - public bool HasHediffPool - { - get - { - return !this.hediffPool.NullOrEmpty(); - } - } - - public HediffCompProperties_AnotherRandom() - { - this.compClass = typeof(HediffComp_AnotherRandom); - } - - public HediffCondition conditionsToApplyHediffs; - - public HediffCondition defaultCondition; - - public List hediffPool; - - public IntRange hediffToApplyNumRange = new IntRange(1, 1); - - public bool excludePickedItems = true; - - public bool excludeRandomlyNotApplied = false; - - public bool debug = false; - - public int verbosity = 1; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Filther.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Filther.cs deleted file mode 100644 index ae08e6a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Filther.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_Filther : HediffCompProperties - { - public HediffCompProperties_Filther() - { - this.compClass = typeof(HediffComp_Filther); - } - - public int MinTicksBetweenSprays = 60; - - public int MaxTicksBetweenSprays = 120; - - public ThingDef filthDef = null; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffNullifier.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffNullifier.cs deleted file mode 100644 index c632728..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffNullifier.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_HediffNullifier : HediffCompProperties - { - public HediffCompProperties_HediffNullifier() - { - this.compClass = typeof(HediffComp_HediffNullifier); - } - - public int checkPeriod = 240; - - public List hediffToNullify; - - public int limitedUsageNumber = -99; - - public List RequiredBodyPart; - - public bool showMessage = false; - - public string nullifyKey = ""; - - public bool concatUsageLimit = false; - - public string limitedKey = ""; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffRandom.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffRandom.cs deleted file mode 100644 index 39dc875..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffRandom.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_HediffRandom : HediffCompProperties - { - public HediffCompProperties_HediffRandom() - { - this.compClass = typeof(HediffComp_HediffRandom); - } - - public BodyDef bodyDef; - - public List hediffPool; - - public List weights; - - public List bodyPartDef; - - public bool debug = false; - - public bool hideBySeverity = true; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_InnerShine.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_InnerShine.cs deleted file mode 100644 index c0f7120..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_InnerShine.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_InnerShine : HediffCompProperties - { - public bool HasShinePool - { - get - { - return this.HasRawShinePool || this.HasShineDefPool; - } - } - - public bool HasRawShinePool - { - get - { - return !this.innerShinePool.NullOrEmpty(); - } - } - - public bool HasShineDefPool - { - get - { - return !this.innerShineDefPool.NullOrEmpty(); - } - } - - public HediffCompProperties_InnerShine() - { - this.compClass = typeof(HediffComp_InnerShine); - } - - public List innerShinePool; - - public List innerShineDefPool; - - public bool debug; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_MultipleHediff.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_MultipleHediff.cs deleted file mode 100644 index 16c10ca..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_MultipleHediff.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_MultipleHediff : HediffCompProperties - { - public HediffCompProperties_MultipleHediff() - { - this.compClass = typeof(HediffComp_MultipleHediff); - } - - public BodyDef bodyDef; - - public List bodyDefWhiteList; - - public List bodyDefBlackList; - - public List hediffAndBodypart; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_OnTheCarpet.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_OnTheCarpet.cs deleted file mode 100644 index 2b74c6e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_OnTheCarpet.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_OnTheCarpet : HediffCompProperties - { - public bool HasDefaultCondition - { - get - { - return this.defaultCondition != null; - } - } - - public bool HasHediffPool - { - get - { - return !this.hediffPool.NullOrEmpty(); - } - } - - public int ItemCount - { - get - { - return this.HasHediffPool ? this.hediffPool.Count : 0; - } - } - - public HediffCompProperties_OnTheCarpet() - { - this.compClass = typeof(HediffComp_OnTheCarpet); - } - - public List hediffPool; - - public HediffKeepingCondition defaultCondition; - - public int checkPeriod = 120; - - public int graceTimeBase = 120; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_PostRemoveTrigger_HediffAdd.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_PostRemoveTrigger_HediffAdd.cs deleted file mode 100644 index ef49eac..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_PostRemoveTrigger_HediffAdd.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_PostRemoveTrigger_HediffAdd : HediffCompProperties - { - public HediffCompProperties_PostRemoveTrigger_HediffAdd() - { - this.compClass = typeof(HediffComp_PostRemoveTrigger_HediffAdd); - } - - public List triggeredHediff; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RainbowTrail.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RainbowTrail.cs deleted file mode 100644 index 90c99c5..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RainbowTrail.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_RainbowTrail : HediffCompProperties - { - public HediffCompProperties_RainbowTrail() - { - this.compClass = typeof(HediffComp_RainbowTrail); - } - - public int period = 15; - - public List motePurpleDef; - - public List moteBlueDef; - - public List moteGreenDef; - - public List moteYellowDef; - - public List moteOrangeDef; - - public List moteRedDef; - - public float staySameColorChance = 0.5f; - - public int maxTimesSameColor = 3; - - public int minTimesSameColor = 1; - - public FloatRange scale = new FloatRange(0.5f, 0.8f); - - public bool threeColorsGradient = false; - - public HediffComp_RainbowTrail.ColorChoice colorChoice = HediffComp_RainbowTrail.ColorChoice.random; - - public HediffComp_RainbowTrail.CycleKind cycleKind = HediffComp_RainbowTrail.CycleKind.circular; - - public bool debug = false; - - public bool hideBySeverity = true; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawnUponDeath.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawnUponDeath.cs deleted file mode 100644 index e1a6e33..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawnUponDeath.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_RandySpawnUponDeath : HediffCompProperties - { - public bool HasRequirements - { - get - { - return this.requirements != null; - } - } - - public bool HasParentRedress - { - get - { - return this.redressParent != null; - } - } - - public HediffCompProperties_RandySpawnUponDeath() - { - this.compClass = typeof(HediffComp_RandySpawnUponDeath); - } - - public GeneralSettings settings; - - public RedressSettings redressParent; - - public RequirementSettings requirements; - - public IntRange iterationRange = new IntRange(1, 1); - - public bool excludeAlreadyPickedOptions = false; - - public int spawnMaxAdjacent = -1; - - public bool spawnForbidden = false; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawner.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawner.cs deleted file mode 100644 index 7b67b66..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawner.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_RandySpawner : HediffCompProperties - { - public HediffCompProperties_RandySpawner() - { - this.compClass = typeof(HediffComp_RandySpawner); - } - - public List itemParameters; - - public int spawnMaxAdjacent = -1; - - public bool spawnForbidden = false; - - public bool hungerRelative = false; - - public bool healthRelative = false; - - public bool logNextSpawn = false; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Spawner.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Spawner.cs deleted file mode 100644 index a558bf7..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Spawner.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_Spawner : HediffCompProperties - { - public HediffCompProperties_Spawner() - { - this.compClass = typeof(HediffComp_Spawner); - } - - public ThingDef thingToSpawn; - - public int spawnCount = 1; - - public bool animalThing = false; - - public PawnKindDef animalToSpawn; - - public bool factionOfPlayerAnimal = false; - - public float minDaysB4Next = 1f; - - public float maxDaysB4Next = 2f; - - public float randomGrace = 0f; - - public float graceDays = 0.5f; - - public int spawnMaxAdjacent = -1; - - public bool spawnForbidden = false; - - public bool hungerRelative = false; - - public bool healthRelative = false; - - public bool ageWeightedQuantity = false; - - public bool ageWeightedPeriod = false; - - public bool olderSmallerPeriod = false; - - public bool olderBiggerQuantity = false; - - public bool exponentialQuantity = false; - - public int exponentialRatioLimit = 15; - - public string spawnVerb = "delivery"; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Steamer.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Steamer.cs deleted file mode 100644 index f52c48b..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Steamer.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_Steamer : HediffCompProperties - { - public HediffCompProperties_Steamer() - { - this.compClass = typeof(HediffComp_Steamer); - } - - public int MinTicksBetweenSprays = 200; - - public int MaxTicksBetweenSprays = 400; - - public int MinSprayDuration = 60; - - public int MaxSprayDuration = 120; - - public float puffingChance = 1f; - - public float temperatureIncreasePerPuff = 0.5f; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_TrailLeaver.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_TrailLeaver.cs deleted file mode 100644 index 75bf603..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_TrailLeaver.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_TrailLeaver : HediffCompProperties - { - public bool HasRestriction - { - get - { - return this.restriction != null; - } - } - - public bool HasColorRange - { - get - { - return this.colorRange != null; - } - } - - public bool UsesFootPrints - { - get - { - return this.footprint != null; - } - } - - public bool HasMotePool - { - get - { - return !this.motePool.NullOrEmpty(); - } - } - - public bool HasOffset - { - get - { - return !this.offSetPerBodyType.NullOrEmpty(); - } - } - - public bool HasRotationOffset - { - get - { - return this.rotationOffset != 0f; - } - } - - public HediffCompProperties_TrailLeaver() - { - this.compClass = typeof(HediffComp_TrailLeaver); - } - - public IntRange period = new IntRange(15, 25); - - public List motePool; - - public List offSetPerBodyType; - - public Vector3 defaultOffset = new Vector3(0f, 0f, -0.32f); - - public Restriction restriction; - - public Footprint footprint; - - public ColorRange colorRange; - - public float rotationOffset = 0f; - - public bool dynamicRotation = true; - - public FloatRange randomScale = new FloatRange(0.5f, 0.8f); - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_AnotherRandom.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_AnotherRandom.cs deleted file mode 100644 index 8c01cde..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_AnotherRandom.cs +++ /dev/null @@ -1,322 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_AnotherRandom : HediffComp - { - public bool HasItems - { - get - { - return this.Props.HasHediffPool; - } - } - - public int ItemNum - { - get - { - return this.Props.hediffPool.Count; - } - } - - public bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public bool LowVerbosity - { - get - { - return this.Props.debug && this.Props.verbosity >= 1; - } - } - - public bool MediumVerbosity - { - get - { - return this.Props.debug && this.Props.verbosity >= 2; - } - } - - public bool HighVerbosity - { - get - { - return this.Props.debug && this.Props.verbosity >= 3; - } - } - - public HediffCompProperties_AnotherRandom Props - { - get - { - return (HediffCompProperties_AnotherRandom)this.props; - } - } - - public void DumpProps() - { - string text = "CheckProps"; - bool flag = !this.HasItems; - if (flag) - { - Tools.Warn(text + "- HediffComp_AnotherRandom; no item found", this.MyDebug); - } - else - { - Tools.Warn(string.Concat(new object[] - { - text, - "- HediffComp_AnotherRandom; found ", - this.ItemNum, - " items" - }), this.MyDebug); - } - } - - public override void CompPostMake() - { - base.CompPostMake(); - string text = this.MyDebug ? (base.Pawn.LabelShort + " CompPostMake - ") : ""; - bool myDebug = this.MyDebug; - if (myDebug) - { - this.DumpProps(); - } - bool flag = !this.HasItems; - if (flag) - { - Tools.Warn(text + " found no item to work with, destroying ", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - this.blockAction = true; - } - else - { - Tools.Warn(string.Concat(new object[] - { - text, - " found ", - this.ItemNum, - " items to work with" - }), this.MyDebug); - bool hasConditionsToApplyHediffs = this.Props.HasConditionsToApplyHediffs; - if (hasConditionsToApplyHediffs) - { - BodyPartRecord bodyPartRecord; - bool flag2 = !this.Props.conditionsToApplyHediffs.pawn.ValidateCompatibilityOfHediffWithPawn(base.Pawn, this.MyDebug) || !this.Props.conditionsToApplyHediffs.bodyPart.GetBPRFromHediffCondition(base.Pawn, out bodyPartRecord, this.MyDebug); - if (flag2) - { - Tools.Warn(text + " is not compatible with this hediff, destroying ", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - this.blockAction = true; - return; - } - } - else - { - Tools.Warn(text + " skipped HasConditionsToApplyHediffs", this.MyDebug); - } - Tools.Warn(string.Concat(new object[] - { - text, - " checking if at least 1 hediff from ", - this.ItemNum, - " is appliable" - }), this.MyDebug); - bool flag3 = !this.InitialHediffConditionCheck(this.MyDebug); - if (flag3) - { - Tools.Warn(text + " has found no appliable item, destroying ", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - this.blockAction = true; - } - else - { - Tools.Warn(text + " found at least 1 appliable hediff", this.MyDebug); - } - } - } - - public void ApplyHediff(Pawn pawn) - { - string text = this.MyDebug ? (base.Pawn.LabelShort + " - " + this.parent.def.defName + " - ApplyHediff") : ""; - List list = new List(); - int randomInRange = this.Props.hediffToApplyNumRange.RandomInRange; - List list2 = this.GetCompatibleItems(); - bool flag = list2.NullOrEmpty(); - checked - { - if (!flag) - { - Tools.Warn(string.Concat(new object[] - { - text, - "Trying to apply ", - randomInRange, - " hediffs among ", - list2.Count, - " options pool" - }), this.MyDebug); - for (int i = 0; i < randomInRange; i++) - { - string text2 = this.MyDebug ? string.Concat(new object[] - { - "[", - i, - "/", - randomInRange, - "]" - }) : ""; - bool flag2 = !list.NullOrEmpty(); - if (flag2) - { - list2 = list2.GetRemainingItems(list); - bool flag3 = list2.NullOrEmpty(); - if (flag3) - { - break; - } - } - Tools.Warn(string.Concat(new object[] - { - text, - text2, - " ", - list2.Count, - " options remaining " - }), this.MyDebug); - HediffItem hediffItem = list2.PickRandomWeightedItem(false); - bool flag4 = hediffItem == null; - if (flag4) - { - Tools.Warn(text + text2 + " null hediffItem, giving up ", this.MyDebug); - break; - } - Tools.Warn(string.Concat(new object[] - { - text, - text2, - " found a hediffItem:", - (hediffItem != null) ? hediffItem.hediffDef : null, - ", going on " - }), this.MyDebug); - float randomInRange2 = hediffItem.applyChance.RandomInRange; - bool flag5 = !Rand.Chance(randomInRange2); - if (flag5) - { - Tools.Warn(string.Concat(new object[] - { - text, - text2, - " rand(", - randomInRange2, - ") == false, nothing is applied" - }), this.MyDebug); - bool flag6 = this.Props.excludePickedItems && this.Props.excludeRandomlyNotApplied; - if (flag6) - { - list.Add(hediffItem); - } - } - else - { - Tools.Warn(string.Concat(new object[] - { - text, - text2, - " rand(", - randomInRange2, - ") == true, hediff:", - (hediffItem != null) ? hediffItem.hediffDef : null, - " will be applied" - }), this.MyDebug); - HediffDef hediffDef = hediffItem.hediffDef; - bool flag7 = hediffDef == null; - if (flag7) - { - Tools.Warn(text + text2 + "cant find hediff, giving up", this.MyDebug); - break; - } - HediffCompProperties_AnotherRandom props = this.Props; - HediffCondition defaultPlusSpecificHediffCondition = ConditionBuilder.GetDefaultPlusSpecificHediffCondition(((props != null) ? props.defaultCondition : null) ?? null, ((hediffItem != null) ? hediffItem.specificCondition : null) ?? null, this.HighVerbosity); - BodyPartRecord bodyPartRecord; - bool flag8 = !defaultPlusSpecificHediffCondition.bodyPart.GetBPRFromHediffCondition(base.Pawn, out bodyPartRecord, this.MyDebug); - if (flag8) - { - Tools.Warn(text + text2 + " could not find anything suitable, giving up", this.MyDebug); - break; - } - Hediff hediff = HediffMaker.MakeHediff(hediffDef, pawn, bodyPartRecord); - bool flag9 = hediff == null; - if (flag9) - { - Tools.Warn(text + text2 + "cant create hediff", this.MyDebug); - break; - } - hediff.Severity = hediffItem.severity.RandomInRange; - Tools.Warn(string.Concat(new object[] - { - text, - text2, - " Applying hediff:", - hediffDef.defName, - "; bpr:", - (bodyPartRecord == null) ? "body" : bodyPartRecord.def.defName, - "; severity:", - hediff.Severity - }), this.MyDebug); - pawn.health.AddHediff(hediff, bodyPartRecord, null, null); - bool excludePickedItems = this.Props.excludePickedItems; - if (excludePickedItems) - { - list.Add(hediffItem); - } - } - } - } - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - Pawn pawn = this.parent.pawn; - bool flag = !Tools.OkPawn(pawn); - if (!flag) - { - bool flag2 = this.blockAction; - if (flag2) - { - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - } - else - { - bool hasItems = this.HasItems; - if (hasItems) - { - this.ApplyHediff(pawn); - } - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - } - } - } - - public override string CompTipStringExtra - { - get - { - string empty = string.Empty; - return empty + "This should disappear very fast"; - } - } - - private bool blockAction = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Filther.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Filther.cs deleted file mode 100644 index cdb1a13..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Filther.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_Filther : HediffComp - { - public HediffCompProperties_Filther Props - { - get - { - return (HediffCompProperties_Filther)this.props; - } - } - - public override void CompPostMake() - { - this.myDebug = this.Props.debug; - } - - public override void CompPostTick(ref float severityAdjustment) - { - this.myPawn = this.parent.pawn; - bool flag = this.myPawn == null; - checked - { - if (flag) - { - Tools.Warn("pawn null", this.myDebug); - } - else - { - bool flag2 = this.myPawn.Map == null; - if (!flag2) - { - bool flag3 = this.Props.filthDef == null; - if (!flag3) - { - bool flag4 = this.filthTicksLeft <= 0; - if (flag4) - { - FilthMaker.TryMakeFilth(this.myPawn.Position, this.myPawn.Map, this.Props.filthDef, 1, FilthSourceFlags.None, true); - this.filthTicksLeft = (this.ticksUntilFilth = Rand.RangeInclusive(this.Props.MinTicksBetweenSprays, this.Props.MaxTicksBetweenSprays)); - } - else - { - this.filthTicksLeft--; - } - } - } - } - } - } - - private Pawn myPawn = null; - - private int ticksUntilFilth = 500; - - private int filthTicksLeft; - - private bool myDebug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffNullifier.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffNullifier.cs deleted file mode 100644 index 4806add..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffNullifier.cs +++ /dev/null @@ -1,230 +0,0 @@ -using System; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_HediffNullifier : HediffComp - { - public HediffCompProperties_HediffNullifier Props - { - get - { - return (HediffCompProperties_HediffNullifier)this.props; - } - } - - public bool RequiresAtLeastOneBodyPart - { - get - { - return !this.Props.RequiredBodyPart.NullOrEmpty(); - } - } - - public bool HasMessageToDisplay - { - get - { - return this.Props.showMessage && !this.Props.nullifyKey.NullOrEmpty(); - } - } - - public bool DisplayLimitedUsageLeft - { - get - { - return this.HasMessageToDisplay && this.Props.concatUsageLimit && !this.Props.limitedKey.NullOrEmpty(); - } - } - - public bool HasHediffToNullify - { - get - { - return !this.Props.hediffToNullify.NullOrEmpty(); - } - } - - public bool HasLimitedUsage - { - get - { - return this.Props.limitedUsageNumber != -99; - } - } - - public void BlockAndDestroy() - { - Tools.DestroyParentHediff(this.parent, this.myDebug); - this.BlockPostTick = true; - } - - public override void CompPostMake() - { - bool flag = this.myDebug; - if (flag) - { - Log.Warning(">>>" + this.parent.def.defName + " - CompPostMake start"); - } - bool flag2 = !this.HasHediffToNullify; - if (flag2) - { - bool flag3 = this.myDebug; - if (flag3) - { - Log.Warning(this.parent.def.defName + " has no hediff to nullify, autokill"); - } - this.BlockAndDestroy(); - } - this.DestroyHediffIfMissingBP(); - bool hasLimitedUsage = this.HasLimitedUsage; - if (hasLimitedUsage) - { - this.LimitedUsageNumber = this.Props.limitedUsageNumber; - } - } - - public void DestroyHediffIfMissingBP() - { - bool flag = !this.RequiresAtLeastOneBodyPart; - if (!flag) - { - bool flag2 = false; - foreach (BodyPartDef bodyPartDef in this.Props.RequiredBodyPart) - { - bool flag3; - flag2 = (flag3 = base.Pawn.CheckIfExistingNaturalBP(bodyPartDef, false)); - if (flag3) - { - break; - } - } - bool flag4 = !flag2; - if (flag4) - { - bool flag5 = this.myDebug; - if (flag5) - { - Log.Warning(base.Pawn.LabelShort + " does not have any required body part to have an active " + this.parent.def.defName + ", autokill"); - } - this.BlockAndDestroy(); - } - } - } - - public override void CompExposeData() - { - Scribe_Values.Look(ref this.LimitedUsageNumber, "LimitedUsageNumber", 0, false); - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = !base.Pawn.IsHashIntervalTick(this.Props.checkPeriod); - checked - { - if (!flag) - { - bool flag2 = !Tools.OkPawn(base.Pawn); - if (!flag2) - { - this.DestroyHediffIfMissingBP(); - bool blockPostTick = this.BlockPostTick; - if (!blockPostTick) - { - foreach (Hediff hediff in from h in base.Pawn.health.hediffSet.hediffs - where this.Props.hediffToNullify.Contains(h.def) - select h) - { - bool flag3 = this.myDebug; - if (flag3) - { - Log.Warning(base.Pawn.Label + " - " + hediff.def.defName); - } - hediff.Severity = 0f; - bool flag4 = this.myDebug; - if (flag4) - { - Log.Warning(hediff.def.defName + " severity = 0"); - } - bool hasLimitedUsage = this.HasLimitedUsage; - if (hasLimitedUsage) - { - this.LimitedUsageNumber--; - bool flag5 = this.LimitedUsageNumber <= 0; - if (flag5) - { - bool flag6 = this.myDebug; - if (flag6) - { - Log.Warning(this.parent.def.defName + " has reached its limit usage, autokill"); - } - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - bool hasMessageToDisplay = this.HasMessageToDisplay; - if (hasMessageToDisplay) - { - string text = this.Props.nullifyKey.Translate(base.Pawn.LabelShort, hediff.def.label, base.Pawn.gender.GetPronoun(), base.Pawn.kindDef.race.label); - bool displayLimitedUsageLeft = this.DisplayLimitedUsageLeft; - if (displayLimitedUsageLeft) - { - text += this.Props.limitedKey.Translate(this.LimitedUsageNumber); - } - text += "."; - Messages.Message(text, MessageTypeDefOf.NeutralEvent, true); - } - } - } - } - } - } - } - - public override string CompTipStringExtra - { - get - { - string text = string.Empty; - bool flag = !this.HasHediffToNullify; - string result; - if (flag) - { - result = text; - } - else - { - text += "Immune to: "; - foreach (HediffDef hediffDef in this.Props.hediffToNullify) - { - text = text + hediffDef.label + "; "; - } - bool flag2 = !this.HasLimitedUsage; - if (flag2) - { - text += " for ever"; - } - else - { - text = string.Concat(new object[] - { - text, - " ", - this.LimitedUsageNumber, - " left" - }); - } - result = text; - } - return result; - } - } - - private int LimitedUsageNumber = 0; - - private bool BlockPostTick = false; - - private readonly bool myDebug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffRandom.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffRandom.cs deleted file mode 100644 index a8b9b16..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffRandom.cs +++ /dev/null @@ -1,178 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_HediffRandom : HediffComp - { - public HediffCompProperties_HediffRandom Props - { - get - { - return (HediffCompProperties_HediffRandom)this.props; - } - } - - private bool myDebug - { - get - { - return this.Props.debug; - } - } - - private bool HasWeights - { - get - { - return !this.Props.weights.NullOrEmpty() && this.Props.weights.Count == this.Props.hediffPool.Count; - } - } - - private bool HasBodyParts - { - get - { - return !this.Props.bodyPartDef.NullOrEmpty() && this.Props.bodyPartDef.Count == this.Props.hediffPool.Count; - } - } - - private bool HasHediff - { - get - { - return !this.Props.hediffPool.NullOrEmpty(); - } - } - - private Pawn pawn - { - get - { - return this.parent.pawn; - } - } - - public override void CompPostMake() - { - bool hideBySeverity = this.Props.hideBySeverity; - if (hideBySeverity) - { - this.parent.Severity = 0.05f; - } - } - - public int WeightedRandomness - { - get - { - int num = 0; - checked - { - foreach (int num2 in this.Props.weights) - { - num += num2; - } - int num3 = Rand.Range(0, num); - for (int i = 0; i < this.Props.weights.Count; i++) - { - int num4 = this.Props.weights[i]; - bool flag = (num3 -= num4) < 0; - if (flag) - { - return i; - } - } - return 0; - } - } - } - - public void ApplyHediff(Pawn pawn) - { - bool flag = this.Props.bodyDef != null; - if (flag) - { - bool flag2 = pawn.def.race.body != this.Props.bodyDef; - if (flag2) - { - Tools.Warn(string.Concat(new string[] - { - pawn.Label, - " has not a bodyDef like required: ", - pawn.def.race.body.ToString(), - "!=", - this.Props.bodyDef.ToString() - }), this.myDebug); - return; - } - } - bool flag3 = !this.HasWeights; - int num; - if (flag3) - { - num = Rand.Range(0, this.Props.hediffPool.Count()); - } - else - { - num = this.WeightedRandomness; - } - bool flag4 = num < 0 || num >= this.Props.hediffPool.Count; - if (flag4) - { - Tools.Warn(num + " is out of range. Applyhediff will fail. Please report this error.", this.myDebug); - } - HediffDef hediffDef = this.Props.hediffPool[num]; - bool flag5 = hediffDef == null; - if (flag5) - { - Tools.Warn("cant find hediff", this.myDebug); - } - else - { - BodyPartRecord bodyPartRecord = null; - BodyPartDef bodyPartDef = null; - bool hasBodyParts = this.HasBodyParts; - if (hasBodyParts) - { - bodyPartDef = this.Props.bodyPartDef[num]; - IEnumerable partsWithDef = pawn.RaceProps.body.GetPartsWithDef(bodyPartDef); - bool flag6 = partsWithDef.EnumerableNullOrEmpty(); - if (flag6) - { - Tools.Warn("cant find body part record called: " + bodyPartDef.defName, this.myDebug); - return; - } - bodyPartRecord = partsWithDef.RandomElement(); - } - Hediff hediff = HediffMaker.MakeHediff(hediffDef, pawn, bodyPartRecord); - bool flag7 = hediff == null; - if (flag7) - { - Tools.Warn("cant create hediff " + hediffDef.defName + " to apply on " + ((bodyPartDef != null) ? bodyPartDef.defName : null), this.myDebug); - } - else - { - pawn.health.AddHediff(hediff, bodyPartRecord, null, null); - Tools.Warn("Succesfully applied " + hediffDef.defName + " to apply on " + ((bodyPartDef != null) ? bodyPartDef.defName : null), this.myDebug); - } - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = !Tools.OkPawn(this.pawn); - if (!flag) - { - bool hasHediff = this.HasHediff; - if (hasHediff) - { - this.ApplyHediff(this.pawn); - } - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_InnerShine.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_InnerShine.cs deleted file mode 100644 index 91cad6b..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_InnerShine.cs +++ /dev/null @@ -1,209 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_InnerShine : HediffComp - { - public Map MyMap - { - get - { - return base.Pawn.Map; - } - } - - public bool NullMap - { - get - { - return this.MyMap == null; - } - } - - public bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public bool HasEmptyTracer - { - get - { - return this.Tracer.NullOrEmpty(); - } - } - - public bool HasShinePool - { - get - { - return this.Props.HasShinePool; - } - } - - public HediffCompProperties_InnerShine Props - { - get - { - return (HediffCompProperties_InnerShine)this.props; - } - } - - public override void CompPostMake() - { - this.PropsCheck(); - this.CreateTracer(); - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = base.Pawn.Negligible(); - checked - { - if (flag) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning("null pawn"); - } - } - else - { - bool hasEmptyTracer = this.HasEmptyTracer; - if (hasEmptyTracer) - { - this.CreateTracer(); - } - foreach (InnerShineRecord innerShineRecord in this.Tracer) - { - InnerShineItem innerShineItem = this.RetrieveISI(innerShineRecord.label); - bool flag2 = innerShineItem == null; - if (flag2) - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning("Did not find ISI with label:" + innerShineRecord.label); - } - } - else - { - bool flag3 = innerShineRecord.ticksLeft <= 0; - if (flag3) - { - bool flag4 = innerShineItem.ShouldSpawnMote(innerShineRecord, base.Pawn); - if (flag4) - { - innerShineItem.TryPlaceMote(innerShineRecord, base.Pawn); - } - innerShineItem.ResetTicks(innerShineRecord); - } - else - { - innerShineRecord.ticksLeft--; - } - innerShineItem.UpdateMotes(innerShineRecord, base.Pawn, this.MyDebug); - } - } - } - } - } - - public void PropsCheck() - { - bool flag = !this.HasShinePool; - checked - { - if (flag) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning("no shine pool, giving up"); - } - this.SelfDestroy(); - } - else - { - bool flag2 = !this.MyDebug; - if (!flag2) - { - bool hasRawShinePool = this.Props.HasRawShinePool; - if (hasRawShinePool) - { - IEnumerable enumerable; - bool flag3 = (enumerable = from s in this.Props.innerShinePool - where !s.HasMotePool - select s) != null; - if (flag3) - { - foreach (InnerShineItem innerShineItem in enumerable) - { - Log.Warning(innerShineItem.label + " has no mote pool"); - } - } - IEnumerable enumerable2; - bool flag4 = (enumerable2 = from s in this.Props.innerShinePool - where !s.HasDefaultDrawRules && !s.HasBodyTypeDrawRules - select s) != null; - if (flag4) - { - foreach (InnerShineItem innerShineItem2 in enumerable2) - { - Log.Warning(innerShineItem2.label + " has no default nor bodytypedef draw rules, at least one is required"); - } - } - int num = 0; - foreach (InnerShineItem innerShineItem3 in this.Props.innerShinePool) - { - Log.Warning("Raw" + num.ToString("00") + " => " + innerShineItem3.Dump()); - num++; - } - } - bool hasShineDefPool = this.Props.HasShineDefPool; - if (hasShineDefPool) - { - IEnumerable enumerable3; - bool flag5 = (enumerable3 = from s in this.Props.innerShineDefPool - where !s.item.HasMotePool - select s) != null; - if (flag5) - { - foreach (InnerShineDef innerShineDef in enumerable3) - { - Log.Warning(innerShineDef.item.label + " has no mote pool"); - } - } - IEnumerable enumerable4; - bool flag6 = (enumerable4 = from s in this.Props.innerShineDefPool - where !s.item.HasDefaultDrawRules && !s.item.HasBodyTypeDrawRules - select s) != null; - if (flag6) - { - foreach (InnerShineDef innerShineDef2 in enumerable4) - { - Log.Warning(innerShineDef2.item.label + " has no default nor bodytypedef draw rules, at least one is required"); - } - } - int num2 = 0; - foreach (InnerShineDef innerShineDef3 in this.Props.innerShineDefPool) - { - Log.Warning("Def" + num2.ToString("00") + " => " + innerShineDef3.item.Dump()); - num2++; - } - } - } - } - } - } - - public List Tracer; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_MultipleHediff.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_MultipleHediff.cs deleted file mode 100644 index 8de1b36..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_MultipleHediff.cs +++ /dev/null @@ -1,287 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_MultipleHediff : HediffComp - { - private bool MyDebug - { - get - { - return this.Props.debug; - } - } - - private string DebugStr - { - get - { - return this.MyDebug ? (base.Pawn.LabelShort + " MultipleHediff " + this.parent.def.defName + " - ") : ""; - } - } - - private bool HasSingleBodyRequirement - { - get - { - return this.Props.bodyDef != null; - } - } - - private bool HasWhiteList - { - get - { - return !this.Props.bodyDefWhiteList.NullOrEmpty(); - } - } - - private bool HasBlackList - { - get - { - return !this.Props.bodyDefBlackList.NullOrEmpty(); - } - } - - private bool WhiteListCompliant - { - get - { - return !this.HasWhiteList || this.Props.bodyDefWhiteList.Contains(base.Pawn.def.race.body); - } - } - - private bool BlackListCompliant - { - get - { - return !this.HasBlackList || !this.Props.bodyDefBlackList.Contains(base.Pawn.def.race.body); - } - } - - private bool HasAccessList - { - get - { - return this.HasWhiteList || this.HasBlackList; - } - } - - public HediffCompProperties_MultipleHediff Props - { - get - { - return (HediffCompProperties_MultipleHediff)this.props; - } - } - - public bool HasHediffToApply - { - get - { - return !this.Props.hediffAndBodypart.NullOrEmpty(); - } - } - - public void CheckProps() - { - string text = this.DebugStr + "CheckProps - "; - bool flag = !this.HasHediffToApply; - if (flag) - { - Tools.Warn(text + "- empty hediffAndBodypart, destroying", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, false); - this.blockAction = true; - } - bool flag2 = this.HasSingleBodyRequirement && base.Pawn.def.race.body != this.Props.bodyDef; - if (flag2) - { - Tools.Warn(string.Concat(new string[] - { - text, - " has not a bodyDef like required: ", - base.Pawn.def.race.body.ToString(), - "!=", - this.Props.bodyDef.ToString() - }), this.MyDebug); - base.Pawn.DestroyHediff(this.parent, false); - this.blockAction = true; - } - bool hasAccessList = this.HasAccessList; - if (hasAccessList) - { - bool blackListCompliant = this.BlackListCompliant; - bool whiteListCompliant = this.WhiteListCompliant; - bool flag3 = !blackListCompliant || !whiteListCompliant; - if (flag3) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning(string.Concat(new string[] - { - text, - this.HasWhiteList ? string.Format("Props.BodyDefWhiteList contains {0} elements", this.Props.bodyDefWhiteList.Count) : "No whitelist", - ", compliant: ", - whiteListCompliant.ToString(), - "; ", - this.HasBlackList ? string.Format("Props.BodyDefBlackList contains {0} elements", this.Props.bodyDefBlackList.Count) : "No blacklist", - ", compliant:", - blackListCompliant.ToString() - })); - } - base.Pawn.DestroyHediff(this.parent, false); - this.blockAction = true; - } - else - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning(text + " AccessList compliant ok"); - } - } - } - bool flag4 = this.Props.hediffAndBodypart.Any((HediffAndBodyPart habp) => habp.bodyPart != null && habp.bodyPartLabel != null); - if (flag4) - { - Tools.Warn(text + "at least one item has both a bodypart def and a bodypart label, label will be prioritized", this.MyDebug); - } - bool flag5 = this.Props.hediffAndBodypart.Any((HediffAndBodyPart habp) => habp.hediff == null); - if (flag5) - { - Tools.Warn(text + "at least one item has no hediff defined. What will happen ?", this.MyDebug); - } - } - - public void BlockAndDestroy(string ErrorLog = "", bool myDebug = false) - { - Tools.Warn(ErrorLog, myDebug && !ErrorLog.NullOrEmpty()); - this.blockAction = true; - Tools.DestroyParentHediff(this.parent, myDebug); - } - - public override void CompPostMake() - { - base.CompPostMake(); - Tools.Warn(this.DebugStr + "CompPostMake", this.MyDebug); - this.CheckProps(); - } - - public void ApplyHediff(Pawn pawn) - { - string text = this.DebugStr + "ApplyHediff - "; - checked - { - for (int i = 0; i < this.Props.hediffAndBodypart.Count; i++) - { - HediffDef hediff = this.Props.hediffAndBodypart[i].hediff; - BodyPartDef bodyPart = this.Props.hediffAndBodypart[i].bodyPart; - string bodyPartLabel = this.Props.hediffAndBodypart[i].bodyPartLabel; - bool prioritizeMissing = this.Props.hediffAndBodypart[i].prioritizeMissing; - bool allowMissing = this.Props.hediffAndBodypart[i].allowMissing; - bool regenIfMissing = this.Props.hediffAndBodypart[i].regenIfMissing; - bool allowAddedPart = this.Props.hediffAndBodypart[i].allowAddedPart; - bool wholeBodyFallback = this.Props.hediffAndBodypart[i].wholeBodyFallback; - bool flag = hediff == null; - if (flag) - { - Tools.Warn(text + "cant find hediff; i=" + i, true); - } - else - { - BodyPartRecord bodyPartRecord = null; - bool flag2 = bodyPartLabel != null || bodyPart != null; - if (flag2) - { - Tools.Warn(string.Concat(new string[] - { - text, - "Trying to retrieve BPR with [BP label]:", - bodyPartLabel, - " [BP def]:", - (bodyPart != null) ? bodyPart.defName : null - }), this.MyDebug); - bodyPartRecord = pawn.GetBPRecordWithoutHediff(bodyPartLabel, bodyPart, hediff, allowMissing, prioritizeMissing, allowAddedPart, this.MyDebug); - } - bool flag3 = bodyPartRecord == null; - if (flag3) - { - Tools.Warn(text + "Could not find a BPR to apply hediff, will pick whole body?" + wholeBodyFallback.ToString(), this.MyDebug); - bool flag4 = !wholeBodyFallback; - if (flag4) - { - goto IL_291; - } - } - bool flag5 = allowMissing && regenIfMissing && bodyPartRecord != null; - if (flag5) - { - Hediff hediff2; - bool flag6 = base.Pawn.IsMissingBPR(bodyPartRecord, out hediff2); - if (flag6) - { - Tools.Warn(text + "regenerating " + bodyPartRecord.customLabel, this.MyDebug); - base.Pawn.health.RemoveHediff(hediff2); - } - } - Hediff hediff3 = HediffMaker.MakeHediff(hediff, pawn, bodyPartRecord); - bool flag7 = hediff3 == null; - if (flag7) - { - Tools.Warn(string.Concat(new string[] - { - text, - "cant create hediff ", - hediff.defName, - " to apply on ", - bodyPart.defName - }), true); - } - else - { - pawn.health.AddHediff(hediff3, bodyPartRecord, null, null); - Tools.Warn(text + "Applied " + hediff.defName, this.MyDebug); - } - } - IL_291:; - } - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = base.Pawn.Negligible(); - if (!flag) - { - bool flag2 = this.blockAction; - if (flag2) - { - Tools.DestroyParentHediff(this.parent, this.MyDebug); - } - else - { - bool hasHediffToApply = this.HasHediffToApply; - if (hasHediffToApply) - { - this.ApplyHediff(base.Pawn); - } - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - } - } - } - - public override string CompTipStringExtra - { - get - { - string empty = string.Empty; - return empty + "This should disappear very fast"; - } - } - - private bool blockAction = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_OnTheCarpet.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_OnTheCarpet.cs deleted file mode 100644 index be43d76..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_OnTheCarpet.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_OnTheCarpet : HediffComp - { - public bool HasItems - { - get - { - return this.Props.HasHediffPool; - } - } - - public int ItemCount - { - get - { - return this.Props.ItemCount; - } - } - - public bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public bool IsTimeToCheck - { - get - { - return base.Pawn.IsHashIntervalTick(this.Props.checkPeriod); - } - } - - public HediffCompProperties_OnTheCarpet Props - { - get - { - return (HediffCompProperties_OnTheCarpet)this.props; - } - } - - public void BlockAndDestroy(string ErrorLog = "", bool myDebug = false) - { - Tools.Warn(ErrorLog, myDebug && !ErrorLog.NullOrEmpty()); - this.blockAction = true; - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - } - - public override void CompPostMake() - { - base.CompPostMake(); - string text = this.MyDebug ? (base.Pawn.LabelShort + " " + this.parent.def.defName + " CompPostMake - ") : ""; - bool flag = !this.HasItems; - if (flag) - { - Tools.Warn(text + " found no item to work with, destroying ", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - this.blockAction = true; - } - else - { - Tools.Warn(string.Concat(new object[] - { - text, - " found ", - this.ItemCount, - " items to work with" - }), this.MyDebug); - bool flag2 = !this.Props.IsPawnNeedCompatible(base.Pawn); - if (flag2) - { - Tools.Warn(text + " is not compatible with this hediff, destroying ", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - this.blockAction = true; - } - else - { - this.SetGraceTime(); - Tools.Warn(text + " found something to do", this.MyDebug); - } - } - } - - public void SetGraceTime() - { - this.graceTime = this.Props.graceTimeBase; - } - - public override void CompExposeData() - { - base.CompExposeData(); - Scribe_Values.Look(ref this.graceTime, "graceTime", 0, false); - } - - public override void CompPostTick(ref float severityAdjustment) - { - base.CompPostTick(ref severityAdjustment); - bool flag = base.Pawn.Negligible(); - if (!flag) - { - bool flag2 = this.blockAction; - if (!flag2) - { - int num = this.graceTime; - this.graceTime = checked(num - 1); - bool flag3 = num > 0; - if (!flag3) - { - bool flag4 = false; - bool isTimeToCheck = this.IsTimeToCheck; - if (isTimeToCheck) - { - flag4 = !this.TreatRelevantHediffsAndReportIfStillHediffsToCheck(); - } - bool flag5 = flag4; - if (flag5) - { - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - } - } - } - } - } - - public override string CompTipStringExtra - { - get - { - string empty = string.Empty; - return empty + "This should not disappear until an hediff is still there"; - } - } - - private bool blockAction = false; - - private int graceTime = 999; - - public bool foundFault = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_PostRemoveTrigger_HediffAdd.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_PostRemoveTrigger_HediffAdd.cs deleted file mode 100644 index 5107726..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_PostRemoveTrigger_HediffAdd.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_PostRemoveTrigger_HediffAdd : HediffComp - { - public HediffCompProperties_PostRemoveTrigger_HediffAdd Props - { - get - { - return (HediffCompProperties_PostRemoveTrigger_HediffAdd)this.props; - } - } - - public void CheckProps() - { - bool flag = !this.HasHediffToApply; - if (flag) - { - this.blockAction = true; - Tools.DestroyParentHediff(this.parent, this.Props.debug); - } - } - - public bool HasHediffToApply - { - get - { - return !this.Props.triggeredHediff.NullOrEmpty(); - } - } - - public void ApplyHediff(Pawn pawn) - { - checked - { - for (int i = 0; i < this.Props.triggeredHediff.Count; i++) - { - HediffDef hediffDef = this.Props.triggeredHediff[i]; - bool flag = hediffDef == null; - if (flag) - { - Tools.Warn("cant find hediff; i=" + i, true); - break; - } - Hediff hediff = HediffMaker.MakeHediff(hediffDef, pawn, null); - bool flag2 = hediff == null; - if (flag2) - { - Tools.Warn("cant create hediff " + hediffDef.defName, true); - break; - } - Tools.Warn("Adding " + hediffDef.defName + "for science", this.Props.debug); - pawn.health.AddHediff(hediff, null, null, null); - } - } - } - - public override void CompPostPostRemoved() - { - Pawn pawn = this.parent.pawn; - bool flag = !Tools.OkPawn(pawn); - if (flag) - { - Tools.DestroyParentHediff(this.parent, this.Props.debug); - } - else - { - bool flag2 = this.blockAction; - if (!flag2) - { - Tools.Warn(this.parent.def.defName + " is no more, applying hediff", this.Props.debug); - bool hasHediffToApply = this.HasHediffToApply; - if (hasHediffToApply) - { - this.ApplyHediff(pawn); - } - } - } - } - - public override string CompTipStringExtra - { - get - { - string text = string.Empty; - bool debug = this.Props.debug; - if (debug) - { - text = text + this.parent.def.defName + " is still alive, aperture science we do what we must"; - } - return text; - } - } - - private bool blockAction = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RainbowTrail.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RainbowTrail.cs deleted file mode 100644 index fe998d8..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RainbowTrail.cs +++ /dev/null @@ -1,514 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_RainbowTrail : HediffComp - { - public HediffCompProperties_RainbowTrail Props - { - get - { - return (HediffCompProperties_RainbowTrail)this.props; - } - } - - public override void CompPostMake() - { - bool hideBySeverity = this.Props.hideBySeverity; - if (hideBySeverity) - { - this.parent.Severity = 0.05f; - } - this.myDebug = this.Props.debug; - this.Init(this.myDebug); - } - - public override void CompExposeData() - { - Scribe_Values.Look(ref this.ticksLeft, "ticksLeft", 0, false); - Scribe_Values.Look(ref this.curColor, "curColor", HediffComp_RainbowTrail.RainbowColor.purple, false); - Scribe_Values.Look(ref this.variation, "variation", 0, false); - Scribe_Values.Look(ref this.myDebug, "debug", false, false); - } - - public override void CompPostTick(ref float severityAdjustment) - { - this.SetPawnAndMap(); - bool flag = this.myPawn == null || this.myMap == null || this.blockAction; - checked - { - if (flag) - { - Tools.Warn(string.Concat(new string[] - { - "null tick - pawn: ", - (this.myPawn == null).ToString(), - "myMap: ", - (this.myMap == null).ToString(), - "blockAction: ", - this.blockAction.ToString() - }), this.myDebug); - } - else - { - bool flag2 = this.moteDef.NullOrEmpty(); - if (flag2) - { - Tools.Warn("empty moteDef", this.myDebug); - this.Init(this.myDebug); - } - TerrainDef terrain = this.myPawn.Position.GetTerrain(this.myPawn.Map); - bool flag3 = terrain == null || terrain.IsWater || this.myPawn.Map.snowGrid.GetDepth(this.myPawn.Position) >= 0.4f || !this.myPawn.Position.InBounds(this.myMap); - if (flag3) - { - Tools.Warn(string.Concat(new object[] - { - this.myPawn, - "'s ", - this.parent.def.defName, - " is blocked by terrain" - }), this.myDebug); - } - else - { - bool flag4 = this.ticksLeft <= 0; - if (flag4) - { - bool flag5 = this.TryPlaceMote(); - if (flag5) - { - this.sameColorInRow++; - bool flag6 = this.sameColorInRow >= this.Props.minTimesSameColor || this.sameColorInRow > this.Props.maxTimesSameColor || !Rand.Chance(this.Props.staySameColorChance); - if (flag6) - { - bool threeColorsGradient = this.Props.threeColorsGradient; - if (threeColorsGradient) - { - this.NextColorThreeColors(); - } - else - { - this.NextColorRainbow(); - } - Tools.Warn(string.Concat(new object[] - { - this.myPawn, - "'s ", - this.parent.def.defName, - " now uses ", - this.curColor, - "after ", - this.sameColorInRow, - "puddles" - }), this.myDebug); - this.SetMoteDef(); - this.sameColorInRow = 0; - } - this.Reset(); - } - else - { - Tools.Warn(string.Concat(new object[] - { - this.myPawn, - "'s ", - this.parent.def.defName, - "failed to TryPlaceMote" - }), this.myDebug); - } - } - else - { - this.ticksLeft--; - } - } - } - } - } - - public void SetMoteDef() - { - switch (this.curColor) - { - case HediffComp_RainbowTrail.RainbowColor.purple: - this.moteDef = this.Props.motePurpleDef; - break; - case HediffComp_RainbowTrail.RainbowColor.blue: - this.moteDef = this.Props.moteBlueDef; - break; - case HediffComp_RainbowTrail.RainbowColor.green: - this.moteDef = this.Props.moteGreenDef; - break; - case HediffComp_RainbowTrail.RainbowColor.yellow: - this.moteDef = this.Props.moteYellowDef; - break; - case HediffComp_RainbowTrail.RainbowColor.orange: - this.moteDef = this.Props.moteOrangeDef; - break; - case HediffComp_RainbowTrail.RainbowColor.red: - this.moteDef = this.Props.moteRedDef; - break; - } - } - - public void NextColorRainbow() - { - checked - { - this.curColor += this.variation; - bool flag = this.Props.cycleKind == HediffComp_RainbowTrail.CycleKind.circular; - if (flag) - { - bool flag2 = this.curColor > HediffComp_RainbowTrail.RainbowColor.red; - if (flag2) - { - this.curColor = HediffComp_RainbowTrail.RainbowColor.purple; - } - else - { - bool flag3 = this.curColor < HediffComp_RainbowTrail.RainbowColor.purple; - if (flag3) - { - this.curColor = HediffComp_RainbowTrail.RainbowColor.red; - } - } - } - else - { - bool flag4 = this.Props.cycleKind == HediffComp_RainbowTrail.CycleKind.bouncing; - if (flag4) - { - bool flag5 = this.curColor > HediffComp_RainbowTrail.RainbowColor.red; - if (flag5) - { - this.variation = -1; - this.curColor = HediffComp_RainbowTrail.RainbowColor.orange; - } - else - { - bool flag6 = this.curColor < HediffComp_RainbowTrail.RainbowColor.purple; - if (flag6) - { - this.variation = 1; - this.curColor = HediffComp_RainbowTrail.RainbowColor.blue; - } - } - } - else - { - bool flag7 = this.Props.cycleKind == HediffComp_RainbowTrail.CycleKind.random; - if (flag7) - { - this.curColor = (HediffComp_RainbowTrail.RainbowColor)Rand.Range(0, 6); - } - } - } - } - } - - public void NextColorThreeColors() - { - checked - { - this.curColor += this.variation; - bool flag = this.Props.cycleKind == HediffComp_RainbowTrail.CycleKind.circular; - if (flag) - { - bool flag2 = this.curColor > this.topColor; - if (flag2) - { - this.curColor = this.bottomColor; - } - else - { - bool flag3 = this.curColor < this.bottomColor; - if (flag3) - { - this.curColor = this.topColor; - } - } - } - else - { - bool flag4 = this.Props.cycleKind == HediffComp_RainbowTrail.CycleKind.bouncing; - if (flag4) - { - bool flag5 = this.curColor > this.topColor; - if (flag5) - { - this.variation = -1; - this.curColor = this.pivotColor; - } - else - { - bool flag6 = this.curColor < HediffComp_RainbowTrail.RainbowColor.purple; - if (flag6) - { - this.variation = 1; - this.curColor = this.pivotColor; - } - } - } - else - { - bool flag7 = this.Props.cycleKind == HediffComp_RainbowTrail.CycleKind.random; - if (flag7) - { - bool flag8 = Rand.Chance(0.33f); - if (flag8) - { - this.curColor = this.pivotColor; - } - else - { - bool flag9 = Rand.Chance(0.5f); - if (flag9) - { - this.curColor = this.topColor; - } - else - { - this.curColor = this.bottomColor; - } - } - } - } - } - } - } - - private void SetPawnAndMap() - { - this.myPawn = this.parent.pawn; - this.myMap = this.myPawn.Map; - } - - public HediffComp_RainbowTrail.RainbowColor ColorTranslation(Color myColor) - { - bool flag = myColor == MyGfx.Purple; - HediffComp_RainbowTrail.RainbowColor result; - if (flag) - { - result = HediffComp_RainbowTrail.RainbowColor.purple; - } - else - { - bool flag2 = myColor == MyGfx.Blue; - if (flag2) - { - result = HediffComp_RainbowTrail.RainbowColor.blue; - } - else - { - bool flag3 = myColor == MyGfx.Green; - if (flag3) - { - result = HediffComp_RainbowTrail.RainbowColor.green; - } - else - { - bool flag4 = myColor == MyGfx.Yellow; - if (flag4) - { - result = HediffComp_RainbowTrail.RainbowColor.yellow; - } - else - { - bool flag5 = myColor == MyGfx.Orange; - if (flag5) - { - result = HediffComp_RainbowTrail.RainbowColor.orange; - } - else - { - bool flag6 = myColor == MyGfx.Red; - if (flag6) - { - result = HediffComp_RainbowTrail.RainbowColor.red; - } - else - { - Tools.Warn(this.myPawn.LabelShort + " could not ColorTranslation, default value", this.myDebug); - result = HediffComp_RainbowTrail.RainbowColor.blue; - } - } - } - } - } - } - return result; - } - - public void Init(bool myDebug = false) - { - this.SetPawnAndMap(); - Tools.Warn(string.Concat(new object[] - { - this.myPawn, - "'s ", - this.parent.def.defName, - " Init" - }), myDebug); - bool flag = this.Props.motePurpleDef.NullOrEmpty() || this.Props.moteBlueDef.NullOrEmpty() || this.Props.moteGreenDef.NullOrEmpty() || this.Props.moteYellowDef.NullOrEmpty() || this.Props.moteOrangeDef.NullOrEmpty() || this.Props.moteRedDef.NullOrEmpty(); - if (flag) - { - this.blockAction = true; - this.parent.Severity = 0f; - } - switch (this.Props.colorChoice) - { - case HediffComp_RainbowTrail.ColorChoice.pawnColor: - { - Color myColor = GfxEffects.ClosestColor(this.myPawn, false, myDebug); - this.pivotColor = (this.curColor = this.ColorTranslation(myColor)); - break; - } - case HediffComp_RainbowTrail.ColorChoice.complementary: - { - Color myColor2 = GfxEffects.ClosestColor(this.myPawn, true, myDebug); - this.pivotColor = (this.curColor = this.ColorTranslation(myColor2)); - break; - } - case HediffComp_RainbowTrail.ColorChoice.random: - this.pivotColor = (this.curColor = (HediffComp_RainbowTrail.RainbowColor)Rand.Range(0, 6)); - break; - } - checked - { - this.bottomColor = this.pivotColor - 1; - this.topColor = this.pivotColor + 1; - bool flag2 = this.topColor > HediffComp_RainbowTrail.RainbowColor.red; - if (flag2) - { - this.topColor = HediffComp_RainbowTrail.RainbowColor.purple; - } - bool flag3 = this.bottomColor < HediffComp_RainbowTrail.RainbowColor.purple; - if (flag3) - { - this.bottomColor = HediffComp_RainbowTrail.RainbowColor.red; - } - Tools.Warn(string.Concat(new object[] - { - this.myPawn, - "'s ", - this.parent.def.defName, - " bottom: ", - this.bottomColor, - " pivot: ", - this.pivotColor, - " top: ", - this.topColor - }), myDebug); - this.SetMoteDef(); - } - } - - public static void PlacePuddle(Vector3 loc, Map map, float rot, float scale, ThingDef Mote_FootprintDef) - { - bool flag = !loc.ShouldSpawnMotesAt(map, true) || map.moteCounter.SaturatedLowPriority; - if (!flag) - { - MoteThrown moteThrown = (MoteThrown)ThingMaker.MakeThing(Mote_FootprintDef, null); - moteThrown.Scale = scale; - moteThrown.exactRotation = rot; - moteThrown.exactPosition = loc; - GenSpawn.Spawn(moteThrown, loc.ToIntVec3(), map, WipeMode.Vanish); - } - } - - private bool TryPlaceMote() - { - Vector3 drawPos = this.myPawn.Drawer.DrawPos; - Vector3 normalized = (drawPos - this.lastFootprintPlacePos).normalized; - float rot = normalized.AngleFlat(); - Vector3 vector = this.myPawn.TrueCenter() + HediffComp_RainbowTrail.PuddleOffset; - IntVec3 c = vector.ToIntVec3(); - bool flag = c.InBounds(this.myMap); - if (flag) - { - TerrainDef terrain = c.GetTerrain(this.myPawn.Map); - bool flag2 = terrain != null; - if (flag2) - { - HediffComp_RainbowTrail.PlacePuddle(vector, this.myMap, rot, this.Props.scale.RandomInRange, this.moteDef.RandomElement()); - return true; - } - } - this.lastFootprintPlacePos = drawPos; - return false; - } - - private void Reset() - { - this.ticksLeft = this.Props.period; - } - - private Pawn myPawn = null; - - private Map myMap = null; - - private Vector3 lastFootprintPlacePos; - - private static readonly Vector3 PuddleOffset = new Vector3(0f, 0f, -0.3f); - - private int ticksLeft; - - private List moteDef = null; - - private HediffComp_RainbowTrail.RainbowColor curColor = HediffComp_RainbowTrail.RainbowColor.purple; - - private int sameColorInRow = 0; - - public HediffComp_RainbowTrail.RainbowColor bottomColor; - - public HediffComp_RainbowTrail.RainbowColor pivotColor; - - public HediffComp_RainbowTrail.RainbowColor topColor; - - private int variation = 1; - - private bool blockAction = false; - - private bool myDebug = false; - - public enum RainbowColor - { - [Description("purple")] - purple, - [Description("blue")] - blue, - [Description("green")] - green, - [Description("yellow")] - yellow, - [Description("orange")] - orange, - [Description("red")] - red - } - - public enum ColorChoice - { - [Description("pawnColor")] - pawnColor, - [Description("complementary")] - complementary, - [Description("random")] - random - } - - public enum CycleKind - { - [Description("circular")] - circular, - [Description("bouncing")] - bouncing, - [Description("random")] - random - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawnUponDeath.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawnUponDeath.cs deleted file mode 100644 index 893ed2e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawnUponDeath.cs +++ /dev/null @@ -1,587 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_RandySpawnUponDeath : HediffComp - { - public HediffCompProperties_RandySpawnUponDeath Props - { - get - { - return (HediffCompProperties_RandySpawnUponDeath)this.props; - } - } - - public bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public bool ValidIndex - { - get - { - return this.RandomIndex != -1 && this.Props.settings.HasSomethingToSpawn && this.RandomIndex < this.NumberOfItems; - } - } - - public bool ValidQuantity - { - get - { - return this.RandomQuantity > 0; - } - } - - public ThingSettings ChosenItem - { - get - { - return this.ValidIndex ? this.Props.settings.things[this.RandomIndex] : null; - } - } - - public bool HasRequirement - { - get - { - return this.Props.HasRequirements && this.Props.requirements.HasAtLeastOneRequirementSetting; - } - } - - public bool HasHediffRequirement - { - get - { - return this.Props.HasRequirements && this.Props.requirements.HasHediffRequirement; - } - } - - public bool HasThingRequirement - { - get - { - return this.Props.HasRequirements && this.Props.requirements.HasThingRequirement; - } - } - - public bool HasCustomSpawn - { - get - { - bool result; - if (this.HasThingRequirement) - { - result = this.Props.requirements.thing.Any((ThingRequirementSettings t) => t.HasCustomSpawn); - } - else - { - result = false; - } - return result; - } - } - - public bool HasContainerSpawn - { - get - { - bool result; - if (this.HasThingRequirement) - { - result = this.Props.requirements.thing.Any((ThingRequirementSettings t) => t.HasContainerSpawn); - } - else - { - result = false; - } - return result; - } - } - - public bool HasChosenThing - { - get - { - return this.ChosenItem != null && this.ChosenItem.thingToSpawn != null; - } - } - - public bool HasChosenPawn - { - get - { - return this.ChosenItem != null && (this.ChosenItem.pawnKindToSpawn != null || this.IsParentPawnKindCopier); - } - } - - public bool IsParentPawnKindCopier - { - get - { - return this.ChosenItem.IsCopier && this.ChosenItem.copyParent.pawnKind; - } - } - - public bool PrecedentIterationsExclusion - { - get - { - return this.Props.excludeAlreadyPickedOptions; - } - } - - public bool HasColorCondition - { - get - { - return this.Props.settings.things.Any((ThingSettings t) => t.HasColorCondition); - } - } - - public ThingDef ThingOfChoice - { - get - { - return this.HasChosenThing ? this.ChosenItem.thingToSpawn : null; - } - } - - public List FullOptionList - { - get - { - return this.Props.settings.things; - } - } - - public PawnKindDef PawnOfChoice - { - get - { - bool flag = !this.HasChosenPawn; - PawnKindDef result; - if (flag) - { - result = null; - } - else - { - bool isParentPawnKindCopier = this.IsParentPawnKindCopier; - if (isParentPawnKindCopier) - { - result = base.Pawn.kindDef; - } - else - { - result = this.ChosenItem.pawnKindToSpawn; - } - } - return result; - } - } - - public bool HasFilth - { - get - { - return this.FilthToSpawn != null; - } - } - - public int NumberOfItems - { - get - { - return this.Props.settings.things.Count; - } - } - - public int NumberToSpawn - { - get - { - bool flag = this.HasChosenThing && this.ChosenItem.HasStackSettings; - int result; - if (flag) - { - result = this.ChosenItem.specificSettings.stack.spawnCount.RandomInRange; - } - else - { - bool hasDefaultSettings = this.Props.settings.HasDefaultSettings; - if (hasDefaultSettings) - { - result = this.Props.settings.defaultSettings.stack.spawnCount.RandomInRange; - } - else - { - result = 1; - } - } - return result; - } - } - - public bool WeightedSpawn - { - get - { - bool flag = this.HasChosenThing && this.ChosenItem.HasStackSettings; - bool result; - if (flag) - { - result = this.ChosenItem.specificSettings.stack.weightedSpawnCount; - } - else - { - bool hasDefaultSettings = this.Props.settings.HasDefaultSettings; - result = (hasDefaultSettings && this.Props.settings.defaultSettings.stack.weightedSpawnCount); - } - return result; - } - } - - public ThingDef FilthToSpawn - { - get - { - bool flag = this.HasChosenThing && this.ChosenItem.HasFilthSettings; - ThingDef result; - if (flag) - { - result = this.ChosenItem.specificSettings.filth.filthDef; - } - else - { - bool hasDefaultSettings = this.Props.settings.HasDefaultSettings; - if (hasDefaultSettings) - { - result = this.Props.settings.defaultSettings.filth.filthDef; - } - else - { - result = null; - } - } - return result; - } - } - - public FloatRange FilthRadius - { - get - { - bool flag = this.HasChosenThing && this.ChosenItem.HasFilthSettings; - FloatRange result; - if (flag) - { - result = this.ChosenItem.specificSettings.filth.filthRadius; - } - else - { - bool hasDefaultSettings = this.Props.settings.HasDefaultSettings; - if (hasDefaultSettings) - { - result = this.Props.settings.defaultSettings.filth.filthRadius; - } - else - { - result = new FloatRange(0f, 1f); - } - } - return result; - } - } - - public IntRange FilthNum - { - get - { - bool flag = this.HasChosenThing && this.ChosenItem.HasFilthSettings; - IntRange result; - if (flag) - { - result = this.ChosenItem.specificSettings.filth.filthNum; - } - else - { - bool hasDefaultSettings = this.Props.settings.HasDefaultSettings; - if (hasDefaultSettings) - { - result = this.Props.settings.defaultSettings.filth.filthNum; - } - else - { - result = new IntRange(0, 0); - } - } - return result; - } - } - - public override void CompPostMake() - { - bool myDebug = this.MyDebug; - if (myDebug) - { - string[] array = new string[5]; - array[0] = ">>> "; - int num = 1; - Pawn pawn = base.Pawn; - array[num] = ((pawn != null) ? pawn.Label : null); - array[2] = " - "; - array[3] = this.parent.def.defName; - array[4] = " - CompPostMake start"; - Log.Warning(string.Concat(array)); - } - } - - public override void Notify_PawnDied(DamageInfo? dinfo, Hediff culprit = null) - { - string text = this.MyDebug ? (base.Pawn.LabelShort + " HediffComp_RandySpawnUponDeath Notify_PawnDied") : ""; - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning(text + " Entering"); - } - bool flag = false; - bool flag2 = base.Pawn.Corpse.Negligible(); - if (flag2) - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning(text + " Corpse is no more, cant find its position - giving up"); - } - flag = true; - } - bool flag3 = this.blockSpawn; - if (flag3) - { - bool myDebug3 = this.MyDebug; - if (myDebug3) - { - Log.Warning(text + " blockSpawn for some reason- giving up"); - } - flag = true; - } - Thing closestThing; - bool flag4 = !this.FulfilsRequirement(out closestThing); - if (flag4) - { - bool myDebug4 = this.MyDebug; - if (myDebug4) - { - Log.Warning(text + "not Fulfiling requirements- giving up"); - } - flag = true; - } - bool flag5 = flag; - checked - { - if (flag5) - { - base.Notify_PawnDied(dinfo, culprit); - } - else - { - int randomInRange = this.Props.iterationRange.RandomInRange; - List list = new List(); - bool myDebug5 = this.MyDebug; - if (myDebug5) - { - Log.Warning(text + "iterationNum: " + randomInRange); - } - for (int i = 0; i < randomInRange; i++) - { - bool myDebug6 = this.MyDebug; - if (myDebug6) - { - Log.Warning(string.Concat(new object[] - { - text, - " Trying to spawn ", - i, - "/", - randomInRange - 1 - })); - } - bool flag6 = !this.DiceThrow(list); - if (flag6) - { - bool myDebug7 = this.MyDebug; - if (myDebug7) - { - Log.Warning(text + " DiceThrow wrong results"); - } - base.Notify_PawnDied(dinfo, culprit); - return; - } - bool myDebug8 = this.MyDebug; - if (myDebug8) - { - Log.Warning(string.Concat(new object[] - { - text, - " index: ", - this.RandomIndex, - " quantity: ", - this.RandomQuantity, - " nature: ", - this.ChosenItem.ItemDump - })); - } - bool precedentIterationsExclusion = this.PrecedentIterationsExclusion; - if (precedentIterationsExclusion) - { - list.Add(this.RandomIndex); - } - bool flag7 = this.CheckShouldSpawn(closestThing); - if (flag7) - { - bool myDebug9 = this.MyDebug; - if (myDebug9) - { - Log.Warning(string.Concat(new object[] - { - text, - " Spawn ", - i, - "/", - randomInRange - 1, - " occured nature: t:", - this.ChosenItem.ItemDump - })); - } - } - bool myDebug10 = this.MyDebug; - if (myDebug10) - { - Log.Warning("#################"); - } - } - bool flag8 = this.CheckShouldHandleCorpse(); - if (flag8) - { - bool myDebug11 = this.MyDebug; - if (myDebug11) - { - Log.Warning(text + " Corpse handled"); - } - } - base.Notify_PawnDied(dinfo, culprit); - } - } - } - - public bool DiceThrow(List AlreadyPickedOptions) - { - this.RandomIndex = this.GetWeightedRandomIndex(AlreadyPickedOptions); - bool flag = this.HasChosenPawn && this.ChosenItem.HasFactionParams; - if (flag) - { - this.ComputeRandomFaction(); - } - this.RandomQuantity = this.ComputeSpawnCount(); - bool flag2 = !this.ValidIndex; - bool result; - if (flag2) - { - this.BlockAndDestroy(">ERROR< failed to find an index for IP, check and adjust your hediff props", this.MyDebug); - result = false; - } - else - { - bool flag3 = !this.ValidQuantity; - if (flag3) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning("random quantity: " + this.RandomQuantity + " - impossible to spawn anything"); - } - result = false; - } - else - { - result = true; - } - } - return result; - } - - public void BlockAndDestroy(string ErrorLog = "", bool myDebug = false) - { - bool flag = this.MyDebug && !ErrorLog.NullOrEmpty(); - if (flag) - { - Log.Warning(ErrorLog); - } - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, myDebug); - } - - private bool CheckShouldSpawn(Thing closestThing) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning(base.Pawn.LabelShort + " CheckShouldSpawn"); - } - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning(string.Concat(new object[] - { - " Trying to spawn ", - this.RandomQuantity, - " ", - this.ThingOfChoice, - "/", - this.PawnOfChoice - })); - } - Thing thing = this.HasCustomSpawn ? closestThing : base.Pawn.Corpse; - bool result = this.TryDoSpawn(thing, this.RandomQuantity); - bool myDebug3 = this.MyDebug; - if (myDebug3) - { - Log.Warning("TryDoSpawn: " + result.ToString()); - } - return result; - } - - private bool CheckShouldHandleCorpse() - { - Corpse corpse = base.Pawn.Corpse; - bool flag = false; - flag |= this.StripCorpse(corpse); - return flag | this.DestroyCorpse(corpse); - } - - private bool blockSpawn = false; - - private int RandomIndex = -1; - - public Faction RandomFaction = null; - - public MentalStateDef RandomMS = null; - - private int RandomQuantity = 0; - - public readonly float minDaysB4NextErrorLimit = 0.001f; - - public readonly int spawnCountErrorLimit = 750; - - public Pawn_SkillTracker rememberSkillTracker = null; - - public int lastSkillUpdateTick = -1; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawner.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawner.cs deleted file mode 100644 index beea1ea..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawner.cs +++ /dev/null @@ -1,450 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_RandySpawner : HediffComp - { - public HediffCompProperties_RandySpawner Props - { - get - { - return (HediffCompProperties_RandySpawner)this.props; - } - } - - public bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public bool HasGraceDelay - { - get - { - return this.graceTicks > 0; - } - } - - private float CalculatedDaysB4Next - { - get - { - return (float)this.ticksUntilSpawn / 60000f; - } - } - - public ItemParameter CurIP - { - get - { - return (this.pickedItem != -1 && !this.Props.itemParameters.NullOrEmpty() && this.pickedItem < this.Props.itemParameters.Count) ? this.Props.itemParameters[this.pickedItem] : null; - } - } - - public bool HasValidIP - { - get - { - return this.CurIP != null; - } - } - - public bool RequiresFood - { - get - { - return this.Props.hungerRelative && base.Pawn.IsHungry(this.MyDebug); - } - } - - public bool RequiresHealth - { - get - { - return this.Props.healthRelative && base.Pawn.IsInjured(this.MyDebug); - } - } - - public override void CompExposeData() - { - Scribe_Values.Look(ref this.ticksUntilSpawn, "ticksUntilSpawn", 0, false); - Scribe_Values.Look(ref this.initialTicksUntilSpawn, "initialTicksUntilSpawn", 0, false); - Scribe_Values.Look(ref this.calculatedQuantity, "calculatedQuantity", 0, false); - Scribe_Values.Look(ref this.hungerReset, "LTF_hungerReset", 0, false); - Scribe_Values.Look(ref this.healthReset, "LTF_healthReset", 0, false); - Scribe_Values.Look(ref this.graceTicks, "graceTicks", 0, false); - Scribe_Values.Look(ref this.pickedItem, "pickedItem", 0, false); - } - - public override void CompPostMake() - { - string[] array = new string[5]; - array[0] = ">>> "; - int num = 1; - Pawn pawn = base.Pawn; - array[num] = ((pawn != null) ? pawn.Label : null); - array[2] = " - "; - array[3] = this.parent.def.defName; - array[4] = " - CompPostMake start"; - Tools.Warn(string.Concat(array), this.MyDebug); - this.DumpProps(); - this.CheckProps(); - this.CalculateValues(); - this.CheckCalculatedValues(); - this.DumpCalculatedValues(); - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = base.Pawn.Negligible(); - checked - { - if (!flag) - { - bool flag2 = this.blockSpawn; - if (!flag2) - { - bool hasGraceDelay = this.HasGraceDelay; - if (hasGraceDelay) - { - this.graceTicks--; - } - else - { - bool flag3 = this.SetRequirementGraceTicks(); - if (!flag3) - { - bool flag4 = this.CheckShouldSpawn(); - if (flag4) - { - Tools.Warn("Reseting countdown bc spawned thing", this.MyDebug); - this.CalculateValues(); - this.CheckCalculatedValues(); - } - } - } - } - } - } - } - - private void CalculateValues() - { - this.pickedItem = this.GetWeightedRandomIndex(); - bool hasValidIP = this.HasValidIP; - if (hasValidIP) - { - this.CurIP.ComputeRandomParameters(out this.ticksUntilSpawn, out this.graceTicks, out this.calculatedQuantity); - bool hasFactionParams = this.CurIP.HasFactionParams; - if (hasFactionParams) - { - this.ComputeRandomFaction(); - } - } - else - { - this.BlockAndDestroy(">ERROR< failed to find an index for IP, check and adjust your hediff props", this.MyDebug); - } - } - - private void CheckCalculatedValues() - { - bool flag = this.calculatedQuantity > this.spawnCountErrorLimit; - if (flag) - { - this.BlockAndDestroy(string.Concat(new object[] - { - ">ERROR< calculatedQuantity is too high: ", - this.calculatedQuantity, - "(>", - this.spawnCountErrorLimit, - "), check and adjust your hediff props" - }), this.MyDebug); - } - else - { - bool flag2 = this.CalculatedDaysB4Next < this.minDaysB4NextErrorLimit; - if (flag2) - { - this.BlockAndDestroy(string.Concat(new object[] - { - ">ERROR< calculatedMinDaysB4Next is too low: ", - this.CalculatedDaysB4Next, - "(<", - this.minDaysB4NextErrorLimit, - "), check and adjust your hediff props" - }), this.MyDebug); - } - } - } - - private void DumpCalculatedValues() - { - Tools.Warn(string.Concat(new object[] - { - "<<< calculatedDaysB4Next: ", - this.CalculatedDaysB4Next, - "; CalculatedQuantity: ", - this.calculatedQuantity, - "; " - }), this.MyDebug); - } - - public void BlockAndDestroy(string ErrorLog = "", bool myDebug = false) - { - Tools.Warn(ErrorLog, myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, myDebug); - } - - private bool CheckShouldSpawn() - { - checked - { - this.ticksUntilSpawn--; - bool flag = this.ticksUntilSpawn <= 0; - bool result; - if (flag) - { - bool flag2 = this.TryDoSpawn(); - Tools.Warn("TryDoSpawn: " + flag2.ToString(), this.MyDebug); - bool flag3 = flag2; - if (flag3) - { - this.pickedItem = -1; - } - result = flag2; - } - else - { - result = false; - } - return result; - } - } - - public bool TrySpawnPawn() - { - PawnGenerationRequest request = new PawnGenerationRequest(this.CurIP.pawnKindToSpawn, this.Itemfaction, PawnGenerationContext.NonPlayer, -1, false, this.newBorn, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null, null, null, null, null, null, null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f, DevelopmentalStage.Adult, null, null, null, false, false, false, -1, 0, false); - checked - { - for (int i = 0; i < this.calculatedQuantity; i++) - { - Pawn newThing = PawnGenerator.GeneratePawn(request); - GenSpawn.Spawn(newThing, base.Pawn.Position, base.Pawn.Map, WipeMode.Vanish); - bool hasFilth = this.CurIP.HasFilth; - if (hasFilth) - { - FilthMaker.TryMakeFilth(this.parent.pawn.Position, this.parent.pawn.Map, this.CurIP.filthDef, 1, FilthSourceFlags.None, true); - } - } - return true; - } - } - - public bool TryDoSpawn() - { - bool flag = base.Pawn.Negligible(); - checked - { - bool result; - if (flag) - { - Tools.Warn("TryDoSpawn - pawn null", this.MyDebug); - result = false; - } - else - { - bool pawnSpawner = this.CurIP.PawnSpawner; - if (pawnSpawner) - { - result = this.TrySpawnPawn(); - } - else - { - bool thingSpawner = this.CurIP.ThingSpawner; - if (thingSpawner) - { - bool flag2 = this.Props.spawnMaxAdjacent >= 0; - if (flag2) - { - int num = 0; - for (int i = 0; i < 9; i++) - { - IntVec3 c = base.Pawn.Position + GenAdj.AdjacentCellsAndInside[i]; - bool flag3 = !c.InBounds(base.Pawn.Map); - if (!flag3) - { - List thingList = c.GetThingList(base.Pawn.Map); - for (int j = 0; j < thingList.Count; j++) - { - bool flag4 = thingList[j].def == this.CurIP.thingToSpawn; - if (flag4) - { - num += thingList[j].stackCount; - bool flag5 = num >= this.Props.spawnMaxAdjacent; - if (flag5) - { - return false; - } - } - } - } - } - } - } - int k = 0; - int num2 = this.calculatedQuantity; - int num3 = 0; - while (k < this.calculatedQuantity) - { - IntVec3 intVec; - bool flag6 = this.TryFindSpawnCell(out intVec); - if (flag6) - { - Thing thing = ThingMaker.MakeThing(this.CurIP.thingToSpawn, null); - thing.stackCount = num2; - bool flag7 = thing.def.stackLimit > 0; - if (flag7) - { - bool flag8 = thing.stackCount > thing.def.stackLimit; - if (flag8) - { - thing.stackCount = thing.def.stackLimit; - } - } - k += thing.stackCount; - num2 -= thing.stackCount; - Thing t; - GenPlace.TryPlaceThing(thing, intVec, base.Pawn.Map, ThingPlaceMode.Direct, ref t, null, null, default(Rot4)); - bool spawnForbidden = this.Props.spawnForbidden; - if (spawnForbidden) - { - t.SetForbidden(true, true); - } - } - bool flag9 = num3++ > 10; - if (flag9) - { - Tools.Warn("Had to break the loop", this.MyDebug); - return false; - } - } - bool flag10 = num2 <= 0; - result = flag10; - } - } - return result; - } - } - - public override string CompTipStringExtra - { - get - { - string text = string.Empty; - bool flag = !this.HasValidIP || !this.Props.logNextSpawn; - string result; - if (flag) - { - result = text; - } - else - { - bool hasGraceDelay = this.HasGraceDelay; - if (hasGraceDelay) - { - bool pawnSpawner = this.CurIP.PawnSpawner; - if (pawnSpawner) - { - text = " No " + this.CurIP.pawnKindToSpawn.label + " for " + this.graceTicks.ToStringTicksToPeriod(true, false, true, true, false); - } - else - { - bool thingSpawner = this.CurIP.ThingSpawner; - if (thingSpawner) - { - text = " No " + this.CurIP.thingToSpawn.label + " for " + this.graceTicks.ToStringTicksToPeriod(true, false, true, true, false); - } - } - bool flag2 = this.hungerReset > 0; - if (flag2) - { - text += "(hunger)"; - } - else - { - bool flag3 = this.healthReset > 0; - if (flag3) - { - text += "(injury)"; - } - else - { - text += "(grace period)"; - } - } - } - else - { - text = this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true, false) + " before "; - bool pawnSpawner2 = this.CurIP.PawnSpawner; - if (pawnSpawner2) - { - text += this.CurIP.pawnKindToSpawn.label; - } - else - { - bool thingSpawner2 = this.CurIP.ThingSpawner; - if (thingSpawner2) - { - text += this.CurIP.thingToSpawn.label; - } - } - text = string.Concat(new object[] - { - text, - " ", - this.CurIP.spawnVerb, - "(", - this.calculatedQuantity, - "x)" - }); - } - result = text; - } - return result; - } - } - - private int ticksUntilSpawn; - - private int initialTicksUntilSpawn = 0; - - public int graceTicks = 0; - - public int calculatedQuantity; - - public int hungerReset = 0; - - public int healthReset = 0; - - private bool blockSpawn = false; - - private int pickedItem = -1; - - public Faction Itemfaction = null; - - public bool newBorn = false; - - public readonly float minDaysB4NextErrorLimit = 0.001f; - - public readonly int spawnCountErrorLimit = 750; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Spawner.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Spawner.cs deleted file mode 100644 index 199ea8a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Spawner.cs +++ /dev/null @@ -1,778 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_Spawner : HediffComp - { - public HediffCompProperties_Spawner Props - { - get - { - return (HediffCompProperties_Spawner)this.props; - } - } - - public override void CompExposeData() - { - Scribe_Values.Look(ref this.ticksUntilSpawn, "ticksUntilSpawn", 0, false); - Scribe_Values.Look(ref this.initialTicksUntilSpawn, "initialTicksUntilSpawn", 0, false); - Scribe_Values.Look(ref this.calculatedMinDaysB4Next, "calculatedMinDaysB4Next", 0f, false); - Scribe_Values.Look(ref this.calculatedMaxDaysB4Next, "calculatedMaxDaysB4Next", 0f, false); - Scribe_Values.Look(ref this.calculatedQuantity, "calculatedQuantity", 0, false); - Scribe_Values.Look(ref this.graceTicks, "graceTicks", 0, false); - } - - public override void CompPostMake() - { - this.myDebug = this.Props.debug; - Tools.Warn(string.Concat(new string[] - { - ">>> ", - this.parent.pawn.Label, - " - ", - this.parent.def.defName, - " - CompPostMake start" - }), this.myDebug); - this.TraceProps(); - this.CheckProps(); - this.CalculateValues(); - this.CheckCalculatedValues(); - this.TraceCalculatedValues(); - bool flag = this.initialTicksUntilSpawn == 0; - if (flag) - { - Tools.Warn("Reseting countdown bc initialTicksUntilSpawn == 0 (comppostmake)", this.myDebug); - this.ResetCountdown(); - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - this.pawn = this.parent.pawn; - bool flag = !Tools.OkPawn(this.pawn); - checked - { - if (!flag) - { - bool flag2 = this.blockSpawn; - if (!flag2) - { - bool flag3 = this.graceTicks > 0; - if (flag3) - { - this.graceTicks--; - } - else - { - bool flag4 = this.Props.hungerRelative && this.pawn.IsHungry(this.myDebug); - if (flag4) - { - int num = (int)(unchecked(this.RandomGraceDays() * 60000f)); - this.hungerReset++; - this.graceTicks = num; - } - else - { - bool flag5 = this.Props.healthRelative && this.pawn.IsInjured(this.myDebug); - if (flag5) - { - int num2 = (int)(unchecked(this.RandomGraceDays() * 60000f)); - this.healthReset++; - this.graceTicks = num2; - } - else - { - this.hungerReset = (this.healthReset = 0); - bool flag6 = this.CheckShouldSpawn(); - if (flag6) - { - Tools.Warn("Reseting countdown bc spawned thing", this.myDebug); - this.CalculateValues(); - this.CheckCalculatedValues(); - this.ResetCountdown(); - bool flag7 = Rand.Chance(this.Props.randomGrace); - if (flag7) - { - int num3 = (int)(unchecked(this.RandomGraceDays() * 60000f)); - this.graceTicks = num3; - } - } - } - } - } - } - } - } - } - - private void TraceProps() - { - Tools.Warn(string.Concat(new object[] - { - "Props => minDaysB4Next: ", - this.Props.minDaysB4Next, - "; maxDaysB4Next: ", - this.Props.maxDaysB4Next, - "; randomGrace: ", - this.Props.randomGrace, - "; graceDays: ", - this.Props.graceDays, - "; hungerRelative: ", - this.Props.hungerRelative.ToString(), - "; healthRelative: ", - this.Props.healthRelative.ToString(), - "; " - }), this.myDebug); - bool animalThing = this.Props.animalThing; - if (animalThing) - { - Tools.Warn(string.Concat(new string[] - { - "animalThing: ", - this.Props.animalThing.ToString(), - "; animalName: ", - this.Props.animalToSpawn.defName, - "; factionOfPlayerAnimal: ", - this.Props.factionOfPlayerAnimal.ToString(), - "; " - }), this.myDebug); - } - bool ageWeightedQuantity = this.Props.ageWeightedQuantity; - if (ageWeightedQuantity) - { - Tools.Warn(string.Concat(new string[] - { - "ageWeightedQuantity:", - this.Props.ageWeightedQuantity.ToString(), - "; olderBiggerQuantity:", - this.Props.olderBiggerQuantity.ToString(), - "; ", - this.myDebug.ToString() - }), false); - bool exponentialQuantity = this.Props.exponentialQuantity; - if (exponentialQuantity) - { - Tools.Warn(string.Concat(new object[] - { - "exponentialQuantity:", - this.Props.exponentialQuantity.ToString(), - "; exponentialRatioLimit:", - this.Props.exponentialRatioLimit, - "; " - }), this.myDebug); - } - } - bool ageWeightedPeriod = this.Props.ageWeightedPeriod; - if (ageWeightedPeriod) - { - } - Tools.Warn(string.Concat(new string[] - { - "ageWeightedPeriod:", - this.Props.ageWeightedPeriod.ToString(), - "; olderSmallerPeriod:", - this.Props.olderSmallerPeriod.ToString(), - "; ", - this.myDebug.ToString() - }), false); - } - - private void CalculateValues() - { - float num = Tools.GetPawnAgeOverlifeExpectancyRatio(this.parent.pawn, this.myDebug); - num = ((num > 1f) ? 1f : num); - this.calculatedMinDaysB4Next = this.Props.minDaysB4Next; - this.calculatedMaxDaysB4Next = this.Props.maxDaysB4Next; - bool ageWeightedPeriod = this.Props.ageWeightedPeriod; - if (ageWeightedPeriod) - { - float num2 = this.Props.olderSmallerPeriod ? (-num) : num; - this.calculatedMinDaysB4Next = this.Props.minDaysB4Next * (1f + num2); - this.calculatedMaxDaysB4Next = this.Props.maxDaysB4Next * (1f + num2); - Tools.Warn(string.Concat(new object[] - { - " ageWeightedPeriod: ", - this.Props.ageWeightedPeriod.ToString(), - " ageRatio: ", - num, - " minDaysB4Next: ", - this.Props.minDaysB4Next, - " maxDaysB4Next: ", - this.Props.maxDaysB4Next, - " daysAgeRatio: ", - num2, - " calculatedMinDaysB4Next: ", - this.calculatedMinDaysB4Next, - "; calculatedMaxDaysB4Next: ", - this.calculatedMaxDaysB4Next, - "; " - }), this.myDebug); - } - this.calculatedQuantity = this.Props.spawnCount; - bool ageWeightedQuantity = this.Props.ageWeightedQuantity; - if (ageWeightedQuantity) - { - float num3 = this.Props.olderBiggerQuantity ? num : (-num); - Tools.Warn("quantityAgeRatio: " + num3, this.myDebug); - this.calculatedQuantity = checked((int)Math.Round(unchecked((double)this.Props.spawnCount * (double)(1f + num3)))); - bool exponentialQuantity = this.Props.exponentialQuantity; - if (exponentialQuantity) - { - num3 = 1f - num; - bool flag = num3 == 0f; - if (flag) - { - Tools.Warn(">ERROR< quantityAgeRatio is f* up : " + num3, this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - float num4 = this.Props.olderBiggerQuantity ? (1f / num3) : (num3 * num3); - bool flag2 = false; - bool flag3 = false; - bool flag4 = num4 > (float)this.Props.exponentialRatioLimit; - if (flag4) - { - num4 = (float)this.Props.exponentialRatioLimit; - flag2 = true; - } - this.calculatedQuantity = checked((int)Math.Round(unchecked((double)this.Props.spawnCount * (double)num4))); - bool flag5 = this.calculatedQuantity < 1; - if (flag5) - { - this.calculatedQuantity = 1; - flag3 = true; - } - Tools.Warn(string.Concat(new object[] - { - " exponentialQuantity: ", - this.Props.exponentialQuantity.ToString(), - "; expoFactor: ", - num4, - "; gotLimited: ", - flag2.ToString(), - "; gotAugmented: ", - flag3.ToString() - }), this.myDebug); - } - Tools.Warn(string.Concat(new object[] - { - "; Props.spawnCount: ", - this.Props.spawnCount, - "; calculatedQuantity: ", - this.calculatedQuantity - }), this.myDebug); - } - } - - private void CheckCalculatedValues() - { - bool flag = this.calculatedQuantity > this.errorSpawnCount; - if (flag) - { - Tools.Warn(string.Concat(new object[] - { - ">ERROR< calculatedQuantity is too high: ", - this.calculatedQuantity, - "(>", - this.errorSpawnCount, - "), check and adjust your hediff props" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - else - { - bool flag2 = this.calculatedMinDaysB4Next >= this.calculatedMaxDaysB4Next; - if (flag2) - { - Tools.Warn(">ERROR< calculatedMinDaysB4Next should be lower than calculatedMaxDaysB4Next", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - else - { - bool flag3 = this.calculatedMinDaysB4Next < this.errorMinDaysB4Next; - if (flag3) - { - Tools.Warn(string.Concat(new object[] - { - ">ERROR< calculatedMinDaysB4Next is too low: ", - this.Props.minDaysB4Next, - "(<", - this.errorMinDaysB4Next, - "), check and adjust your hediff props" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - } - } - - private void TraceCalculatedValues() - { - Tools.Warn(string.Concat(new object[] - { - "<<< ", - this.Props.ageWeightedPeriod ? ("Props.olderMoreOften: " + this.Props.olderSmallerPeriod.ToString() + "; ") : "", - this.Props.ageWeightedQuantity ? ("Props.olderBiggerquantities: " + this.Props.olderBiggerQuantity.ToString() + "; ") : "", - " Props.minDaysB4Next: ", - this.Props.minDaysB4Next, - "; Props.maxDaysB4Next: ", - this.Props.maxDaysB4Next, - "; calculatedMinDaysB4Next: ", - this.calculatedMinDaysB4Next, - "; calculatedMaxDaysB4Next: ", - this.calculatedMaxDaysB4Next, - "; Props.spawnCount: ", - this.Props.spawnCount, - "; CalculatedQuantity: ", - this.calculatedQuantity, - "; " - }), this.myDebug); - } - - private void CheckProps() - { - bool flag = this.Props.spawnCount > this.errorSpawnCount; - if (flag) - { - Tools.Warn(string.Concat(new object[] - { - "SpawnCount is too high: ", - this.Props.spawnCount, - "(>", - this.errorSpawnCount, - "), some people just want to see the world burn" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - else - { - bool flag2 = this.Props.minDaysB4Next >= this.Props.maxDaysB4Next; - if (flag2) - { - Tools.Warn("minDaysB4Next should be lower than maxDaysB4Next", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - else - { - bool flag3 = this.Props.minDaysB4Next < this.errorMinDaysB4Next; - if (flag3) - { - Tools.Warn(string.Concat(new object[] - { - "minDaysB4Next is too low: ", - this.Props.minDaysB4Next, - "(<", - this.errorMinDaysB4Next, - "), some people just want to see the world burn" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - else - { - bool animalThing = this.Props.animalThing; - if (animalThing) - { - bool flag4 = this.Props.animalToSpawn == null || this.Props.animalToSpawn.defName.NullOrEmpty(); - if (flag4) - { - Tools.Warn("Props.animalThing=" + this.Props.animalThing.ToString() + "; but no Props.animalName", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - Tools.Warn("Found animal PawnKindDef.defName=" + this.Props.animalToSpawn.defName, this.myDebug); - } - else - { - ThingDef thingDef = (from b in DefDatabase.AllDefs - where b == this.Props.thingToSpawn - select b).RandomElement(); - bool flag5 = thingDef == null; - if (flag5) - { - Tools.Warn("Could not find Props.thingToSpawn in DefDatabase", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - Tools.Warn("Found ThingDef for " + this.Props.thingToSpawn.defName + "in DefDatabase", this.myDebug); - } - bool flag6 = !this.Props.ageWeightedPeriod; - if (flag6) - { - bool olderSmallerPeriod = this.Props.olderSmallerPeriod; - if (olderSmallerPeriod) - { - Tools.Warn("olderSmallerPeriod ignored since ageWeightedPeriod is false ", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - } - bool flag7 = !this.Props.ageWeightedQuantity; - if (flag7) - { - bool olderBiggerQuantity = this.Props.olderBiggerQuantity; - if (olderBiggerQuantity) - { - Tools.Warn("olderBiggerQuantity ignored since ageWeightedQuantity is false ", this.myDebug); - } - bool exponentialQuantity = this.Props.exponentialQuantity; - if (exponentialQuantity) - { - Tools.Warn("exponentialQuantity ignored since ageWeightedQuantity is false ", this.myDebug); - } - bool flag8 = this.Props.olderBiggerQuantity || this.Props.exponentialQuantity; - if (flag8) - { - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - } - bool flag9 = this.Props.exponentialQuantity && this.Props.exponentialRatioLimit > this.errorExponentialLimit; - if (flag9) - { - Tools.Warn(string.Concat(new object[] - { - "expoRatioLimit too low while expoQuantity is set: ", - this.Props.exponentialRatioLimit, - "(>", - this.errorExponentialLimit, - "), some people just want to see the world burn" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - } - } - } - - private bool CheckShouldSpawn() - { - this.pawn = this.parent.pawn; - bool flag = !Tools.OkPawn(this.pawn); - checked - { - bool result; - if (flag) - { - Tools.Warn("CheckShouldSpawn pawn Null", this.myDebug); - result = false; - } - else - { - this.ticksUntilSpawn--; - bool flag2 = this.ticksUntilSpawn <= 0; - if (flag2) - { - Tools.Warn("TryDoSpawn: " + this.TryDoSpawn().ToString(), this.myDebug); - result = true; - } - else - { - result = false; - } - } - return result; - } - } - - private PawnKindDef MyPawnKindDefNamed(string myDefName) - { - PawnKindDef result = null; - foreach (PawnKindDef pawnKindDef in DefDatabase.AllDefs) - { - bool flag = pawnKindDef.defName == myDefName; - if (flag) - { - return pawnKindDef; - } - } - return result; - } - - public bool TryDoSpawn() - { - this.pawn = this.parent.pawn; - bool flag = !Tools.OkPawn(this.pawn); - checked - { - bool result; - if (flag) - { - Tools.Warn("TryDoSpawn - pawn null", this.myDebug); - result = false; - } - else - { - bool animalThing = this.Props.animalThing; - if (animalThing) - { - Faction faction = this.Props.factionOfPlayerAnimal ? Faction.OfPlayer : null; - PawnGenerationRequest request = new PawnGenerationRequest(this.Props.animalToSpawn, faction, PawnGenerationContext.NonPlayer, -1, false, true, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null, null, null, null, null, null, null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f, DevelopmentalStage.Adult, null, null, null, false, false, false, -1, 0, false); - for (int i = 0; i < this.calculatedQuantity; i++) - { - Pawn newThing = PawnGenerator.GeneratePawn(request); - GenSpawn.Spawn(newThing, this.parent.pawn.Position, this.parent.pawn.Map, WipeMode.Vanish); - FilthMaker.TryMakeFilth(this.parent.pawn.Position, this.parent.pawn.Map, ThingDefOf.Filth_AmnioticFluid, 1, FilthSourceFlags.None, true); - } - result = true; - } - else - { - bool flag2 = this.Props.spawnMaxAdjacent >= 0; - if (flag2) - { - int num = 0; - for (int j = 0; j < 9; j++) - { - IntVec3 c = this.pawn.Position + GenAdj.AdjacentCellsAndInside[j]; - bool flag3 = !c.InBounds(this.pawn.Map); - if (!flag3) - { - List thingList = c.GetThingList(this.pawn.Map); - for (int k = 0; k < thingList.Count; k++) - { - bool flag4 = thingList[k].def == this.Props.thingToSpawn; - if (flag4) - { - num += thingList[k].stackCount; - bool flag5 = num >= this.Props.spawnMaxAdjacent; - if (flag5) - { - return false; - } - } - } - } - } - } - int l = 0; - int num2 = this.calculatedQuantity; - int num3 = 0; - while (l < this.calculatedQuantity) - { - IntVec3 intVec; - bool flag6 = this.TryFindSpawnCell(out intVec); - if (flag6) - { - Thing thing = ThingMaker.MakeThing(this.Props.thingToSpawn, null); - thing.stackCount = num2; - bool flag7 = thing.def.stackLimit > 0; - if (flag7) - { - bool flag8 = thing.stackCount > thing.def.stackLimit; - if (flag8) - { - thing.stackCount = thing.def.stackLimit; - } - } - l += thing.stackCount; - num2 -= thing.stackCount; - Thing t; - GenPlace.TryPlaceThing(thing, intVec, this.pawn.Map, ThingPlaceMode.Direct, ref t, null, null, default(Rot4)); - bool spawnForbidden = this.Props.spawnForbidden; - if (spawnForbidden) - { - t.SetForbidden(true, true); - } - } - bool flag9 = num3++ > 10; - if (flag9) - { - Tools.Warn("Had to break the loop", this.myDebug); - return false; - } - } - bool flag10 = num2 <= 0; - result = flag10; - } - } - return result; - } - } - - private bool TryFindSpawnCell(out IntVec3 result) - { - this.pawn = this.parent.pawn; - bool flag = !Tools.OkPawn(this.pawn); - checked - { - bool result2; - if (flag) - { - result = IntVec3.Invalid; - Tools.Warn("TryFindSpawnCell Null - pawn null", this.myDebug); - result2 = false; - } - else - { - foreach (IntVec3 intVec in GenAdj.CellsAdjacent8Way(this.pawn).InRandomOrder(null)) - { - bool flag2 = intVec.Walkable(this.pawn.Map); - if (flag2) - { - Building edifice = intVec.GetEdifice(this.pawn.Map); - bool flag3 = edifice == null || !this.Props.thingToSpawn.IsEdifice(); - if (flag3) - { - Building_Door building_Door; - bool flag4 = (building_Door = (edifice as Building_Door)) == null || building_Door.FreePassage; - if (flag4) - { - bool flag5 = GenSight.LineOfSight(this.pawn.Position, intVec, this.pawn.Map, false, null, 0, 0); - if (flag5) - { - bool flag6 = false; - List thingList = intVec.GetThingList(this.pawn.Map); - for (int i = 0; i < thingList.Count; i++) - { - Thing thing = thingList[i]; - bool flag7 = thing.def.category == ThingCategory.Item; - if (flag7) - { - bool flag8 = thing.def != this.Props.thingToSpawn || thing.stackCount > this.Props.thingToSpawn.stackLimit - this.calculatedQuantity; - if (flag8) - { - flag6 = true; - break; - } - } - } - bool flag9 = !flag6; - if (flag9) - { - result = intVec; - return true; - } - } - } - } - } - } - Tools.Warn("TryFindSpawnCell Null - no spawn cell found", this.myDebug); - result = IntVec3.Invalid; - result2 = false; - } - return result2; - } - } - - private void ResetCountdown() - { - this.ticksUntilSpawn = (this.initialTicksUntilSpawn = checked((int)(unchecked(this.RandomDays2wait() * 60000f)))); - } - - private float RandomDays2wait() - { - return Rand.Range(this.calculatedMinDaysB4Next, this.calculatedMaxDaysB4Next); - } - - private float RandomGraceDays() - { - return this.Props.graceDays * Rand.Range(0f, 1f); - } - - public override string CompTipStringExtra - { - get - { - string text = string.Empty; - bool flag = this.graceTicks > 0; - if (flag) - { - bool animalThing = this.Props.animalThing; - if (animalThing) - { - text = " No " + this.Props.animalToSpawn.defName + " for " + this.graceTicks.ToStringTicksToPeriod(true, false, true, true, false); - } - else - { - text = " No " + this.Props.thingToSpawn.label + " for " + this.graceTicks.ToStringTicksToPeriod(true, false, true, true, false); - } - bool flag2 = this.hungerReset > 0; - if (flag2) - { - text += "(hunger)"; - } - else - { - bool flag3 = this.healthReset > 0; - if (flag3) - { - text += "(injury)"; - } - else - { - text += "(grace period)"; - } - } - } - else - { - text = this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true, false) + " before "; - bool animalThing2 = this.Props.animalThing; - if (animalThing2) - { - text += this.Props.animalToSpawn.defName; - } - else - { - text += this.Props.thingToSpawn.label; - } - text = string.Concat(new object[] - { - text, - " ", - this.Props.spawnVerb, - "(", - this.calculatedQuantity, - "x)" - }); - } - return text; - } - } - - private int ticksUntilSpawn; - - private int initialTicksUntilSpawn = 0; - - private int hungerReset = 0; - - private int healthReset = 0; - - private int graceTicks = 0; - - private Pawn pawn = null; - - private float calculatedMaxDaysB4Next = 2f; - - private float calculatedMinDaysB4Next = 1f; - - private int calculatedQuantity = 1; - - private bool blockSpawn = false; - - private bool myDebug = false; - - private readonly float errorMinDaysB4Next = 0.001f; - - private readonly int errorExponentialLimit = 20; - - private readonly int errorSpawnCount = 750; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Steamer.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Steamer.cs deleted file mode 100644 index 13cef1a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Steamer.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_Steamer : HediffComp - { - private bool MyDebug - { - get - { - return this.Props.debug; - } - } - - private Map MyMap - { - get - { - return base.Pawn.Map; - } - } - - public HediffCompProperties_Steamer Props - { - get - { - return (HediffCompProperties_Steamer)this.props; - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = base.Pawn.Negligible(); - checked - { - if (flag) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning("null pawn"); - } - } - else - { - bool flag2 = this.sprayTicksLeft <= 0; - if (flag2) - { - bool flag3 = Rand.Chance(this.Props.puffingChance); - if (flag3) - { - FleckMaker.ThrowAirPuffUp(base.Pawn.TrueCenter(), this.MyMap); - GenTemperature.PushHeat(base.Pawn.Position, this.MyMap, this.Props.temperatureIncreasePerPuff); - } - this.sprayTicksLeft = (this.ticksUntilSpray = Rand.RangeInclusive(this.Props.MinTicksBetweenSprays, this.Props.MaxTicksBetweenSprays)); - } - else - { - this.sprayTicksLeft--; - } - } - } - } - - public override string CompTipStringExtra - { - get - { - string empty = string.Empty; - return empty + "Puff in " + this.sprayTicksLeft.ToStringTicksToPeriod(true, false, true, true, false); - } - } - - private int ticksUntilSpray = 500; - - private int sprayTicksLeft; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_TrailLeaver.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_TrailLeaver.cs deleted file mode 100644 index 71e118e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_TrailLeaver.cs +++ /dev/null @@ -1,236 +0,0 @@ -using System; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_TrailLeaver : HediffComp - { - public Map MyMap - { - get - { - return base.Pawn.Map; - } - } - - public bool NullMap - { - get - { - return this.MyMap == null; - } - } - - public bool MyDebug - { - get - { - return this.Props.debug; - } - } - - public HediffCompProperties_TrailLeaver Props - { - get - { - return (HediffCompProperties_TrailLeaver)this.props; - } - } - - public bool HasMotePool - { - get - { - return this.Props.HasMotePool; - } - } - - public TerrainRestriction TerrainRestriction - { - get - { - return (!this.Props.HasRestriction || !this.Props.restriction.HasTerrainRestriction) ? null : this.Props.restriction.terrain; - } - } - - public bool HasTerrainRestriction - { - get - { - return this.TerrainRestriction != null; - } - } - - public Restriction PawnRestriction - { - get - { - return (!this.Props.HasRestriction) ? null : this.Props.restriction; - } - } - - public bool HasPawnRestriction - { - get - { - return this.TerrainRestriction != null; - } - } - - public override void CompPostMake() - { - this.PropsCheck(); - } - - public void NewPeriod() - { - this.currentPeriod = this.Props.period.RandomInRange; - } - - public override void CompPostTick(ref float severityAdjustment) - { - bool flag = base.Pawn.Negligible(); - if (flag) - { - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning("null pawn"); - } - } - else - { - bool flag2 = this.currentPeriod == 0; - if (flag2) - { - this.NewPeriod(); - } - bool flag3 = !base.Pawn.IsHashIntervalTick(this.currentPeriod); - if (!flag3) - { - bool flag4 = !this.IsTerrainAllowed(base.Pawn.Position.GetTerrain(this.MyMap)); - if (flag4) - { - bool myDebug2 = this.MyDebug; - if (myDebug2) - { - Log.Warning("terrain does not allow motes"); - } - } - else - { - bool flag5 = !this.IsPawnActivityCompatible(); - if (flag5) - { - bool myDebug3 = this.MyDebug; - if (myDebug3) - { - Log.Warning("pawn activity does not allow motes"); - } - } - else - { - this.TryPlaceMote(); - this.NewPeriod(); - } - } - } - } - } - - public void PropsCheck() - { - bool flag = !this.MyDebug; - if (!flag) - { - bool flag2 = !this.HasMotePool; - if (flag2) - { - Log.Warning("Mote pool is empty, trailLeaver needs at least 1 mote"); - } - bool flag3 = !this.Props.HasOffset; - if (flag3) - { - Log.Warning("no offset per body type found, will use default:" + this.Props.defaultOffset); - } - else - { - string text = "BodyTypeOffsets dump => "; - foreach (BodyTypeOffset bodyTypeOffset in this.Props.offSetPerBodyType) - { - text = string.Concat(new object[] - { - text, - bodyTypeOffset.bodyType.defName, - ":", - bodyTypeOffset.offset, - "; " - }); - } - Log.Warning(text); - } - bool usesFootPrints = this.Props.UsesFootPrints; - if (usesFootPrints) - { - Log.Warning("footprints => " + this.Props.footprint.Dump()); - } - } - } - - private void TryPlaceMote() - { - bool flag = !this.HasMotePool; - if (!flag) - { - Vector3 drawPos = base.Pawn.DrawPos; - bool flag2 = base.Pawn.Position.InBounds(this.MyMap); - if (flag2) - { - Vector3 vector; - float moteRotation = this.GetMoteRotation(drawPos, out vector); - Vector3 vector2 = drawPos + this.GetBodyTypeOffset() + this.GetFootPrintOffset(vector); - bool myDebug = this.MyDebug; - if (myDebug) - { - Log.Warning(string.Concat(new object[] - { - base.Pawn.ThingID, - " ", - this.parent.def.defName, - " TryPlaceMote - dynRot:", - this.Props.dynamicRotation.ToString(), - " footprint:", - this.Props.UsesFootPrints.ToString(), - " drawPos:", - drawPos, - " offset:", - vector2, - " rot:", - moteRotation, - " normalized:", - vector - })); - } - float randomInRange = this.Props.randomScale.RandomInRange; - ThingDef moteDef = this.Props.motePool.RandomElementWithFallback(null); - Mote mote; - bool flag3 = (mote = (vector2.TryAnyMoteSpawn(this.MyMap, moteRotation, randomInRange, moteDef, this.MyDebug) as Mote)) != null; - if (flag3) - { - this.ChangeMoteColor(mote); - } - } - this.RecordMotePos(drawPos); - } - } - - public int currentPeriod = 0; - - public Vector3 lastMotePos; - - public Color lastColor = Color.black; - - public bool lastFootprintRight; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCondition.cs deleted file mode 100644 index 6c26eaa..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCondition.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; - -namespace MoharHediffs -{ - public class HediffCondition - { - public bool HasPawnCondition - { - get - { - return this.pawn != null; - } - } - - public bool HasBodypartCondition - { - get - { - return this.bodyPart != null && this.bodyPart.HasBPCondition; - } - } - - public PawnCondition pawn; - - public BodyPartCondition bodyPart; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffIntersect.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffIntersect.cs deleted file mode 100644 index 12f9500..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffIntersect.cs +++ /dev/null @@ -1,159 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class HediffIntersect - { - public static bool RemoveHediffAndReturnTrue(Pawn p, Hediff h, bool debug = false) - { - string warning = debug ? string.Concat(new string[] - { - p.LabelShort, - " - ", - p.def.defName, - " - RemoveHediff ", - h.def.defName - }) : ""; - Tools.Warn(warning, debug); - p.health.RemoveHediff(h); - return true; - } - - public static bool TreatLightCondition(this Pawn p, LightCondition LC, Hediff h, float lightLevel, bool outside, bool debug = false) - { - bool flag = (LC.RequiresLightLevel && !LC.level.Value.Includes(lightLevel)) || (LC.requiresOutside && !outside) || (LC.requiresInside && outside); - return flag && HediffIntersect.RemoveHediffAndReturnTrue(p, h, debug); - } - - public static bool TreatNeedCondition(this Pawn p, List needs, Hediff h, bool debug = false) - { - string str = debug ? (p.LabelShort + " TreatNeedCondition - ") : ""; - using (List.Enumerator enumerator = needs.GetEnumerator()) - { - while (enumerator.MoveNext()) - { - NeedCondition NC = enumerator.Current; - Tools.Warn(str + string.Format("checking {0} => {1} > x > {2}", NC.needDef.defName, NC.level.min, NC.level.max), debug); - Need need = (from n in p.needs.AllNeeds - where n.def == NC.needDef && !NC.level.Includes(n.CurLevelPercentage) - select n).FirstOrFallback(null); - bool flag = need == null; - if (!flag) - { - Tools.Warn(str + string.Format("Found {0} out of range: {1}", need.def.defName, need.CurLevelPercentage), debug); - return HediffIntersect.RemoveHediffAndReturnTrue(p, h, debug); - } - } - } - return false; - } - - public static bool TreatHediffSeverityCondition(this Pawn p, List destroyingHediffs, Hediff h, bool debug = false) - { - using (List.Enumerator enumerator = destroyingHediffs.GetEnumerator()) - { - while (enumerator.MoveNext()) - { - HediffSeverityCondition HSC = enumerator.Current; - Hediff hediff = (from dh in p.health.hediffSet.hediffs - where dh.def == HSC.hediffDef && !HSC.acceptableSeverity.Includes(dh.Severity) - select dh).FirstOrFallback(null); - bool flag = hediff == null; - if (!flag) - { - return HediffIntersect.RemoveHediffAndReturnTrue(p, hediff, debug); - } - } - } - return false; - } - - public static bool TreatRelevantHediffsAndReportIfStillHediffsToCheck(this HediffComp_OnTheCarpet comp) - { - bool myDebug = comp.MyDebug; - bool flag = false; - Pawn pawn = comp.Pawn; - string text = myDebug ? (pawn.LabelShort + " TreatRelevant - ") : ""; - Tools.Warn(text + " Entering", myDebug); - float ambientTemperature = pawn.AmbientTemperature; - float lightLevel = pawn.Map.glowGrid.GroundGlowAt(pawn.Position, false, false); - Room room = pawn.GetRoom(RegionType.Set_All); - bool outside = room == null || room.PsychologicallyOutdoors; - List hediffs = comp.Pawn.health.hediffSet.hediffs; - checked - { - int num = hediffs.Count - 1; - while (num >= 0 && !hediffs.NullOrEmpty()) - { - Hediff H = hediffs[num]; - IEnumerable hediffPool = comp.Props.hediffPool; - Func predicate; - Func <>9__0; - if ((predicate = <>9__0) == null) - { - predicate = (<>9__0 = ((HediffItemToRemove h) => h.hediffDef == H.def)); - } - foreach (HediffItemToRemove hediffItemToRemove in hediffPool.Where(predicate)) - { - Tools.Warn(text + " found intersect hediff: " + H.def.defName, myDebug); - HediffKeepingCondition defaultPlusSpecificHediffCondition = HediffRemovalConditionBuilder.GetDefaultPlusSpecificHediffCondition(comp.Props.defaultCondition, hediffItemToRemove.specificCondition, myDebug); - bool flag2 = false; - bool hasLightCondition = defaultPlusSpecificHediffCondition.HasLightCondition; - if (hasLightCondition) - { - Tools.Warn(text + H.def.defName + "checking light", myDebug); - flag2 = pawn.TreatLightCondition(defaultPlusSpecificHediffCondition.light, H, lightLevel, outside, myDebug); - } - else - { - bool flag3 = defaultPlusSpecificHediffCondition.HasTemperatureCondition && !defaultPlusSpecificHediffCondition.temperature.Value.Includes(ambientTemperature); - if (flag3) - { - Tools.Warn(text + H.def.defName + "checking temperature", myDebug); - flag2 = HediffIntersect.RemoveHediffAndReturnTrue(pawn, H, myDebug); - } - else - { - bool hasNeedCondition = defaultPlusSpecificHediffCondition.HasNeedCondition; - if (hasNeedCondition) - { - Tools.Warn(string.Concat(new object[] - { - text, - H.def.defName, - "checking ", - defaultPlusSpecificHediffCondition.needs.Count, - "need" - }), myDebug); - flag2 = pawn.TreatNeedCondition(defaultPlusSpecificHediffCondition.needs, H, myDebug); - } - else - { - bool hasDestroyingHediffs = defaultPlusSpecificHediffCondition.HasDestroyingHediffs; - if (hasDestroyingHediffs) - { - Tools.Warn(text + H.def.defName + "checking other hediffs", myDebug); - flag2 = pawn.TreatHediffSeverityCondition(defaultPlusSpecificHediffCondition.destroyingHediffs, H, myDebug); - } - } - } - } - flag |= !flag2; - bool flag4 = flag2; - if (flag4) - { - return true; - } - } - num--; - } - Tools.Warn(text + "exiting", myDebug); - return flag; - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItem.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItem.cs deleted file mode 100644 index 301523b..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItem.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffItem - { - public bool HasSpecific - { - get - { - return this.specificCondition != null; - } - } - - public HediffDef hediffDef; - - public FloatRange applyChance = new FloatRange(1f, 1f); - - public FloatRange severity = new FloatRange(0.1f, 0.2f); - - public float weight = 1f; - - public HediffCondition specificCondition; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItemToRemove.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItemToRemove.cs deleted file mode 100644 index f46b375..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItemToRemove.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffItemToRemove - { - public bool HasSpecificCondition - { - get - { - return this.specificCondition != null; - } - } - - public HediffDef hediffDef; - - public HediffKeepingCondition specificCondition; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffKeepingCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffKeepingCondition.cs deleted file mode 100644 index fc886fb..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffKeepingCondition.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffKeepingCondition - { - public bool HasTemperatureCondition - { - get - { - return this.temperature != null; - } - } - - public bool HasLightCondition - { - get - { - return this.light != null; - } - } - - public bool HasNeedCondition - { - get - { - return !this.needs.NullOrEmpty(); - } - } - - public bool HasDestroyingHediffs - { - get - { - bool result; - if (!this.destroyingHediffs.NullOrEmpty()) - { - result = this.destroyingHediffs.Any((HediffSeverityCondition dh) => !dh.HasHediffDef); - } - else - { - result = false; - } - return result; - } - } - - public FloatRange? temperature = null; - - public LightCondition light; - - public List needs; - - public List destroyingHediffs; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRemovalConditionBuilder.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRemovalConditionBuilder.cs deleted file mode 100644 index e159a8e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRemovalConditionBuilder.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace MoharHediffs -{ - public static class HediffRemovalConditionBuilder - { - public static void CopyHediffKeepingCondition(HediffKeepingCondition source, HediffKeepingCondition dest, bool debug = false) - { - string str = debug ? "CopyHediffCondition - " : ""; - bool hasTemperatureCondition = source.HasTemperatureCondition; - if (hasTemperatureCondition) - { - Tools.Warn(str + "found HasTemperatureCondition, copying", debug); - dest.temperature = source.temperature; - } - bool hasLightCondition = source.HasLightCondition; - if (hasLightCondition) - { - Tools.Warn(str + "found HasLightCondition, copying", debug); - dest.light = new LightCondition(source.light); - } - bool hasNeedCondition = source.HasNeedCondition; - if (hasNeedCondition) - { - Tools.Warn(str + "found HasNeedCondition, copying", debug); - using (List.Enumerator enumerator = source.needs.GetEnumerator()) - { - while (enumerator.MoveNext()) - { - NeedCondition nc = enumerator.Current; - bool flag = dest.needs.Any((NeedCondition n) => n.needDef == nc.needDef); - if (flag) - { - (from n in dest.needs - where n.needDef == nc.needDef - select n).First().level = nc.level; - } - else - { - dest.needs.Add(new NeedCondition(nc)); - } - } - } - } - bool hasDestroyingHediffs = source.HasDestroyingHediffs; - if (hasDestroyingHediffs) - { - Tools.Warn(str + "found HasDestroyingHediffs, copying", debug); - using (List.Enumerator enumerator2 = source.destroyingHediffs.GetEnumerator()) - { - while (enumerator2.MoveNext()) - { - HediffSeverityCondition hsc = enumerator2.Current; - bool flag2 = dest.destroyingHediffs.Any((HediffSeverityCondition dh) => dh.hediffDef == hsc.hediffDef); - if (flag2) - { - (from dh in dest.destroyingHediffs - where dh.hediffDef == hsc.hediffDef - select dh).First().acceptableSeverity = hsc.acceptableSeverity; - } - else - { - dest.destroyingHediffs.Add(new HediffSeverityCondition(hsc)); - } - } - } - } - } - - public static HediffKeepingCondition GetDefaultPlusSpecificHediffCondition(HediffKeepingCondition defaultHKC, HediffKeepingCondition specificHKC, bool debug = false) - { - string text = debug ? "GetDefaultPlusSpecificHediffCondition - " : ""; - Tools.Warn(text + "allocating answerHC", debug); - HediffKeepingCondition hediffKeepingCondition = new HediffKeepingCondition - { - needs = new List() - }; - bool flag = defaultHKC != null; - if (flag) - { - Tools.Warn(text + "found defaultHKC, copying", debug); - HediffRemovalConditionBuilder.CopyHediffKeepingCondition(defaultHKC, hediffKeepingCondition, debug); - } - bool flag2 = specificHKC != null; - if (flag2) - { - Tools.Warn(text + "found specificHKC, copying", debug); - HediffRemovalConditionBuilder.CopyHediffKeepingCondition(specificHKC, hediffKeepingCondition, debug); - } - Tools.Warn(string.Concat(new object[] - { - text, - string.Format("HasDestroyingHediffs:{0} - ", hediffKeepingCondition.HasDestroyingHediffs), - hediffKeepingCondition.HasDestroyingHediffs ? hediffKeepingCondition.destroyingHediffs.Count() : 0, - string.Format("HasLightCondition:{0} - ", hediffKeepingCondition.HasLightCondition), - hediffKeepingCondition.HasLightCondition ? ("reqIn:" + hediffKeepingCondition.light.requiresInside.ToString() + " reqOut:" + hediffKeepingCondition.light.requiresOutside.ToString()) : "", - string.Format("HasNeedCondition:{0}", hediffKeepingCondition.HasNeedCondition), - hediffKeepingCondition.HasNeedCondition ? hediffKeepingCondition.needs.Count() : 0, - string.Format("HasTemperatureCondition:{0}", hediffKeepingCondition.HasTemperatureCondition) - }), debug); - return hediffKeepingCondition; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRequirementSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRequirementSettings.cs deleted file mode 100644 index 28532cd..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRequirementSettings.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffRequirementSettings - { - public bool HasHediffDef - { - get - { - return this.hediffDef != null; - } - } - - public HediffDef hediffDef; - - public FloatRange severity = new FloatRange(0f, 1f); - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffSeverityCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffSeverityCondition.cs deleted file mode 100644 index 573549a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffSeverityCondition.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffSeverityCondition - { - public bool HasHediffDef - { - get - { - return this.hediffDef != null; - } - } - - public HediffSeverityCondition(HediffSeverityCondition copyMe) - { - this.hediffDef = copyMe.hediffDef; - this.acceptableSeverity = copyMe.acceptableSeverity; - } - - public HediffSeverityCondition() - { - } - - public HediffDef hediffDef; - - public FloatRange acceptableSeverity = new FloatRange(0f, 0.5f); - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineDef.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineDef.cs deleted file mode 100644 index 1831fbf..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineDef.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class InnerShineDef : Def - { - public override string ToString() - { - return this.defName; - } - - public InnerShineDef Named(string name) - { - return DefDatabase.GetNamed(name, true); - } - - public override int GetHashCode() - { - return this.defName.GetHashCode(); - } - - public InnerShineItem item; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineItem.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineItem.cs deleted file mode 100644 index 415ed01..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineItem.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class InnerShineItem - { - public bool HasSpawningRules - { - get - { - return this.spawningRules != null; - } - } - - public bool HasRestriction - { - get - { - return this.restriction != null; - } - } - - public bool HasMotePool - { - get - { - return !this.motePool.NullOrEmpty(); - } - } - - public bool HasBodyTypeDrawRules - { - get - { - return !this.bodyTypeDrawRules.NullOrEmpty(); - } - } - - public bool HasDefaultDrawRules - { - get - { - return this.defaultDrawRules != null; - } - } - - public bool HasColorRange - { - get - { - return this.colorRange != null; - } - } - - public string Dump() - { - return string.Concat(new string[] - { - "label:", - this.label, - string.Format(" HasSpawningRules:{0} HasRestriction:{1}", this.HasSpawningRules, this.HasRestriction), - string.Format(" HasMotePool:{0} HasBodyTypeDrawRules:{1} HasDefaultDrawRules:{2}", this.HasMotePool, this.HasBodyTypeDrawRules, this.HasDefaultDrawRules), - string.Format(" HasColorRange:{0}", this.HasColorRange), - string.Format(" debug:{0}", this.debug) - }); - } - - public string label; - - public SpawnRules spawningRules; - - public List motePool; - - public MoteLink.Nature linkType; - - public List bodyTypeDrawRules; - - public DrawingSpecificities defaultDrawRules; - - public ActivityRestriction restriction; - - public ColorRange colorRange; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineRecord.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineRecord.cs deleted file mode 100644 index 27e6724..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineRecord.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public class InnerShineRecord - { - public InnerShineRecord(InnerShineItem ISI) - { - this.label = ISI.label; - this.spawned = new List(); - this.ticksLeft = ISI.NewPeriod(); - this.lastColor = Color.black; - } - - public string Dump - { - get - { - string format = "label:{0} spawned:{1} ticksLeft:{2} lastColor:{3}"; - object[] array = new object[4]; - array[0] = this.label; - int num = 1; - List list = this.spawned; - array[num] = ((list != null) ? new int?(list.CountAllowNull()) : null); - array[2] = this.ticksLeft; - array[3] = this.lastColor; - return string.Format(format, array); - } - } - - public string label; - - public List spawned; - - public int ticksLeft; - - public Color lastColor; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShinerUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShinerUtils.cs deleted file mode 100644 index 31e0c7a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShinerUtils.cs +++ /dev/null @@ -1,189 +0,0 @@ -using System; -using System.Linq; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class InnerShinerUtils - { - public static InnerShineItem RetrieveISI(this HediffComp_InnerShine comp, string label) - { - bool hasRawShinePool = comp.Props.HasRawShinePool; - if (hasRawShinePool) - { - InnerShineItem result; - bool flag = (result = (from i in comp.Props.innerShinePool - where i.label == label - select i).FirstOrFallback(null)) != null; - if (flag) - { - return result; - } - } - bool hasShineDefPool = comp.Props.HasShineDefPool; - if (hasShineDefPool) - { - InnerShineDef innerShineDef; - bool flag2 = (innerShineDef = (from i in comp.Props.innerShineDefPool - where i.item.label == label - select i).FirstOrFallback(null)) != null; - if (flag2) - { - return innerShineDef.item; - } - } - return null; - } - - public static void SelfDestroy(this HediffComp_InnerShine comp) - { - comp.parent.Severity = 0f; - comp.Pawn.health.RemoveHediff(comp.parent); - } - - public static void ChangeMoteColor(this InnerShineItem ISI, InnerShineRecord ISR, Mote mote) - { - bool flag = !ISI.HasColorRange || mote == null; - if (!flag) - { - bool flag2 = ISR.lastColor == Color.black; - if (flag2) - { - ISR.lastColor = ISI.colorRange.colorA; - } - ISR.lastColor = ISI.colorRange.RandomPickColor(ISR.lastColor, ISI.debug); - mote.instanceColor = ISR.lastColor; - } - } - - public static void GetSpecifities(this InnerShineItem ISI, Pawn p, out Vector3 offset, out float scale) - { - offset = Vector3.zero; - scale = 1f; - Pawn_StoryTracker story = p.story; - bool flag = ((story != null) ? story.bodyType : null) == null || !ISI.HasBodyTypeDrawRules; - if (flag) - { - bool hasDefaultDrawRules = ISI.HasDefaultDrawRules; - if (hasDefaultDrawRules) - { - offset = ISI.defaultDrawRules.GetRotationOffset(p); - scale = ISI.defaultDrawRules.randomScale.RandomInRange; - } - } - else - { - BodyTypeSpecificities bodyTypeSpecificities = (from b in ISI.bodyTypeDrawRules - where b.bodyTypeDef == p.story.bodyType - select b).FirstOrFallback(null); - bool flag2 = bodyTypeSpecificities == null; - if (flag2) - { - bool hasDefaultDrawRules2 = ISI.HasDefaultDrawRules; - if (hasDefaultDrawRules2) - { - offset = ISI.defaultDrawRules.GetRotationOffset(p); - scale = ISI.defaultDrawRules.randomScale.RandomInRange; - } - } - else - { - offset = bodyTypeSpecificities.drawRules.GetRotationOffset(p); - scale = bodyTypeSpecificities.drawRules.randomScale.RandomInRange; - } - } - } - - public static bool ShouldSpawnMote(this InnerShineItem ISI, InnerShineRecord ISR, Pawn p) - { - bool flag = !ISI.HasCompatibleActivity(p); - bool result; - if (flag) - { - result = false; - } - else - { - bool flag2 = ISI.HasMoteNumLimit(); - result = (!flag2 || !ISR.AlreadyReachedMax(ISI.spawningRules.spawnedMax)); - } - return result; - } - - public static Vector3 GetDrawOffset(this InnerShineItem ISI, Pawn p) - { - Pawn_StoryTracker story = p.story; - bool flag = ((story != null) ? story.bodyType : null) == null || !ISI.HasBodyTypeDrawRules; - Vector3 result; - if (flag) - { - bool hasDefaultDrawRules = ISI.HasDefaultDrawRules; - if (hasDefaultDrawRules) - { - result = ISI.defaultDrawRules.GetRotationOffset(p); - } - else - { - result = Vector3.zero; - } - } - else - { - BodyTypeSpecificities bodyTypeSpecificities = (from b in ISI.bodyTypeDrawRules - where b.bodyTypeDef == p.story.bodyType - select b).FirstOrFallback(null); - bool flag2 = bodyTypeSpecificities == null; - if (flag2) - { - result = (ISI.HasDefaultDrawRules ? ISI.defaultDrawRules.GetRotationOffset(p) : Vector3.zero); - } - else - { - result = bodyTypeSpecificities.drawRules.GetRotationOffset(p); - } - } - return result; - } - - public static bool AlreadyReachedMax(this InnerShineRecord ISR, int max) - { - bool flag = ISR.spawned.NullOrEmpty(); - return !flag && ISR.spawned.Count() >= max; - } - - public static bool HasCompatibleActivity(this InnerShineItem ISI, Pawn p) - { - bool flag = !ISI.HasRestriction; - bool result; - if (flag) - { - result = true; - } - else - { - ActivityRestriction restriction = ISI.restriction; - bool flag2 = restriction.HasPostureRestriction && !restriction.allowedPostures.Contains(p.GetPosture()); - if (flag2) - { - result = false; - } - else - { - bool flag3 = restriction.HasJobRestriction && p.CurJob != null && !restriction.allowedJobs.Contains(p.CurJob.def); - if (flag3) - { - result = false; - } - else - { - bool flag4 = restriction.HasAllowedRotation && !restriction.allowedRotation.Contains(p.Rotation); - result = !flag4; - } - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ItemParameter.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ItemParameter.cs deleted file mode 100644 index b2dd1be..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ItemParameter.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class ItemParameter - { - public bool ThingSpawner - { - get - { - return this.thingToSpawn != null && this.pawnKindToSpawn == null; - } - } - - public bool PawnSpawner - { - get - { - return this.thingToSpawn == null && this.pawnKindToSpawn != null; - } - } - - public bool HasFactionParams - { - get - { - return !this.randomFactionParameters.NullOrEmpty(); - } - } - - public bool HasGraceChance - { - get - { - return this.graceChance != 0f; - } - } - - public bool HasFilth - { - get - { - return this.filthDef != null; - } - } - - public void LogParams(bool myDebug = false) - { - Tools.Warn(string.Concat(new object[] - { - "ThingSpawner:", - this.ThingSpawner.ToString(), - "; ", - this.ThingSpawner ? this.thingToSpawn.defName : "", - "PawnSpawner:", - this.PawnSpawner.ToString(), - "; ", - this.PawnSpawner ? this.pawnKindToSpawn.defName : "", - "spawnCount:", - this.spawnCount, - "; weight:", - this.weight, - "; " - }), myDebug); - } - - public void ComputeRandomParameters(out int calculatedTickUntilSpawn, out int calculatedGraceTicks, out int calculatedSpawnCount) - { - checked - { - calculatedTickUntilSpawn = (int)(unchecked(this.daysB4Next.RandomInRange * 60000f)); - calculatedSpawnCount = this.spawnCount.RandomInRange; - calculatedGraceTicks = 0; - bool flag = this.HasGraceChance && Rand.Chance(this.graceChance); - if (flag) - { - calculatedGraceTicks = (int)(unchecked(this.graceDays.RandomInRange * 60000f)); - } - } - } - - public ThingDef thingToSpawn = null; - - public PawnKindDef pawnKindToSpawn = null; - - public IntRange spawnCount = new IntRange(1, 1); - - public ThingDef filthDef = null; - - public List randomFactionParameters; - - public FloatRange daysB4Next = new FloatRange(1f, 2f); - - public float graceChance = 0f; - - public FloatRange graceDays = new FloatRange(1f, 2f); - - public float weight = 0f; - - public string spawnVerb = "delivery"; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/KeepingConditionCompatibility.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/KeepingConditionCompatibility.cs deleted file mode 100644 index 1f175d7..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/KeepingConditionCompatibility.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class KeepingConditionCompatibility - { - public static bool IsPawnNeedConditionCompatible(this Pawn p, HediffKeepingCondition HKC, bool debug = false) - { - string str = debug ? (p.Label + " IsPawnNeedConditionCompatible - ") : ""; - bool hasNeedCondition = HKC.HasNeedCondition; - if (hasNeedCondition) - { - foreach (NeedCondition needCondition in HKC.needs) - { - bool flag = false; - foreach (Need need in p.needs.AllNeeds) - { - Tools.Warn(str + needCondition.needDef.defName + " found in pawn needs, ok", debug); - flag |= (need.def == needCondition.needDef); - } - bool flag2 = !flag; - if (flag2) - { - Tools.Warn(str + needCondition.needDef.defName + " not found in pawn needs, exiting", debug); - return false; - } - } - } - Tools.Warn(str + "is need compatible, ok", debug); - return true; - } - - public static bool IsPawnNeedCompatible(this HediffCompProperties_OnTheCarpet Props, Pawn p) - { - bool debug = Props.debug; - string str = debug ? (p.Label + " IsPawnNeedCompatible - ") : ""; - bool hasDefaultCondition = Props.HasDefaultCondition; - if (hasDefaultCondition) - { - Tools.Warn(str + "checking default condition", debug); - bool flag = !p.IsPawnNeedConditionCompatible(Props.defaultCondition, debug); - if (flag) - { - Tools.Warn(str + "defaultCondition not compatible with pawn, exiting", debug); - return false; - } - Tools.Warn(str + " Compatible with defaultCondition", debug); - } - foreach (HediffItemToRemove hediffItemToRemove in Props.hediffPool) - { - bool hasSpecificCondition = hediffItemToRemove.HasSpecificCondition; - if (hasSpecificCondition) - { - Tools.Warn(str + "checking " + hediffItemToRemove.hediffDef.defName + " specific condition", debug); - bool flag2 = !p.IsPawnNeedConditionCompatible(hediffItemToRemove.specificCondition, debug); - if (flag2) - { - Tools.Warn(str + "specificCondition not compatible with pawn, exiting", debug); - return false; - } - Tools.Warn(str + " Compatible with specificCondition", debug); - } - } - return true; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/LightCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/LightCondition.cs deleted file mode 100644 index 40ae3fd..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/LightCondition.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class LightCondition - { - public bool RequiresLightLevel - { - get - { - return this.level != null; - } - } - - public LightCondition(LightCondition copyMe) - { - this.requiresInside = copyMe.requiresInside; - this.requiresOutside = copyMe.requiresOutside; - this.level = copyMe.level; - } - - public bool requiresOutside = true; - - public bool requiresInside = false; - - public FloatRange? level; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStateOption.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStateOption.cs deleted file mode 100644 index abedb6d..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStateOption.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class MentalStateOption - { - public void Dump() - { - Log.Warning(string.Concat(new object[] - { - "MentalStateDef:", - this.mentalDef.defName, - "; weight:", - this.weight, - "; " - })); - } - - public MentalStateDef mentalDef; - - public float weight = 1f; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStatePicker.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStatePicker.cs deleted file mode 100644 index 7d4bf08..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStatePicker.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class MentalStatePicker - { - public static float MSTotalWeight(this List MSO) - { - float num = 0f; - for (int i = 0; i < MSO.Count; i = checked(i + 1)) - { - num += MSO[i].weight; - } - return num; - } - - public static void ComputeRandomMentalState(this HediffComp_RandySpawnUponDeath comp) - { - bool flag = !comp.ChosenItem.HasMentalStateParams; - if (!flag) - { - MentalStateDef weightedRandomMentalState = comp.GetWeightedRandomMentalState(); - bool flag2 = weightedRandomMentalState == null; - if (flag2) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("ComputeRandomMentalState - found no MentalStateDef"); - } - } - else - { - comp.RandomMS = weightedRandomMentalState; - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - string str = "ComputeRandomFaction - found:"; - Faction randomFaction = comp.RandomFaction; - Log.Warning(str + ((randomFaction != null) ? randomFaction.GetCallLabel() : null)); - } - } - } - } - - public static MentalStateDef GetWeightedRandomMentalState(this HediffComp_RandySpawnUponDeath comp) - { - bool flag = !comp.HasChosenPawn || !comp.ChosenItem.HasMentalStateParams; - checked - { - MentalStateDef result; - if (flag) - { - result = null; - } - else - { - List mentalState = comp.ChosenItem.mentalState; - float num = Rand.Range(0f, mentalState.MSTotalWeight()); - for (int i = 0; i < mentalState.Count; i++) - { - bool flag2 = unchecked(num -= mentalState[i].weight) < 0f; - if (flag2) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("GetWeightedRandomIndex : returning " + i); - } - return mentalState[i].mentalDef; - } - } - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning("GetWeightedRandomMentalState : failed to return proper index, returning null"); - } - result = null; - } - return result; - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoharHediffs.csproj b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoharHediffs.csproj deleted file mode 100644 index a2e4e89..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoharHediffs.csproj +++ /dev/null @@ -1,151 +0,0 @@ - - - - Debug - AnyCPU - {7ACFB1B0-3B20-48B9-BA73-48DD6353ABED} - Library - Properties - MoharHediffs - MoharHediffs - v4.8 - 4096 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - ..\..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - - - ..\..\..\..\..\..\..\..\..\..\Steam\steamapps\workshop\content\294100\2057001924\1.5\Assemblies\MoharGfx.dll - - - ..\..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\System.Core.dll - - - ..\..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteColorChangeUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteColorChangeUtils.cs deleted file mode 100644 index 6757320..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteColorChangeUtils.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class MoteColorChangeUtils - { - public static int GetProgressSign(float limA, float limB, float val) - { - bool flag = val <= limA && limA < limB; - int result; - if (flag) - { - result = 1; - } - else - { - bool flag2 = val >= limB && limB > limA; - if (flag2) - { - result = -1; - } - else - { - result = (Rand.Chance(0.5f) ? 1 : -1); - } - } - return result; - } - - public static Color RandomPickColor(this ColorRange colorRange, Color oldColor, bool debug = false) - { - float variationPerIteration = colorRange.variationPerIteration; - float num = Rand.Range(0f, variationPerIteration); - float num2 = Rand.Range(0f, variationPerIteration - num); - float num3 = variationPerIteration - num - num2; - int progressSign = MoteColorChangeUtils.GetProgressSign(colorRange.colorA.r, colorRange.colorB.r, oldColor.r); - int progressSign2 = MoteColorChangeUtils.GetProgressSign(colorRange.colorA.g, colorRange.colorB.g, oldColor.g); - int progressSign3 = MoteColorChangeUtils.GetProgressSign(colorRange.colorA.b, colorRange.colorB.b, oldColor.b); - float num4 = Math.Abs(colorRange.colorA.r - colorRange.colorB.r) * num * (float)progressSign; - float num5 = Math.Abs(colorRange.colorA.g - colorRange.colorB.g) * num2 * (float)progressSign3; - float num6 = Math.Abs(colorRange.colorA.b - colorRange.colorB.b) * num3 * (float)progressSign2; - Color result = new Color((oldColor.r + num4).Clamp(colorRange.colorA.r, colorRange.colorB.r), (oldColor.g + num5).Clamp(colorRange.colorA.g, colorRange.colorB.g), (oldColor.b + num6).Clamp(colorRange.colorA.b, colorRange.colorB.b)); - return result; - } - - public static void ChangeMoteColor(this HediffComp_TrailLeaver comp, Mote mote) - { - bool flag = !comp.Props.HasColorRange || mote == null; - if (!flag) - { - bool flag2 = comp.lastColor == Color.black; - if (flag2) - { - comp.lastColor = comp.Props.colorRange.colorA; - } - comp.lastColor = comp.Props.colorRange.RandomPickColor(comp.lastColor, comp.MyDebug); - mote.instanceColor = comp.lastColor; - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteLink.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteLink.cs deleted file mode 100644 index 95f3c33..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteLink.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class MoteLink - { - public static Vector3 GetLinkOffset(this Pawn p, MoteLink.Nature linkType) - { - Vector3 result; - if (linkType != MoteLink.Nature.head) - { - if (linkType != MoteLink.Nature.body) - { - } - result = Vector3.zero; - } - else - { - result = p.Drawer.renderer.BaseHeadOffsetAt((p.GetPosture() == PawnPosture.Standing) ? Rot4.North : p.Drawer.renderer.LayingFacing()).RotatedBy(p.Drawer.renderer.BodyAngle(PawnRenderFlags.Cache)); - } - return result; - } - - public enum Nature - { - head, - body - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs deleted file mode 100644 index 0b97de4..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using MoharGfx; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class MoteSpawnUtils - { - public static Thing TryMoteSpawn(this Vector3 loc, Map map, float rot, float scale, ThingDef moteDef, bool debug = false) - { - bool flag = loc.ForbiddenMote(map); - Thing result; - if (flag) - { - result = null; - } - else - { - bool flag2 = moteDef == null; - if (flag2) - { - if (debug) - { - Log.Warning("null mote"); - } - result = null; - } - else - { - MoteThrown moteThrown = (MoteThrown)ThingMaker.MakeThing(moteDef, null); - bool flag3 = moteThrown == null; - if (flag3) - { - result = null; - } - else - { - moteThrown.Scale = scale; - moteThrown.exactRotation = rot; - moteThrown.exactPosition = loc; - result = GenSpawn.Spawn(moteThrown, loc.ToIntVec3(), map, WipeMode.Vanish); - } - } - } - return result; - } - - public static Thing TryAnyMoteSpawn(this Vector3 loc, Map map, float rot, float scale, ThingDef moteDef, bool debug = false) - { - bool flag = loc.ForbiddenMote(map); - Thing result; - if (flag) - { - result = null; - } - else - { - bool flag2 = moteDef == null; - if (flag2) - { - if (debug) - { - Log.Warning("null mote"); - } - result = null; - } - else - { - Type thingClass = moteDef.thingClass; - bool flag3 = thingClass == typeof(CustomTransformation_Mote); - if (flag3) - { - CustomTransformation_Mote mote = (CustomTransformation_Mote)ThingMaker.MakeThing(moteDef, null); - result = mote.FinalizeMoteSpawn(loc, map, rot, scale); - } - else - { - bool flag4 = thingClass == typeof(MoteThrown); - if (flag4) - { - MoteThrown mote2 = (MoteThrown)ThingMaker.MakeThing(moteDef, null); - result = mote2.FinalizeMoteSpawn(loc, map, rot, scale); - } - else - { - result = null; - } - } - } - } - return result; - } - - public static Thing FinalizeMoteSpawn(this CustomTransformation_Mote mote, Vector3 loc, Map map, float rot, float scale) - { - mote.Scale = scale; - mote.exactRotation = rot; - mote.exactPosition = loc; - return GenSpawn.Spawn(mote, loc.ToIntVec3(), map, WipeMode.Vanish); - } - - public static Thing FinalizeMoteSpawn(this MoteThrown mote, Vector3 loc, Map map, float rot, float scale) - { - mote.Scale = scale; - mote.exactRotation = rot; - mote.exactPosition = loc; - return GenSpawn.Spawn(mote, loc.ToIntVec3(), map, WipeMode.Vanish); - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyDefs.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyDefs.cs deleted file mode 100644 index bd030a0..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyDefs.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace MoharHediffs -{ - public static class MyDefs - { - public static int OneYearTicks = 3600000; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyGfx.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyGfx.cs deleted file mode 100644 index 34c7652..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyGfx.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - [StaticConstructorOnStartup] - public class MyGfx - { - public static Color Purple = new Color(1f, 0f, 1f); - - public static Color Blue = new Color(0f, 0f, 1f); - - public static Color Cyan = new Color(0f, 1f, 1f); - - public static Color Green = new Color(0f, 1f, 0f); - - public static Color Yellow = new Color(1f, 1f, 0f); - - public static Color Orange = new Color(1f, 0.6f, 0f); - - public static Color Red = new Color(1f, 0f, 1f); - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NeedCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NeedCondition.cs deleted file mode 100644 index d059309..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NeedCondition.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class NeedCondition - { - public NeedCondition(NeedCondition copyMe) - { - this.needDef = copyMe.needDef; - this.level = copyMe.level; - } - - public NeedCondition() - { - } - - public NeedDef needDef; - - public FloatRange level; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NoMsgRandHediffGiver.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NoMsgRandHediffGiver.cs deleted file mode 100644 index 89afe7e..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NoMsgRandHediffGiver.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class NoMsgRandHediffGiver : HediffGiver - { - public override void OnIntervalPassed(Pawn pawn, Hediff cause) - { - bool flag = Rand.MTBEventOccurs(this.mtbDays, 60000f, 60f); - if (flag) - { - base.TryApply(pawn, null); - } - } - - public float mtbDays; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ParametersHandlingsUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ParametersHandlingsUtils.cs deleted file mode 100644 index e7ed5b4..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ParametersHandlingsUtils.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Linq; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class ParametersHandlingsUtils - { - public static bool IsTerrainAllowed(this HediffComp_TrailLeaver comp, TerrainDef terrain) - { - bool flag = terrain == null || comp.NullMap; - bool result; - if (flag) - { - result = false; - } - else - { - bool flag2 = !comp.HasTerrainRestriction; - if (flag2) - { - result = true; - } - else - { - TerrainRestriction terrainRestriction = comp.TerrainRestriction; - bool flag3 = !terrainRestriction.allowedInWater && terrain.IsWater; - if (flag3) - { - result = false; - } - else - { - bool flag4 = terrainRestriction.HasRelevantSnowRestriction && !terrainRestriction.allowedSnowDepth.Includes(comp.MyMap.snowGrid.GetDepth(comp.Pawn.Position)); - if (flag4) - { - result = false; - } - else - { - bool flag5 = terrainRestriction.HasForbiddenTerrains && terrainRestriction.forbiddenTerrains.Contains(terrain); - result = !flag5; - } - } - } - } - return result; - } - - public static bool IsPawnActivityCompatible(this HediffComp_TrailLeaver comp) - { - bool flag = !comp.HasPawnRestriction; - bool result; - if (flag) - { - result = true; - } - else - { - Restriction pawnRestriction = comp.PawnRestriction; - bool flag2 = pawnRestriction.HasPostureRestriction && !pawnRestriction.allowedPostures.Contains(comp.Pawn.GetPosture()); - if (flag2) - { - result = false; - } - else - { - bool flag3 = pawnRestriction.onlyWhenMoving && !comp.Pawn.pather.MovingNow; - result = !flag3; - } - } - return result; - } - - public static Vector3 GetBodyTypeOffset(this HediffComp_TrailLeaver comp) - { - Pawn_StoryTracker story = comp.Pawn.story; - bool flag = ((story != null) ? story.bodyType : null) == null || !comp.Props.HasOffset; - Vector3 result; - if (flag) - { - result = comp.Props.defaultOffset; - } - else - { - BodyTypeOffset bodyTypeOffset = (from b in comp.Props.offSetPerBodyType - where b.bodyType == comp.Pawn.story.bodyType - select b).FirstOrFallback(null); - result = ((bodyTypeOffset == null) ? comp.Props.defaultOffset : bodyTypeOffset.offset); - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCondition.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCondition.cs deleted file mode 100644 index 09eb125..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCondition.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class PawnCondition - { - public bool HasRace - { - get - { - return !this.race.NullOrEmpty(); - } - } - - public bool HasGender - { - get - { - return !this.gender.NullOrEmpty(); - } - } - - public List race; - - public FloatRange ageRange = new FloatRange(0f, 999f); - - public List gender; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCopyUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCopyUtils.cs deleted file mode 100644 index ca06390..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCopyUtils.cs +++ /dev/null @@ -1,344 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using AlienRace; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class PawnCopyUtils - { - public static void SetAge(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - ThingSettings chosenItem = comp.ChosenItem; - bool flag = chosenItem.IsCopier && chosenItem.copyParent.age; - if (flag) - { - LifeStageDef LSDef = comp.Pawn.ageTracker.CurLifeStage; - LifeStageAge lifeStageAge = (from LS in comp.Pawn.def.race.lifeStageAges - where LS.def == LSDef - select LS).FirstOrFallback(null); - bool flag2 = lifeStageAge == null; - if (!flag2) - { - newPawn.ageTracker.AgeBiologicalTicks = checked((long)(unchecked(lifeStageAge.minAge * (float)MyDefs.OneYearTicks))); - newPawn.ageTracker.AgeChronologicalTicks = Math.Max(comp.Pawn.ageTracker.AgeBiologicalTicks, comp.Pawn.ageTracker.AgeChronologicalTicks); - } - } - else - { - newPawn.ageTracker.AgeBiologicalTicks = (long)(checked(MyDefs.OneYearTicks * chosenItem.biologicalAgeRange.RandomInRange)); - newPawn.ageTracker.AgeChronologicalTicks = checked(unchecked((long)(checked(MyDefs.OneYearTicks * chosenItem.chronologicalAgeRange.RandomInRange))) + newPawn.ageTracker.AgeBiologicalTicks); - } - } - - public static void SetName(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool name = comp.ChosenItem.copyParent.name; - if (name) - { - newPawn.Name = comp.Pawn.Name; - } - } - - public static void SetGender(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool gender = comp.ChosenItem.copyParent.gender; - if (gender) - { - newPawn.gender = comp.Pawn.gender; - } - } - - public static void SetMelanin(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool melanin = comp.ChosenItem.copyParent.melanin; - if (melanin) - { - newPawn.story.SkinColorBase = comp.Pawn.story.SkinColorBase; - } - } - - public static void SetAlienSkinColor(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - AlienPartGenerator.AlienComp alienComp = comp.Pawn.TryGetComp(); - AlienPartGenerator.AlienComp alienComp2 = (newPawn != null) ? newPawn.TryGetComp() : null; - bool flag = alienComp == null || alienComp2 == null; - if (!flag) - { - Color first = alienComp.GetChannel("skin").first; - Color second = alienComp.GetChannel("skin").second; - alienComp2.GetChannel("skin").first = first; - alienComp2.GetChannel("skin").second = second; - } - } - - public static void SetAlienBodyAndHeadType(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool flag = !comp.Pawn.IsAlien() || !newPawn.IsAlien(); - if (!flag) - { - AlienPartGenerator.AlienComp alienComp = comp.Pawn.TryGetComp(); - AlienPartGenerator.AlienComp alienComp2 = (newPawn != null) ? newPawn.TryGetComp() : null; - bool flag2 = alienComp == null || alienComp2 == null; - if (!flag2) - { - newPawn.story.headType = comp.Pawn.story.headType; - alienComp2.headMaskVariant = alienComp.headMaskVariant; - alienComp2.headVariant = alienComp.headVariant; - newPawn.story.bodyType = comp.Pawn.story.bodyType; - alienComp2.bodyMaskVariant = alienComp.bodyMaskVariant; - alienComp2.bodyVariant = alienComp.bodyVariant; - } - } - } - - public static void SetHair(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool hair = comp.ChosenItem.copyParent.hair; - if (hair) - { - newPawn.story.hairDef = comp.Pawn.story.hairDef; - } - } - - public static void SetHairColor(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool hairColor = comp.ChosenItem.copyParent.hairColor; - if (hairColor) - { - newPawn.story.HairColor = comp.Pawn.story.HairColor; - } - } - - public static void SetHediff(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool flag = !comp.ChosenItem.copyParent.hediff; - if (!flag) - { - newPawn.health.hediffSet.hediffs = new List(); - List hediffs = comp.ChosenItem.copyParent.HasHediffExclusion ? (from h in comp.Pawn.health.hediffSet.hediffs.ListFullCopy() - where !comp.ChosenItem.copyParent.excludeHediff.Contains(h.def) && (!comp.ChosenItem.copyParent.excludeTendableHediffs || !h.def.tendable) && (!comp.ChosenItem.copyParent.excludePermanentHediffs || h.TryGetComp() == null) - select h).ToList() : comp.Pawn.health.hediffSet.hediffs.ListFullCopy(); - newPawn.health.hediffSet.hediffs = hediffs; - } - } - - public static void SetSkills(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, bool debug = false) - { - bool flag = !comp.ChosenItem.copyParent.skills; - checked - { - if (!flag) - { - string text = newPawn.LabelShort + " - SetSkills - "; - for (int i = 0; i < newPawn.skills.skills.Count; i++) - { - float randomInRange = comp.ChosenItem.copyParent.skillDecay.RandomInRange; - int num = (int)(unchecked((float)comp.Pawn.skills.skills[i].levelInt * randomInRange)); - if (debug) - { - Log.Warning(string.Concat(new object[] - { - text, - " browsing ", - comp.Pawn.skills.skills[i].def.defName, - " ori: ", - comp.Pawn.skills.skills[i].levelInt, - " new: ", - newPawn.skills.skills[i].levelInt, - " decayRatio: ", - randomInRange, - " wantedSkill: ", - num - })); - } - bool flag2 = num > newPawn.skills.skills[i].levelInt; - if (flag2) - { - if (debug) - { - Log.Warning(text + "Calling gainskill"); - } - comp.GainSkill(newPawn, num, i, debug); - } - else - { - bool flag3 = num < newPawn.skills.skills[i].levelInt; - if (flag3) - { - if (debug) - { - Log.Warning(text + "Calling loseskill"); - } - comp.LoseSkill(newPawn, num, i, debug); - } - } - if (debug) - { - Log.Warning(string.Concat(new object[] - { - text, - " copied skill [", - i, - "]:", - comp.Pawn.skills.skills[i].def.defName, - " new: ", - newPawn.skills.skills[i].levelInt - })); - } - } - } - } - } - - public static void GainSkill(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, int wantedLevel, int index, bool debug = false) - { - string text = newPawn.LabelShort + " - GainSkill - "; - if (debug) - { - Log.Warning(text + "Entering"); - } - int num = 20; - checked - { - while (wantedLevel > newPawn.skills.skills[index].levelInt && num > 0) - { - float xpRequiredForLevelUp = newPawn.skills.skills[index].XpRequiredForLevelUp; - if (debug) - { - Log.Warning(string.Concat(new object[] - { - text, - " loop: ", - num, - " xpInjected: ", - xpRequiredForLevelUp, - " ori: ", - comp.Pawn.skills.skills[index].levelInt, - " new: ", - newPawn.skills.skills[index].levelInt - })); - } - newPawn.skills.skills[index].Learn(xpRequiredForLevelUp, true, false); - num--; - } - } - } - - public static void LoseSkill(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, int wantedLevel, int index, bool debug = false) - { - string text = newPawn.LabelShort + " - LoseSkill - "; - if (debug) - { - Log.Warning(text + "Entering"); - } - int num = 20; - checked - { - while (wantedLevel < newPawn.skills.skills[index].levelInt && num > 0) - { - float num2 = (float)(0 - newPawn.skills.skills[index].levelInt * 1000); - if (debug) - { - Log.Warning(string.Concat(new object[] - { - text, - " loop: ", - num, - " xpInjected: ", - num2, - " ori: ", - comp.Pawn.skills.skills[index].levelInt, - " new: ", - newPawn.skills.skills[index].levelInt - })); - } - newPawn.skills.skills[index].Learn(num2, true, false); - num--; - } - } - } - - public static void SetPassions(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, bool debug = false) - { - bool flag = !comp.ChosenItem.copyParent.passions; - checked - { - if (!flag) - { - for (int i = 0; i < newPawn.skills.skills.Count; i++) - { - newPawn.skills.skills[i].passion = comp.Pawn.skills.skills[i].passion; - } - } - } - } - - public static void InitRememberBackstories(out BackstoryDef childBS, out BackstoryDef adultBS) - { - BackstoryDef backstoryDef; - adultBS = (backstoryDef = null); - childBS = backstoryDef; - } - - public static void ResetBackstories(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - newPawn.story.Childhood = null; - newPawn.story.Adulthood = null; - } - - public static void RememberBackstories(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, out BackstoryDef childBS, out BackstoryDef adultBS) - { - childBS = newPawn.story.Childhood; - adultBS = newPawn.story.Adulthood; - } - - public static void ReinjectBackstories(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn, BackstoryDef childBS, BackstoryDef adultBS) - { - newPawn.story.Childhood = childBS; - newPawn.story.Adulthood = adultBS; - } - - public static void SetBackstories(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool childBS = comp.ChosenItem.copyParent.childBS; - if (childBS) - { - newPawn.story.Childhood = comp.Pawn.story.Childhood; - } - bool adultBS = comp.ChosenItem.copyParent.adultBS; - if (adultBS) - { - newPawn.story.Adulthood = comp.Pawn.story.Adulthood; - } - } - - public static void SetTraits(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool flag = !comp.ChosenItem.copyParent.traits; - checked - { - if (!flag) - { - for (int i = newPawn.story.traits.allTraits.Count - 1; i >= 0; i--) - { - newPawn.story.traits.allTraits.RemoveAt(i); - } - newPawn.story.traits.allTraits = comp.Pawn.story.traits.allTraits.ListFullCopy(); - } - } - } - - public static void UpdateDisabilities(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool flag = newPawn.skills == null; - if (!flag) - { - newPawn.skills.Notify_SkillDisablesChanged(); - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnRedressUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnRedressUtils.cs deleted file mode 100644 index 1928302..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnRedressUtils.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public static class PawnRedressUtils - { - public static void DestroyInventory(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool destroyInventory = comp.ChosenItem.redressNewPawn.destroyInventory; - if (destroyInventory) - { - newPawn.inventory.innerContainer.ClearAndDestroyContents(DestroyMode.Vanish); - } - } - - public static void DestroyEquipment(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool destroyEquipment = comp.ChosenItem.redressNewPawn.destroyEquipment; - if (destroyEquipment) - { - newPawn.equipment.DestroyAllEquipment(DestroyMode.Vanish); - } - } - - public static void DestroyApparel(this HediffComp_RandySpawnUponDeath comp, Pawn newPawn) - { - bool destroyApparel = comp.ChosenItem.redressNewPawn.destroyApparel; - if (destroyApparel) - { - newPawn.apparel.DestroyAll(DestroyMode.Vanish); - } - } - - public static bool StripCorpse(this HediffComp_RandySpawnUponDeath comp, Corpse corpse) - { - bool result = false; - bool flag = comp.Props.HasParentRedress && comp.Props.redressParent.strip && !corpse.Negligible(); - if (flag) - { - result = true; - bool flag2 = corpse.AnythingToStrip(); - if (flag2) - { - corpse.Strip(true); - } - } - return result; - } - - public static bool DestroyCorpse(this HediffComp_RandySpawnUponDeath comp, Corpse corpse) - { - bool result = false; - bool flag = comp.Props.HasParentRedress && comp.Props.redressParent.destroyCorpse && !corpse.Negligible(); - if (flag) - { - result = true; - corpse.DeSpawn(DestroyMode.Vanish); - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Properties/AssemblyInfo.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Properties/AssemblyInfo.cs deleted file mode 100644 index 205d85b..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.Diagnostics; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.Versioning; - -[assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyTitle("MoharHediffs")] -[assembly: AssemblyProduct("MoharHediffs")] diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomFactionParameter.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomFactionParameter.cs deleted file mode 100644 index 051277a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomFactionParameter.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using RimWorld; - -namespace MoharHediffs -{ - public class RandomFactionParameter - { - public bool HasInheritedFaction - { - get - { - return this.inheritedFaction; - } - } - - public bool HasForcedFaction - { - get - { - return this.forcedFaction != null; - } - } - - public bool HasPlayerFaction - { - get - { - return this.playerFaction; - } - } - - public bool HasNoFaction - { - get - { - return this.noFaction; - } - } - - public bool HasDefaultPawnKindFaction - { - get - { - return this.defaultPawnKindFaction; - } - } - - public bool IsLegitRandomFactionParameter() - { - int num = 0; - bool hasInheritedFaction = this.HasInheritedFaction; - checked - { - if (hasInheritedFaction) - { - num++; - } - bool hasForcedFaction = this.HasForcedFaction; - if (hasForcedFaction) - { - num++; - } - bool hasPlayerFaction = this.HasPlayerFaction; - if (hasPlayerFaction) - { - num++; - } - bool hasNoFaction = this.HasNoFaction; - if (hasNoFaction) - { - num++; - } - bool hasDefaultPawnKindFaction = this.HasDefaultPawnKindFaction; - if (hasDefaultPawnKindFaction) - { - num++; - } - return num == 1; - } - } - - public bool inheritedFaction = false; - - public FactionDef forcedFaction = null; - - public bool playerFaction = false; - - public bool defaultPawnKindFaction = false; - - public bool noFaction = false; - - public bool newBorn = false; - - public float weight; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomPicker.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomPicker.cs deleted file mode 100644 index 36d8f83..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomPicker.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace MoharHediffs -{ - public static class RandomPicker - { - public static List GetCompatibleItems(this HediffComp_AnotherRandom comp) - { - List list = new List(); - foreach (HediffItem hediffItem in comp.Props.hediffPool) - { - HediffCompProperties_AnotherRandom props = comp.Props; - HediffCondition defaultPlusSpecificHediffCondition = ConditionBuilder.GetDefaultPlusSpecificHediffCondition(((props != null) ? props.defaultCondition : null) ?? null, ((hediffItem != null) ? hediffItem.specificCondition : null) ?? null, comp.HighVerbosity); - BodyPartRecord bodyPartRecord; - bool flag = defaultPlusSpecificHediffCondition.HasBodypartCondition ? defaultPlusSpecificHediffCondition.bodyPart.GetBPRFromHediffCondition(comp.Pawn, out bodyPartRecord, false) : (!defaultPlusSpecificHediffCondition.HasPawnCondition || defaultPlusSpecificHediffCondition.pawn.ValidateCompatibilityOfHediffWithPawn(comp.Pawn, false)); - if (flag) - { - list.Add(hediffItem); - } - } - bool flag2 = !list.NullOrEmpty(); - List result; - if (flag2) - { - result = list; - } - else - { - result = null; - } - return result; - } - - public static List GetRemainingItems(this List hediffItems, List AlreadyPickedItems) - { - return (from hi in hediffItems - where !AlreadyPickedItems.Contains(hi) - select hi).ToList(); - } - - public static float GetWeight(this List HL) - { - float num = 0f; - foreach (HediffItem hediffItem in HL) - { - num += hediffItem.weight; - } - return num; - } - - public static HediffItem PickRandomWeightedItem(this List HL, bool debug = false) - { - float weight = HL.GetWeight(); - float num = Rand.Range(0f, weight); - checked - { - for (int i = 0; i < HL.Count; i++) - { - bool flag = unchecked(num -= HL[i].weight) < 0f; - if (flag) - { - Tools.Warn("PickRandomWeightedItem : returning " + i, debug); - return HL[i]; - } - } - return null; - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandyPickerUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandyPickerUtils.cs deleted file mode 100644 index f05680a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandyPickerUtils.cs +++ /dev/null @@ -1,281 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using AlienRace; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class RandyPickerUtils - { - public static float ThingsTotalWeight(this HediffComp_RandySpawnUponDeath comp, List TSList) - { - string text = comp.MyDebug ? (comp.Pawn.LabelShort + " ThingsTotalWeight ") : ""; - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning(text + " searching total weights thing list"); - } - float num = 0f; - for (int i = 0; i < TSList.Count; i = checked(i + 1)) - { - num += TSList[i].weight; - } - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning(text + " found: " + num); - } - return num; - } - - public static bool SameColorAs(this Color colorA, Color colorB) - { - bool flag = (double)Math.Abs(colorA.r - colorB.r) < 0.01; - bool flag2 = (double)Math.Abs(colorA.g - colorB.g) < 0.01; - bool flag3 = (double)Math.Abs(colorA.b - colorB.b) < 0.01; - bool flag4 = (double)Math.Abs(colorA.a - colorB.a) < 0.01; - return flag && flag2 && flag3 && flag4; - } - - public static Color PickAlienColor(this AlienPartGenerator.AlienComp a, string channelName, int channelNum) - { - return (channelNum == 1) ? a.GetChannel(channelName).first : ((channelNum == 2) ? a.GetChannel(channelName).second : Color.white); - } - - public static Color PickStuffColor(this ThingDef tDef) - { - StuffProperties stuffProps = tDef.stuffProps; - bool flag; - if (stuffProps == null) - { - flag = false; - } - else - { - Color color = stuffProps.color; - flag = true; - } - bool flag2 = flag; - Color result; - if (flag2) - { - result = tDef.stuffProps.color; - } - else - { - ThingDefCountClass thingDefCountClass = tDef.butcherProducts.FirstOrDefault() ?? null; - bool flag3 = thingDefCountClass == null; - if (flag3) - { - result = Color.black; - } - else - { - ThingDef thingDef = thingDefCountClass.thingDef; - bool flag4; - if (thingDef == null) - { - flag4 = true; - } - else - { - StuffProperties stuffProps2 = thingDef.stuffProps; - Color? color2 = (stuffProps2 != null) ? new Color?(stuffProps2.color) : null; - flag4 = (color2 == null); - } - bool flag5 = flag4; - if (flag5) - { - result = Color.black; - } - else - { - result = thingDef.stuffProps.color; - } - } - } - return result; - } - - public static List ThingSettingsWithColor(this HediffComp_RandySpawnUponDeath comp) - { - string text = comp.MyDebug ? (comp.Pawn.LabelShort + " ThingSettingsWithColor -") : ""; - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning(text + " creating thing list with color"); - } - bool flag = !comp.HasColorCondition || !comp.Pawn.IsAlien(); - List result; - if (flag) - { - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning(text + "Found no color condition or pawn is not alien"); - } - result = null; - } - else - { - AlienPartGenerator.AlienComp alien = Tools.GetAlien(comp.Pawn); - bool flag2 = alien == null; - if (flag2) - { - bool myDebug3 = comp.MyDebug; - if (myDebug3) - { - Log.Warning(text + "Found no AlienPartGenerator.AlienComp"); - } - result = null; - } - else - { - bool myDebug4 = comp.MyDebug; - if (myDebug4) - { - Log.Warning(string.Concat(new object[] - { - text, - "colors=> skin.first:", - alien.GetChannel("skin").first, - " skin.second:", - alien.GetChannel("skin").second - })); - } - List list = (from t in comp.FullOptionList - where t.IsThingSpawner && t.HasColorCondition - select t).ToList(); - bool myDebug5 = comp.MyDebug; - if (myDebug5) - { - Log.Warning("Option num:" + list.Count); - } - Color PawnColor = alien.GetChannel("skin").first; - foreach (ThingSettings thingSettings in list) - { - bool myDebug6 = comp.MyDebug; - if (myDebug6) - { - Log.Warning(string.Concat(new object[] - { - " TS.Def: ", - thingSettings.thingToSpawn.defName, - "; TS.color: ", - thingSettings.thingToSpawn.PickStuffColor(), - "; P.color: ", - PawnColor, - "; equals: ", - PawnColor.SameColorAs(thingSettings.thingToSpawn.PickStuffColor()).ToString() - })); - } - } - List list2 = new List(); - list2 = (from t in comp.FullOptionList - where t.IsThingSpawner && t.HasColorCondition && PawnColor.SameColorAs(t.thingToSpawn.PickStuffColor()) - select t).ToList(); - bool myDebug7 = comp.MyDebug; - if (myDebug7) - { - Log.Warning(string.Concat(new object[] - { - text, - "Found ", - list2.Count, - " things with color" - })); - } - result = list2; - } - } - return result; - } - - public static List ThingSettingsWithExclusion(this HediffComp_RandySpawnUponDeath comp, List TSList, List AlreadyPickedOptions) - { - List list = new List(); - list = comp.Props.settings.things.ListFullCopy(); - foreach (int index in AlreadyPickedOptions) - { - list.RemoveAt(index); - } - return list; - } - - public static int GetWeightedRandomIndex(this HediffComp_RandySpawnUponDeath comp, List AlreadyPickedOptions) - { - bool flag = !comp.Props.settings.HasSomethingToSpawn; - int result; - if (flag) - { - result = -1; - } - else - { - bool hasColorCondition = comp.HasColorCondition; - List list; - if (hasColorCondition) - { - list = comp.ThingSettingsWithColor(); - } - else - { - list = comp.FullOptionList; - } - bool flag2 = !AlreadyPickedOptions.NullOrEmpty(); - if (flag2) - { - list = comp.ThingSettingsWithExclusion(list, AlreadyPickedOptions); - } - float num = Rand.Range(0f, comp.ThingsTotalWeight(list)); - int i = 0; - while (i < list.Count) - { - bool flag3 = (num -= list[i].weight) < 0f; - checked - { - if (flag3) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("GetWeightedRandomIndex : returning thing " + i); - } - bool flag4 = AlreadyPickedOptions.NullOrEmpty() && !comp.HasColorCondition; - if (flag4) - { - return i; - } - int num2 = comp.Props.settings.things.IndexOf(list[i]); - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning(string.Concat(new object[] - { - "GetWeightedRandomIndex : returning thing ", - i, - " normalized:", - num2 - })); - } - return num2; - } - else - { - i++; - } - } - } - bool myDebug3 = comp.MyDebug; - if (myDebug3) - { - Log.Warning("GetWeightedRandomIndex : failed to return proper index, returning -1"); - } - result = -1; - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandySpawnerUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandySpawnerUtils.cs deleted file mode 100644 index dca77a6..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandySpawnerUtils.cs +++ /dev/null @@ -1,348 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class RandySpawnerUtils - { - public static float TotalWeight(this HediffComp_RandySpawner comp) - { - float num = 0f; - List itemParameters = comp.Props.itemParameters; - for (int i = 0; i < itemParameters.Count; i = checked(i + 1)) - { - num += itemParameters[i].weight; - } - return num; - } - - public static float TotalWeight(this List RFP) - { - float num = 0f; - for (int i = 0; i < RFP.Count; i = checked(i + 1)) - { - num += RFP[i].weight; - } - return num; - } - - public static void ComputeRandomFaction(this HediffComp_RandySpawner comp) - { - bool hasFactionParams = comp.CurIP.HasFactionParams; - if (hasFactionParams) - { - int weightedRandomFaction = comp.GetWeightedRandomFaction(); - bool flag = weightedRandomFaction == -1; - if (flag) - { - Tools.Warn("ComputeRandomFaction - found no index", comp.MyDebug); - } - else - { - comp.newBorn = comp.CurIP.randomFactionParameters[weightedRandomFaction].newBorn; - RandomFactionParameter rfp = comp.CurIP.randomFactionParameters[weightedRandomFaction]; - comp.Itemfaction = comp.GetFaction(rfp); - string str = "ComputeRandomFaction - found:"; - Faction itemfaction = comp.Itemfaction; - Tools.Warn(str + ((itemfaction != null) ? itemfaction.GetCallLabel() : null), comp.MyDebug); - } - } - } - - public static int GetWeightedRandomIndex(this HediffComp_RandySpawner comp) - { - float num = Rand.Range(0f, comp.TotalWeight()); - List itemParameters = comp.Props.itemParameters; - checked - { - for (int i = 0; i < itemParameters.Count; i++) - { - bool flag = unchecked(num -= itemParameters[i].weight) < 0f; - if (flag) - { - Tools.Warn("GetWeightedRandomIndex : returning " + i, comp.MyDebug); - return i; - } - } - Tools.Warn("GetWeightedRandomIndex : failed to return proper index, returning -1", comp.MyDebug); - return -1; - } - } - - public static int GetWeightedRandomFaction(this HediffComp_RandySpawner comp) - { - bool flag = !comp.HasValidIP || !comp.CurIP.HasFactionParams; - checked - { - int result; - if (flag) - { - result = -1; - } - else - { - List randomFactionParameters = comp.CurIP.randomFactionParameters; - float num = Rand.Range(0f, randomFactionParameters.TotalWeight()); - for (int i = 0; i < randomFactionParameters.Count; i++) - { - bool flag2 = unchecked(num -= randomFactionParameters[i].weight) < 0f; - if (flag2) - { - Tools.Warn("GetWeightedRandomIndex : returning " + i, comp.MyDebug); - return i; - } - } - Tools.Warn("GetWeightedRandomFaction : failed to return proper index, returning -1", comp.MyDebug); - result = -1; - } - return result; - } - } - - public static bool SetRequirementGraceTicks(this HediffComp_RandySpawner comp) - { - bool requiresFood = comp.RequiresFood; - bool requiresHealth = comp.RequiresHealth; - bool flag = requiresFood || requiresHealth; - checked - { - bool result; - if (flag) - { - bool flag2 = requiresFood; - if (flag2) - { - comp.hungerReset++; - } - else - { - comp.healthReset++; - } - bool hasValidIP = comp.HasValidIP; - if (hasValidIP) - { - comp.graceTicks = (int)(unchecked(comp.CurIP.graceDays.RandomInRange * 60000f)); - } - result = true; - } - else - { - comp.hungerReset = (comp.healthReset = 0); - result = false; - } - return result; - } - } - - public static void CheckProps(this HediffComp_RandySpawner comp) - { - bool flag = comp.Props.itemParameters.NullOrEmpty(); - if (flag) - { - comp.BlockAndDestroy(comp.Pawn.Label + " props: no itemParameters - giving up", comp.MyDebug); - } - checked - { - for (int i = 0; i < comp.Props.itemParameters.Count; i++) - { - ItemParameter itemParameter = comp.Props.itemParameters[i]; - bool flag2 = itemParameter.spawnCount.min > comp.spawnCountErrorLimit || itemParameter.spawnCount.max > comp.spawnCountErrorLimit; - if (flag2) - { - comp.BlockAndDestroy(comp.Pawn.Label + " props: SpawnCount is too high: >" + comp.spawnCountErrorLimit, comp.MyDebug); - break; - } - bool flag3 = itemParameter.daysB4Next.min < comp.minDaysB4NextErrorLimit; - if (flag3) - { - comp.BlockAndDestroy(string.Concat(new object[] - { - comp.Pawn.Label, - " props: minDaysB4Next is too low: ", - itemParameter.daysB4Next.min, - "<", - comp.minDaysB4NextErrorLimit - }), comp.MyDebug); - break; - } - bool flag4 = !itemParameter.ThingSpawner && !itemParameter.PawnSpawner; - if (flag4) - { - comp.BlockAndDestroy(comp.Pawn.Label + " props: not a thing nor pawn spawner bc no def for either", comp.MyDebug); - break; - } - bool hasFactionParams = itemParameter.HasFactionParams; - if (hasFactionParams) - { - foreach (RandomFactionParameter randomFactionParameter in itemParameter.randomFactionParameters) - { - bool flag5 = !randomFactionParameter.IsLegitRandomFactionParameter(); - if (flag5) - { - comp.BlockAndDestroy(comp.Pawn.Label + " faction props: invalid faction params", comp.MyDebug); - return; - } - } - } - } - } - } - - public static void DumpProps(this HediffComp_RandySpawner comp) - { - Tools.Warn(string.Concat(new string[] - { - "hungerRelative: ", - comp.Props.hungerRelative.ToString(), - "; healthRelative: ", - comp.Props.healthRelative.ToString(), - "; " - }), comp.MyDebug); - checked - { - for (int i = 0; i < comp.Props.itemParameters.Count; i++) - { - ItemParameter itemParameter = comp.Props.itemParameters[i]; - itemParameter.LogParams(comp.MyDebug); - } - } - } - - public static bool TryFindSpawnCell(this HediffComp_RandySpawner comp, out IntVec3 result) - { - Pawn pawn = comp.Pawn; - ThingDef thingToSpawn = comp.CurIP.thingToSpawn; - bool flag = pawn.Negligible(); - checked - { - bool result2; - if (flag) - { - result = IntVec3.Invalid; - Tools.Warn("TryFindSpawnCell Null - pawn null", comp.MyDebug); - result2 = false; - } - else - { - foreach (IntVec3 intVec in GenAdj.CellsAdjacent8Way(pawn).InRandomOrder(null)) - { - bool flag2 = intVec.Walkable(pawn.Map); - if (flag2) - { - Building edifice = intVec.GetEdifice(pawn.Map); - bool flag3 = edifice == null || !thingToSpawn.IsEdifice(); - if (flag3) - { - Building_Door building_Door; - bool flag4 = (building_Door = (edifice as Building_Door)) == null || building_Door.FreePassage; - if (flag4) - { - bool flag5 = GenSight.LineOfSight(pawn.Position, intVec, pawn.Map, false, null, 0, 0); - if (flag5) - { - bool flag6 = false; - List thingList = intVec.GetThingList(pawn.Map); - for (int i = 0; i < thingList.Count; i++) - { - Thing thing = thingList[i]; - bool flag7 = thing.def.category == ThingCategory.Item; - if (flag7) - { - bool flag8 = thing.def != thingToSpawn || thing.stackCount > thingToSpawn.stackLimit - comp.calculatedQuantity; - if (flag8) - { - flag6 = true; - break; - } - } - } - bool flag9 = !flag6; - if (flag9) - { - result = intVec; - return true; - } - } - } - } - } - } - Tools.Warn("TryFindSpawnCell Null - no spawn cell found", comp.MyDebug); - result = IntVec3.Invalid; - result2 = false; - } - return result2; - } - } - - public static Faction GetFaction(this HediffComp_RandySpawner comp, RandomFactionParameter RFP) - { - FactionDef fDef = comp.GetFactionDef(RFP); - bool flag = fDef == null; - Faction result; - if (flag) - { - result = null; - } - else - { - result = (from F in Find.FactionManager.AllFactions - where F.def == fDef - select F).FirstOrFallback(null); - } - return result; - } - - public static FactionDef GetFactionDef(this HediffComp_RandySpawner comp, RandomFactionParameter RFP) - { - Pawn pawn = comp.Pawn; - bool hasInheritedFaction = RFP.HasInheritedFaction; - FactionDef result; - if (hasInheritedFaction) - { - result = pawn.Faction.def; - } - else - { - bool hasForcedFaction = RFP.HasForcedFaction; - if (hasForcedFaction) - { - result = RFP.forcedFaction; - } - else - { - bool hasPlayerFaction = RFP.HasPlayerFaction; - if (hasPlayerFaction) - { - result = Faction.OfPlayerSilentFail.def; - } - else - { - bool hasNoFaction = RFP.HasNoFaction; - if (hasNoFaction) - { - result = null; - } - else - { - bool hasDefaultPawnKindFaction = RFP.HasDefaultPawnKindFaction; - if (hasDefaultPawnKindFaction) - { - PawnKindDef pawnKindToSpawn = comp.CurIP.pawnKindToSpawn; - result = (((pawnKindToSpawn != null) ? pawnKindToSpawn.defaultFactionType : null) ?? null); - } - else - { - result = null; - } - } - } - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RedressSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RedressSettings.cs deleted file mode 100644 index 4130443..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RedressSettings.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; - -namespace MoharHediffs -{ - public class RedressSettings - { - public bool destroyApparel = false; - - public bool destroyEquipment = false; - - public bool destroyInventory = false; - - public bool strip = false; - - public bool destroyCorpse = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementSettings.cs deleted file mode 100644 index 88ae7a8..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementSettings.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class RequirementSettings - { - public bool HasHediffRequirement - { - get - { - bool result; - if (!this.hediff.NullOrEmpty()) - { - result = this.hediff.Any((HediffRequirementSettings h) => h.HasHediffDef); - } - else - { - result = false; - } - return result; - } - } - - public bool HasThingRequirement - { - get - { - bool result; - if (!this.thing.NullOrEmpty()) - { - result = this.thing.Any((ThingRequirementSettings t) => t.HasThingDef); - } - else - { - result = false; - } - return result; - } - } - - public bool HasAtLeastOneRequirementSetting - { - get - { - return this.HasHediffRequirement || this.HasThingRequirement; - } - } - - public bool HasContainerSpawn - { - get - { - bool result; - if (this.HasThingRequirement) - { - result = this.thing.Any((ThingRequirementSettings t) => t.HasContainerSpawn); - } - else - { - result = false; - } - return result; - } - } - - public List hediff; - - public List thing; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementUtils.cs deleted file mode 100644 index 7fbe21c..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementUtils.cs +++ /dev/null @@ -1,177 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class RequirementUtils - { - public static bool FulfilsSeverityRequirement(this HediffComp_RandySpawnUponDeath comp) - { - string text = comp.MyDebug ? (comp.Pawn.LabelShort + " FulfilsSeverityRequirement - ") : ""; - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning(text + "Entering"); - } - bool flag = comp.Pawn == null || !comp.HasHediffRequirement; - bool result; - if (flag) - { - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning(text + " null pawn or no requirement"); - } - result = false; - } - else - { - bool flag2 = true; - using (List.Enumerator enumerator = comp.Props.requirements.hediff.GetEnumerator()) - { - while (enumerator.MoveNext()) - { - HediffRequirementSettings HRS = enumerator.Current; - bool flag3 = HRS.hediffDef == null; - if (!flag3) - { - IEnumerable enumerable = from h in comp.Pawn.health.hediffSet.hediffs - where h.def == HRS.hediffDef && h.Severity >= HRS.severity.min && h.Severity <= HRS.severity.max - select h; - bool flag4 = !enumerable.EnumerableNullOrEmpty(); - flag2 = (flag2 && flag4); - bool flag5 = !flag4; - if (flag5) - { - bool myDebug3 = comp.MyDebug; - if (myDebug3) - { - Log.Warning(text + " did not find " + HRS.hediffDef); - } - return false; - } - } - } - } - result = flag2; - } - return result; - } - - public static bool FulfilsThingRequirement(this HediffComp_RandySpawnUponDeath comp, Corpse corpse, out Thing closestThing) - { - RequirementUtils.<>c__DisplayClass1_0 CS$<>8__locals1 = new RequirementUtils.<>c__DisplayClass1_0(); - CS$<>8__locals1.corpse = corpse; - string text = comp.MyDebug ? (comp.Pawn.LabelShort + " FulfilsThingRequirement - ") : ""; - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning(text + "Entering"); - } - closestThing = null; - bool flag = CS$<>8__locals1.corpse.Negligible() || !comp.HasThingRequirement; - bool result; - if (flag) - { - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning(text + " negligeable corpse or no requirement"); - } - result = false; - } - else - { - bool flag2 = true; - using (List.Enumerator enumerator = comp.Props.requirements.thing.GetEnumerator()) - { - while (enumerator.MoveNext()) - { - RequirementUtils.<>c__DisplayClass1_1 CS$<>8__locals2 = new RequirementUtils.<>c__DisplayClass1_1(); - CS$<>8__locals2.CS$<>8__locals1 = CS$<>8__locals1; - CS$<>8__locals2.TRS = enumerator.Current; - bool flag3 = CS$<>8__locals2.TRS.thingDef == null; - if (!flag3) - { - CompRefuelable fuelComp = null; - CompPowerTrader powerComp = null; - IEnumerable enumerable = from t in Find.CurrentMap.spawnedThings - where t.def == CS$<>8__locals2.TRS.thingDef && t.Position.DistanceTo(CS$<>8__locals2.CS$<>8__locals1.corpse.Position) <= CS$<>8__locals2.TRS.distance.max && t.Position.DistanceTo(CS$<>8__locals2.CS$<>8__locals1.corpse.Position) >= CS$<>8__locals2.TRS.distance.min && (!CS$<>8__locals2.TRS.sameFaction || CS$<>8__locals2.CS$<>8__locals1.corpse.InnerPawn.Faction == t.Faction) && (!CS$<>8__locals2.TRS.needsFueled || ((fuelComp = t.TryGetComp()) != null && fuelComp.HasFuel)) && (!CS$<>8__locals2.TRS.needsPowered || ((powerComp = t.TryGetComp()) != null && powerComp.PowerOn)) - select t; - bool flag4 = !enumerable.EnumerableNullOrEmpty(); - bool flag5 = flag4 && (CS$<>8__locals2.TRS.spawnClose || CS$<>8__locals2.TRS.spawnInside); - if (flag5) - { - IEnumerable source = enumerable; - Func selector; - if ((selector = CS$<>8__locals2.CS$<>8__locals1.<>9__1) == null) - { - selector = (CS$<>8__locals2.CS$<>8__locals1.<>9__1 = ((Thing t) => t.Position.DistanceTo(CS$<>8__locals2.CS$<>8__locals1.corpse.Position))); - } - closestThing = source.MinBy(selector); - } - flag2 = (flag2 && flag4); - bool flag6 = !flag4; - if (flag6) - { - bool myDebug3 = comp.MyDebug; - if (myDebug3) - { - Log.Warning(text + " did not find " + CS$<>8__locals2.TRS.thingDef); - } - return false; - } - } - } - } - result = flag2; - } - return result; - } - - public static bool FulfilsRequirement(this HediffComp_RandySpawnUponDeath comp, out Thing closestThing) - { - closestThing = null; - bool flag = !comp.HasRequirement; - bool result; - if (flag) - { - result = true; - } - else - { - bool flag2 = comp.HasHediffRequirement && !comp.FulfilsSeverityRequirement(); - if (flag2) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("hediff requirements not fulfiled"); - } - result = false; - } - else - { - bool flag3 = comp.HasThingRequirement && !comp.FulfilsThingRequirement(comp.Pawn.Corpse, out closestThing); - if (flag3) - { - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning("thing requirements not fulfiled"); - } - result = false; - } - else - { - result = true; - } - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Restriction.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Restriction.cs deleted file mode 100644 index 986938d..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Restriction.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class Restriction - { - public bool HasTerrainRestriction - { - get - { - return this.terrain != null; - } - } - - public bool HasPostureRestriction - { - get - { - return !this.allowedPostures.NullOrEmpty(); - } - } - - public bool onlyWhenMoving = true; - - public List allowedPostures; - - public TerrainRestriction terrain; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RotationOffset.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RotationOffset.cs deleted file mode 100644 index 3acdf7a..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RotationOffset.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public class RotationOffset - { - public Rot4 rot; - - public Vector3 offset; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnRules.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnRules.cs deleted file mode 100644 index c5821dc..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnRules.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class SpawnRules - { - public bool IsUnlimited - { - get - { - return this.spawnedMax <= 0; - } - } - - public int spawnedMax = 2; - - public IntRange period = new IntRange(15, 25); - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnerUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnerUtils.cs deleted file mode 100644 index ac93c3f..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnerUtils.cs +++ /dev/null @@ -1,372 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class SpawnerUtils - { - public static bool TrySpawnPawn(this HediffComp_RandySpawnUponDeath comp, Thing refThing, int randomQuantity) - { - string text = comp.MyDebug ? (comp.Pawn.LabelShort + " TrySpawnPawn ") : ""; - ThingSettings chosenItem = comp.ChosenItem; - IntVec3 position = refThing.Position; - Map map = refThing.Map; - PawnKindDef pawnOfChoice = comp.PawnOfChoice; - PawnGenerationRequest request = chosenItem.newBorn ? new PawnGenerationRequest(pawnOfChoice, comp.RandomFaction, PawnGenerationContext.NonPlayer, -1, false, false, false, true, false, 0f, false, true, false, false, false, false, false, false, false, 0f, 0f, null, 0f, null, null, null, null, null, new float?(0f), new float?(0f), null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f, DevelopmentalStage.Adult, null, null, null, false, false, false, -1, 0, false) : new PawnGenerationRequest(pawnOfChoice, comp.RandomFaction, PawnGenerationContext.NonPlayer, -1, false, false, false, true, false, 0f, false, true, false, false, false, false, false, false, false, 0f, 0f, null, 0f, null, null, null, null, null, null, null, null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f, DevelopmentalStage.Adult, null, null, null, false, false, false, -1, 0, false); - checked - { - for (int i = 0; i < randomQuantity; i++) - { - Pawn pawn = PawnGenerator.GeneratePawn(request); - comp.SetAge(pawn); - bool isCopier = chosenItem.IsCopier; - if (isCopier) - { - comp.SetName(pawn); - comp.SetGender(pawn); - comp.SetMelanin(pawn); - comp.SetAlienSkinColor(pawn); - comp.SetAlienBodyAndHeadType(pawn); - comp.SetHair(pawn); - comp.SetHairColor(pawn); - comp.SetHediff(pawn); - BackstoryDef backstoryDef; - BackstoryDef backstoryDef2; - PawnCopyUtils.InitRememberBackstories(out backstoryDef, out backstoryDef2); - bool flag = comp.ChosenItem.copyParent.passions || comp.ChosenItem.copyParent.traits; - if (flag) - { - comp.RememberBackstories(pawn, out backstoryDef, out backstoryDef2); - comp.ResetBackstories(pawn); - comp.SetPassions(pawn, false); - comp.SetSkills(pawn, false); - comp.SetTraits(pawn); - } - bool flag2 = backstoryDef != null || backstoryDef2 != null; - if (flag2) - { - comp.ReinjectBackstories(pawn, backstoryDef, backstoryDef2); - } - comp.SetBackstories(pawn); - comp.UpdateDisabilities(pawn); - } - bool isRedresser = chosenItem.IsRedresser; - if (isRedresser) - { - comp.DestroyApparel(pawn); - comp.DestroyEquipment(pawn); - comp.DestroyInventory(pawn); - } - bool hasContainerSpawn = comp.HasContainerSpawn; - if (hasContainerSpawn) - { - Building_Casket building_Casket; - bool flag3 = (building_Casket = (refThing as Building_Casket)) != null; - if (flag3) - { - bool flag4 = !building_Casket.TryAcceptThing(pawn, true); - if (flag4) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning(string.Concat(new string[] - { - text, - " tried to add ", - pawn.LabelShort, - " to ", - refThing.Label, - ", but failed" - })); - } - } - } - } - else - { - GenSpawn.Spawn(pawn, position, map, WipeMode.Vanish); - } - bool hasMentalStateParams = comp.ChosenItem.HasMentalStateParams; - if (hasMentalStateParams) - { - comp.ComputeRandomMentalState(); - bool flag5 = comp.RandomMS != null; - if (flag5) - { - pawn.mindState.mentalStateHandler.TryStartMentalState(comp.RandomMS, null, false, false, false, null, true, false, false); - } - } - comp.TrySpawnAllFilth(refThing, false); - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning("------------------"); - } - } - return true; - } - } - - public static void TrySpawnAllFilth(this HediffComp_RandySpawnUponDeath comp, Thing refThing, bool debug = false) - { - if (debug) - { - Log.Warning(comp.Pawn.LabelShort + " - TrySpawnAllFilth"); - } - bool flag = !comp.HasFilth; - checked - { - if (flag) - { - if (debug) - { - Log.Warning("no filth found"); - } - } - else - { - int randomInRange = comp.FilthNum.RandomInRange; - for (int i = 0; i < randomInRange; i++) - { - if (debug) - { - Log.Warning(string.Concat(new object[] - { - "filth ", - i, - "/", - randomInRange, - " - fDef:", - comp.FilthToSpawn, - " - pos:", - refThing.Position, - " - map null?", - (refThing.Map == null).ToString() - })); - } - SpawnerUtils.TrySpawnFilth(refThing, comp.FilthRadius.RandomInRange, comp.FilthToSpawn); - } - } - } - } - - public static void TrySpawnFilth(Thing refT, float filthRadius, ThingDef filthDef) - { - IntVec3 c; - bool flag; - if (refT.Map != null) - { - flag = CellFinder.TryFindRandomReachableNearbyCell(refT.Position, refT.Map, filthRadius, TraverseParms.For(TraverseMode.NoPassClosedDoors, Danger.Deadly, false, false, false), (IntVec3 x) => x.Standable(refT.Map), (Region x) => true, out c, 999999); - } - else - { - flag = false; - } - bool flag2 = flag; - if (flag2) - { - FilthMaker.TryMakeFilth(c, refT.Map, filthDef, 1, FilthSourceFlags.None, true); - } - } - - public static bool TrySpawnThing(this HediffComp_RandySpawnUponDeath comp, Thing thing, int randomQuantity) - { - Map map = thing.Map; - bool flag = comp.Props.spawnMaxAdjacent >= 0; - checked - { - if (flag) - { - int num = 0; - for (int i = 0; i < 9; i++) - { - IntVec3 c = thing.Position + GenAdj.AdjacentCellsAndInside[i]; - bool flag2 = !c.InBounds(map); - if (!flag2) - { - List thingList = c.GetThingList(map); - for (int j = 0; j < thingList.Count; j++) - { - bool flag3 = thingList[j].def == comp.ChosenItem.thingToSpawn; - if (flag3) - { - num += thingList[j].stackCount; - bool flag4 = num >= comp.Props.spawnMaxAdjacent; - if (flag4) - { - return false; - } - } - } - } - } - } - int k = 0; - int num2 = randomQuantity; - int num3 = 0; - while (k < randomQuantity) - { - IntVec3 intVec; - bool flag5 = comp.TryFindSpawnCell(thing, randomQuantity, map, out intVec); - if (flag5) - { - Thing thing2 = ThingMaker.MakeThing(comp.ChosenItem.thingToSpawn, null); - thing2.stackCount = num2; - bool flag6 = thing2.def.stackLimit > 0; - if (flag6) - { - bool flag7 = thing2.stackCount > thing2.def.stackLimit; - if (flag7) - { - thing2.stackCount = thing2.def.stackLimit; - } - } - k += thing2.stackCount; - num2 -= thing2.stackCount; - Thing t; - GenPlace.TryPlaceThing(thing2, intVec, map, ThingPlaceMode.Direct, ref t, null, null, default(Rot4)); - bool spawnForbidden = comp.Props.spawnForbidden; - if (spawnForbidden) - { - t.SetForbidden(true, true); - } - } - bool flag8 = num3++ > 10; - if (flag8) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("Had to break the loop"); - } - return false; - } - } - return num2 <= 0; - } - } - - public static bool TryDoSpawn(this HediffComp_RandySpawnUponDeath comp, Thing thing, int randomQuantity) - { - bool flag = thing.Negligible(); - bool result; - if (flag) - { - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("TryDoSpawn - negligeable"); - } - result = false; - } - else - { - bool hasChosenPawn = comp.HasChosenPawn; - if (hasChosenPawn) - { - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning("TryDoSpawn -> TrySpawnPawn"); - } - result = comp.TrySpawnPawn(thing, randomQuantity); - } - else - { - bool hasChosenThing = comp.HasChosenThing; - if (hasChosenThing) - { - bool myDebug3 = comp.MyDebug; - if (myDebug3) - { - Log.Warning("TryDoSpawn -> TrySpawnPawn"); - } - result = comp.TrySpawnThing(thing, randomQuantity); - } - else - { - result = false; - } - } - } - return result; - } - - public static bool TryFindSpawnCell(this HediffComp_RandySpawnUponDeath comp, Thing refThing, int randomQuantity, Map map, out IntVec3 result) - { - ThingDef thingToSpawn = comp.ChosenItem.thingToSpawn; - bool flag = refThing.Negligible(); - checked - { - bool result2; - if (flag) - { - result = IntVec3.Invalid; - bool myDebug = comp.MyDebug; - if (myDebug) - { - Log.Warning("TryFindSpawnCell Null - pawn null"); - } - result2 = false; - } - else - { - foreach (IntVec3 intVec in GenAdj.CellsAdjacent8Way(refThing).InRandomOrder(null)) - { - bool flag2 = intVec.Walkable(map); - if (flag2) - { - Building edifice = intVec.GetEdifice(map); - bool flag3 = edifice == null || !thingToSpawn.IsEdifice(); - if (flag3) - { - Building_Door building_Door; - bool flag4 = (building_Door = (edifice as Building_Door)) == null || building_Door.FreePassage; - if (flag4) - { - bool flag5 = GenSight.LineOfSight(refThing.Position, intVec, map, false, null, 0, 0); - if (flag5) - { - bool flag6 = false; - List thingList = intVec.GetThingList(map); - for (int i = 0; i < thingList.Count; i++) - { - Thing thing = thingList[i]; - bool flag7 = thing.def.category == ThingCategory.Item; - if (flag7) - { - bool flag8 = thing.def != thingToSpawn || thing.stackCount > thingToSpawn.stackLimit - randomQuantity; - if (flag8) - { - flag6 = true; - break; - } - } - } - bool flag9 = !flag6; - if (flag9) - { - result = intVec; - return true; - } - } - } - } - } - } - bool myDebug2 = comp.MyDebug; - if (myDebug2) - { - Log.Warning("TryFindSpawnCell Null - no spawn cell found"); - } - result = IntVec3.Invalid; - result2 = false; - } - return result2; - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackCalculator.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackCalculator.cs deleted file mode 100644 index 0550da0..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackCalculator.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public static class StackCalculator - { - public static float CompletudeRatio(this Pawn pawn, bool myDebug = false) - { - float statValue = pawn.GetStatValue(StatDefOf.MeatAmount, true, -1); - float statValueFromList = pawn.def.statBases.GetStatValueFromList(StatDefOf.MeatAmount, 75f); - bool flag = statValueFromList == 0f; - float num; - if (flag) - { - num = pawn.health.summaryHealth.SummaryHealthPercent; - } - else - { - num = statValue / statValueFromList; - } - if (myDebug) - { - Log.Warning(string.Concat(new object[] - { - "pawnWeightedMeat:", - statValue, - "; pawnBasisMeat:", - statValueFromList, - "=> ratio:", - num - })); - } - return num; - } - - public static int ComputeSpawnCount(this HediffComp_RandySpawnUponDeath comp) - { - float num = (float)comp.NumberToSpawn; - bool weightedSpawn = comp.WeightedSpawn; - if (weightedSpawn) - { - num *= comp.Pawn.CompletudeRatio(false); - } - return checked((int)num); - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackSettings.cs deleted file mode 100644 index e83f2d6..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackSettings.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class StackSettings - { - public IntRange spawnCount = new IntRange(1, 1); - - public bool weightedSpawnCount = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TerrainRestriction.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TerrainRestriction.cs deleted file mode 100644 index b40cf11..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TerrainRestriction.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class TerrainRestriction - { - public bool HasForbiddenTerrains - { - get - { - return !this.forbiddenTerrains.NullOrEmpty(); - } - } - - public bool HasRelevantSnowRestriction - { - get - { - return this.allowedSnowDepth.min != 0f && this.allowedSnowDepth.min != 1f; - } - } - - public bool allowedInWater = false; - - public FloatRange allowedSnowDepth = new FloatRange(0f, 0.4f); - - public List forbiddenTerrains; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingRequirementSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingRequirementSettings.cs deleted file mode 100644 index 9eaf3ec..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingRequirementSettings.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class ThingRequirementSettings - { - public bool HasThingDef - { - get - { - return this.thingDef != null; - } - } - - public bool HasContainerSpawn - { - get - { - return this.HasThingDef && this.spawnInside; - } - } - - public bool HasCustomSpawn - { - get - { - return this.HasThingDef && (this.spawnClose || this.spawnInside); - } - } - - public ThingDef thingDef; - - public FloatRange distance = new FloatRange(0f, 300f); - - public bool spawnClose = false; - - public bool spawnInside = false; - - public bool sameFaction = true; - - public bool needsFueled = false; - - public bool needsPowered = false; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingSettings.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingSettings.cs deleted file mode 100644 index dc73a7d..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingSettings.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class ThingSettings - { - public bool IsThingSpawner - { - get - { - return this.thingToSpawn != null; - } - } - - public bool IsParentCopier - { - get - { - return this.IsCopier && this.copyParent.pawnKind; - } - } - - public bool IsPawnSpawner - { - get - { - return this.pawnKindToSpawn != null || this.IsParentCopier; - } - } - - public string ItemDump - { - get - { - return this.IsThingSpawner ? ("thing:" + this.thingToSpawn) : (this.IsPawnSpawner ? (this.IsCopier ? "parentCopier" : ("pawn:" + this.pawnKindToSpawn)) : "nothing?!"); - } - } - - public bool HasFactionParams - { - get - { - return !this.faction.NullOrEmpty(); - } - } - - public bool HasMentalStateParams - { - get - { - return !this.mentalState.NullOrEmpty(); - } - } - - public bool IsCopier - { - get - { - return this.copyParent != null; - } - } - - public bool IsRedresser - { - get - { - return this.redressNewPawn != null; - } - } - - public bool HasSpecificSettings - { - get - { - return this.specificSettings != null; - } - } - - public bool HasFilthSettings - { - get - { - return this.HasSpecificSettings && this.specificSettings.filth != null && this.specificSettings.filth.filthDef != null; - } - } - - public bool HasStackSettings - { - get - { - return this.HasSpecificSettings && this.specificSettings.stack != null; - } - } - - public bool HasColorCondition - { - get - { - return this.colorCondition != null && !this.colorCondition.channelName.NullOrEmpty(); - } - } - - public ThingDef thingToSpawn = null; - - public PawnKindDef pawnKindToSpawn = null; - - public List faction; - - public CopyPawnSettings copyParent; - - public RedressSettings redressNewPawn; - - public List mentalState; - - public IntRange biologicalAgeRange = new IntRange(18, 80); - - public IntRange chronologicalAgeRange = new IntRange(0, 500); - - public bool newBorn = false; - - public ChannelColorCondition colorCondition; - - public CommonSettings specificSettings; - - public float weight = 1f; - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Tools.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Tools.cs deleted file mode 100644 index 5fdb081..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Tools.cs +++ /dev/null @@ -1,215 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using AlienRace; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class Tools - { - public static float Clamp(this float value, float min, float max) - { - return Math.Min(Math.Max(value, min), max); - } - - public static void DestroyParentHediff(Hediff parentHediff, bool debug = false) - { - bool flag = parentHediff.pawn != null && parentHediff.def.defName != null; - if (flag && debug) - { - Log.Warning(parentHediff.pawn.Label + "'s Hediff: " + parentHediff.def.defName + " says goodbye."); - } - parentHediff.Severity = 0f; - } - - public static void DestroyHediff(this Pawn pawn, Hediff hediff, bool debug = false) - { - bool flag = hediff.pawn != null && hediff.def.defName != null; - if (flag && debug) - { - Log.Warning(hediff.pawn.Label + "'s Hediff: " + hediff.def.defName + " says goodbye."); - } - pawn.health.RemoveHediff(hediff); - } - - public static float GetPawnAgeOverlifeExpectancyRatio(Pawn pawn, bool debug = false) - { - float num = 1f; - bool flag = pawn == null; - float result; - if (flag) - { - if (debug) - { - Log.Warning("GetPawnAgeOverlifeExpectancyRatio pawn NOT OK"); - } - result = num; - } - else - { - num = pawn.ageTracker.AgeBiologicalYearsFloat / pawn.RaceProps.lifeExpectancy; - if (debug) - { - Log.Warning(string.Concat(new object[] - { - pawn.Label, - " Age: ", - pawn.ageTracker.AgeBiologicalYearsFloat, - "; lifeExpectancy: ", - pawn.RaceProps.lifeExpectancy, - "; ratio:", - num - })); - } - result = num; - } - return result; - } - - public static float GetPawnAdultRatio(Pawn pawn, bool debug = false) - { - float num = 1f; - bool flag = !Tools.OkPawn(pawn); - float result; - if (flag) - { - if (debug) - { - Log.Warning("GetPawnAgeOverlifeExpectancyRatio pawn NOT OK"); - } - result = num; - } - else - { - num = (pawn.ageTracker.AgeBiologicalYearsFloat - pawn.RaceProps.lifeStageAges.Last().minAge) / (pawn.RaceProps.lifeExpectancy - pawn.RaceProps.lifeStageAges.Last().minAge); - result = num; - } - return result; - } - - public static bool IsInjured(this Pawn pawn, bool debug = false) - { - bool flag = pawn == null; - bool result; - if (flag) - { - if (debug) - { - Log.Warning("pawn is null - wounded "); - } - result = false; - } - else - { - float num = 0f; - List hediffs = pawn.health.hediffSet.hediffs; - for (int i = 0; i < hediffs.Count; i = checked(i + 1)) - { - bool flag2 = hediffs[i] is Hediff_Injury && !hediffs[i].IsPermanent(); - if (flag2) - { - num += hediffs[i].Severity; - } - } - bool flag3 = debug && num > 0f; - if (flag3) - { - Log.Warning(pawn.Label + " is wounded "); - } - result = (num > 0f); - } - return result; - } - - public static bool IsHungry(this Pawn pawn, bool debug = false) - { - bool flag = pawn == null; - bool result; - if (flag) - { - if (debug) - { - Log.Warning("pawn is null - IsHungry "); - } - result = false; - } - else - { - bool flag2 = pawn.needs.food != null && pawn.needs.food.CurCategory == HungerCategory.Starving; - bool flag3 = debug && flag2; - if (flag3) - { - Log.Warning(pawn.Label + " is hungry "); - } - result = flag2; - } - return result; - } - - public static bool Negligible(this Pawn p) - { - bool result; - if (p != null && p.Spawned && p.Map != null) - { - IntVec3 position = p.Position; - result = false; - } - else - { - result = true; - } - return result; - } - - public static bool Negligible(this Thing thing) - { - bool result; - if (thing != null && thing.Spawned && thing.Map != null) - { - IntVec3 position = thing.Position; - result = false; - } - else - { - result = true; - } - return result; - } - - public static bool OkPawn(Pawn pawn) - { - return pawn != null && pawn.Map != null; - } - - public static void Warn(string warning, bool debug = false) - { - if (debug) - { - Log.Warning(warning); - } - } - - public static bool IsAlien(this Pawn pawn) - { - return pawn.def.race.Humanlike && pawn.def != ThingDefOf.Human; - } - - public static bool IsHuman(this Pawn pawn) - { - return pawn.def.race.Humanlike && pawn.def == ThingDefOf.Human; - } - - public static AlienPartGenerator.AlienComp GetAlien(Pawn pawn = null) - { - return (pawn != null) ? pawn.TryGetComp() : null; - } - - public static bool ForbiddenMote(this Vector3 loc, Map map) - { - return !loc.ShouldSpawnMotesAt(map, true) || map.moteCounter.SaturatedLowPriority; - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TracerUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TracerUtils.cs deleted file mode 100644 index cb51c48..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TracerUtils.cs +++ /dev/null @@ -1,149 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class TracerUtils - { - public static void CreateTracer(this HediffComp_InnerShine comp) - { - comp.Tracer = new List(); - bool hasRawShinePool = comp.Props.HasRawShinePool; - if (hasRawShinePool) - { - foreach (InnerShineItem isi in comp.Props.innerShinePool) - { - comp.Tracer.Add(new InnerShineRecord(isi)); - } - } - bool hasShineDefPool = comp.Props.HasShineDefPool; - if (hasShineDefPool) - { - foreach (InnerShineDef innerShineDef in comp.Props.innerShineDefPool) - { - comp.Tracer.Add(new InnerShineRecord(innerShineDef.item)); - } - } - bool myDebug = comp.MyDebug; - checked - { - if (myDebug) - { - int num = 0; - foreach (InnerShineRecord innerShineRecord in comp.Tracer) - { - Log.Warning(num.ToString("00") + "=>" + innerShineRecord.Dump); - num++; - } - } - } - } - - public static int NewPeriod(this InnerShineItem ISI) - { - return ISI.spawningRules.period.RandomInRange; - } - - public static void ResetTicks(this InnerShineItem ISI, InnerShineRecord ISR) - { - ISR.ticksLeft = ISI.NewPeriod(); - } - - public static bool HasMoteNumLimit(this InnerShineItem ISI) - { - return !ISI.spawningRules.IsUnlimited; - } - - public static void TryPlaceMote(this InnerShineItem ISI, InnerShineRecord ISR, Pawn pawn) - { - bool flag = pawn.Position.InBounds(pawn.Map); - if (flag) - { - float rot = 0f; - Vector3 vector; - float scale; - ISI.InitSpecs(ISR, pawn, out vector, out scale); - bool flag2 = vector.ToIntVec3().InBounds(pawn.Map); - if (flag2) - { - ThingDef moteDef = ISI.motePool.RandomElementWithFallback(null); - Mote mote; - bool flag3 = (mote = (vector.TryAnyMoteSpawn(pawn.Map, rot, scale, moteDef, ISI.debug) as Mote)) != null; - if (flag3) - { - ISI.ChangeMoteColor(ISR, mote); - ISR.spawned.Add(mote); - ISI.NewPeriod(); - } - } - } - } - - public static void UpdateMotes(this InnerShineItem ISI, InnerShineRecord ISR, Pawn pawn, bool debug = false) - { - bool flag = ISR.spawned.NullOrEmpty(); - checked - { - if (!flag) - { - for (int i = ISR.spawned.Count - 1; i >= 0; i--) - { - Thing thing = ISR.spawned[i]; - bool flag2 = thing.DestroyedOrNull(); - if (flag2) - { - ISR.spawned.RemoveAt(i); - } - else - { - bool flag3 = !ISI.HasCompatibleActivity(pawn); - if (flag3) - { - thing.Destroy(DestroyMode.Vanish); - ISR.spawned.RemoveAt(i); - } - else - { - Mote mote; - bool flag4 = (mote = (thing as Mote)) != null; - if (flag4) - { - mote.exactPosition = pawn.DrawPos + pawn.GetLinkOffset(ISI.linkType) + ISI.GetDrawOffset(pawn); - } - } - } - } - } - } - } - - public static void InitSpecs(this InnerShineItem ISI, InnerShineRecord ISR, Pawn pawn, out Vector3 drawPosWithOffset, out float scale) - { - Vector3 drawPos = pawn.DrawPos; - Vector3 vector; - ISI.GetSpecifities(pawn, out vector, out scale); - Vector3 linkOffset = pawn.GetLinkOffset(ISI.linkType); - drawPosWithOffset = drawPos + linkOffset + vector; - bool debug = ISI.debug; - if (debug) - { - Log.Warning(string.Concat(new object[] - { - pawn.ThingID, - " ", - ISI.label, - " TryPlaceMote - drawPos: ", - drawPos, - " linkOffset:", - linkOffset, - " bodyTypeOffset:", - vector, - "scale: ", - scale - })); - } - } - } -} diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TrailUtils.cs b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TrailUtils.cs deleted file mode 100644 index 0b15601..0000000 --- a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TrailUtils.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class TrailUtils - { - public static float GetMoteRotation(this HediffComp_TrailLeaver comp, Vector3 drawPos, out Vector3 normalized) - { - normalized = Vector3.zero; - bool flag = !comp.Props.dynamicRotation && !comp.Props.UsesFootPrints; - float result; - if (flag) - { - result = 0f; - } - else - { - float dynamicRotation = comp.GetDynamicRotation(drawPos, out normalized); - float num = comp.Props.dynamicRotation ? dynamicRotation : 0f; - num += (comp.Props.HasRotationOffset ? comp.Props.rotationOffset : 0f); - result = num % 360f; - } - return result; - } - - public static float GetDynamicRotation(this HediffComp_TrailLeaver comp, Vector3 drawPos, out Vector3 normalized) - { - normalized = (drawPos - comp.lastMotePos).normalized; - return normalized.AngleFlat(); - } - - public static Vector3 GetFootPrintOffset(this HediffComp_TrailLeaver comp, Vector3 normalized) - { - bool flag = !comp.Props.UsesFootPrints; - Vector3 result; - if (flag) - { - result = Vector3.zero; - } - else - { - float angle = (float)(comp.lastFootprintRight ? 90 : -90); - Vector3 b = normalized.RotatedBy(angle) * comp.Props.footprint.distanceBetweenFeet * Mathf.Sqrt(comp.Pawn.BodySize); - comp.lastFootprintRight = !comp.lastFootprintRight; - result = comp.Props.footprint.offset + b; - } - return result; - } - - public static void RecordMotePos(this HediffComp_TrailLeaver comp, Vector3 drawPos) - { - bool flag = !comp.Props.dynamicRotation; - if (!flag) - { - comp.lastMotePos = drawPos; - } - } - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs.dll b/1.6/Core/Assemblies/MoharHediffs.dll deleted file mode 100644 index 36989e5de184a55695d9446494f877acd709502d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37888 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 enumerable = from b in pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null) - where b.def == bpd - select b; - if (enumerable == null) - { - return null; - } - List bprToExclude = new List(); - IEnumerable hediffs = pawn.health.hediffSet.hediffs; - Func <>9__2; - Func predicate; - if ((predicate = <>9__2) == null) - { - predicate = (<>9__2 = ((Hediff h) => h.def == hediffDef)); - } - foreach (Hediff hediff in hediffs.Where(predicate)) - { - if (!bprToExclude.Contains(hediff.Part)) - { - bprToExclude.Add(hediff.Part); - } - } - if (bprToExclude.NullOrEmpty()) - { - return enumerable.RandomElementWithFallback(null); - } - IEnumerable enumerable2 = from b in enumerable - where !bprToExclude.Contains(b) - select b; - if (enumerable2 == null) - { - return null; - } - return enumerable2.RandomElementWithFallback(null); - } - - public static bool CheckIfExistingNaturalBP(this Pawn pawn, BodyPartDef bodyPartDef, bool myDebug = false) - { - BodyPartRecord bodyPartRecord = pawn.GetBPRecord(bodyPartDef, false) ?? null; - return bodyPartRecord != null && !pawn.health.hediffSet.PartIsMissing(bodyPartRecord) && !pawn.health.hediffSet.AncestorHasDirectlyAddedParts(bodyPartRecord); - } - - public static BodyPartRecord GetBPRecord(this Pawn pawn, BodyPartDef bodyPartDef, bool myDebug = false) - { - IEnumerable enumerable = from b in DefDatabase.AllDefs - where b == bodyPartDef - select b; - if (enumerable.EnumerableNullOrEmpty()) - { - if (myDebug) - { - string label = pawn.Label; - string str = " - GetBPRecord - did not find any "; - BodyPartDef bodyPartDef2 = bodyPartDef; - Log.Warning(label + str + ((bodyPartDef2 != null) ? bodyPartDef2.defName : null)); - } - return null; - } - BodyPartDef def = enumerable.RandomElement(); - BodyPartRecord result; - pawn.RaceProps.body.GetPartsWithDef(def).TryRandomElement(out result); - if (myDebug) - { - string label2 = pawn.Label; - string str2 = "GetBPRecord - DID find "; - BodyPartDef bodyPartDef3 = bodyPartDef; - Log.Warning(label2 + str2 + ((bodyPartDef3 != null) ? bodyPartDef3.defName : null)); - } - return result; - } - - public static bool IsMissingBPR(this Pawn pawn, BodyPartRecord BPR, out Hediff missingHediff) - { - if (BPR == null) - { - missingHediff = null; - return false; - } - missingHediff = (from h in pawn.health.hediffSet.hediffs - where h.def == HediffDefOf.MissingBodyPart && h.Part == BPR - select h).FirstOrFallback(null); - return missingHediff != null; - } - - public static bool HasMissingChildren(this Pawn pawn, BodyPartRecord bpr) - { - return pawn.health.hediffSet.GetMissingPartsCommonAncestors().Any((Hediff_MissingPart HMP) => HMP.Part == bpr); - } - - public static bool IsMissingOrHasMissingChildren(this Pawn pawn, BodyPartRecord bpr) - { - return pawn.health.hediffSet.PartIsMissing(bpr) || pawn.HasMissingChildren(bpr); - } - - public static IEnumerable GetAllBPR(this Pawn pawn, string bodyPartLabel, BodyPartDef bodyPartDef) - { - bool HasLabel = !bodyPartLabel.NullOrEmpty(); - bool HasDef = bodyPartDef != null; - return from bpr in pawn.RaceProps.body.AllParts - where (!HasLabel || bpr.customLabel == bodyPartLabel) && (!HasDef || bpr.def == bodyPartDef) - select bpr; - } - - public static IEnumerable GetAllNotMissingBPR(this Pawn pawn, string bodyPartLabel, BodyPartDef bodyPartDef) - { - bool HasLabel = !bodyPartLabel.NullOrEmpty(); - bool HasDef = bodyPartDef != null; - return from bpr in pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null) - where (!HasLabel || bpr.customLabel == bodyPartLabel) && (!HasDef || bpr.def == bodyPartDef) - select bpr; - } - - public static BodyPartRecord GetBPRecordWithoutHediff(this Pawn pawn, string bodyPartLabel, BodyPartDef bodyPartDef, HediffDef hd, bool AllowMissing = false, bool PrioritizeMissing = false, bool AllowAddedPart = true, bool myDebug = false) - { - bool flag = hd != null; - bool flag2 = !bodyPartLabel.NullOrEmpty(); - bool flag3 = bodyPartDef != null; - string text = pawn.Label + " GetBPRecordWithoutHediff - "; - if (myDebug) - { - string[] array = new string[5]; - array[0] = text; - array[1] = string.Format("HasDef?{0} bodyPartDef:{1} ", flag3, (bodyPartDef != null) ? bodyPartDef.defName : null); - array[2] = string.Format("HasLabel?{0} bodyPartLabel:{1} ", flag2, bodyPartLabel); - int num = 3; - string format = "HasHediffDef?{0} Hediff:{1} "; - object arg = flag; - HediffDef hd2 = hd; - array[num] = string.Format(format, arg, (hd2 != null) ? hd2.defName : null); - array[4] = string.Format("AllowMissing:{0} PrioritizeMissing:{1} AllowAddedPart:{2}", AllowMissing, PrioritizeMissing, AllowAddedPart); - Log.Warning(string.Concat(array)); - } - List bprToExclude = new List(); - if (flag) - { - IEnumerable hediffs = pawn.health.hediffSet.hediffs; - Func <>9__6; - Func predicate; - if ((predicate = <>9__6) == null) - { - predicate = (<>9__6 = ((Hediff h) => h.def == hd)); - } - foreach (Hediff hediff in hediffs.Where(predicate)) - { - if (!bprToExclude.Contains(hediff.Part)) - { - bprToExclude.Add(hediff.Part); - } - } - if (myDebug) - { - string[] array2 = new string[5]; - array2[0] = text; - array2[1] = "found "; - int num2 = 2; - List bprToExclude2 = bprToExclude; - array2[num2] = ((bprToExclude2 != null) ? new int?(bprToExclude2.Count) : null).ToString(); - array2[3] = " bpr to exclude bc they had "; - array2[4] = hd.defName; - Log.Warning(string.Concat(array2)); - } - } - BodyPartRecord bodyPartRecord = null; - IEnumerable enumerable; - if (AllowMissing) - { - enumerable = pawn.GetAllBPR(bodyPartLabel, bodyPartDef); - if (myDebug) - { - Log.Warning(text + "Allow missing - found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - if (PrioritizeMissing && !enumerable.EnumerableNullOrEmpty() && enumerable.Any((BodyPartRecord bpr) => pawn.IsMissingOrHasMissingChildren(bpr))) - { - enumerable = from bpr in enumerable - where pawn.IsMissingOrHasMissingChildren(bpr) - select bpr; - if (myDebug) - { - Log.Warning(text + "Prioritize Missing - found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - } - } - else - { - enumerable = pawn.GetAllNotMissingBPR(bodyPartLabel, bodyPartDef); - if (myDebug) - { - Log.Warning(text + "Not missing - found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - } - if (enumerable.EnumerableNullOrEmpty()) - { - return null; - } - if (!AllowAddedPart) - { - Tools.Warn(text + "Trying to exlude addedpart", myDebug); - if (enumerable.Any((BodyPartRecord bpr) => pawn.health.hediffSet.HasDirectlyAddedPartFor(bpr))) - { - enumerable = from bpr in enumerable - where !pawn.health.hediffSet.HasDirectlyAddedPartFor(bpr) - select bpr; - if (myDebug) - { - Log.Warning(text + "Added parts(bionics) forbidden- found " + (enumerable.EnumerableNullOrEmpty() ? "0" : enumerable.Count().ToString()) + " bpr"); - } - } - else if (myDebug) - { - Log.Warning(text + "found no addedpart to exclude"); - } - } - if (bprToExclude.NullOrEmpty()) - { - enumerable.TryRandomElement(out bodyPartRecord); - } - else if (enumerable.Any((BodyPartRecord bp) => !bprToExclude.Contains(bp))) - { - (from bp in enumerable - where !bprToExclude.Contains(bp) - select bp).TryRandomElement(out bodyPartRecord); - } - else - { - bodyPartRecord = null; - } - if (myDebug) - { - Log.Warning(string.Concat(new string[] - { - pawn.Label, - "GetBPRecord - did ", - (bodyPartRecord == null) ? "not" : "", - " find with def ", - (bodyPartDef != null) ? bodyPartDef.defName : null, - " without hediff def ", - hd.defName - })); - } - return bodyPartRecord; - } - - public static BodyPartRecord GetBrain(this Pawn pawn) - { - BodyPartRecord result; - pawn.RaceProps.body.GetPartsWithTag(BodyPartTagDefOf.ConsciousnessSource).TryRandomElement(out result); - return result; - } - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffAndBodyPart.cs b/1.6/Core/Assemblies/MoharHediffs/HediffAndBodyPart.cs deleted file mode 100644 index 834678e..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffAndBodyPart.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffAndBodyPart - { - public HediffDef hediff; - - public BodyPartDef bodyPart; - - public string bodyPartLabel; - - public bool prioritizeMissing; - - public bool allowMissing = true; - - public bool regenIfMissing = true; - - public bool allowAddedPart = true; - - public bool wholeBodyFallback = true; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffNullifier.cs b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffNullifier.cs deleted file mode 100644 index d8c39a9..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffNullifier.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_HediffNullifier : HediffCompProperties - { - public HediffCompProperties_HediffNullifier() - { - this.compClass = typeof(HediffComp_HediffNullifier); - } - - public int checkPeriod = 240; - - public List hediffToNullify; - - public int limitedUsageNumber = -99; - - public List RequiredBodyPart; - - public bool showMessage; - - public string nullifyKey = ""; - - public bool concatUsageLimit; - - public string limitedKey = ""; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffRandom.cs b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffRandom.cs deleted file mode 100644 index 6388c0b..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffRandom.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_HediffRandom : HediffCompProperties - { - public HediffCompProperties_HediffRandom() - { - this.compClass = typeof(HediffComp_HediffRandom); - } - - public BodyDef bodyDef; - - public List hediffPool; - - public List weights; - - public List bodyPartDef; - - public bool debug; - - public bool hideBySeverity = true; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_MultipleHediff.cs b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_MultipleHediff.cs deleted file mode 100644 index 4bad43b..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_MultipleHediff.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_MultipleHediff : HediffCompProperties - { - public HediffCompProperties_MultipleHediff() - { - this.compClass = typeof(HediffComp_MultipleHediff); - } - - public BodyDef bodyDef; - - public List bodyDefWhiteList; - - public List bodyDefBlackList; - - public List hediffAndBodypart; - - public bool debug; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_Spawner.cs b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_Spawner.cs deleted file mode 100644 index 0b4b910..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_Spawner.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffCompProperties_Spawner : HediffCompProperties - { - public HediffCompProperties_Spawner() - { - this.compClass = typeof(HediffComp_Spawner); - } - - public ThingDef thingToSpawn; - - public int spawnCount = 1; - - public bool animalThing; - - public PawnKindDef animalToSpawn; - - public bool factionOfPlayerAnimal; - - public float minDaysB4Next = 1f; - - public float maxDaysB4Next = 2f; - - public float randomGrace; - - public float graceDays = 0.5f; - - public int spawnMaxAdjacent = -1; - - public bool spawnForbidden; - - public bool hungerRelative; - - public bool healthRelative; - - public bool ageWeightedQuantity; - - public bool ageWeightedPeriod; - - public bool olderSmallerPeriod; - - public bool olderBiggerQuantity; - - public bool exponentialQuantity; - - public int exponentialRatioLimit = 15; - - public string spawnVerb = "delivery"; - - public bool debug; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffNullifier.cs b/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffNullifier.cs deleted file mode 100644 index ade3203..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffNullifier.cs +++ /dev/null @@ -1,199 +0,0 @@ -using System; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_HediffNullifier : HediffComp - { - public HediffCompProperties_HediffNullifier Props - { - get - { - return (HediffCompProperties_HediffNullifier)this.props; - } - } - - public bool RequiresAtLeastOneBodyPart - { - get - { - return !this.Props.RequiredBodyPart.NullOrEmpty(); - } - } - - public bool HasMessageToDisplay - { - get - { - return this.Props.showMessage && !this.Props.nullifyKey.NullOrEmpty(); - } - } - - public bool DisplayLimitedUsageLeft - { - get - { - return this.HasMessageToDisplay && this.Props.concatUsageLimit && !this.Props.limitedKey.NullOrEmpty(); - } - } - - public bool HasHediffToNullify - { - get - { - return !this.Props.hediffToNullify.NullOrEmpty(); - } - } - - public bool HasLimitedUsage - { - get - { - return this.Props.limitedUsageNumber != -99; - } - } - - public void BlockAndDestroy() - { - Tools.DestroyParentHediff(this.parent, this.myDebug); - this.BlockPostTick = true; - } - - public override void CompPostMake() - { - if (this.myDebug) - { - Log.Warning(">>>" + this.parent.def.defName + " - CompPostMake start"); - } - if (!this.HasHediffToNullify) - { - if (this.myDebug) - { - Log.Warning(this.parent.def.defName + " has no hediff to nullify, autokill"); - } - this.BlockAndDestroy(); - } - this.DestroyHediffIfMissingBP(); - if (this.HasLimitedUsage) - { - this.LimitedUsageNumber = this.Props.limitedUsageNumber; - } - } - - public void DestroyHediffIfMissingBP() - { - if (!this.RequiresAtLeastOneBodyPart) - { - return; - } - bool flag = false; - foreach (BodyPartDef bodyPartDef in this.Props.RequiredBodyPart) - { - if (flag = base.Pawn.CheckIfExistingNaturalBP(bodyPartDef, false)) - { - break; - } - } - if (!flag) - { - if (this.myDebug) - { - Log.Warning(base.Pawn.LabelShort + " does not have any required body part to have an active " + this.parent.def.defName + ", autokill"); - } - this.BlockAndDestroy(); - } - } - - public override void CompExposeData() - { - Scribe_Values.Look(ref this.LimitedUsageNumber, "LimitedUsageNumber", 0, false); - } - - public override void CompPostTick(ref float severityAdjustment) - { - if (!base.Pawn.IsHashIntervalTick(this.Props.checkPeriod)) - { - return; - } - if (!Tools.OkPawn(base.Pawn)) - { - return; - } - this.DestroyHediffIfMissingBP(); - if (this.BlockPostTick) - { - return; - } - foreach (Hediff hediff in from h in base.Pawn.health.hediffSet.hediffs - where this.Props.hediffToNullify.Contains(h.def) - select h) - { - if (this.myDebug) - { - Log.Warning(base.Pawn.Label + " - " + hediff.def.defName); - } - hediff.Severity = 0f; - if (this.myDebug) - { - Log.Warning(hediff.def.defName + " severity = 0"); - } - if (this.HasLimitedUsage) - { - this.LimitedUsageNumber--; - if (this.LimitedUsageNumber <= 0) - { - if (this.myDebug) - { - Log.Warning(this.parent.def.defName + " has reached its limit usage, autokill"); - } - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - if (this.HasMessageToDisplay) - { - string text = this.Props.nullifyKey.Translate(base.Pawn.LabelShort, hediff.def.label, base.Pawn.gender.GetPronoun(), base.Pawn.kindDef.race.label); - if (this.DisplayLimitedUsageLeft) - { - text += this.Props.limitedKey.Translate(this.LimitedUsageNumber); - } - text += "."; - Messages.Message(text, MessageTypeDefOf.NeutralEvent, true); - } - } - } - - public override string CompTipStringExtra - { - get - { - string text = string.Empty; - if (!this.HasHediffToNullify) - { - return text; - } - text += "Immune to: "; - foreach (HediffDef hediffDef in this.Props.hediffToNullify) - { - text = text + hediffDef.label + "; "; - } - if (!this.HasLimitedUsage) - { - text += " for ever"; - } - else - { - text = text + " " + this.LimitedUsageNumber.ToString() + " left"; - } - return text; - } - } - - private int LimitedUsageNumber; - - private bool BlockPostTick; - - private readonly bool myDebug; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffRandom.cs b/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffRandom.cs deleted file mode 100644 index 6c4512d..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffRandom.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_HediffRandom : HediffComp - { - public HediffCompProperties_HediffRandom Props - { - get - { - return (HediffCompProperties_HediffRandom)this.props; - } - } - - private bool myDebug - { - get - { - return this.Props.debug; - } - } - - private bool HasWeights - { - get - { - return !this.Props.weights.NullOrEmpty() && this.Props.weights.Count == this.Props.hediffPool.Count; - } - } - - private bool HasBodyParts - { - get - { - return !this.Props.bodyPartDef.NullOrEmpty() && this.Props.bodyPartDef.Count == this.Props.hediffPool.Count; - } - } - - private bool HasHediff - { - get - { - return !this.Props.hediffPool.NullOrEmpty(); - } - } - - private Pawn pawn - { - get - { - return this.parent.pawn; - } - } - - public override void CompPostMake() - { - if (this.Props.hideBySeverity) - { - this.parent.Severity = 0.05f; - } - } - - public int WeightedRandomness - { - get - { - int num = 0; - foreach (int num2 in this.Props.weights) - { - num += num2; - } - int num3 = Rand.Range(0, num); - for (int i = 0; i < this.Props.weights.Count; i++) - { - int num4 = this.Props.weights[i]; - if ((num3 -= num4) < 0) - { - return i; - } - } - return 0; - } - } - - public void ApplyHediff(Pawn pawn) - { - if (this.Props.bodyDef != null && pawn.def.race.body != this.Props.bodyDef) - { - Tools.Warn(string.Concat(new string[] - { - pawn.Label, - " has not a bodyDef like required: ", - pawn.def.race.body.ToString(), - "!=", - this.Props.bodyDef.ToString() - }), this.myDebug); - return; - } - int num; - if (!this.HasWeights) - { - num = Rand.Range(0, this.Props.hediffPool.Count); - } - else - { - num = this.WeightedRandomness; - } - if (num < 0 || num >= this.Props.hediffPool.Count) - { - Tools.Warn(num.ToString() + " is out of range. Applyhediff will fail. Please report this error.", this.myDebug); - } - HediffDef hediffDef = this.Props.hediffPool[num]; - if (hediffDef == null) - { - Tools.Warn("cant find hediff", this.myDebug); - return; - } - BodyPartRecord bodyPartRecord = null; - BodyPartDef bodyPartDef = null; - if (this.HasBodyParts) - { - bodyPartDef = this.Props.bodyPartDef[num]; - IEnumerable partsWithDef = pawn.RaceProps.body.GetPartsWithDef(bodyPartDef); - if (partsWithDef.EnumerableNullOrEmpty()) - { - Tools.Warn("cant find body part record called: " + bodyPartDef.defName, this.myDebug); - return; - } - bodyPartRecord = partsWithDef.RandomElement(); - } - Hediff hediff = HediffMaker.MakeHediff(hediffDef, pawn, bodyPartRecord); - if (hediff == null) - { - Tools.Warn("cant create hediff " + hediffDef.defName + " to apply on " + ((bodyPartDef != null) ? bodyPartDef.defName : null), this.myDebug); - return; - } - pawn.health.AddHediff(hediff, bodyPartRecord, null, null); - Tools.Warn("Succesfully applied " + hediffDef.defName + " to apply on " + ((bodyPartDef != null) ? bodyPartDef.defName : null), this.myDebug); - } - - public override void CompPostTick(ref float severityAdjustment) - { - if (!Tools.OkPawn(this.pawn)) - { - return; - } - if (this.HasHediff) - { - this.ApplyHediff(this.pawn); - } - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffComp_MultipleHediff.cs b/1.6/Core/Assemblies/MoharHediffs/HediffComp_MultipleHediff.cs deleted file mode 100644 index dfa1370..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffComp_MultipleHediff.cs +++ /dev/null @@ -1,262 +0,0 @@ -using System; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_MultipleHediff : HediffComp - { - private bool MyDebug - { - get - { - return this.Props.debug; - } - } - - private string DebugStr - { - get - { - if (!this.MyDebug) - { - return ""; - } - return base.Pawn.LabelShort + " MultipleHediff " + this.parent.def.defName + " - "; - } - } - - private bool HasSingleBodyRequirement - { - get - { - return this.Props.bodyDef != null; - } - } - - private bool HasWhiteList - { - get - { - return !this.Props.bodyDefWhiteList.NullOrEmpty(); - } - } - - private bool HasBlackList - { - get - { - return !this.Props.bodyDefBlackList.NullOrEmpty(); - } - } - - private bool WhiteListCompliant - { - get - { - return !this.HasWhiteList || this.Props.bodyDefWhiteList.Contains(base.Pawn.def.race.body); - } - } - - private bool BlackListCompliant - { - get - { - return !this.HasBlackList || !this.Props.bodyDefBlackList.Contains(base.Pawn.def.race.body); - } - } - - private bool HasAccessList - { - get - { - return this.HasWhiteList || this.HasBlackList; - } - } - - public HediffCompProperties_MultipleHediff Props - { - get - { - return (HediffCompProperties_MultipleHediff)this.props; - } - } - - public bool HasHediffToApply - { - get - { - return !this.Props.hediffAndBodypart.NullOrEmpty(); - } - } - - public void CheckProps() - { - string text = this.DebugStr + "CheckProps - "; - if (!this.HasHediffToApply) - { - Tools.Warn(text + "- empty hediffAndBodypart, destroying", this.MyDebug); - base.Pawn.DestroyHediff(this.parent, false); - this.blockAction = true; - } - if (this.HasSingleBodyRequirement && base.Pawn.def.race.body != this.Props.bodyDef) - { - Tools.Warn(string.Concat(new string[] - { - text, - " has not a bodyDef like required: ", - base.Pawn.def.race.body.ToString(), - "!=", - this.Props.bodyDef.ToString() - }), this.MyDebug); - base.Pawn.DestroyHediff(this.parent, false); - this.blockAction = true; - } - if (this.HasAccessList) - { - bool blackListCompliant = this.BlackListCompliant; - bool whiteListCompliant = this.WhiteListCompliant; - if (!blackListCompliant || !whiteListCompliant) - { - if (this.MyDebug) - { - Log.Warning(string.Concat(new string[] - { - text, - this.HasWhiteList ? string.Format("Props.BodyDefWhiteList contains {0} elements", this.Props.bodyDefWhiteList.Count) : "No whitelist", - ", compliant: ", - whiteListCompliant.ToString(), - "; ", - this.HasBlackList ? string.Format("Props.BodyDefBlackList contains {0} elements", this.Props.bodyDefBlackList.Count) : "No blacklist", - ", compliant:", - blackListCompliant.ToString() - })); - } - base.Pawn.DestroyHediff(this.parent, false); - this.blockAction = true; - } - else if (this.MyDebug) - { - Log.Warning(text + " AccessList compliant ok"); - } - } - if (this.Props.hediffAndBodypart.Any((HediffAndBodyPart habp) => habp.bodyPart != null && habp.bodyPartLabel != null)) - { - Tools.Warn(text + "at least one item has both a bodypart def and a bodypart label, label will be prioritized", this.MyDebug); - } - if (this.Props.hediffAndBodypart.Any((HediffAndBodyPart habp) => habp.hediff == null)) - { - Tools.Warn(text + "at least one item has no hediff defined. What will happen ?", this.MyDebug); - } - } - - public void BlockAndDestroy(string ErrorLog = "", bool myDebug = false) - { - Tools.Warn(ErrorLog, myDebug && !ErrorLog.NullOrEmpty()); - this.blockAction = true; - Tools.DestroyParentHediff(this.parent, myDebug); - } - - public override void CompPostMake() - { - base.CompPostMake(); - Tools.Warn(this.DebugStr + "CompPostMake", this.MyDebug); - this.CheckProps(); - } - - public void ApplyHediff(Pawn pawn) - { - string text = this.DebugStr + "ApplyHediff - "; - for (int i = 0; i < this.Props.hediffAndBodypart.Count; i++) - { - HediffDef hediff = this.Props.hediffAndBodypart[i].hediff; - BodyPartDef bodyPart = this.Props.hediffAndBodypart[i].bodyPart; - string bodyPartLabel = this.Props.hediffAndBodypart[i].bodyPartLabel; - bool prioritizeMissing = this.Props.hediffAndBodypart[i].prioritizeMissing; - bool allowMissing = this.Props.hediffAndBodypart[i].allowMissing; - bool regenIfMissing = this.Props.hediffAndBodypart[i].regenIfMissing; - bool allowAddedPart = this.Props.hediffAndBodypart[i].allowAddedPart; - bool wholeBodyFallback = this.Props.hediffAndBodypart[i].wholeBodyFallback; - if (hediff == null) - { - Tools.Warn(text + "cant find hediff; i=" + i.ToString(), true); - } - else - { - BodyPartRecord bodyPartRecord = null; - if (bodyPartLabel != null || bodyPart != null) - { - Tools.Warn(string.Concat(new string[] - { - text, - "Trying to retrieve BPR with [BP label]:", - bodyPartLabel, - " [BP def]:", - (bodyPart != null) ? bodyPart.defName : null - }), this.MyDebug); - bodyPartRecord = pawn.GetBPRecordWithoutHediff(bodyPartLabel, bodyPart, hediff, allowMissing, prioritizeMissing, allowAddedPart, this.MyDebug); - } - if (bodyPartRecord == null) - { - Tools.Warn(text + "Could not find a BPR to apply hediff, will pick whole body?" + wholeBodyFallback.ToString(), this.MyDebug); - if (!wholeBodyFallback) - { - goto IL_247; - } - } - Hediff hediff2; - if (allowMissing && regenIfMissing && bodyPartRecord != null && base.Pawn.IsMissingBPR(bodyPartRecord, out hediff2)) - { - Tools.Warn(text + "regenerating " + bodyPartRecord.customLabel, this.MyDebug); - base.Pawn.health.RemoveHediff(hediff2); - } - Hediff hediff3 = HediffMaker.MakeHediff(hediff, pawn, bodyPartRecord); - if (hediff3 == null) - { - Tools.Warn(string.Concat(new string[] - { - text, - "cant create hediff ", - hediff.defName, - " to apply on ", - bodyPart.defName - }), true); - } - else - { - pawn.health.AddHediff(hediff3, bodyPartRecord, null, null); - Tools.Warn(text + "Applied " + hediff.defName, this.MyDebug); - } - } - IL_247:; - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - if (base.Pawn.Negligible()) - { - return; - } - if (this.blockAction) - { - Tools.DestroyParentHediff(this.parent, this.MyDebug); - return; - } - if (this.HasHediffToApply) - { - this.ApplyHediff(base.Pawn); - } - base.Pawn.DestroyHediff(this.parent, this.MyDebug); - } - - public override string CompTipStringExtra - { - get - { - return string.Empty + "This should disappear very fast"; - } - } - - private bool blockAction; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/HediffComp_Spawner.cs b/1.6/Core/Assemblies/MoharHediffs/HediffComp_Spawner.cs deleted file mode 100644 index 24146b2..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/HediffComp_Spawner.cs +++ /dev/null @@ -1,644 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using RimWorld.Planet; -using Verse; - -namespace MoharHediffs -{ - public class HediffComp_Spawner : HediffComp - { - public HediffCompProperties_Spawner Props - { - get - { - return (HediffCompProperties_Spawner)this.props; - } - } - - public override void CompExposeData() - { - Scribe_Values.Look(ref this.ticksUntilSpawn, "ticksUntilSpawn", 0, false); - Scribe_Values.Look(ref this.initialTicksUntilSpawn, "initialTicksUntilSpawn", 0, false); - Scribe_Values.Look(ref this.calculatedMinDaysB4Next, "calculatedMinDaysB4Next", 0f, false); - Scribe_Values.Look(ref this.calculatedMaxDaysB4Next, "calculatedMaxDaysB4Next", 0f, false); - Scribe_Values.Look(ref this.calculatedQuantity, "calculatedQuantity", 0, false); - Scribe_Values.Look(ref this.graceTicks, "graceTicks", 0, false); - } - - public override void CompPostMake() - { - this.myDebug = this.Props.debug; - Tools.Warn(string.Concat(new string[] - { - ">>> ", - this.parent.pawn.Label, - " - ", - this.parent.def.defName, - " - CompPostMake start" - }), this.myDebug); - this.TraceProps(); - this.CheckProps(); - this.CalculateValues(); - this.CheckCalculatedValues(); - this.TraceCalculatedValues(); - if (this.initialTicksUntilSpawn == 0) - { - Tools.Warn("Reseting countdown bc initialTicksUntilSpawn == 0 (comppostmake)", this.myDebug); - this.ResetCountdown(); - } - } - - public override void CompPostTick(ref float severityAdjustment) - { - this.pawn = this.parent.pawn; - if (!Tools.OkPawn(this.pawn)) - { - return; - } - if (this.blockSpawn) - { - return; - } - if (this.graceTicks > 0) - { - this.graceTicks--; - return; - } - if (this.Props.hungerRelative && this.pawn.IsHungry(this.myDebug)) - { - int num = (int)(this.RandomGraceDays() * 60000f); - this.hungerReset++; - this.graceTicks = num; - return; - } - if (this.Props.healthRelative && this.pawn.IsInjured(this.myDebug)) - { - int num2 = (int)(this.RandomGraceDays() * 60000f); - this.healthReset++; - this.graceTicks = num2; - return; - } - this.hungerReset = (this.healthReset = 0); - if (this.CheckShouldSpawn()) - { - Tools.Warn("Reseting countdown bc spawned thing", this.myDebug); - this.CalculateValues(); - this.CheckCalculatedValues(); - this.ResetCountdown(); - if (Rand.Chance(this.Props.randomGrace)) - { - int num3 = (int)(this.RandomGraceDays() * 60000f); - this.graceTicks = num3; - } - } - } - - private void TraceProps() - { - Tools.Warn(string.Concat(new string[] - { - "Props => minDaysB4Next: ", - this.Props.minDaysB4Next.ToString(), - "; maxDaysB4Next: ", - this.Props.maxDaysB4Next.ToString(), - "; randomGrace: ", - this.Props.randomGrace.ToString(), - "; graceDays: ", - this.Props.graceDays.ToString(), - "; hungerRelative: ", - this.Props.hungerRelative.ToString(), - "; healthRelative: ", - this.Props.healthRelative.ToString(), - "; " - }), this.myDebug); - if (this.Props.animalThing) - { - Tools.Warn(string.Concat(new string[] - { - "animalThing: ", - this.Props.animalThing.ToString(), - "; animalName: ", - this.Props.animalToSpawn.defName, - "; factionOfPlayerAnimal: ", - this.Props.factionOfPlayerAnimal.ToString(), - "; " - }), this.myDebug); - } - if (this.Props.ageWeightedQuantity) - { - Tools.Warn(string.Concat(new string[] - { - "ageWeightedQuantity:", - this.Props.ageWeightedQuantity.ToString(), - "; olderBiggerQuantity:", - this.Props.olderBiggerQuantity.ToString(), - "; ", - this.myDebug.ToString() - }), false); - if (this.Props.exponentialQuantity) - { - Tools.Warn(string.Concat(new string[] - { - "exponentialQuantity:", - this.Props.exponentialQuantity.ToString(), - "; exponentialRatioLimit:", - this.Props.exponentialRatioLimit.ToString(), - "; " - }), this.myDebug); - } - } - Tools.Warn(string.Concat(new string[] - { - "ageWeightedPeriod:", - this.Props.ageWeightedPeriod.ToString(), - "; olderSmallerPeriod:", - this.Props.olderSmallerPeriod.ToString(), - "; ", - this.myDebug.ToString() - }), false); - } - - private void CalculateValues() - { - float num = Tools.GetPawnAgeOverlifeExpectancyRatio(this.parent.pawn, this.myDebug); - num = ((num > 1f) ? 1f : num); - this.calculatedMinDaysB4Next = this.Props.minDaysB4Next; - this.calculatedMaxDaysB4Next = this.Props.maxDaysB4Next; - if (this.Props.ageWeightedPeriod) - { - float num2 = this.Props.olderSmallerPeriod ? (-num) : num; - this.calculatedMinDaysB4Next = this.Props.minDaysB4Next * (1f + num2); - this.calculatedMaxDaysB4Next = this.Props.maxDaysB4Next * (1f + num2); - Tools.Warn(string.Concat(new string[] - { - " ageWeightedPeriod: ", - this.Props.ageWeightedPeriod.ToString(), - " ageRatio: ", - num.ToString(), - " minDaysB4Next: ", - this.Props.minDaysB4Next.ToString(), - " maxDaysB4Next: ", - this.Props.maxDaysB4Next.ToString(), - " daysAgeRatio: ", - num2.ToString(), - " calculatedMinDaysB4Next: ", - this.calculatedMinDaysB4Next.ToString(), - "; calculatedMaxDaysB4Next: ", - this.calculatedMaxDaysB4Next.ToString(), - "; " - }), this.myDebug); - } - this.calculatedQuantity = this.Props.spawnCount; - if (this.Props.ageWeightedQuantity) - { - float num3 = this.Props.olderBiggerQuantity ? num : (-num); - Tools.Warn("quantityAgeRatio: " + num3.ToString(), this.myDebug); - this.calculatedQuantity = (int)Math.Round((double)this.Props.spawnCount * (double)(1f + num3)); - if (this.Props.exponentialQuantity) - { - num3 = 1f - num; - if (num3 == 0f) - { - Tools.Warn(">ERROR< quantityAgeRatio is f* up : " + num3.ToString(), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - float num4 = this.Props.olderBiggerQuantity ? (1f / num3) : (num3 * num3); - bool flag = false; - bool flag2 = false; - if (num4 > (float)this.Props.exponentialRatioLimit) - { - num4 = (float)this.Props.exponentialRatioLimit; - flag = true; - } - this.calculatedQuantity = (int)Math.Round((double)this.Props.spawnCount * (double)num4); - if (this.calculatedQuantity < 1) - { - this.calculatedQuantity = 1; - flag2 = true; - } - Tools.Warn(string.Concat(new string[] - { - " exponentialQuantity: ", - this.Props.exponentialQuantity.ToString(), - "; expoFactor: ", - num4.ToString(), - "; gotLimited: ", - flag.ToString(), - "; gotAugmented: ", - flag2.ToString() - }), this.myDebug); - } - Tools.Warn("; Props.spawnCount: " + this.Props.spawnCount.ToString() + "; calculatedQuantity: " + this.calculatedQuantity.ToString(), this.myDebug); - } - } - - private void CheckCalculatedValues() - { - if (this.calculatedQuantity > this.errorSpawnCount) - { - Tools.Warn(string.Concat(new string[] - { - ">ERROR< calculatedQuantity is too high: ", - this.calculatedQuantity.ToString(), - "(>", - this.errorSpawnCount.ToString(), - "), check and adjust your hediff props" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - if (this.calculatedMinDaysB4Next >= this.calculatedMaxDaysB4Next) - { - Tools.Warn(">ERROR< calculatedMinDaysB4Next should be lower than calculatedMaxDaysB4Next", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - if (this.calculatedMinDaysB4Next < this.errorMinDaysB4Next) - { - Tools.Warn(string.Concat(new string[] - { - ">ERROR< calculatedMinDaysB4Next is too low: ", - this.Props.minDaysB4Next.ToString(), - "(<", - this.errorMinDaysB4Next.ToString(), - "), check and adjust your hediff props" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - - private void TraceCalculatedValues() - { - Tools.Warn(string.Concat(new string[] - { - "<<< ", - this.Props.ageWeightedPeriod ? ("Props.olderMoreOften: " + this.Props.olderSmallerPeriod.ToString() + "; ") : "", - this.Props.ageWeightedQuantity ? ("Props.olderBiggerquantities: " + this.Props.olderBiggerQuantity.ToString() + "; ") : "", - " Props.minDaysB4Next: ", - this.Props.minDaysB4Next.ToString(), - "; Props.maxDaysB4Next: ", - this.Props.maxDaysB4Next.ToString(), - "; calculatedMinDaysB4Next: ", - this.calculatedMinDaysB4Next.ToString(), - "; calculatedMaxDaysB4Next: ", - this.calculatedMaxDaysB4Next.ToString(), - "; Props.spawnCount: ", - this.Props.spawnCount.ToString(), - "; CalculatedQuantity: ", - this.calculatedQuantity.ToString(), - "; " - }), this.myDebug); - } - - private void CheckProps() - { - if (this.Props.spawnCount > this.errorSpawnCount) - { - Tools.Warn(string.Concat(new string[] - { - "SpawnCount is too high: ", - this.Props.spawnCount.ToString(), - "(>", - this.errorSpawnCount.ToString(), - "), some people just want to see the world burn" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - if (this.Props.minDaysB4Next >= this.Props.maxDaysB4Next) - { - Tools.Warn("minDaysB4Next should be lower than maxDaysB4Next", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - if (this.Props.minDaysB4Next < this.errorMinDaysB4Next) - { - Tools.Warn(string.Concat(new string[] - { - "minDaysB4Next is too low: ", - this.Props.minDaysB4Next.ToString(), - "(<", - this.errorMinDaysB4Next.ToString(), - "), some people just want to see the world burn" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - if (this.Props.animalThing) - { - if (this.Props.animalToSpawn == null || this.Props.animalToSpawn.defName.NullOrEmpty()) - { - Tools.Warn("Props.animalThing=" + this.Props.animalThing.ToString() + "; but no Props.animalName", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - Tools.Warn("Found animal PawnKindDef.defName=" + this.Props.animalToSpawn.defName, this.myDebug); - } - else - { - if ((from b in DefDatabase.AllDefs - where b == this.Props.thingToSpawn - select b).RandomElement() == null) - { - Tools.Warn("Could not find Props.thingToSpawn in DefDatabase", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - Tools.Warn("Found ThingDef for " + this.Props.thingToSpawn.defName + "in DefDatabase", this.myDebug); - } - if (!this.Props.ageWeightedPeriod && this.Props.olderSmallerPeriod) - { - Tools.Warn("olderSmallerPeriod ignored since ageWeightedPeriod is false ", this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - if (!this.Props.ageWeightedQuantity) - { - if (this.Props.olderBiggerQuantity) - { - Tools.Warn("olderBiggerQuantity ignored since ageWeightedQuantity is false ", this.myDebug); - } - if (this.Props.exponentialQuantity) - { - Tools.Warn("exponentialQuantity ignored since ageWeightedQuantity is false ", this.myDebug); - } - if (this.Props.olderBiggerQuantity || this.Props.exponentialQuantity) - { - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - return; - } - } - if (this.Props.exponentialQuantity && this.Props.exponentialRatioLimit > this.errorExponentialLimit) - { - Tools.Warn(string.Concat(new string[] - { - "expoRatioLimit too low while expoQuantity is set: ", - this.Props.exponentialRatioLimit.ToString(), - "(>", - this.errorExponentialLimit.ToString(), - "), some people just want to see the world burn" - }), this.myDebug); - this.blockSpawn = true; - Tools.DestroyParentHediff(this.parent, this.myDebug); - } - } - - private bool CheckShouldSpawn() - { - this.pawn = this.parent.pawn; - if (!Tools.OkPawn(this.pawn)) - { - Tools.Warn("CheckShouldSpawn pawn Null", this.myDebug); - return false; - } - this.ticksUntilSpawn--; - if (this.ticksUntilSpawn <= 0) - { - Tools.Warn("TryDoSpawn: " + this.TryDoSpawn().ToString(), this.myDebug); - return true; - } - return false; - } - - private PawnKindDef MyPawnKindDefNamed(string myDefName) - { - PawnKindDef result = null; - foreach (PawnKindDef pawnKindDef in DefDatabase.AllDefs) - { - if (pawnKindDef.defName == myDefName) - { - return pawnKindDef; - } - } - return result; - } - - public bool TryDoSpawn() - { - this.pawn = this.parent.pawn; - if (!Tools.OkPawn(this.pawn)) - { - Tools.Warn("TryDoSpawn - pawn null", this.myDebug); - return false; - } - if (this.Props.animalThing) - { - Faction faction = this.Props.factionOfPlayerAnimal ? Faction.OfPlayer : null; - PawnGenerationRequest request = new PawnGenerationRequest(this.Props.animalToSpawn, faction, PawnGenerationContext.NonPlayer, new PlanetTile?(-1), false, true, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null, null, null, null, null, null, null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f, DevelopmentalStage.Adult, null, null, null, false, false, false, -1, 0, false); - for (int i = 0; i < this.calculatedQuantity; i++) - { - GenSpawn.Spawn(PawnGenerator.GeneratePawn(request), this.parent.pawn.Position, this.parent.pawn.Map, WipeMode.Vanish); - FilthMaker.TryMakeFilth(this.parent.pawn.Position, this.parent.pawn.Map, ThingDefOf.Filth_AmnioticFluid, 1, FilthSourceFlags.None, true); - } - return true; - } - if (this.Props.spawnMaxAdjacent >= 0) - { - int num = 0; - for (int j = 0; j < 9; j++) - { - IntVec3 c = this.pawn.Position + GenAdj.AdjacentCellsAndInside[j]; - if (c.InBounds(this.pawn.Map)) - { - List thingList = c.GetThingList(this.pawn.Map); - for (int k = 0; k < thingList.Count; k++) - { - if (thingList[k].def == this.Props.thingToSpawn) - { - num += thingList[k].stackCount; - if (num >= this.Props.spawnMaxAdjacent) - { - return false; - } - } - } - } - } - } - int l = 0; - int num2 = this.calculatedQuantity; - int num3 = 0; - while (l < this.calculatedQuantity) - { - IntVec3 center; - if (this.TryFindSpawnCell(out center)) - { - Thing thing = ThingMaker.MakeThing(this.Props.thingToSpawn, null); - thing.stackCount = num2; - if (thing.def.stackLimit > 0 && thing.stackCount > thing.def.stackLimit) - { - thing.stackCount = thing.def.stackLimit; - } - l += thing.stackCount; - num2 -= thing.stackCount; - Thing t; - GenPlace.TryPlaceThing(thing, center, this.pawn.Map, ThingPlaceMode.Direct, out t, null, null, null, 1); - if (this.Props.spawnForbidden) - { - t.SetForbidden(true, true); - } - } - if (num3++ > 10) - { - Tools.Warn("Had to break the loop", this.myDebug); - return false; - } - } - return num2 <= 0; - } - - private bool TryFindSpawnCell(out IntVec3 result) - { - this.pawn = this.parent.pawn; - if (!Tools.OkPawn(this.pawn)) - { - result = IntVec3.Invalid; - Tools.Warn("TryFindSpawnCell Null - pawn null", this.myDebug); - return false; - } - foreach (IntVec3 intVec in GenAdj.CellsAdjacent8Way(this.pawn).InRandomOrder(null)) - { - if (intVec.Walkable(this.pawn.Map)) - { - Building edifice = intVec.GetEdifice(this.pawn.Map); - if (edifice == null || !this.Props.thingToSpawn.IsEdifice()) - { - Building_Door building_Door = edifice as Building_Door; - if ((building_Door == null || building_Door.FreePassage) && GenSight.LineOfSight(this.pawn.Position, intVec, this.pawn.Map, false, null, 0, 0)) - { - bool flag = false; - List thingList = intVec.GetThingList(this.pawn.Map); - for (int i = 0; i < thingList.Count; i++) - { - Thing thing = thingList[i]; - if (thing.def.category == ThingCategory.Item && (thing.def != this.Props.thingToSpawn || thing.stackCount > this.Props.thingToSpawn.stackLimit - this.calculatedQuantity)) - { - flag = true; - break; - } - } - if (!flag) - { - result = intVec; - return true; - } - } - } - } - } - Tools.Warn("TryFindSpawnCell Null - no spawn cell found", this.myDebug); - result = IntVec3.Invalid; - return false; - } - - private void ResetCountdown() - { - this.ticksUntilSpawn = (this.initialTicksUntilSpawn = (int)(this.RandomDays2wait() * 60000f)); - } - - private float RandomDays2wait() - { - return Rand.Range(this.calculatedMinDaysB4Next, this.calculatedMaxDaysB4Next); - } - - private float RandomGraceDays() - { - return this.Props.graceDays * Rand.Range(0f, 1f); - } - - public override string CompTipStringExtra - { - get - { - string text; - if (this.graceTicks > 0) - { - if (this.Props.animalThing) - { - text = " No " + this.Props.animalToSpawn.defName + " for " + this.graceTicks.ToStringTicksToPeriod(true, false, true, true, false); - } - else - { - text = " No " + this.Props.thingToSpawn.label + " for " + this.graceTicks.ToStringTicksToPeriod(true, false, true, true, false); - } - if (this.hungerReset > 0) - { - text += "(hunger)"; - } - else if (this.healthReset > 0) - { - text += "(injury)"; - } - else - { - text += "(grace period)"; - } - } - else - { - text = this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true, false) + " before "; - if (this.Props.animalThing) - { - text += this.Props.animalToSpawn.defName; - } - else - { - text += this.Props.thingToSpawn.label; - } - text = string.Concat(new string[] - { - text, - " ", - this.Props.spawnVerb, - "(", - this.calculatedQuantity.ToString(), - "x)" - }); - } - return text; - } - } - - private int ticksUntilSpawn; - - private int initialTicksUntilSpawn; - - private int hungerReset; - - private int healthReset; - - private int graceTicks; - - private Pawn pawn; - - private float calculatedMaxDaysB4Next = 2f; - - private float calculatedMinDaysB4Next = 1f; - - private int calculatedQuantity = 1; - - private bool blockSpawn; - - private bool myDebug; - - private readonly float errorMinDaysB4Next = 0.001f; - - private readonly int errorExponentialLimit = 20; - - private readonly int errorSpawnCount = 750; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/Microsoft/CodeAnalysis/EmbeddedAttribute.cs b/1.6/Core/Assemblies/MoharHediffs/Microsoft/CodeAnalysis/EmbeddedAttribute.cs deleted file mode 100644 index c933444..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/Microsoft/CodeAnalysis/EmbeddedAttribute.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Runtime.CompilerServices; - -namespace Microsoft.CodeAnalysis -{ - [CompilerGenerated] - [Embedded] - internal sealed class EmbeddedAttribute : Attribute - { - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/MoharHediffs.csproj b/1.6/Core/Assemblies/MoharHediffs/MoharHediffs.csproj deleted file mode 100644 index f91f7e6..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/MoharHediffs.csproj +++ /dev/null @@ -1,65 +0,0 @@ - - - - Debug - x64 - {F992C1F9-4E11-4987-9E00-D665B2E34CBB} - Library - Properties - MoharHediffs - MoharHediffs - v4.8 - 512 - - - x64 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x64 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - ..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - - - ..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\System.Core.dll - - - ..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1.6/Core/Assemblies/MoharHediffs/Properties/AssemblyInfo.cs b/1.6/Core/Assemblies/MoharHediffs/Properties/AssemblyInfo.cs deleted file mode 100644 index 5bc658b..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; -using System.Diagnostics; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.Versioning; - -[assembly: AssemblyVersion("0.0.0.0")] -[module: RefSafetyRules(11)] diff --git a/1.6/Core/Assemblies/MoharHediffs/System/Runtime/CompilerServices/RefSafetyRulesAttribute.cs b/1.6/Core/Assemblies/MoharHediffs/System/Runtime/CompilerServices/RefSafetyRulesAttribute.cs deleted file mode 100644 index 8d5136d..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/System/Runtime/CompilerServices/RefSafetyRulesAttribute.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using Microsoft.CodeAnalysis; - -namespace System.Runtime.CompilerServices -{ - [CompilerGenerated] - [Embedded] - [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] - internal sealed class RefSafetyRulesAttribute : Attribute - { - public RefSafetyRulesAttribute(int A_1) - { - this.Version = A_1; - } - - public readonly int Version; - } -} diff --git a/1.6/Core/Assemblies/MoharHediffs/Tools.cs b/1.6/Core/Assemblies/MoharHediffs/Tools.cs deleted file mode 100644 index b58ba36..0000000 --- a/1.6/Core/Assemblies/MoharHediffs/Tools.cs +++ /dev/null @@ -1,181 +0,0 @@ -using System; -using System.Collections.Generic; -using AlienRace; -using RimWorld; -using UnityEngine; -using Verse; - -namespace MoharHediffs -{ - public static class Tools - { - public static float Clamp(this float value, float min, float max) - { - return Math.Min(Math.Max(value, min), max); - } - - public static void DestroyParentHediff(Hediff parentHediff, bool debug = false) - { - if (parentHediff.pawn != null && parentHediff.def.defName != null && debug) - { - Log.Warning(parentHediff.pawn.Label + "'s Hediff: " + parentHediff.def.defName + " says goodbye."); - } - parentHediff.Severity = 0f; - } - - public static void DestroyHediff(this Pawn pawn, Hediff hediff, bool debug = false) - { - if (hediff.pawn != null && hediff.def.defName != null && debug) - { - Log.Warning(hediff.pawn.Label + "'s Hediff: " + hediff.def.defName + " says goodbye."); - } - pawn.health.RemoveHediff(hediff); - } - - public static float GetPawnAgeOverlifeExpectancyRatio(Pawn pawn, bool debug = false) - { - float result = 1f; - if (pawn == null) - { - if (debug) - { - Log.Warning("GetPawnAgeOverlifeExpectancyRatio pawn NOT OK"); - } - return result; - } - result = pawn.ageTracker.AgeBiologicalYearsFloat / pawn.RaceProps.lifeExpectancy; - if (debug) - { - Log.Warning(string.Concat(new string[] - { - pawn.Label, - " Age: ", - pawn.ageTracker.AgeBiologicalYearsFloat.ToString(), - "; lifeExpectancy: ", - pawn.RaceProps.lifeExpectancy.ToString(), - "; ratio:", - result.ToString() - })); - } - return result; - } - - public static float GetPawnAdultRatio(Pawn pawn, bool debug = false) - { - if (!Tools.OkPawn(pawn)) - { - if (debug) - { - Log.Warning("GetPawnAgeOverlifeExpectancyRatio pawn NOT OK"); - } - return 1f; - } - List lifeStageAges = pawn.RaceProps.lifeStageAges; - int index = lifeStageAges.Count - 1; - float minAge = lifeStageAges[index].minAge; - float lifeExpectancy = pawn.RaceProps.lifeExpectancy; - return (pawn.ageTracker.AgeBiologicalYearsFloat - minAge) / (lifeExpectancy - minAge); - } - - public static bool IsInjured(this Pawn pawn, bool debug = false) - { - if (pawn == null) - { - if (debug) - { - Log.Warning("pawn is null - wounded "); - } - return false; - } - float num = 0f; - List hediffs = pawn.health.hediffSet.hediffs; - for (int i = 0; i < hediffs.Count; i++) - { - if (hediffs[i] is Hediff_Injury && !hediffs[i].IsPermanent()) - { - num += hediffs[i].Severity; - } - } - if (debug && num > 0f) - { - Log.Warning(pawn.Label + " is wounded "); - } - return num > 0f; - } - - public static bool IsHungry(this Pawn pawn, bool debug = false) - { - if (pawn == null) - { - if (debug) - { - Log.Warning("pawn is null - IsHungry "); - } - return false; - } - bool flag = pawn.needs.food != null && pawn.needs.food.CurCategory == HungerCategory.Starving; - if (debug && flag) - { - Log.Warning(pawn.Label + " is hungry "); - } - return flag; - } - - public static bool Negligible(this Pawn p) - { - if (p != null && p.Spawned && p.Map != null) - { - IntVec3 position = p.Position; - return false; - } - return true; - } - - public static bool Negligible(this Thing thing) - { - if (thing != null && thing.Spawned && thing.Map != null) - { - IntVec3 position = thing.Position; - return false; - } - return true; - } - - public static bool OkPawn(Pawn pawn) - { - return pawn != null && pawn.Map != null; - } - - public static void Warn(string warning, bool debug = false) - { - if (debug) - { - Log.Warning(warning); - } - } - - public static bool IsAlien(this Pawn pawn) - { - return pawn.def.race.Humanlike && pawn.def != ThingDefOf.Human; - } - - public static bool IsHuman(this Pawn pawn) - { - return pawn.def.race.Humanlike && pawn.def == ThingDefOf.Human; - } - - public static AlienPartGenerator.AlienComp GetAlien(Pawn pawn = null) - { - if (pawn == null) - { - return null; - } - return pawn.TryGetComp(); - } - - public static bool ForbiddenMote(this Vector3 loc, Map map) - { - return !loc.ShouldSpawnMotesAt(map, true) || map.moteCounter.SaturatedLowPriority; - } - } -} diff --git a/1.6/Core/Assemblies/MoharThoughts.sln b/1.6/Core/Assemblies/MoharThoughts.sln deleted file mode 100644 index bf272d5..0000000 --- a/1.6/Core/Assemblies/MoharThoughts.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoharThoughts", "MoharThoughts\MoharThoughts.csproj", "{20289CFE-6B75-4BAA-ABEC-2EE00128C17C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {20289CFE-6B75-4BAA-ABEC-2EE00128C17C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20289CFE-6B75-4BAA-ABEC-2EE00128C17C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20289CFE-6B75-4BAA-ABEC-2EE00128C17C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20289CFE-6B75-4BAA-ABEC-2EE00128C17C}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/1.6/Core/Assemblies/MoharThoughts/BodyPartUtils.cs b/1.6/Core/Assemblies/MoharThoughts/BodyPartUtils.cs deleted file mode 100644 index b9e1bff..0000000 --- a/1.6/Core/Assemblies/MoharThoughts/BodyPartUtils.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; - -namespace MoharThoughts -{ - public static class BodyPartUtils - { - public static bool ValidateBP(this MTWDef mtwDef, BodyPartRecord BPR) - { - bool hasBodyPartDefTarget = mtwDef.HasBodyPartDefTarget; - bool result; - if (hasBodyPartDefTarget) - { - result = (mtwDef.bodyPart == BPR.def); - } - else - { - bool hasBodyPartLabelTarget = mtwDef.HasBodyPartLabelTarget; - result = (hasBodyPartLabelTarget && mtwDef.bodyPartLabel == BPR.customLabel); - } - return result; - } - - public static bool BodyPartHasHediff(this Pawn p, BodyPartRecord bpr, List HDL) - { - return p.health.hediffSet.hediffs.Any((Hediff h) => h.Part == bpr && HDL.Contains(h.def)); - } - - public static bool PartOrAnyAncestorHasHediff(this Pawn p, BodyPartRecord bpr, List HDL) - { - bool flag = p.BodyPartHasHediff(bpr, HDL); - bool result; - if (flag) - { - result = true; - } - else - { - bool flag2 = bpr.parent != null && p.PartOrAnyAncestorHasHediff(bpr.parent, HDL); - result = flag2; - } - return result; - } - - public static bool IsAccessListCompatible(this Pawn p, BodyPartRecord bpr, MTWDef mTWDef, bool debug = false) - { - bool flag = mTWDef.HasApplyList && p.PartOrAnyAncestorHasHediff(bpr, mTWDef.applyThoughtHediffList); - bool result; - if (flag) - { - if (debug) - { - Log.Warning(p.LabelShort + " " + bpr.Label + " is in apply list"); - } - result = true; - } - else - { - bool flag2 = mTWDef.HasIgnoreList && p.PartOrAnyAncestorHasHediff(bpr, mTWDef.ignoreThoughtHediffList); - if (flag2) - { - if (debug) - { - Log.Warning(p.LabelShort + " " + bpr.Label + " is in ignore list"); - } - result = false; - } - else - { - if (debug) - { - Log.Warning(p.LabelShort + " " + bpr.Label + " is ACL compatible"); - } - result = true; - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/MoharThoughts/MTWDef.cs b/1.6/Core/Assemblies/MoharThoughts/MTWDef.cs deleted file mode 100644 index 2fafa6f..0000000 --- a/1.6/Core/Assemblies/MoharThoughts/MTWDef.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using Verse; - -namespace MoharThoughts -{ - public class MTWDef : Def - { - public override string ToString() - { - return this.defName; - } - - public MTWDef Named(string searchedDN) - { - return DefDatabase.GetNamed(searchedDN, true); - } - - public override int GetHashCode() - { - return this.defName.GetHashCode(); - } - - public bool HasBodyPartDefTarget - { - get - { - return this.bodyPart != null; - } - } - - public bool HasBodyPartLabelTarget - { - get - { - return !this.bodyPartLabel.NullOrEmpty(); - } - } - - public bool HasTarget - { - get - { - return this.HasBodyPartDefTarget || this.HasBodyPartLabelTarget; - } - } - - public bool HasRequiredBpNum - { - get - { - return this.bpNum.min != 0 || this.bpNum.max != 0; - } - } - - public bool HasLifeStages - { - get - { - return !this.lifeStages.NullOrEmpty(); - } - } - - public bool HasApplyList - { - get - { - return !this.applyThoughtHediffList.NullOrEmpty(); - } - } - - public bool HasIgnoreList - { - get - { - return !this.ignoreThoughtHediffList.NullOrEmpty(); - } - } - - public bool HasAccessList - { - get - { - return this.HasApplyList || this.HasIgnoreList; - } - } - - public ThoughtDef thought; - - public ThingDef race; - - public BodyPartDef bodyPart; - - public string bodyPartLabel; - - public HediffDef hediff; - - public IntRange bpNum = new IntRange(0, 0); - - public List lifeStages; - - public List applyThoughtHediffList; - - public List ignoreThoughtHediffList; - - public bool ignoreThoughtIfAddedPart = false; - - public bool debug = false; - } -} diff --git a/1.6/Core/Assemblies/MoharThoughts/MoharThoughts.csproj b/1.6/Core/Assemblies/MoharThoughts/MoharThoughts.csproj deleted file mode 100644 index 57b3c2d..0000000 --- a/1.6/Core/Assemblies/MoharThoughts/MoharThoughts.csproj +++ /dev/null @@ -1,52 +0,0 @@ - - - - Debug - AnyCPU - {20289CFE-6B75-4BAA-ABEC-2EE00128C17C} - Library - Properties - MoharThoughts - MoharThoughts - v4.7.2 - 512 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - - - ..\..\..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\System.Core.dll - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1.6/Core/Assemblies/MoharThoughts/Properties/AssemblyInfo.cs b/1.6/Core/Assemblies/MoharThoughts/Properties/AssemblyInfo.cs deleted file mode 100644 index 73fe074..0000000 --- a/1.6/Core/Assemblies/MoharThoughts/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Diagnostics; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Runtime.Versioning; - -[assembly: AssemblyVersion("0.15.1.0")] -[assembly: AssemblyTitle("MoharThoughts")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MoharThoughts")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: ComVisible(false)] -[assembly: Guid("a8e081b6-8768-4fe9-817f-f0ee42cf13ef")] -[assembly: AssemblyFileVersion("0.15.1.0")] diff --git a/1.6/Core/Assemblies/MoharThoughts/RaceBPHediff.cs b/1.6/Core/Assemblies/MoharThoughts/RaceBPHediff.cs deleted file mode 100644 index f002362..0000000 --- a/1.6/Core/Assemblies/MoharThoughts/RaceBPHediff.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using Verse; - -namespace MoharThoughts -{ - public class RaceBPHediff : ThoughtWorker - { - protected override ThoughtState CurrentStateInternal(Pawn p) - { - MTWDef myTWD = (from m in DefDatabase.AllDefs - where m.race == p.def && this.def == m.thought && m.HasTarget && (!m.HasLifeStages || m.lifeStages.Contains(p.ageTracker.CurLifeStage)) - select m).SingleOrDefault(); - bool flag = myTWD == null; - ThoughtState result; - if (flag) - { - result = false; - } - else - { - IEnumerable enumerable = from h in p.health.hediffSet.hediffs - where h.Part != null && myTWD.ValidateBP(h.Part) && (h.def == myTWD.hediff || (myTWD.HasApplyList && myTWD.applyThoughtHediffList.Contains(h.def))) - select h; - bool flag2 = enumerable.EnumerableNullOrEmpty(); - if (flag2) - { - result = false; - } - else - { - bool ignoreThoughtIfAddedPart = myTWD.ignoreThoughtIfAddedPart; - if (ignoreThoughtIfAddedPart) - { - enumerable = from h in enumerable - where !p.health.hediffSet.PartOrAnyAncestorHasDirectlyAddedParts(h.Part) - select h; - } - else - { - bool hasAccessList = myTWD.HasAccessList; - if (hasAccessList) - { - enumerable = from h in enumerable - where p.IsAccessListCompatible(h.Part, myTWD, myTWD.debug) - select h; - } - } - bool flag3 = enumerable.EnumerableNullOrEmpty(); - if (flag3) - { - result = false; - } - else - { - bool hasRequiredBpNum = myTWD.HasRequiredBpNum; - if (hasRequiredBpNum) - { - result = myTWD.bpNum.Includes(enumerable.EnumerableCount()); - } - else - { - result = false; - } - } - } - } - return result; - } - } -} diff --git a/1.6/Core/Assemblies/MoharThoughts/Tools.cs b/1.6/Core/Assemblies/MoharThoughts/Tools.cs deleted file mode 100644 index 3a916a0..0000000 --- a/1.6/Core/Assemblies/MoharThoughts/Tools.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using Verse; - -namespace MoharThoughts -{ - public static class Tools - { - public static bool Includes(this IntRange intRange, int value) - { - return value >= intRange.min && value <= intRange.max; - } - } -} diff --git a/1.6/Core/Assemblies/WearSetting.dll b/1.6/Core/Assemblies/WearSetting.dll deleted file mode 100644 index 7ac29cc3bf752011a4d3594f2935d933b7bc8ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 PA?WV`{?F(Ce;W8do7gpS diff --git a/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml b/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml index 5bb2285..1ba84cb 100644 --- a/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml +++ b/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml @@ -1,8 +1,6 @@ - - PNModule_2day 120000 @@ -27,112 +25,10 @@ PNModule_3hour 7500 + PNModule_rightoff 120 - - HediffWithComps - -
  • -
  • - -
  • PN_ModuleUnstable_Industrial
  • - - -
    - false -
    - - - HediffWithComps - -
  • -
  • - -
  • PN_ModuleUnstable_Spacer
  • - - -
    - false -
    - - - - - - - PN_ModuleUnstable_Industrial - - module system (unstable) - The module system is unstable. The module cannot be mounted until the system is stable. - HediffWithComps - false - -
  • - 20000 - True -
  • -
  • -
  • - -
  • PN_OfficerCommand
  • -
  • PN_MeisterAdvice
  • -
  • PN_IntensiveMedical
  • -
  • PN_FieldMedic
  • - -
  • PN_RapidFire
  • -
  • PN_CQC
  • - - false - -
    - - - -
    - - PN_ModuleUnstable_Spacer - - module system (unstable) - The module system is unstable. The module cannot be mounted until the system is stable. - HediffWithComps - false - -
  • - 120000 - True -
  • -
  • -
  • - -
  • PN_OfficerCommand
  • -
  • PN_MeisterAdvice
  • -
  • PN_IntensiveMedical
  • -
  • PN_FieldMedic
  • - -
  • PN_RapidFire
  • -
  • PN_CQC
  • - - false - -
    - - - -
    -
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml b/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml index 66ecbb0..c5c49bb 100644 --- a/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml +++ b/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml @@ -1,6 +1,6 @@ - + PN_WearSetting_OfficerModule
  • Paniel_Race
  • @@ -342,5 +342,5 @@ -
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml b/1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml index a126745..8d8168b 100644 --- a/1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml +++ b/1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml @@ -76,11 +76,8 @@ 1.0 false -
  • +
  • -
  • - PN_ateFuel -
  • PN_AB_EffectBridge
  • @@ -100,7 +97,7 @@ 1.0 false -
  • +
  • PN_AB_Effect
  • PNBody
  • @@ -215,4 +212,32 @@
    - \ No newline at end of file + + + PN_Antibiotics_High + + A high-dose of antibiotics is active. + HediffWithComps + (0.6, 0.8, 0.7) + false + +
  • + -1.0 +
  • +
  • + + + + + +
  • PNBody
  • + + +
    + +
  • + true +
  • +
    +
    + diff --git a/1.6/Core/Defs/Drugs/Drugs_Fuel.xml b/1.6/Core/Defs/Drugs/Drugs_Fuel.xml index b70985e..3411d54 100644 --- a/1.6/Core/Defs/Drugs/Drugs_Fuel.xml +++ b/1.6/Core/Defs/Drugs/Drugs_Fuel.xml @@ -43,11 +43,11 @@ false 25 -
  • +
  • PN_deletFuel 1 @@ -99,36 +99,6 @@ - - PN_ateFuel - HediffWithComps - - Ate Automaton Fuel - ... - (1,0,0.5) - false - 1.0 - false - -
  • - -
  • - PsychiteAddiction -
  • -
  • - FoodPoisoning -
  • -
  • - PN_deletFuel -
  • -
    - -
  • PNBody
  • -
    - false - - -
    PN_deletFuel @@ -141,7 +111,8 @@ 1.0 false -
  • +
  • +
  • PN_AutomatonFuel_Addiction
  • @@ -167,16 +138,29 @@ A condition that requires PnL fuel. (222,90,90) - PN_Need_Fuel false false false - +
  • + -1.0 +
  • +
  • + +
  • PN_Need_Fuel
  • +
  • @@ -199,7 +183,10 @@
  • 8.0 + +
  • PN_Need_Fuel
  • +
    - \ No newline at end of file + diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_Abilities.xml b/1.6/Core/Defs/HediffDefs/Hediffs_Abilities.xml new file mode 100644 index 0000000..f31c1aa --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_Abilities.xml @@ -0,0 +1,89 @@ + + + + + HediffWithComps + +
  • +
  • + +
  • PN_ModuleUnstable_Industrial
  • + + +
    + false +
    + + + HediffWithComps + +
  • +
  • + +
  • PN_ModuleUnstable_Spacer
  • + + +
    + false +
    + + + HediffWithComps + false + + + + PN_ModuleUnstable_Industrial + + module system (unstable) + The module system is unstable. The module cannot be mounted until the system is stable. + HediffWithComps + false + +
  • + 20000 + True +
  • +
  • +
  • + +
  • PN_OfficerCommand
  • +
  • PN_MeisterAdvice
  • +
  • PN_IntensiveMedical
  • +
  • PN_FieldMedic
  • +
  • PN_RapidFire
  • +
  • PN_CQC
  • + + false + +
    +
    + + + PN_ModuleUnstable_Spacer + + module system (unstable) + The module system is unstable. The module cannot be mounted until the system is stable. + HediffWithComps + false + +
  • + 120000 + True +
  • +
  • +
  • + +
  • PN_OfficerCommand
  • +
  • PN_MeisterAdvice
  • +
  • PN_IntensiveMedical
  • +
  • PN_FieldMedic
  • +
  • PN_RapidFire
  • +
  • PN_CQC
  • + + false + +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonBase.xml b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonBase.xml index 818ab38..66b710f 100644 --- a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonBase.xml +++ b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonBase.xml @@ -60,8 +60,7 @@
    - - PanielBaseHediff + HediffWithComps This pawn is Automaton. @@ -71,13 +70,6 @@ 1 false true - -
  • Outdoors
  • -
  • DrugDesire
  • -
  • RoomSize
  • -
  • Comfort
  • -
  • Bladder
  • -
  • false @@ -92,7 +84,8 @@
  • -
  • +
  • +
  • Carcinoma
  • BadBack
  • @@ -118,11 +111,20 @@
  • PregnantHuman
  • true - PN_HediffNullifier +
    +
    + + + PanielBaseHediff -
  • +
  • Paniel_Race
  • diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml index daaa919..a14a4e9 100644 --- a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml +++ b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml @@ -352,7 +352,7 @@ PN_Give_Normal_Combat -
  • +
  • PNBody
  • @@ -377,7 +377,7 @@ PN_Give_Good_Combat -
  • +
  • PNBody
  • @@ -402,7 +402,7 @@ PN_Give_Excellent_Combat -
  • +
  • PNBody
  • @@ -427,7 +427,7 @@ PN_Give_Masterwork_Combat -
  • +
  • PNBody
  • @@ -452,7 +452,7 @@ PN_Give_Legendary_Combat -
  • +
  • PNBody
  • @@ -479,7 +479,7 @@ PN_Give_Normal_Engineer -
  • +
  • PNBody
  • @@ -504,7 +504,7 @@ PN_Give_Good_Engineer -
  • +
  • PNBody
  • @@ -529,7 +529,7 @@ PN_Give_Excellent_Engineer -
  • +
  • PNBody
  • @@ -554,7 +554,7 @@ PN_Give_Masterwork_Engineer -
  • +
  • PNBody
  • @@ -579,7 +579,7 @@ PN_Give_Legendary_Engineer -
  • +
  • PNBody
  • @@ -606,7 +606,7 @@ PN_Give_Normal_Domestic -
  • +
  • PNBody
  • @@ -631,7 +631,7 @@ PN_Give_Good_Domestic -
  • +
  • PNBody
  • @@ -656,7 +656,7 @@ PN_Give_Excellent_Domestic -
  • +
  • PNBody
  • @@ -681,7 +681,7 @@ PN_Give_Masterwork_Domestic -
  • +
  • PNBody
  • @@ -706,7 +706,7 @@ PN_Give_Legendary_Domestic -
  • +
  • PNBody
  • @@ -763,7 +763,7 @@ PN_Give_Awful_Failure -
  • +
  • PNBody
  • @@ -788,7 +788,7 @@ PN_Give_Poor_Failure -
  • +
  • PNBody
  • diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml index e635365..832f196 100644 --- a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml +++ b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml @@ -28,7 +28,8 @@
  • -
  • +
  • +
  • PN_Ex_filterA
  • @@ -44,7 +45,7 @@ PN_Give_Normal_Combat_PA -
  • +
  • PNBody
  • @@ -72,7 +73,7 @@ PN_Give_Good_Combat_PA -
  • +
  • PNBody
  • @@ -100,7 +101,7 @@ PN_Give_Excellent_Combat_PA -
  • +
  • PNBody
  • @@ -128,7 +129,7 @@ PN_Give_Masterwork_Combat_PA -
  • +
  • PNBody
  • @@ -156,7 +157,7 @@ PN_Give_Legendary_Combat_PA -
  • +
  • PNBody
  • @@ -186,7 +187,7 @@ PN_Give_Normal_Engineer_PA -
  • +
  • PNBody
  • @@ -214,7 +215,7 @@ PN_Give_Good_Engineer_PA -
  • +
  • PNBody
  • @@ -242,7 +243,7 @@ PN_Give_Excellent_Engineer_PA -
  • +
  • PNBody
  • @@ -270,7 +271,7 @@ PN_Give_Masterwork_Engineer_PA -
  • +
  • PNBody
  • @@ -298,7 +299,7 @@ PN_Give_Legendary_Engineer_PA -
  • +
  • PNBody
  • @@ -320,15 +321,15 @@ - + - + PN_Give_Normal_Domestic_PA -
  • +
  • PNBody
  • @@ -353,10 +354,10 @@ - + PN_Give_Good_Domestic_PA -
  • +
  • PNBody
  • @@ -381,10 +382,10 @@ - + PN_Give_Excellent_Domestic_PA -
  • +
  • PNBody
  • @@ -409,10 +410,10 @@ - + PN_Give_Masterwork_Domestic_PA -
  • +
  • PNBody
  • @@ -437,10 +438,10 @@ - + PN_Give_Legendary_Domestic_PA -
  • +
  • PNBody
  • @@ -462,29 +463,25 @@ - - - + - PN_Give_Testsubject + -
  • +
  • PNBody
  • - PN_SyncGood_Testsubject -
  • -
  • - PN_PnLAuthenticated + PN_Learning_Limit_System
  • -
  • +
  • PN_SyncGood_Testsubject -
  • PN_Learning_Limit_System
  • +
  • PN_SyncAwful_Failure
  • +
  • PN_SyncPoor_Failure
  • PNBody @@ -493,34 +490,7 @@ PN_SyncGood_Testsubject - - -
  • - -
  • - Consciousness - 0.05 -
  • -
  • - Moving - 0.10 -
  • -
  • - Sight - 0.10 -
  • -
  • - Manipulation - 0.10 -
  • - - - 1.0 - 0.9 - 1.50 - 0.12 - - -
    +
    + \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_BodyParts.xml b/1.6/Core/Defs/HediffDefs/Hediffs_BodyParts.xml index b574c5d..457c1f1 100644 --- a/1.6/Core/Defs/HediffDefs/Hediffs_BodyParts.xml +++ b/1.6/Core/Defs/HediffDefs/Hediffs_BodyParts.xml @@ -168,12 +168,12 @@ This implant cannot be removed after installation. -
  • +
  • PN_Learning_Limit_System
  • -
  • +
  • PN_Learning_Limit_System
  • @@ -195,7 +195,7 @@ This implant cannot be removed after installation. -
  • +
  • PNBody
  • @@ -223,7 +223,7 @@ This implant cannot be removed after installation. -
  • +
  • PN_SyncNormal_Combat
  • PN_SyncGood_Combat
  • diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml b/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml index 5b1130e..1cdb762 100644 --- a/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml +++ b/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml @@ -117,10 +117,10 @@ -
  • - Paniel_Race -
  • -
    +
  • + Paniel_Race +
  • +
    diff --git a/1.6/Core/Defs/Scenarios/Scenarios.xml b/1.6/Core/Defs/Scenarios/Scenarios.xml index 148b57c..92639f0 100644 --- a/1.6/Core/Defs/Scenarios/Scenarios.xml +++ b/1.6/Core/Defs/Scenarios/Scenarios.xml @@ -1,6 +1,6 @@ - + Paniel_Scenarios PnL Industry has launched their newest product with superior intelligence capability. They scheduled initial testing program to measure its survivability under extreme(or harsh) conditions such as Rim World.\n\nParticipating test subject can perform researches and acquire skills identical to typical human beings. However, under harsh circumstances, these test subjects seem to be "mentally unstable."\n\nTip : Boomabear produces chemfuel. diff --git a/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml index f6c777a..d61e1e3 100644 --- a/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml +++ b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml @@ -33,7 +33,7 @@ True
  • -
  • +
  • PN_RapidFireOverload
  • @@ -100,7 +100,7 @@ True
  • -
  • +
  • PN_CQCOverload
  • diff --git a/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml index 68ae75e..61ec040 100644 --- a/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml +++ b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml @@ -1,6 +1,16 @@ + + HediffWithComps + false + (0.6, 0.8, 0.7) + true + false + false + true + + PN_OfficerCommand @@ -22,9 +32,9 @@ false true - PN_OfficerCommandBuff +
  • PN_OfficerCommandBuff
  • -
  • +
  • PN_OfficerCommandOverload
  • @@ -89,7 +99,7 @@ PN_OfficerCommandThought ThoughtWorker_Hediff - PN_OfficerCommandBuff +
  • PN_OfficerCommandBuff
  • true
  • @@ -113,7 +123,7 @@
  • Paniel_Race - PN_OfficerCommandBuff +
  • PN_OfficerCommandBuff
  • PNBrain 1 @@ -183,7 +193,7 @@ PN_MeisterAdviceBuff -
  • +
  • PN_OfficerCommandOverload
  • @@ -283,7 +293,7 @@ True
  • -
  • +
  • PN_OfficerCommandOverload
  • @@ -337,7 +347,7 @@ True
  • -
  • +
  • PN_OfficerCommandOverload
  • @@ -382,12 +392,12 @@
  • True
  • -
  • +
  • PN_StimPackSideEffect
  • -
  • +
  • PN_StimPackSideEffect
  • @@ -501,4 +511,19 @@ + + + PN_HediffMechanicNullifierSpacer + + Paniel Mechanic nullifier (spacer). + HediffWithComps + +
  • + +
  • PN_MeisterAdvice
  • +
  • PN_IntensiveMedical
  • + + +
    +
    \ No newline at end of file diff --git a/1.6/Mods/Paniel_Experimental/Defs/HediffDefs/HediffDef_PNE_BodyParts.xml b/1.6/Mods/Paniel_Experimental/Defs/HediffDefs/HediffDef_PNE_BodyParts.xml index e06d358..ecefece 100644 --- a/1.6/Mods/Paniel_Experimental/Defs/HediffDefs/HediffDef_PNE_BodyParts.xml +++ b/1.6/Mods/Paniel_Experimental/Defs/HediffDefs/HediffDef_PNE_BodyParts.xml @@ -7,6 +7,7 @@ An experimental engine core. allow automata to power without fuel. using this can be extrame dangerous.\n\n Warning: This implant cannot be safety removed after installation. + HediffWithComps PN_ExperimentalEngineCore @@ -15,14 +16,22 @@ 1.1 true - -
  • PN_Need_Fuel
  • -
  • 0.75
  • + + +
    diff --git a/LoadFolders.xml b/LoadFolders.xml index 86e7f08..de96c0e 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -22,4 +22,4 @@
  • 1.6/Mods/Paniel_Experimental
  • - \ No newline at end of file + diff --git a/about/About.xml b/about/About.xml index fa58013..14fb6c0 100644 --- a/about/About.xml +++ b/about/About.xml @@ -1,10 +1,11 @@ - Paniel the Automata[1.5] + Paniel the Automata[1.6] Demi, 어리연, Nemonian, gguake kalospacer.AhnDemi.PanieltheAutomata
  • 1.5
  • +
  • 1.6
  • Icon/Paniel_Logi