From 1574d92416129eb623e1bc4489ef69351a07adc6 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 3 Jul 2025 17:50:31 +0800 Subject: [PATCH] 1.6 --- .../Defs/HediffDefs/Hediffs_Maintenance.xml | 4 +- 1.6/Biotech/Defs/Bio_Hediffs_Mechanitor.xml | 530 +++++ 1.6/Biotech/Defs/Bio_Reserch_ProjectDefs.xml | 17 + 1.6/Biotech/Defs/Bio_ThingDef_Module.xml | 102 + 1.6/Biotech/Defs/Bio_ThingDef_Part_Body.xml | 70 + 1.6/Core/Assemblies/1_CustomizableRecipe.dll | Bin 0 -> 18944 bytes 1.6/Core/Assemblies/2_AutomataRace.dll | Bin 0 -> 78848 bytes 1.6/Core/Assemblies/2_AutomataRace.pdb | Bin 0 -> 37544 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/ItemFormChange_Roo.dll | Bin 0 -> 16896 bytes 1.6/Core/Assemblies/MoharHediffs.dll | Bin 0 -> 37888 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/SYS.dll | Bin 0 -> 11776 bytes 1.6/Core/Assemblies/WearSetting.dll | Bin 0 -> 40960 bytes 1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml | 138 ++ .../AutomataRace/AutomataQualityProperty.xml | 231 ++ .../AutomataRace/AutomataRaceSettings.xml | 78 + .../AutomataRace/AutomataSpecializations.xml | 26 + .../AutomataRace/AutomataStatOverrideDef.xml | 48 + .../Defs/AutomataRace/AutomataWearSetting.xml | 346 +++ 1.6/Core/Defs/AutomataRace/Bodies/Body.xml | 632 ++++++ .../Defs/AutomataRace/Bodies/Bodyparts.xml | 427 ++++ .../HeadTypeDefs/HeadTypeDefs.xml | 74 + .../Defs/AutomataRace/PanielBackstoryDef.xml | 1209 +++++++++++ 1.6/Core/Defs/AutomataRace/PanielRaceDef.xml | 982 +++++++++ .../Defs/AutomataRace/PanielRaceSettings.xml | 122 ++ .../Defs/AutomataRace/PanielRulePacks.xml | 55 + 1.6/Core/Defs/Drugs/DrugPolicyDefs.xml | 16 + 1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml | 218 ++ 1.6/Core/Defs/Drugs/Drugs_Fuel.xml | 205 ++ .../Defs/Factions_PnL/Factions_Player.xml | 40 + 1.6/Core/Defs/Factions_PnL/Factions_PnL.xml | 404 ++++ .../Defs/HediffDefs/Hediffs_AutomatonBase.xml | 299 +++ .../HediffDefs/Hediffs_AutomatonGrade.xml | 809 +++++++ .../HediffDefs/Hediffs_AutomatonGrade_PA.xml | 526 +++++ .../Defs/HediffDefs/Hediffs_BodyParts.xml | 380 ++++ .../Defs/HediffDefs/Hediffs_ContDamPN.xml | 110 + .../Defs/HediffDefs/Hediffs_HediffGiver.xml | 64 + 1.6/Core/Defs/HediffDefs/Hediffs_Joy.xml | 57 + .../Defs/HediffDefs/Hediffs_Maintenance.xml | 152 ++ 1.6/Core/Defs/NeedDefs/Needs.xml | 25 + .../PawnKindDefs_PnL/PawnKind_Faction.xml | 735 +++++++ .../PawnKindDefs_PnL/PawnKind_Randombox.xml | 348 +++ .../PawnKind_Randombox_PA.xml | 230 ++ .../PawnKindDefs_PnL/PawnKinds_PNPlayer.xml | 90 + 1.6/Core/Defs/RecipeDefs/Recipes_Drugs.xml | 79 + .../Defs/RecipeDefs/Recipes_Production.xml | 184 ++ .../Defs/RecipeDefs/Recipes_Randombox.xml | 325 +++ 1.6/Core/Defs/RecipeDefs/Recipes_Surgery.xml | 141 ++ .../Defs/ReserchDefs/Reserch_ProjectDefs.xml | 351 +++ 1.6/Core/Defs/Scenarios/Scenarios.xml | 98 + 1.6/Core/Defs/SoundDefs/Sounds.xml | 163 ++ .../ThingDef_PanielPart/ThingDef_Part_Arm.xml | 12 + .../ThingDef_Part_Base.xml | 76 + .../ThingDef_Part_Body.xml | 12 + .../ThingDef_Part_Head.xml | 12 + .../ThingDef_PanielPart/ThingDef_Part_Leg.xml | 12 + .../ThingDef_Part_Shell.xml | 12 + .../Defs/ThingDefs/ThingDef_Apparel_TierA.xml | 406 ++++ .../Defs/ThingDefs/ThingDef_Apparel_TierB.xml | 645 ++++++ .../Defs/ThingDefs/ThingDef_Apparel_TierC.xml | 692 ++++++ .../Defs/ThingDefs/ThingDef_Buildings.xml | 77 + 1.6/Core/Defs/ThingDefs/ThingDef_Item.xml | 464 ++++ 1.6/Core/Defs/ThingDefs/ThingDef_Module.xml | 573 +++++ .../Defs/ThingDefs/ThingDef_Randombox.xml | 495 +++++ 1.6/Core/Defs/ThingDefs/ThingDef_Security.xml | 342 +++ 1.6/Core/Defs/ThingDefs/ThingDef_Shell.xml | 568 +++++ .../ThingDefs/ThingDef_Weapons_Industrial.xml | 1471 +++++++++++++ .../Defs/ThingDefs/ThingDef_Weapons_Royal.xml | 1891 +++++++++++++++++ .../Defs/ThoughtDefs/Thoughts_LostDeath.xml | 203 ++ .../ThoughtDefs/Thoughts_PanielReplace.xml | 244 +++ .../Defs/TraderKindDefs/TraderKinds_Base.xml | 251 +++ .../TraderKindDefs/TraderKinds_CaravanPnL.xml | 74 + .../TraderKindDefs/TraderKinds_OrbitalPnL.xml | 133 ++ 1.6/Core/Defs/TraitDefs/PN_Traits.xml | 14 + 1.6/Core/Patches/Anomaly.xml | 88 + 1.6/Core/Patches/Ideology.xml | 86 + 1.6/Core/Patches/Royalty.xml | 208 ++ 1.6/Core/Patches/Vanilla.xml | 36 + .../Ideo_AbilityDef_Industrial.xml | 106 + .../AbilityDefs/Ideo_AbilityDef_Spacer.xml | 291 +++ .../Ideo_Hediffs_Cast_Industrial.xml | 146 ++ .../HediffDefs/Ideo_Hediffs_Cast_Spacer.xml | 504 +++++ 1.6/Ideology/Defs/MemeDefs/Memes_PnL.xml | 111 + .../ThingDefs/Ideo_ThingDef_Module_Spacer.xml | 211 ++ .../HediffDefs/HediffDef_PNE_BodyParts.xml | 161 ++ .../HediffDef/HediffDef_PNE_BodyParts.xml | 12 + .../RecipeDef/RecipeDef_PNE_BodyParts.xml | 18 + .../ThingDef/ThingDef_PNE_BodyParts.xml | 10 + .../1.5/Core/Patches/SOS2.xml | 364 ++++ .../1.5/Core/Patches/Yayo_combat_3.xml | 36 + .../RimImmortal/Defs/PN_RI_Items_Special.xml | 232 ++ .../About/About.xml | 25 + .../About/preview.png | Bin 0 -> 724992 bytes .../RecipeDef/PN_RI_Items_Special_Recipe.xml | 20 + .../ThingDef/PN_RI_Items_Special.xml | 32 + .../LoadFolders.xml | 8 + .../Paniel_Misc_Compatibility_Patch/readme.md | 12 + .../Defs/PnLCareerLevel/Royal_Permits.xml | 418 ++++ .../Defs/PnLCareerLevel/Royal_Thoughts.xml | 36 + .../Defs/PnLCareerLevel/Royal_Titles.xml | 272 +++ .../Defs/PnLCareerLevel/Royal_TraderKinds.xml | 173 ++ .../Defs/Royal_Hediffs_BodyParts_Psychic.xml | 99 + .../Defs/Royal_Hediffs_BodyParts_Vanilla.xml | 525 +++++ 1.6/Royalty/Defs/Royal_Hediffs_ContDamPN.xml | 302 +++ .../Defs/Royal_Reserch_ProjectDefs.xml | 17 + 1.6/Royalty/Defs/Royal_ThingDef_Misc.xml | 99 + 1.6/Royalty/Defs/Royal_ThingDef_Weapon.xml | 404 ++++ LoadFolders.xml | 11 + 229 files changed, 37931 insertions(+), 2 deletions(-) create mode 100644 1.6/Biotech/Defs/Bio_Hediffs_Mechanitor.xml create mode 100644 1.6/Biotech/Defs/Bio_Reserch_ProjectDefs.xml create mode 100644 1.6/Biotech/Defs/Bio_ThingDef_Module.xml create mode 100644 1.6/Biotech/Defs/Bio_ThingDef_Part_Body.xml create mode 100644 1.6/Core/Assemblies/1_CustomizableRecipe.dll create mode 100644 1.6/Core/Assemblies/2_AutomataRace.dll create mode 100644 1.6/Core/Assemblies/2_AutomataRace.pdb create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ActivityRestriction.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartsTools.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeOffset.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeSpecificities.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ChannelColorCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ColorRange.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CommonSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionBuilder.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionValidation.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CopyPawnSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/DrawingSpecificities.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerParameters.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FilthSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Footprint.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GeneralSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GfxEffects.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffCompProperties_HediffExclusive.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffComp_HediffExclusive.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffAndBodyPart.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_AnotherRandom.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Filther.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffNullifier.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffRandom.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_InnerShine.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_MultipleHediff.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_OnTheCarpet.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_PostRemoveTrigger_HediffAdd.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RainbowTrail.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawnUponDeath.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawner.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Spawner.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Steamer.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_TrailLeaver.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_AnotherRandom.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Filther.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffNullifier.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffRandom.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_InnerShine.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_MultipleHediff.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_OnTheCarpet.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_PostRemoveTrigger_HediffAdd.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RainbowTrail.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawnUponDeath.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawner.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Spawner.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Steamer.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_TrailLeaver.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffIntersect.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItem.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItemToRemove.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffKeepingCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRemovalConditionBuilder.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRequirementSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffSeverityCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineDef.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineItem.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineRecord.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShinerUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ItemParameter.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/KeepingConditionCompatibility.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/LightCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStateOption.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStatePicker.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoharHediffs.csproj create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteColorChangeUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteLink.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyDefs.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyGfx.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NeedCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NoMsgRandHediffGiver.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ParametersHandlingsUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCondition.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCopyUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnRedressUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Properties/AssemblyInfo.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomFactionParameter.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomPicker.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandyPickerUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandySpawnerUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RedressSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Restriction.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RotationOffset.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnRules.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnerUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackCalculator.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TerrainRestriction.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingRequirementSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingSettings.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Tools.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TracerUtils.cs create mode 100644 1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TrailUtils.cs create mode 100644 1.6/Core/Assemblies/ItemFormChange_Roo.dll create mode 100644 1.6/Core/Assemblies/MoharHediffs.dll create mode 100644 1.6/Core/Assemblies/MoharHediffs.sln create mode 100644 1.6/Core/Assemblies/MoharHediffs/BodyPartsTools.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffAndBodyPart.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffNullifier.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffRandom.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_MultipleHediff.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_Spawner.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffNullifier.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffRandom.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_MultipleHediff.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/HediffComp_Spawner.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/Microsoft/CodeAnalysis/EmbeddedAttribute.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/MoharHediffs.csproj create mode 100644 1.6/Core/Assemblies/MoharHediffs/Properties/AssemblyInfo.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/System/Runtime/CompilerServices/RefSafetyRulesAttribute.cs create mode 100644 1.6/Core/Assemblies/MoharHediffs/Tools.cs create mode 100644 1.6/Core/Assemblies/MoharThoughts.sln create mode 100644 1.6/Core/Assemblies/MoharThoughts/BodyPartUtils.cs create mode 100644 1.6/Core/Assemblies/MoharThoughts/MTWDef.cs create mode 100644 1.6/Core/Assemblies/MoharThoughts/MoharThoughts.csproj create mode 100644 1.6/Core/Assemblies/MoharThoughts/Properties/AssemblyInfo.cs create mode 100644 1.6/Core/Assemblies/MoharThoughts/RaceBPHediff.cs create mode 100644 1.6/Core/Assemblies/MoharThoughts/Tools.cs create mode 100644 1.6/Core/Assemblies/SYS.dll create mode 100644 1.6/Core/Assemblies/WearSetting.dll create mode 100644 1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml create mode 100644 1.6/Core/Defs/AutomataRace/AutomataQualityProperty.xml create mode 100644 1.6/Core/Defs/AutomataRace/AutomataRaceSettings.xml create mode 100644 1.6/Core/Defs/AutomataRace/AutomataSpecializations.xml create mode 100644 1.6/Core/Defs/AutomataRace/AutomataStatOverrideDef.xml create mode 100644 1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml create mode 100644 1.6/Core/Defs/AutomataRace/Bodies/Body.xml create mode 100644 1.6/Core/Defs/AutomataRace/Bodies/Bodyparts.xml create mode 100644 1.6/Core/Defs/AutomataRace/HeadTypeDefs/HeadTypeDefs.xml create mode 100644 1.6/Core/Defs/AutomataRace/PanielBackstoryDef.xml create mode 100644 1.6/Core/Defs/AutomataRace/PanielRaceDef.xml create mode 100644 1.6/Core/Defs/AutomataRace/PanielRaceSettings.xml create mode 100644 1.6/Core/Defs/AutomataRace/PanielRulePacks.xml create mode 100644 1.6/Core/Defs/Drugs/DrugPolicyDefs.xml create mode 100644 1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml create mode 100644 1.6/Core/Defs/Drugs/Drugs_Fuel.xml create mode 100644 1.6/Core/Defs/Factions_PnL/Factions_Player.xml create mode 100644 1.6/Core/Defs/Factions_PnL/Factions_PnL.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_AutomatonBase.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_BodyParts.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_ContDamPN.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_HediffGiver.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_Joy.xml create mode 100644 1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml create mode 100644 1.6/Core/Defs/NeedDefs/Needs.xml create mode 100644 1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Faction.xml create mode 100644 1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox.xml create mode 100644 1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox_PA.xml create mode 100644 1.6/Core/Defs/PawnKindDefs_PnL/PawnKinds_PNPlayer.xml create mode 100644 1.6/Core/Defs/RecipeDefs/Recipes_Drugs.xml create mode 100644 1.6/Core/Defs/RecipeDefs/Recipes_Production.xml create mode 100644 1.6/Core/Defs/RecipeDefs/Recipes_Randombox.xml create mode 100644 1.6/Core/Defs/RecipeDefs/Recipes_Surgery.xml create mode 100644 1.6/Core/Defs/ReserchDefs/Reserch_ProjectDefs.xml create mode 100644 1.6/Core/Defs/Scenarios/Scenarios.xml create mode 100644 1.6/Core/Defs/SoundDefs/Sounds.xml create mode 100644 1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Arm.xml create mode 100644 1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Base.xml create mode 100644 1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Body.xml create mode 100644 1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Head.xml create mode 100644 1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Leg.xml create mode 100644 1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Shell.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierA.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierB.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierC.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Buildings.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Item.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Module.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Randombox.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Security.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Shell.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Industrial.xml create mode 100644 1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Royal.xml create mode 100644 1.6/Core/Defs/ThoughtDefs/Thoughts_LostDeath.xml create mode 100644 1.6/Core/Defs/ThoughtDefs/Thoughts_PanielReplace.xml create mode 100644 1.6/Core/Defs/TraderKindDefs/TraderKinds_Base.xml create mode 100644 1.6/Core/Defs/TraderKindDefs/TraderKinds_CaravanPnL.xml create mode 100644 1.6/Core/Defs/TraderKindDefs/TraderKinds_OrbitalPnL.xml create mode 100644 1.6/Core/Defs/TraitDefs/PN_Traits.xml create mode 100644 1.6/Core/Patches/Anomaly.xml create mode 100644 1.6/Core/Patches/Ideology.xml create mode 100644 1.6/Core/Patches/Royalty.xml create mode 100644 1.6/Core/Patches/Vanilla.xml create mode 100644 1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Industrial.xml create mode 100644 1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Spacer.xml create mode 100644 1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml create mode 100644 1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml create mode 100644 1.6/Ideology/Defs/MemeDefs/Memes_PnL.xml create mode 100644 1.6/Ideology/Defs/ThingDefs/Ideo_ThingDef_Module_Spacer.xml create mode 100644 1.6/Mods/Paniel_Experimental/Defs/HediffDefs/HediffDef_PNE_BodyParts.xml create mode 100644 1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/HediffDef/HediffDef_PNE_BodyParts.xml create mode 100644 1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/RecipeDef/RecipeDef_PNE_BodyParts.xml create mode 100644 1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/ThingDef/ThingDef_PNE_BodyParts.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/SOS2.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/Yayo_combat_3.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Mods/RimImmortal/Defs/PN_RI_Items_Special.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/About/About.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/About/preview.png create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/Content/Languages/ChineseSimplified/DefInjected/RecipeDef/PN_RI_Items_Special_Recipe.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/Content/Languages/ChineseSimplified/DefInjected/ThingDef/PN_RI_Items_Special.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/LoadFolders.xml create mode 100644 1.6/Mods/Paniel_Misc_Compatibility_Patch/readme.md create mode 100644 1.6/Royalty/Defs/PnLCareerLevel/Royal_Permits.xml create mode 100644 1.6/Royalty/Defs/PnLCareerLevel/Royal_Thoughts.xml create mode 100644 1.6/Royalty/Defs/PnLCareerLevel/Royal_Titles.xml create mode 100644 1.6/Royalty/Defs/PnLCareerLevel/Royal_TraderKinds.xml create mode 100644 1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Psychic.xml create mode 100644 1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Vanilla.xml create mode 100644 1.6/Royalty/Defs/Royal_Hediffs_ContDamPN.xml create mode 100644 1.6/Royalty/Defs/Royal_Reserch_ProjectDefs.xml create mode 100644 1.6/Royalty/Defs/Royal_ThingDef_Misc.xml create mode 100644 1.6/Royalty/Defs/Royal_ThingDef_Weapon.xml diff --git a/1.5/Core/Defs/HediffDefs/Hediffs_Maintenance.xml b/1.5/Core/Defs/HediffDefs/Hediffs_Maintenance.xml index 41c763b..db3ef76 100644 --- a/1.5/Core/Defs/HediffDefs/Hediffs_Maintenance.xml +++ b/1.5/Core/Defs/HediffDefs/Hediffs_Maintenance.xml @@ -128,7 +128,7 @@ I can't move my body well. -5 - +
  • false
  • @@ -136,7 +136,7 @@ I feel like I'm made new! 5 - + \ No newline at end of file diff --git a/1.6/Biotech/Defs/Bio_Hediffs_Mechanitor.xml b/1.6/Biotech/Defs/Bio_Hediffs_Mechanitor.xml new file mode 100644 index 0000000..f541bc9 --- /dev/null +++ b/1.6/Biotech/Defs/Bio_Hediffs_Mechanitor.xml @@ -0,0 +1,530 @@ + + + + + PN_Mechlink + + This is a modified mechlink for automaton. + Mechlink + + MechlinkImplant + + + 100 + -4 + 1 + 500 + 0 + + + Things/Pawn/Humanlike/Apparel/Mechlink + Graphic_Single + 0.65 + + +
  • +
  • + CompUsableImplant + InstallMechlink + Install {0_label} to become mechanitor +
  • +
  • + CompUseEffect_InstallImplantMechlink + MechlinkImplant + PNBrain + true +
  • +
  • + MechlinkInstalled +
  • +
    +
    + + + PN_Make_Mechlink_Automaton + + make automaton mechlink + Making automaton mechlink. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • Mechlink
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    + + + + + 100 + -4 + 1 + 1200 + 0 + 3200 + + + Things/Item/Health/HealthItem + Graphic_Single + 0.80 + (247,180,130) + + +
  • + + None + + + + + ControlSublinkImplant + + + 3 + + + + + PN_ControlSublink + + This is a modified control sublink (standard) for automaton. + + 1 + 4 + + +
  • + CompUsableImplant + UseItem + Implant sublink + MechlinkImplant +
  • +
  • + ControlSublinkImplant + PNBrain + true + 3 +
  • +
    +
    + + + PN_ControlSublinkHigh + + This is a modified control sublink (high) for automaton. + + 1 + 3 + 3 + + +
  • + CompUsableImplant + UseItem + Implant high sublink + MechlinkImplant +
  • +
  • + ControlSublinkImplant + PNBrain + true + true + 3 +
  • +
    +
    + + + PN_Make_ControlSublink_Automaton + + make automaton sublink + Making automaton sublink. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • ControlSublink
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    + + + PN_Make_PN_ControlSublinkHigh_Automaton + + make automaton sublink + Making automaton sublink. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • ControlSublinkHigh
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    + + + + PN_RemoteRepairer + + This is a modified remote repairer for automaton. + + RemoteRepairerImplant + + + 1 + 6 + + + 3 + + +
  • + CompUsableImplant + UseItem + Implant {0_label} + MechlinkImplant +
  • +
  • + RemoteRepairerImplant + PNBrain + true +
  • +
    +
    + + + PN_Make_PN_RemoteRepairer_Automaton + + make automaton remote repairer + Making automaton remote repairer. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • RemoteRepairer
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    + + + + PN_MechFormfeeder + + This is a modified mech gestation processor for automaton. + + MechFormfeederImplant + + + 1 + 6 + + + 6 + + +
  • + CompUsableImplant + UseItem + Implant {0_label} + MechlinkImplant +
  • +
  • + MechFormfeederImplant + PNBrain + true +
  • +
    +
    + + + PN_Make_PN_MechFormfeeder_Automaton + + make automaton mech gestation processor + Making automaton mech gestation processor. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • MechFormfeeder
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    + + + + PN_RemoteShielder + + This is a modified remote shielder for automaton. + + RemoteShielderImplant + + + 1 + 6 + + + 3 + + +
  • + CompUsableImplant + UseItem + Implant {0_label} + MechlinkImplant +
  • +
  • + RemoteShielderImplant + PNBrain + true +
  • +
    +
    + + + PN_Make_PN_RemoteShielder_Automaton + + make automaton remote shielder + Making automaton remote shielder. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • RemoteShielder
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    + + + + PN_RepairProbe + + This is a modified repair probe for automaton. + + RepairProbeImplant + + + 1 + 2 + + + 6 + + +
  • + CompUsableImplant + UseItem + Implant {0_label} + MechlinkImplant +
  • +
  • + RepairProbeImplant + PNBrain + true +
  • +
    +
    + + + PN_Make_PN_RepairProbe_Automaton + + make automaton repair probe + Making automaton repair probe. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • RepairProbe
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_Mechlink +
    +
    \ No newline at end of file diff --git a/1.6/Biotech/Defs/Bio_Reserch_ProjectDefs.xml b/1.6/Biotech/Defs/Bio_Reserch_ProjectDefs.xml new file mode 100644 index 0000000..e19757b --- /dev/null +++ b/1.6/Biotech/Defs/Bio_Reserch_ProjectDefs.xml @@ -0,0 +1,17 @@ + + + + PNRP_Mechlink + + Research how to modify mechlink and sublink for use by the Automaton. + PN_technology + 300 + Industrial + +
  • PNRP_Production
  • +
    + 1.0 + 4.9 + +
    +
    \ No newline at end of file diff --git a/1.6/Biotech/Defs/Bio_ThingDef_Module.xml b/1.6/Biotech/Defs/Bio_ThingDef_Module.xml new file mode 100644 index 0000000..111b19b --- /dev/null +++ b/1.6/Biotech/Defs/Bio_ThingDef_Module.xml @@ -0,0 +1,102 @@ + + + + + + PN_ArrayModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nAny model (legd), (mast), (exc)\n\nThis module increases the automaton's MechBandwidth and MechControlGroups stat. + + PN_ArrayModuleHediff + + + 45 + 20 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + +
  • + PN_ArrayModuleHediff + PNTorso +
  • +
    +
    + + + PN_ArrayModuleHediff + + The hediff created by installing array module. + + PN_ArrayModule + + +
  • + + 6 + 1 + +
  • +
    + +
    + + + PN_IntegratorModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nAny model (legd)\n\nThis module increases the automaton's MechBandwidth and MechControlGroups stat. + + PN_IntegratorModuleHediff + + + 45 + 12 + 9 + 3 + 2 + 1 + + + PNRP_TierC_Module + + 6 + + + + + + +
  • + PN_IntegratorModuleHediff + PNTorso +
  • +
    +
    + + + PN_IntegratorModuleHediff + + The hediff created by installing integrator module. + + PN_IntegratorModule + + +
  • + + 18 + 1 + +
  • +
    + +
    +
    \ No newline at end of file diff --git a/1.6/Biotech/Defs/Bio_ThingDef_Part_Body.xml b/1.6/Biotech/Defs/Bio_ThingDef_Part_Body.xml new file mode 100644 index 0000000..daaf347 --- /dev/null +++ b/1.6/Biotech/Defs/Bio_ThingDef_Part_Body.xml @@ -0,0 +1,70 @@ + + + + + PN_DetoxifierOilFilter + + a detoxifier oil filter + An advanced Oil Filter. Using PNL Industry technology, it can rapidly remove a vast range of toxins from the fuel, making it effective against environmental toxins, venoms, and injected poisons. + + DetoxifierKidney + + DetoxifierKidney + + true + 1.1 + true + + +
  • + + 0.5 + +
  • +
    +
    + + + PN_InstallDetoxifierOilFilter + + Install a detoxifier oil filter. + + DetoxifierKidney + PN_DetoxifierOilFilter + + Installing detoxifier oil filter. + +
  • + + +
  • DetoxifierKidney
  • + + + 1 + +
    + + +
  • DetoxifierKidney
  • +
    +
    + +
  • PNKidney
  • +
    + PN_DetoxifierOilFilter + 0 +
    + + + PN_RemoveDetoxifierOilFilter + + Remove detoxifier Oil Filter. + + DetoxifierKidney + PN_DetoxifierOilFilter + + Removing detoxifier Oil Filter. + PN_DetoxifierOilFilter + + +
    \ No newline at end of file diff --git a/1.6/Core/Assemblies/1_CustomizableRecipe.dll b/1.6/Core/Assemblies/1_CustomizableRecipe.dll new file mode 100644 index 0000000000000000000000000000000000000000..4080252a3aba5286f604fd34533e6874b824fe65 GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/1.6/Core/Assemblies/2_AutomataRace.dll b/1.6/Core/Assemblies/2_AutomataRace.dll new file mode 100644 index 0000000000000000000000000000000000000000..66f56de7018deab6a99565327d189430d756383d GIT binary patch literal 78848 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

    quaHHuuHB4y$1a~wf7Xi{^Wo#ZnA0+%-_3oSc~ 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 literal 0 HcmV?d00001 diff --git a/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln new file mode 100644 index 0000000..b08108b --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs.sln @@ -0,0 +1,20 @@ + +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 new file mode 100644 index 0000000..491e09a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ActivityRestriction.cs @@ -0,0 +1,42 @@ +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 new file mode 100644 index 0000000..bc2ad45 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartCondition.cs @@ -0,0 +1,47 @@ +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 new file mode 100644 index 0000000..2e43755 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyPartsTools.cs @@ -0,0 +1,307 @@ +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 new file mode 100644 index 0000000..7e5d88e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeOffset.cs @@ -0,0 +1,13 @@ +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 new file mode 100644 index 0000000..423944e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/BodyTypeSpecificities.cs @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..bd0a06d --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ChannelColorCondition.cs @@ -0,0 +1,11 @@ +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 new file mode 100644 index 0000000..eea67be --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ColorRange.cs @@ -0,0 +1,14 @@ +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 new file mode 100644 index 0000000..bbf6b84 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CommonSettings.cs @@ -0,0 +1,11 @@ +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 new file mode 100644 index 0000000..4f478cf --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionBuilder.cs @@ -0,0 +1,83 @@ +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 new file mode 100644 index 0000000..da42e86 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ConditionValidation.cs @@ -0,0 +1,115 @@ +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 new file mode 100644 index 0000000..bc4a81f --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/CopyPawnSettings.cs @@ -0,0 +1,57 @@ +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 new file mode 100644 index 0000000..1b02741 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/DrawingSpecificities.cs @@ -0,0 +1,33 @@ +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 new file mode 100644 index 0000000..4b07566 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerParameters.cs @@ -0,0 +1,113 @@ +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 new file mode 100644 index 0000000..8693c91 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FactionPickerUtils.cs @@ -0,0 +1,161 @@ +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 new file mode 100644 index 0000000..54be685 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/FilthSettings.cs @@ -0,0 +1,14 @@ +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 new file mode 100644 index 0000000..e6c8ddd --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Footprint.cs @@ -0,0 +1,27 @@ +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 new file mode 100644 index 0000000..6075da4 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GeneralSettings.cs @@ -0,0 +1,44 @@ +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 new file mode 100644 index 0000000..8fd89c0 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/GfxEffects.cs @@ -0,0 +1,153 @@ +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 new file mode 100644 index 0000000..65eb369 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffCompProperties_HediffExclusive.cs @@ -0,0 +1,30 @@ +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 new file mode 100644 index 0000000..2a4d8e6 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HeDiffComp_HediffExclusive.cs @@ -0,0 +1,341 @@ +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 new file mode 100644 index 0000000..61d575e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffAndBodyPart.cs @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..90c33eb --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_AnotherRandom.cs @@ -0,0 +1,54 @@ +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 new file mode 100644 index 0000000..ae08e6a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Filther.cs @@ -0,0 +1,21 @@ +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 new file mode 100644 index 0000000..c632728 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffNullifier.cs @@ -0,0 +1,30 @@ +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 new file mode 100644 index 0000000..39dc875 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_HediffRandom.cs @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..c0f7120 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_InnerShine.cs @@ -0,0 +1,44 @@ +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 new file mode 100644 index 0000000..16c10ca --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_MultipleHediff.cs @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..2b74c6e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_OnTheCarpet.cs @@ -0,0 +1,48 @@ +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 new file mode 100644 index 0000000..ef49eac --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_PostRemoveTrigger_HediffAdd.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..90c99c5 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RainbowTrail.cs @@ -0,0 +1,46 @@ +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 new file mode 100644 index 0000000..e1a6e33 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawnUponDeath.cs @@ -0,0 +1,45 @@ +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 new file mode 100644 index 0000000..7b67b66 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_RandySpawner.cs @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..a558bf7 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Spawner.cs @@ -0,0 +1,55 @@ +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 new file mode 100644 index 0000000..f52c48b --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_Steamer.cs @@ -0,0 +1,27 @@ +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 new file mode 100644 index 0000000..75bf603 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCompProperties_TrailLeaver.cs @@ -0,0 +1,85 @@ +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 new file mode 100644 index 0000000..8c01cde --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_AnotherRandom.cs @@ -0,0 +1,322 @@ +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 new file mode 100644 index 0000000..cdb1a13 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Filther.cs @@ -0,0 +1,64 @@ +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 new file mode 100644 index 0000000..4806add --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffNullifier.cs @@ -0,0 +1,230 @@ +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 new file mode 100644 index 0000000..a8b9b16 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_HediffRandom.cs @@ -0,0 +1,178 @@ +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 new file mode 100644 index 0000000..91cad6b --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_InnerShine.cs @@ -0,0 +1,209 @@ +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 new file mode 100644 index 0000000..8de1b36 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_MultipleHediff.cs @@ -0,0 +1,287 @@ +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 new file mode 100644 index 0000000..be43d76 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_OnTheCarpet.cs @@ -0,0 +1,146 @@ +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 new file mode 100644 index 0000000..5107726 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_PostRemoveTrigger_HediffAdd.cs @@ -0,0 +1,99 @@ +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 new file mode 100644 index 0000000..fe998d8 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RainbowTrail.cs @@ -0,0 +1,514 @@ +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 new file mode 100644 index 0000000..893ed2e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawnUponDeath.cs @@ -0,0 +1,587 @@ +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 new file mode 100644 index 0000000..beea1ea --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_RandySpawner.cs @@ -0,0 +1,450 @@ +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 new file mode 100644 index 0000000..199ea8a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Spawner.cs @@ -0,0 +1,778 @@ +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 new file mode 100644 index 0000000..13cef1a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_Steamer.cs @@ -0,0 +1,80 @@ +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 new file mode 100644 index 0000000..71e118e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffComp_TrailLeaver.cs @@ -0,0 +1,236 @@ +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 new file mode 100644 index 0000000..6c26eaa --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffCondition.cs @@ -0,0 +1,27 @@ +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 new file mode 100644 index 0000000..12f9500 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffIntersect.cs @@ -0,0 +1,159 @@ +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 new file mode 100644 index 0000000..301523b --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItem.cs @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..f46b375 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffItemToRemove.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..fc886fb --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffKeepingCondition.cs @@ -0,0 +1,58 @@ +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 new file mode 100644 index 0000000..e159a8e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRemovalConditionBuilder.cs @@ -0,0 +1,107 @@ +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 new file mode 100644 index 0000000..28532cd --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffRequirementSettings.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..573549a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/HediffSeverityCondition.cs @@ -0,0 +1,30 @@ +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 new file mode 100644 index 0000000..1831fbf --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineDef.cs @@ -0,0 +1,25 @@ +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 new file mode 100644 index 0000000..415ed01 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineItem.cs @@ -0,0 +1,88 @@ +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 new file mode 100644 index 0000000..27e6724 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShineRecord.cs @@ -0,0 +1,42 @@ +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 new file mode 100644 index 0000000..31e0c7a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/InnerShinerUtils.cs @@ -0,0 +1,189 @@ +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 new file mode 100644 index 0000000..b2dd1be --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ItemParameter.cs @@ -0,0 +1,104 @@ +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 new file mode 100644 index 0000000..1f175d7 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/KeepingConditionCompatibility.cs @@ -0,0 +1,69 @@ +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 new file mode 100644 index 0000000..40ae3fd --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/LightCondition.cs @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..abedb6d --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStateOption.cs @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..7d4bf08 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MentalStatePicker.cs @@ -0,0 +1,87 @@ +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 new file mode 100644 index 0000000..a2e4e89 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoharHediffs.csproj @@ -0,0 +1,151 @@ + + + + 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 new file mode 100644 index 0000000..6757320 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteColorChangeUtils.cs @@ -0,0 +1,63 @@ +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 new file mode 100644 index 0000000..95f3c33 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteLink.cs @@ -0,0 +1,33 @@ +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 new file mode 100644 index 0000000..0b97de4 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MoteSpawnUtils.cs @@ -0,0 +1,111 @@ +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 new file mode 100644 index 0000000..bd030a0 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyDefs.cs @@ -0,0 +1,9 @@ +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 new file mode 100644 index 0000000..34c7652 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/MyGfx.cs @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..d059309 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NeedCondition.cs @@ -0,0 +1,23 @@ +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 new file mode 100644 index 0000000..89afe7e --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/NoMsgRandHediffGiver.cs @@ -0,0 +1,19 @@ +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 new file mode 100644 index 0000000..e7ed5b4 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ParametersHandlingsUtils.cs @@ -0,0 +1,96 @@ +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 new file mode 100644 index 0000000..09eb125 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCondition.cs @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..ca06390 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnCopyUtils.cs @@ -0,0 +1,344 @@ +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 new file mode 100644 index 0000000..1928302 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/PawnRedressUtils.cs @@ -0,0 +1,63 @@ +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 new file mode 100644 index 0000000..205d85b --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Properties/AssemblyInfo.cs @@ -0,0 +1,9 @@ +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 new file mode 100644 index 0000000..051277a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomFactionParameter.cs @@ -0,0 +1,96 @@ +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 new file mode 100644 index 0000000..36d8f83 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandomPicker.cs @@ -0,0 +1,73 @@ +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 new file mode 100644 index 0000000..f05680a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandyPickerUtils.cs @@ -0,0 +1,281 @@ +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 new file mode 100644 index 0000000..dca77a6 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RandySpawnerUtils.cs @@ -0,0 +1,348 @@ +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 new file mode 100644 index 0000000..4130443 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RedressSettings.cs @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..88ae7a8 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementSettings.cs @@ -0,0 +1,72 @@ +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 new file mode 100644 index 0000000..7fbe21c --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RequirementUtils.cs @@ -0,0 +1,177 @@ +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 new file mode 100644 index 0000000..986938d --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Restriction.cs @@ -0,0 +1,32 @@ +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 new file mode 100644 index 0000000..3acdf7a --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/RotationOffset.cs @@ -0,0 +1,13 @@ +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 new file mode 100644 index 0000000..c5821dc --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnRules.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..ac93c3f --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/SpawnerUtils.cs @@ -0,0 +1,372 @@ +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 new file mode 100644 index 0000000..0550da0 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackCalculator.cs @@ -0,0 +1,49 @@ +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 new file mode 100644 index 0000000..e83f2d6 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/StackSettings.cs @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..b40cf11 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TerrainRestriction.cs @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..9eaf3ec --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingRequirementSettings.cs @@ -0,0 +1,46 @@ +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 new file mode 100644 index 0000000..dc73a7d --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/ThingSettings.cs @@ -0,0 +1,129 @@ +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 new file mode 100644 index 0000000..5fdb081 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/Tools.cs @@ -0,0 +1,215 @@ +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 new file mode 100644 index 0000000..cb51c48 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TracerUtils.cs @@ -0,0 +1,149 @@ +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 new file mode 100644 index 0000000..0b15601 --- /dev/null +++ b/1.6/Core/Assemblies/FULLMOHAR/MoharHediffs/TrailUtils.cs @@ -0,0 +1,61 @@ +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/ItemFormChange_Roo.dll b/1.6/Core/Assemblies/ItemFormChange_Roo.dll new file mode 100644 index 0000000000000000000000000000000000000000..33b4adb81122a937e1af1b4290a20206741cd79a GIT binary patch literal 16896 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 Lf35$vJ@9`3RxW8; literal 0 HcmV?d00001 diff --git a/1.6/Core/Assemblies/MoharHediffs.dll b/1.6/Core/Assemblies/MoharHediffs.dll new file mode 100644 index 0000000000000000000000000000000000000000..36989e5de184a55695d9446494f877acd709502d GIT binary patch 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 new file mode 100644 index 0000000..834678e --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffAndBodyPart.cs @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..d8c39a9 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffNullifier.cs @@ -0,0 +1,30 @@ +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 new file mode 100644 index 0000000..6388c0b --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_HediffRandom.cs @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..4bad43b --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_MultipleHediff.cs @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..0b4b910 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffCompProperties_Spawner.cs @@ -0,0 +1,55 @@ +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 new file mode 100644 index 0000000..ade3203 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffNullifier.cs @@ -0,0 +1,199 @@ +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 new file mode 100644 index 0000000..6c4512d --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffComp_HediffRandom.cs @@ -0,0 +1,156 @@ +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 new file mode 100644 index 0000000..dfa1370 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffComp_MultipleHediff.cs @@ -0,0 +1,262 @@ +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 new file mode 100644 index 0000000..24146b2 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/HediffComp_Spawner.cs @@ -0,0 +1,644 @@ +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 new file mode 100644 index 0000000..c933444 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/Microsoft/CodeAnalysis/EmbeddedAttribute.cs @@ -0,0 +1,11 @@ +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 new file mode 100644 index 0000000..f91f7e6 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/MoharHediffs.csproj @@ -0,0 +1,65 @@ + + + + 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 new file mode 100644 index 0000000..5bc658b --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/Properties/AssemblyInfo.cs @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..8d5136d --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/System/Runtime/CompilerServices/RefSafetyRulesAttribute.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..b58ba36 --- /dev/null +++ b/1.6/Core/Assemblies/MoharHediffs/Tools.cs @@ -0,0 +1,181 @@ +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 new file mode 100644 index 0000000..bf272d5 --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts.sln @@ -0,0 +1,20 @@ + +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 new file mode 100644 index 0000000..b9e1bff --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts/BodyPartUtils.cs @@ -0,0 +1,81 @@ +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 new file mode 100644 index 0000000..2fafa6f --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts/MTWDef.cs @@ -0,0 +1,111 @@ +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 new file mode 100644 index 0000000..57b3c2d --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts/MoharThoughts.csproj @@ -0,0 +1,52 @@ + + + + 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 new file mode 100644 index 0000000..73fe074 --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts/Properties/AssemblyInfo.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..f002362 --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts/RaceBPHediff.cs @@ -0,0 +1,73 @@ +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 new file mode 100644 index 0000000..3a916a0 --- /dev/null +++ b/1.6/Core/Assemblies/MoharThoughts/Tools.cs @@ -0,0 +1,13 @@ +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/SYS.dll b/1.6/Core/Assemblies/SYS.dll new file mode 100644 index 0000000000000000000000000000000000000000..bdfed0d6336ff964add7fed36b590e85058bad00 GIT binary patch literal 11776 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 literal 0 HcmV?d00001 diff --git a/1.6/Core/Assemblies/WearSetting.dll b/1.6/Core/Assemblies/WearSetting.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ac29cc3bf752011a4d3594f2935d933b7bc8ed0 GIT binary patch literal 40960 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 PA?WV`{?F(Ce;W8do7gpS literal 0 HcmV?d00001 diff --git a/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml b/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml new file mode 100644 index 0000000..5bb2285 --- /dev/null +++ b/1.6/Core/Defs/AbilityDef/AbilityDefs_Base.xml @@ -0,0 +1,138 @@ + + + + + + + PNModule_2day + 120000 + + + + PNModule_1day + 60000 + + + + PNModule_12hour + 30000 + + + + PNModule_6hour + 15000 + + + + 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/AutomataQualityProperty.xml b/1.6/Core/Defs/AutomataRace/AutomataQualityProperty.xml new file mode 100644 index 0000000..dfacb23 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/AutomataQualityProperty.xml @@ -0,0 +1,231 @@ + + + + PN_AutomataQualityProperty_Awful + Awful + +
  • + PN_Specialization_Combat + Paniel_Randombox_Awful +
  • +
  • + PN_Specialization_Engineer + Paniel_Randombox_Awful +
  • +
  • + PN_Specialization_Domestic + Paniel_Randombox_Awful +
  • +
    + + +
  • (0,0)
  • +
  • (256,13)
  • +
  • (424,2)
  • +
  • (592,1)
  • +
  • (760,0)
  • +
    +
    +
    + + + PN_AutomataQualityProperty_Poor + Poor + +
  • + PN_Specialization_Combat + Paniel_Randombox_Poor +
  • +
  • + PN_Specialization_Engineer + Paniel_Randombox_Poor +
  • +
  • + PN_Specialization_Domestic + Paniel_Randombox_Poor +
  • +
    + + +
  • (0,0)
  • +
  • (256,902)
  • +
  • (424,333)
  • +
  • (592,186)
  • +
  • (760,99)
  • +
  • (928,39)
  • +
  • (1096,24)
  • +
  • (1264,0)
  • +
    +
    +
    + + + PN_AutomataQualityProperty_Normal + Normal + +
  • + PN_Specialization_Combat + Paniel_Soldier_Normal +
  • +
  • + PN_Specialization_Engineer + Paniel_Worker_Normal +
  • +
  • + PN_Specialization_Domestic + Paniel_Maid_Normal +
  • +
    + + +
  • (0,0)
  • +
  • (256,5082)
  • +
  • (424,4023)
  • +
  • (592,3221)
  • +
  • (760,2455)
  • +
  • (928,1579)
  • +
  • (1096,1225)
  • +
  • (1264,942)
  • +
  • (1432,503)
  • +
  • (1600,246)
  • +
  • (2064,0)
  • +
    +
    +
    + + + PN_AutomataQualityProperty_Good + Good + +
  • + PN_Specialization_Combat + Paniel_Soldier_Good +
  • +
  • + PN_Specialization_Engineer + Paniel_Worker_Good +
  • +
  • + PN_Specialization_Domestic + Paniel_Maid_Good +
  • +
    + + +
  • (0,0)
  • +
  • (256,3347)
  • +
  • (424,4375)
  • +
  • (592,4907)
  • +
  • (760,5262)
  • +
  • (928,5428)
  • +
  • (1096,5377)
  • +
  • (1264,5242)
  • +
  • (1432,4762)
  • +
  • (1600,3741)
  • +
  • (2064,335)
  • +
  • (2232,187)
  • +
  • (2400,99)
  • +
    +
    +
    + + + PN_AutomataQualityProperty_Excellent + Excellent + +
  • + PN_Specialization_Combat + Paniel_Soldier_Excellent +
  • +
  • + PN_Specialization_Engineer + Paniel_Worker_Excellent +
  • +
  • + PN_Specialization_Domestic + Paniel_Maid_Excellent +
  • +
    + + +
  • (0,0)
  • +
  • (256,640)
  • +
  • (424,1223)
  • +
  • (592,1612)
  • +
  • (760,2064)
  • +
  • (928,2740)
  • +
  • (1096,3091)
  • +
  • (1264,3448)
  • +
  • (1432,4129)
  • +
  • (1600,5062)
  • +
  • (2064,4023)
  • +
  • (2232,3221)
  • +
  • (2400,2455)
  • +
    +
    +
    + + + PN_AutomataQualityProperty_Masterwork + Masterwork + +
  • + PN_Specialization_Combat + Paniel_Soldier_Masterwork +
  • +
  • + PN_Specialization_Engineer + Paniel_Worker_Masterwork +
  • +
  • + PN_Specialization_Domestic + Paniel_Maid_Masterwork +
  • +
    + + +
  • (0,0)
  • +
  • (256,16)
  • +
  • (424,44)
  • +
  • (592,73)
  • +
  • (760,119)
  • +
  • (928,214)
  • +
  • (1096,283)
  • +
  • (1264,368)
  • +
  • (1432,606)
  • +
  • (1600,951)
  • +
  • (2064,4375)
  • +
  • (2232,4907)
  • +
  • (2400,5262)
  • +
    +
    +
    + + + PN_AutomataQualityProperty_Legendary + Legendary + +
  • + PN_Specialization_Combat + Paniel_Soldier_Legendary +
  • +
  • + PN_Specialization_Engineer + Paniel_Worker_Legendary +
  • +
  • + PN_Specialization_Domestic + Paniel_Maid_Legendary +
  • +
    + + +
  • (1665,0)
  • +
  • (2064,1268)
  • +
  • (2232,1686)
  • +
  • (2400,2183)
  • +
    +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/AutomataRaceSettings.xml b/1.6/Core/Defs/AutomataRace/AutomataRaceSettings.xml new file mode 100644 index 0000000..c7d2182 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/AutomataRaceSettings.xml @@ -0,0 +1,78 @@ + + + + Paniel_Race + +
  • Outdoors
  • +
  • DrugDesire
  • +
  • RoomSize
  • +
  • Comfort
  • +
  • Bladder
  • +
    + true + false + false + false + +
  • + KnowColonistDied + PN_KnowColonyAutomatonDied +
  • +
  • + PawnWithGoodOpinionDied + PN_AutomatonWithGoodOpinionDied +
  • +
  • + PawnWithBadOpinionDied + PN_AutomatonWithBadOpinionDied +
  • +
  • + ColonistLost + PN_ColonyAutomatonLost +
  • +
  • + PawnWithGoodOpinionLost + PN_AutomatonWithGoodOpinionLost +
  • +
  • + PawnWithBadOpinionLost + PN_AutomatonWithBadOpinionLost +
  • +
  • + WitnessedDeathAlly + PN_WitnessedDestroyedAlly +
  • +
  • + WitnessedDeathNonAlly +
  • +
  • + ColonistBanished + PN_AutomatonBanished +
  • +
  • + ColonistBanishedToDie + PN_AutomatonBanishedToDie +
  • +
  • + PrisonerBanishedToDie +
  • +
    + +
  • Shooting
  • +
  • Melee
  • +
  • Construction
  • +
  • Mining
  • +
  • Cooking
  • +
  • Plants
  • +
  • Animals
  • +
  • Crafting
  • +
  • Artistic
  • +
  • Medicine
  • +
  • Social
  • +
  • Intellectual
  • +
    + + PN_indistryFaction +
    + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/AutomataSpecializations.xml b/1.6/Core/Defs/AutomataRace/AutomataSpecializations.xml new file mode 100644 index 0000000..f65d2d0 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/AutomataSpecializations.xml @@ -0,0 +1,26 @@ + + + + PN_Specialization_Combat + UI/Icons/Combat + make combat model.\n\nspecialized skills : shooting, melee, animals. + make combat automaton + packaged combat automaton + + + + PN_Specialization_Engineer + UI/Icons/Engineer + make engineer model.\n\nspecialized skills : construction, mining, crafting. + make engineer automaton + packaged engineer automaton + + + + PN_Specialization_Domestic + make domestic model.\n\nspecialized skills : cooking, plants, medical. + UI/Icons/Domestic + make domestic automaton + packaged domestic automaton + + \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/AutomataStatOverrideDef.xml b/1.6/Core/Defs/AutomataRace/AutomataStatOverrideDef.xml new file mode 100644 index 0000000..493e06b --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/AutomataStatOverrideDef.xml @@ -0,0 +1,48 @@ + + + + PN_PackagedAutomaton_MarketValue + Packaged_NormalAutomaton + MarketValue + + + + + + PN_Paniel_Race_MarketValue + Paniel_Race + MarketValue + + 1.00 + + + + + PN_Paniel_Race_ArmorRating_Sharp + Paniel_Race + ArmorRating_Sharp + + 0 + 0.68 + + + + + PN_Paniel_Race_ArmorRating_Blunt + Paniel_Race + ArmorRating_Blunt + + 0 + 0.68 + + + + + PN_Paniel_Race_ArmorRating_Heat + Paniel_Race + ArmorRating_Heat + + 1.0 + + + \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml b/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml new file mode 100644 index 0000000..66ecbb0 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/AutomataWearSetting.xml @@ -0,0 +1,346 @@ + + + + PN_WearSetting_OfficerModule + +
  • Paniel_Race
  • +
    + + + +
  • + +
  • PN_OfficerModule
  • + + + +
  • PN_SyncLegendary_Combat
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_MeisterModule
  • + + + +
  • PN_SyncLegendary_Engineer
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_IntensiveMedicalModule
  • + + + +
  • PN_SyncLegendary_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_FieldMedicModule
  • + + + +
  • PN_SyncLegendary_Combat
  • +
  • PN_SyncLegendary_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_RapidFireModule
  • + + + +
  • PN_SyncLegendary_Combat
  • +
  • PN_SyncMasterwork_Combat
  • +
  • PN_SyncExcellent_Combat
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_CQCModule
  • + + + +
  • PN_SyncLegendary_Combat
  • +
  • PN_SyncMasterwork_Combat
  • +
  • PN_SyncExcellent_Combat
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_MiningModule
  • + + + +
  • PN_SyncLegendary_Engineer
  • +
  • PN_SyncMasterwork_Engineer
  • +
  • PN_SyncExcellent_Engineer
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_ConstructionModule
  • + + + +
  • PN_SyncLegendary_Engineer
  • +
  • PN_SyncMasterwork_Engineer
  • +
  • PN_SyncExcellent_Engineer
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_CraftingModule
  • + + + +
  • PN_SyncLegendary_Engineer
  • +
  • PN_SyncMasterwork_Engineer
  • +
  • PN_SyncExcellent_Engineer
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_PlantsModule
  • + + + +
  • PN_SyncLegendary_Domestic
  • +
  • PN_SyncMasterwork_Domestic
  • +
  • PN_SyncExcellent_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_CookingModule
  • + + + +
  • PN_SyncLegendary_Domestic
  • +
  • PN_SyncMasterwork_Domestic
  • +
  • PN_SyncExcellent_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_NursingModule
  • + + + +
  • PN_SyncLegendary_Domestic
  • +
  • PN_SyncMasterwork_Domestic
  • +
  • PN_SyncExcellent_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + + +
  • + +
  • PN_ArrayModule
  • + + + +
  • PN_SyncLegendary_Combat
  • +
  • PN_SyncMasterwork_Combat
  • +
  • PN_SyncExcellent_Combat
  • +
  • PN_SyncLegendary_Engineer
  • +
  • PN_SyncMasterwork_Engineer
  • +
  • PN_SyncExcellent_Engineer
  • +
  • PN_SyncLegendary_Domestic
  • +
  • PN_SyncMasterwork_Domestic
  • +
  • PN_SyncExcellent_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + +
  • + +
  • PN_IntegratorModule
  • + + + +
  • PN_SyncLegendary_Combat
  • +
  • PN_SyncLegendary_Engineer
  • +
  • PN_SyncLegendary_Domestic
  • +
    + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    +
    + PN_CantReason_orhediff + +
  • PN_ModuleUnstable_Industrial
  • +
  • PN_ModuleUnstable_Spacer
  • +
    + true + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/Bodies/Body.xml b/1.6/Core/Defs/AutomataRace/Bodies/Body.xml new file mode 100644 index 0000000..d9290e7 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/Bodies/Body.xml @@ -0,0 +1,632 @@ + + + + PNBody + + + + PNTorso + torso case + Middle + Outside + +
  • Torso
  • +
    + +
  • + PNRibcage + ribcage frame + 0.036 + Inside + +
  • Torso
  • + + +
  • + PNSternum + sternum frame + 0.015 + Inside + +
  • Torso
  • + + +
  • + PNPelvis + pelvis frame + 0.025 + Bottom + Inside + +
  • Torso
  • + + +
  • + PNSpine + spine frame + 0.025 + Inside + +
  • Torso
  • + + +
  • + PNTail + tail + 0.017 + Bottom + +
  • Torso
  • + + + +
  • + PNStomach + energy absorbing part + 0.025 + Inside + +
  • Torso
  • + + +
  • + PNCore + engine core + 0.020 + Inside + +
  • Torso
  • + + +
  • + PNLung + left breathing part + 0.025 + Inside + +
  • Torso
  • + + +
  • + PNLung + right breathing part + 0.025 + Inside + +
  • Torso
  • + + +
  • + PNKidney + left oil filter + 0.017 + Inside + +
  • Torso
  • + + +
  • + PNKidney + right oil filter + 0.017 + Inside + +
  • Torso
  • + + +
  • + PNLiver + water filter + 0.025 + Inside + +
  • Torso
  • + + + +
  • + PNNeck + neck + 0.075 + Top + +
  • Neck
  • + + +
  • + PNHead + head case + 0.80 + +
  • UpperHead
  • +
  • FullHead
  • +
  • HeadAttackTool
  • + + +
  • + PNSkull + skull frame + 0.18 + Inside + +
  • UpperHead
  • +
  • FullHead
  • + + +
  • + PNBrain + brain core + 0.8 + +
  • UpperHead
  • +
  • FullHead
  • + + +
    + +
  • + PNEye + left visual sensor + 0.07 + +
  • FullHead
  • +
  • Eyes
  • + + LeftEye + +
  • + PNEye + right visual sensor + 0.07 + +
  • FullHead
  • +
  • Eyes
  • + + RightEye + +
  • + PNEar + left auditory sensor + 0.07 + +
  • UpperHead
  • +
  • FullHead
  • + + +
  • + PNEar + right auditory sensor + 0.07 + +
  • UpperHead
  • +
  • FullHead
  • + + +
  • + PNNose + olfactory sensor + 0.10 + +
  • FullHead
  • + + +
  • + PNJaw + jaw frame + 0.15 + +
  • Teeth
  • +
  • FullHead
  • + + +
  • + PNTongue + gustatory sensor + 0.001 + Inside + +
  • FullHead
  • + + +
    + +
    + +
    + +
  • + + PNShoulder + left shoulder + 0.12 + +
  • Shoulders
  • + + LeftShoulder + true + +
  • + PNClavicle + left clavicle frame + 0.09 + Top + Inside + +
  • Torso
  • + + true + +
  • + PNArm + left arm + 0.77 + +
  • Arms
  • + + true + +
  • + PNHumerus + left humerus frame + 0.1 + Inside + +
  • Arms
  • + + +
  • + PNRadius + left radius frame + 0.1 + Inside + +
  • Arms
  • + + +
  • + PNHand + left hand + 0.14 + Bottom + true + +
  • Hands
  • + + +
  • + PNFinger + left pinky + 0.06 + +
  • Hands
  • +
  • LeftHand
  • + + +
  • + PNFinger + left ring finger + 0.07 + +
  • Hands
  • +
  • LeftHand
  • + + +
  • + PNFinger + left middle finger + 0.08 + +
  • Hands
  • +
  • LeftHand
  • +
  • MiddleFingers
  • + + +
  • + PNFinger + left index finger + 0.07 + +
  • Hands
  • +
  • LeftHand
  • + + +
  • + PNFinger + left thumb + 0.08 + +
  • Hands
  • +
  • LeftHand
  • + + +
    + +
    + +
    + +
  • + + PNShoulder + right shoulder + 0.12 + +
  • Shoulders
  • + + RightShoulder + +
  • + PNClavicle + right clavicle frame + 0.09 + Top + Inside + +
  • Torso
  • + + +
  • + PNArm + right arm + 0.77 + +
  • Arms
  • + + +
  • + PNHumerus + right humerus frame + 0.1 + Inside + +
  • Arms
  • + + +
  • + PNRadius + right radius frame + 0.1 + Inside + +
  • Arms
  • + + +
  • + PNHand + right hand + 0.14 + Bottom + +
  • Hands
  • + + +
  • + PNFinger + right pinky + 0.06 + +
  • Hands
  • +
  • RightHand
  • + + +
  • + PNFinger + right ring finger + 0.07 + +
  • Hands
  • +
  • RightHand
  • + + +
  • + PNFinger + right middle finger + 0.08 + +
  • Hands
  • +
  • RightHand
  • +
  • MiddleFingers
  • + + +
  • + PNFinger + right index finger + 0.07 + +
  • Hands
  • +
  • RightHand
  • + + +
  • + PNFinger + right thumb + 0.08 + +
  • Hands
  • +
  • RightHand
  • + + +
    + +
    + +
    + +
  • + PNWaist + waist + 0 + Bottom + +
  • Waist
  • + + +
  • + + PNLeg + left leg + 0.14 + Bottom + +
  • Legs
  • + + LeftLeg + true + +
  • + PNFemur + left femur frame + 0.1 + Inside + +
  • Legs
  • + + +
  • + PNTibia + left tibia frame + 0.1 + Inside + +
  • Legs
  • + + +
  • + PNFoot + left foot + 0.1 + +
  • Feet
  • + + true + +
  • + PNToe + left little toe + 0.06 + +
  • Feet
  • + + +
  • + PNToe + left fourth toe + 0.07 + +
  • Feet
  • + + +
  • + PNToe + left middle toe + 0.08 + +
  • Feet
  • + + +
  • + PNToe + left second toe + 0.09 + +
  • Feet
  • + + +
  • + PNToe + left big toe + 0.09 + +
  • Feet
  • + + +
    + +
    + + +
  • + PNLeg + right leg + 0.14 + Bottom + +
  • Legs
  • + + RightLeg + +
  • + PNFemur + right femur frame + 0.1 + Inside + +
  • Legs
  • + + +
  • + PNTibia + right tibia frame + 0.1 + Inside + +
  • Legs
  • + + +
  • + PNFoot + right foot + 0.1 + +
  • Feet
  • + + +
  • + PNToe + right little toe + 0.06 + +
  • Feet
  • + + +
  • + PNToe + right fourth toe + 0.07 + +
  • Feet
  • + + +
  • + PNToe + right middle toe + 0.08 + +
  • Feet
  • + + +
  • + PNToe + right second toe + 0.09 + +
  • Feet
  • + + +
  • + PNToe + right big toe + 0.09 + +
  • Feet
  • + + +
    + +
    + +
    +
    +
    + +
    diff --git a/1.6/Core/Defs/AutomataRace/Bodies/Bodyparts.xml b/1.6/Core/Defs/AutomataRace/Bodies/Bodyparts.xml new file mode 100644 index 0000000..902cd5b --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/Bodies/Bodyparts.xml @@ -0,0 +1,427 @@ + + + + + 0 + false + + + + + PNTorso + + 40 + true + false + + + + PNRibcage + + 30 + 0 + false + true + 0 + +
  • BreathingSourceCage
  • +
    + false +
    + + + PNSternum + + 20 + 0 + false + true + 0 + +
  • BreathingSourceCage
  • +
    + false +
    + + + PNPelvis + + 25 + 0 + false + true + 0 + +
  • Pelvis
  • +
    + false +
    + + + PNSpine + + 25 + 6 + false + true + 0 + false + +
  • Spine
  • +
    +
    + + + PNTail + + 30 + 3 + true + true + true + + + + + + PNStomach + + 20 + false + +
  • MetabolismSource
  • +
    + false +
    + + + PNCore + + 15 + 5 + false + +
  • BloodPumpingSource
  • +
    + false +
    + + + PNLung + + 15 + false + +
  • BreathingSource
  • +
    + false +
    + + + PNKidney + + 15 + false + +
  • BloodFiltrationKidney
  • +
    + false +
    + + + PNLiver + + 20 + false + +
  • BloodFiltrationLiver
  • +
  • MetabolismSource
  • +
    + false +
    + + + + + PNNeck + + 25 + 4 + true + +
  • BreathingPathway
  • +
  • EatingPathway
  • +
  • TalkingPathway
  • +
    + false +
    + + + PNHead + + 25 + true + false + 2 + + + + PNSkull + + 25 + 0 + false + true + false + 0 + false + + + + PNBrain + + 10 + 9999999 + true + false + +
  • ConsciousnessSource
  • +
    + false +
    + + + PNEye + + 10 + 15 + true + false + true + true + +
  • SightSource
  • +
    + +
  • + Blunt + 0 +
  • +
    +
    + + + PNEar + + 12 + 5 + true + true + +
  • HearingSource
  • +
    +
    + + + PNNose + + 10 + 5 + true + true + true + 0 + 0 + + + + PNJaw + + 20 + 2 + 0 + false + true + true + 0 + +
  • EatingSource
  • +
  • TalkingSource
  • +
    +
    + + + PNTongue + + false + 0 + true + true + remove + +
  • Tongue
  • +
    +
    + + + + + PNShoulder + + 30 + true + +
  • ManipulationLimbSegment
  • +
  • Mirrored
  • +
    +
    + + + PNClavicle + + 25 + 0 + false + true + 0 + +
  • ManipulationLimbSegment
  • +
  • Mirrored
  • +
    + false +
    + + + PNArm + + 30 + true + +
  • ManipulationLimbCore
  • +
  • Mirrored
  • +
    +
    + + + PNHumerus + + 25 + 0 + false + true + 0 + +
  • ManipulationLimbSegment
  • +
  • Mirrored
  • +
    +
    + + + PNRadius + + 20 + 0 + false + true + 0 + +
  • ManipulationLimbSegment
  • +
  • Mirrored
  • +
    +
    + + + PNHand + + 20 + 0.5 + true + +
  • ManipulationLimbSegment
  • +
    +
    + + + PNFinger + + 8 + 8 + true + true + +
  • ManipulationLimbDigit
  • +
  • Mirrored
  • +
    +
    + + + + + PNWaist + + true + + + + PNLeg + + 30 + true + +
  • MovingLimbCore
  • +
    +
    + + + PNFemur + + 25 + 0 + false + true + 0 + +
  • MovingLimbSegment
  • +
  • Mirrored
  • +
    +
    + + + PNTibia + + 25 + 0 + false + true + 0 + +
  • MovingLimbSegment
  • +
  • Mirrored
  • +
    +
    + + + PNFoot + + 25 + 0.5 + true + +
  • MovingLimbSegment
  • +
    +
    + + + PNToe + + 8 + 10 + true + true + +
  • MovingLimbDigit
  • +
  • Mirrored
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/HeadTypeDefs/HeadTypeDefs.xml b/1.6/Core/Defs/AutomataRace/HeadTypeDefs/HeadTypeDefs.xml new file mode 100644 index 0000000..9ba6a84 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/HeadTypeDefs/HeadTypeDefs.xml @@ -0,0 +1,74 @@ + + + + PNHead1 + Paniel/Heads/PNHead/PNHead1 + None + + + + PNHead2 + Paniel/Heads/PNHead/PNHead2 + None + + + + PNHead3 + Paniel/Heads/PNHead/PNHead3 + None + + + + PNHead4 + Paniel/Heads/PNHead/PNHead4 + None + + + + PNHead5 + Paniel/Heads/PNHead/PNHead5 + None + + + + PNHead6 + Paniel/Heads/PNHead/PNHead6 + None + + + + PNHead7 + Paniel/Heads/PNHead/PNHead7 + None + + + + PNHead8 + Paniel/Heads/PNHead/PNHead8 + None + + + + PNHead9 + Paniel/Heads/PNHead/PNHead9 + None + + + + PNHead10 + Paniel/Heads/PNHead/PNHead10 + None + + + + PNHead11 + Paniel/Heads/PNHead/PNHead11 + None + + + + PNHead12 + Paniel/Heads/PNHead/PNHead12 + None + + \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/PanielBackstoryDef.xml b/1.6/Core/Defs/AutomataRace/PanielBackstoryDef.xml new file mode 100644 index 0000000..1709827 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/PanielBackstoryDef.xml @@ -0,0 +1,1209 @@ + + + + + +
  • PanielBaseHediff
  • +
  • PN_Immune_System
  • +
  • PN_Learning_Limit_System
  • +
  • PN_AutomatonFuel_Addiction
  • +
  • PN_Maintenance
  • +
    + +
  • + Kind +
  • +
  • + Asexual +
  • +
  • + PN_PerfectMemory +
  • +
    + +
  • + ShootingAccuracy +
  • +
  • + Tough +
  • +
  • + DrugDesire +
  • +
  • + Cannibal +
  • +
  • + Greedy +
  • +
  • + Jealous +
  • +
  • + DislikesMen +
  • +
  • + DislikesWomen +
  • +
  • + AnnoyingVoice +
  • +
  • + CreepyBreathing +
  • +
  • + Wimp +
  • +
  • + Nudist +
  • +
  • + Abrasive +
  • +
  • + Masochist +
  • +
  • + Ascetic +
  • +
  • + Gay +
  • +
  • + Bisexual +
  • +
  • + Transhumanist +
  • +
  • + BodyPurist +
  • +
  • + GreatMemory +
  • +
  • + Gourmand +
  • +
  • + Beauty +
  • +
  • + Beauty +
  • +
  • + Immunity +
  • +
  • + Delicate +
  • +
  • + Recluse +
  • +
    + +
  • PN_storys
  • +
    +
    + + + + + PN_Test1 + test1 + test1 + aa + Childhood + + +
  • PN_Test1
  • +
    + + +
    + + + + PN_Test2 + test2 + test2 + aa + Adulthood + + +
  • PN_Test2
  • +
    + +
    + + + Paniel_Awful_Backstory + Automaton (awful) + Automaton (awfl) + This automaton is made wrong. Seriously. + Childhood + + + + + + + +
  • Paniel_Story_Awful
  • +
    + + + +
    + + + Paniel_Poor_Backstory + Automaton (poor) + Automaton (poor) + This automaton is made wrong. + Childhood + + + + + + +
  • Paniel_Story_Poor
  • +
    + + + +
    + + + Paniel_Normal_Backstory + Automaton (normal) + Automaton (norm) + It's an ordinary automaton. + Childhood + + + + + + +
  • Paniel_Story_Start
  • +
  • Paniel_Story_Normal
  • +
    + + + +
    + + + Paniel_Good_Backstory + Automaton (good) + Automaton (good) + It's a well-made automaton. + Childhood + + + + + + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_Testsubject
  • +
    + + + +
    + + + Paniel_Excellent_Backstory + Automaton (excellent) + Automaton (exc) + It's a very well-made automaton. It is mainly used by nobles. + Childhood + + + + + + +
  • Paniel_Story_Excellent
  • +
    + + + +
    + + + Paniel_Masterwork_Backstory + Automaton (masterwork) + Automaton (mast) + It's an automaton perfected by Meister. Everything works perfectly. It is mainly used by nobles. + Childhood + + + + + + +
  • Paniel_Story_Masterwork
  • +
    + + + +
    + + + Paniel_Legendary_Backstory + Automaton (legendary) + Automaton (legd) + It's an incredibly perfect automaton. It's showing performance that goes beyond its original intentions. It is mainly used by royalty. + Childhood + + + + + + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_testStart
  • +
    + + + +
    + + + + Paniel_Automaton_Backstory + Automaton + Automaton + backstory + Adulthood + + + +
  • Artistic
  • +
  • Social
  • +
  • Intellectual
  • +
    + +
  • Paniel_Story_Basic
  • +
    + + + +
    + + + Paniel_AutomatonB_Backstory + Automaton for Noble + Noble Automaton + backstory + Adulthood + + + + +
  • Artistic
  • +
  • Social
  • +
  • Intellectual
  • +
    + +
  • Paniel_Story_Noble
  • +
    + + + +
    + + + Paniel_Royalmaiden_Backstory + Automaton for Royal + Royal Automaton + backstory + Adulthood + + + + + + +
  • Paniel_Story_Royal
  • +
    + + + +
    + + + + Paniel_FailureA_Backstory + Automaton Failure + Failure + This automaton is made wrong. Seriously. + Adulthood + +
  • ManualSkilled
  • +
  • Caring
  • +
  • Social
  • +
  • Intellectual
  • +
  • Animals
  • +
  • Violent
  • +
  • Cleaning
  • +
  • Firefighting
  • +
  • Hauling
  • +
  • ManualDumb
  • +
    + + 20 + + +
  • Paniel_Story_FailureA
  • +
    + +
  • PN_Give_Awful_Failure
  • +
    +
    + + + Paniel_FailureB_Backstory + Automaton Failure + Failure + This automaton is made wrong. + Adulthood + +
  • ManualSkilled
  • +
  • Caring
  • +
  • Social
  • +
  • Intellectual
  • +
  • Animals
  • +
  • Artistic
  • +
    + +
  • Paniel_Story_FailureB
  • +
    + +
  • PN_Give_Poor_Failure
  • +
    +
    + + + + +
  • + Industriousness +
  • +
  • + TorturedArtist +
  • +
    + +
  • Artistic
  • +
  • Social
  • +
  • Intellectual
  • +
  • Cooking
  • +
  • Crafting
  • +
  • PlantWork
  • +
    +
    + + + +
  • + TooSmart +
  • +
  • + FastLearner +
  • +
  • + SlowLearner +
  • +
    +
    + + + Paniel_MilitiaA_Backstory + Automaton Militia + Militia + This automaton is mainly used by militias. + Adulthood + + 3 + 3 + 3 + + +
  • Paniel_Story_Start
  • +
  • Paniel_Story_MilitiaA
  • +
    + +
  • PN_Give_Normal_Combat
  • +
    +
    + + + Paniel_MilitiaB_Backstory + Automaton Militia + Militia + This automaton is mainly used by militias. + Adulthood + + 3 + 3 + 3 + 1 + + +
  • Paniel_Story_MilitiaB
  • +
    + +
  • PN_Give_Good_Combat
  • +
    +
    + + + Paniel_SoldierA_Backstory + Automaton Soldier + Soldier + This automaton is used as a soldier in the military. + Adulthood + + 9 + 9 + 9 + 3 + + +
  • Paniel_Story_SoldierA
  • +
    + +
  • PN_Give_Excellent_Combat
  • +
    +
    + + + Paniel_SoldierB_Backstory + Automaton Soldier + Soldier + This automaton is used as a soldier in the military. + Adulthood + + 12 + 12 + 12 + 5 + + +
  • Paniel_Story_SoldierB
  • +
    + +
  • PN_Give_Masterwork_Combat
  • +
    +
    + + + Paniel_Royalguard_Backstory + Automaton Royal guard + Royal guard + This automaton is used by the Royal Guard. + Adulthood + + 18 + 18 + 18 + 7 + + +
  • Paniel_Story_Royalguard
  • +
    + +
  • PN_Give_Legendary_Combat
  • +
    +
    + + + + +
  • + Brawler +
  • +
    + +
  • Animals
  • +
  • Social
  • +
  • Cooking
  • +
  • Caring
  • +
  • PlantWork
  • +
    +
    + + + +
  • + TooSmart +
  • +
  • + FastLearner +
  • +
  • + SlowLearner +
  • +
    +
    + + + Paniel_ApprenticeA_Backstory + Automaton Apprentice + Apprentice + This automaton is used in many workshops for chores. + Adulthood + + 3 + 3 + 3 + + +
  • Paniel_Story_Start
  • +
  • Paniel_Story_ApprenticeA
  • +
    + +
  • PN_Give_Normal_Engineer
  • +
    +
    + + + Paniel_ApprenticeB_Backstory + Automaton Apprentice + Apprentice + This automaton is used in many workshops for chores. + Adulthood + + 3 + 3 + 3 + 1 + + +
  • Paniel_Story_ApprenticeB
  • +
    + +
  • PN_Give_Good_Engineer
  • +
    +
    + + + Paniel_JourneymanA_Backstory + Automaton journeyman + Journeyman + This automaton is used to assist the meister. + Adulthood + + 9 + 9 + 9 + 3 + + +
  • Paniel_Story_journeymanA
  • +
    + +
  • PN_Give_Excellent_Engineer
  • +
    +
    + + + Paniel_JourneymanB_Backstory + Automaton journeyman + Journeyman + This automaton is used to assist the meister. + Adulthood + + 12 + 12 + 12 + 5 + + +
  • Paniel_Story_journeymanB
  • +
    + +
  • PN_Give_Masterwork_Engineer
  • +
    +
    + + + Paniel_Meister_Backstory + Automaton Meister + Meister + This automaton has better crafting skills than humans. + Adulthood + + 18 + 18 + 18 + 7 + + +
  • Paniel_Story_Meister
  • +
    + +
  • PN_Give_Legendary_Engineer
  • +
    +
    + + + + +
  • + Brawler +
  • +
  • + TorturedArtist +
  • +
    + +
  • Animals
  • +
  • Mining
  • +
  • Intellectual
  • +
    +
    + + + +
  • + TooSmart +
  • +
  • + FastLearner +
  • +
  • + SlowLearner +
  • +
    +
    + + + Paniel_MaidA_Backstory + Automaton Maid + Maid + This automaton is used as a maid in many homes. + Adulthood + + 3 + 3 + 3 + + +
  • Paniel_Story_Start
  • +
  • Paniel_Story_MaidA
  • +
    + +
  • PN_Give_Normal_Domestic
  • +
    +
    + + + Paniel_MaidB_Backstory + Automaton Maid + Maid + This automaton is used as a maid in many homes. + Adulthood + + 6 + 6 + 6 + 1 + + +
  • Paniel_Story_MaidB
  • +
    + +
  • PN_Give_Good_Domestic
  • +
    +
    + + + Paniel_HousemaidA_Backstory + Automaton Housekeeper maid + Housekeeper Maid + This automaton leads the other maids in the noble mansion. + Adulthood + + 9 + 9 + 9 + 3 + + +
  • Paniel_Story_HousemaidA
  • +
    + +
  • PN_Give_Excellent_Domestic
  • +
    +
    + + + Paniel_HousemaidB_Backstory + Automaton Housekeeper maid + Housekeeper + This automaton leads the other maids in the noble mansion. + Adulthood + + 12 + 12 + 12 + 5 + + +
  • Paniel_Story_HousemaidB
  • +
    + +
  • PN_Give_Masterwork_Domestic
  • +
    +
    + + + Paniel_Ladysmaid_Backstory + Automaton Lady's maid + Lady's maid + This automaton is used as a royal servant. + Adulthood + + 18 + 18 + 18 + 7 + + +
  • Paniel_Story_Ladysmaid
  • +
    + +
  • PN_Give_Legendary_Domestic
  • +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + Pyromaniac +
  • +
  • + TooSmart +
  • +
  • + FastLearner +
  • +
  • + SlowLearner +
  • +
    +
    + + + Paniel_MilitiaA_Backstory_PA + Automaton Militia (PA) + Militia + This automaton is mainly used by militias.\n\n(PA) : PnL authenticated + Adulthood + + 3 + 3 + 3 + + +
  • Paniel_Story_MilitiaA_PA
  • +
    + +
  • PN_Give_Normal_Combat_PA
  • +
    +
    + + + Paniel_MilitiaB_Backstory_PA + Automaton Militia (PA) + Militia + This automaton is mainly used by militias.\n\n(PA) : PnL authenticated + Adulthood + + 6 + 6 + 6 + 1 + + +
  • Paniel_Story_MilitiaB_PA
  • +
    + +
  • PN_Give_Good_Combat_PA
  • +
    +
    + + + Paniel_SoldierA_Backstory_PA + Automaton Soldier (PA) + Soldier + This automaton is used as a soldier in the military.\n\n(PA) : PnL authenticated + Adulthood + + 9 + 9 + 9 + 3 + + +
  • Paniel_Story_SoldierA_PA
  • +
    + +
  • PN_Give_Excellent_Combat_PA
  • +
    +
    + + + Paniel_SoldierB_Backstory_PA + Automaton Soldier (PA) + Soldier + This automaton is used as a soldier in the military.\n\n(PA) : PnL authenticated + Adulthood + + 12 + 12 + 12 + 5 + + +
  • Paniel_Story_SoldierB_PA
  • +
    + +
  • PN_Give_Masterwork_Combat_PA
  • +
    +
    + + + Paniel_Royalguard_Backstory_PA + Automaton Royal guard (PA) + Royal guard + This automaton is used by the Royal Guard.\n\n(PA) : PnL authenticated + Adulthood + + 18 + 18 + 18 + 7 + + +
  • Paniel_Story_Royalguard_PA
  • +
    + +
  • PN_Give_Legendary_Combat_PA
  • +
    +
    + + + + +
  • + Pyromaniac +
  • +
  • + TooSmart +
  • +
  • + FastLearner +
  • +
  • + SlowLearner +
  • +
    +
    + + + Paniel_ApprenticeA_Backstory_PA + Automaton Apprentice (PA) + Apprentice + This automaton is used in many workshops for chores.\n\n(PA) : PnL authenticated + Adulthood + + 3 + 3 + 3 + + +
  • Paniel_Story_ApprenticeA_PA
  • +
    + +
  • PN_Give_Normal_Engineer_PA
  • +
    +
    + + + Paniel_ApprenticeB_Backstory_PA + Automaton Apprentice (PA) + Apprentice + This automaton is used in many workshops for chores.\n\n(PA) : PnL authenticated + Adulthood + + 6 + 6 + 6 + 1 + + +
  • Paniel_Story_ApprenticeB_PA
  • +
    + +
  • PN_Give_Good_Engineer_PA
  • +
    +
    + + + Paniel_JourneymanA_Backstory_PA + Automaton journeyman (PA) + Journeyman + This automaton is used to assist the meister.\n\n(PA) : PnL authenticated + Adulthood + + 9 + 9 + 9 + 3 + + +
  • Paniel_Story_journeymanA_PA
  • +
    + +
  • PN_Give_Excellent_Engineer_PA
  • +
    +
    + + + Paniel_JourneymanB_Backstory_PA + Automaton journeyman (PA) + Journeyman + This automaton is used to assist the meister.\n\n(PA) : PnL authenticated + Adulthood + + 12 + 12 + 12 + 5 + + +
  • Paniel_Story_journeymanB_PA
  • +
    + +
  • PN_Give_Masterwork_Engineer_PA
  • +
    +
    + + + Paniel_Meister_Backstory_PA + Automaton Meister (PA) + Meister + This automaton has better crafting skills than humans.\n\n(PA) : PnL authenticated + Adulthood + + 18 + 18 + 18 + 7 + + +
  • Paniel_Story_Meister_PA
  • +
    + +
  • PN_Give_Legendary_Engineer_PA
  • +
    +
    + + + + +
  • + Pyromaniac +
  • +
  • + TooSmart +
  • +
  • + FastLearner +
  • +
  • + SlowLearner +
  • +
    +
    + + + Paniel_MaidA_Backstory_PA + Automaton Maid (PA) + Maid + This automaton is used as a maid in many homes.\n\n(PA) : PnL authenticated + Adulthood + + 3 + 3 + 3 + + +
  • Paniel_Story_MaidA_PA
  • +
    + +
  • PN_Give_Normal_Domestic_PA
  • +
    +
    + + + Paniel_MaidB_Backstory_PA + Automaton Maid (PA) + Maid + This automaton is used as a maid in many homes.\n\n(PA) : PnL authenticated + Adulthood + + 6 + 6 + 6 + 1 + + +
  • Paniel_Story_MaidB_PA
  • +
    + +
  • PN_Give_Good_Domestic_PA
  • +
    +
    + + + Paniel_HousemaidA_Backstory_PA + Automaton Housekeeper maid (PA) + Housekeeper Maid + This automaton leads the other maids in the noble mansion.\n\n(PA) : PnL authenticated + Adulthood + + 9 + 9 + 9 + 3 + + +
  • Paniel_Story_HousemaidA_PA
  • +
    + +
  • PN_Give_Excellent_Domestic_PA
  • +
    +
    + + + Paniel_HousemaidB_Backstory_PA + Automaton Housekeeper maid (PA) + Housekeeper + This automaton leads the other maids in the noble mansion.\n\n(PA) : PnL authenticated + Adulthood + + 12 + 12 + 12 + 5 + + +
  • Paniel_Story_HousemaidB_PA
  • +
    + +
  • PN_Give_Masterwork_Domestic_PA
  • +
    +
    + + + Paniel_Ladysmaid_Backstory_PA + Automaton Lady's maid (PA) + Lady's maid + This automaton is used as a royal servant.\n\n(PA) : PnL authenticated + Adulthood + + 18 + 18 + 18 + 7 + + +
  • Paniel_Story_Ladysmaid_PA
  • +
    + +
  • PN_Give_Legendary_Domestic_PA
  • +
    +
    + + + + + Paniel_Testsubject_Backstory + Automaton Test subject (PA) + Test subject + This automaton was built to test a new module at PnL industry. It is showing signs of mental instability.\n\n(PA) : PnL authenticated + Adulthood + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + +
  • Artistic
  • +
    + +
  • Paniel_Story_Testsubject
  • +
    + +
  • PN_Give_Testsubject
  • +
    + + + + +
  • + NaturalMood +
  • +
  • + NaturalMood +
  • +
  • + Nerves +
  • +
  • + Nerves +
  • +
  • + PsychicSensitivity +
  • +
  • + PsychicSensitivity +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/PanielRaceDef.xml b/1.6/Core/Defs/AutomataRace/PanielRaceDef.xml new file mode 100644 index 0000000..2e30751 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/PanielRaceDef.xml @@ -0,0 +1,982 @@ + + + + Paniel_Race + + This pawn is automaton designed by PnL Industry. + BulletImpact_Metal + None + + + 0 + false + 8 + 0 + + + +
  • + Psychite + false +
  • +
  • + GoJuice + false +
  • +
    + + + +
  • + Kind +
  • +
  • + Asexual +
  • +
  • + PN_PerfectMemory +
  • +
    + + + +
  • + ShootingAccuracy +
  • +
  • + Tough +
  • +
  • + DrugDesire +
  • +
  • + Cannibal +
  • +
  • + Greedy +
  • +
  • + Jealous +
  • +
  • + DislikesMen +
  • +
  • + DislikesWomen +
  • +
  • + AnnoyingVoice +
  • +
  • + CreepyBreathing +
  • +
  • + Wimp +
  • +
  • + Nudist +
  • +
  • + Abrasive +
  • +
  • + Masochist +
  • +
  • + Ascetic +
  • +
  • + Gay +
  • +
  • + Bisexual +
  • +
  • + Transhumanist +
  • +
  • + BodyPurist +
  • +
  • + GreatMemory +
  • +
  • + Gourmand +
  • +
  • + Beauty +
  • +
  • + Beauty +
  • +
  • + Immunity +
  • +
  • + Delicate +
  • +
  • + Recluse +
  • +
    + + 1 + true + + 4 + 1 + +
  • PNHead1
  • +
  • PNHead2
  • +
  • PNHead3
  • +
  • PNHead4
  • +
  • PNHead5
  • +
  • PNHead6
  • +
  • PNHead7
  • +
  • PNHead8
  • +
  • PNHead9
  • +
  • PNHead10
  • +
  • PNHead11
  • +
  • PNHead12
  • +
    + +
  • Female
  • +
    + (-0.1, 0.0) + (1, 1) + (1, 1) + PNHead + + + +
  • + skin + + 0 + 0 + +
  • +
  • + hair + + +
  • + 100 + (255,255,255) +
  • + + + +
    + + + +
  • + 1 + Paniel/Hairs/Addon/Hair + CutoutComplex + false + hair + true + + + PNHead + + + + + -0.275 + + (0,0) + + + + -0.326 + + (0,0) + + + + -0.326 + + (0,0) + + + +
  • + + +
  • + 1 + Paniel/Heads/Face/RareFace/AwflFace + CutoutComplex + true + false + skin + true + + + PNHead + + + Paniel_Awful_Backstory + + + true + false + false + + + + + -0.276 + + (0,0) + + + + -0.276 + + (0,0) + + + + -0.276 + + (0,0) + + + +
  • + + +
  • + 1 + Paniel/Heads/PNSleep/PNSleep + CutoutComplex + true + false + skin + true + + Fresh,Rotting,Dessicated + + PNHead + + + false + true + true + + + + + Paniel/Heads/Face/RareFace/AwflSleep + + + + + + -0.276 + + (0,0) + + + + -0.276 + + (0,0) + + + + -0.276 + + (0,0) + + + +
  • + +
  • + 1 + Paniel/Ear/PanielLeftEar + CutoutComplex + false + skin + true + + + left auditory sensor + + + + + -0.279 + + (0,0) + + + + -0.324 + + (0,0) + + + + -0.327 + + (0,0) + + + +
  • + +
  • + 1 + Paniel/Ear/PanielRightEar + CutoutComplex + false + skin + true + + + right auditory sensor + + + + + -0.279 + + (0,0) + + + + -0.324 + + (0,0) + + + + -0.327 + + (0,0) + + + +
  • + +
  • + 1 + Paniel/Tail/PanielTail + CutoutComplex + false + skin + Tail + + + PNTail + + + + + 0 + + (0,0.55) + + + + 0 + + (-0.42,0.22) + + + + 0 + + (-0.42,0.22) + + + +
  • + +
    +
    +
    + + + Paniel/Body/Naked_Female + + + Paniel/Heads/PNHead/PNHead1 + + Things/Pawn/Humanlike/Bodies/Dessicated/Dessicated_Thin + + +
  • + HairDef + + false + +
  • +
  • + BeardDef + + false + +
  • +
  • + TattooDef + + false + +
  • +
    + + + +
  • + PN_KnowColonyAutomatonDied + PN_KnowColonyAutomatonDiedforPN +
  • +
  • + PN_AutomatonWithGoodOpinionDied + PN_AutomatonWithGoodOpinionDiedforPN +
  • +
  • + PN_AutomatonWithBadOpinionDied + PN_AutomatonWithBadOpinionDiedforPN +
  • +
  • + PN_ColonyAutomatonLost + PN_ColonyAutomatonLostforPN +
  • +
  • + PN_AutomatonWithGoodOpinionLost + PN_AutomatonWithGoodOpinionLostforPN +
  • +
  • + PN_AutomatonWithBadOpinionLost + PN_AutomatonWithBadOpinionLostforPN +
  • +
  • + PN_WitnessedDestroyedAlly + PN_WitnessedDestroyedAllyforPN +
  • +
  • + PN_AutomatonBanished + PN_AutomatonBanishedforPN +
  • +
  • + PN_AutomatonBanishedToDie + PN_AutomatonBanishedToDieforPN +
  • + + +
  • + AteLavishMeal + PN_AteLavishMeal +
  • +
  • + AteFineMeal + PN_AteFineMeal +
  • + + +
  • + DefeatedMechCluster + PN_DefeatedMechCluster +
  • + + + +
    + + + +
  • KnowGuestExecuted
  • +
  • KnowPrisonerDiedInnocent
  • + +
  • AteRawFood
  • +
  • AteNutrientPasteMeal
  • + +
  • AteWithoutTable
  • +
  • SleepDisturbed
  • +
  • SleptOutside
  • +
  • SleptOnGround
  • +
  • SleptInCold
  • +
  • SleptInHeat
  • +
  • KnowPrisonerSold
  • +
  • ReleasedHealthyPrisoner
  • +
  • KnowGuestOrganHarvested
  • +
  • SoakingWet
  • +
  • ButcheredHumanlikeCorpse
  • +
  • KnowButcheredHumanlikeCorpse
  • +
  • ButcheredHumanlikeCorpseOpinion
  • +
  • ObservedLayingCorpse
  • +
  • ObservedLayingRottingCorpse
  • +
  • DeniedJoining
  • +
  • PrisonerBanishedToDie
  • + +
  • SleptInBarracks
  • + + +
  • EnvironmentDark
  • +
  • Sick
  • +
  • EnvironmentCold
  • +
  • EnvironmentHot
  • + +
  • NeedRoomSize
  • +
  • NeedOutdoors
  • +
  • DrugDesireFascination
  • +
  • DrugDesireFascinationSatisfied
  • +
  • DrugDesireInterest
  • +
  • DrugDesireInterestSatisfied
  • + +
  • PrisonBarracks
  • + +
  • Incestuous
  • +
  • Disfigured
  • +
  • HardWorkerVsLazy
  • +
  • TeetotalerVsChemicalInterest
  • +
  • TeetotalerVsAddict
  • +
  • ChemicalInterestVsTeetotaler
  • +
  • Drunk
  • +
  • Pretty
  • +
  • Ugly
  • +
  • AnnoyingVoice
  • +
  • CreepyBreathing
  • +
  • Man
  • +
  • Woman
  • +
  • TranshumanistAppreciation
  • +
  • BodyPuristDisgust
  • +
  • ButcheredHumanlikeCorpseOpinion
  • +
  • AteRawHumanlikeMeat
  • +
  • KilledColonyAnimal
  • +
  • NotBondedAnimalMaster
  • + +
  • SharedBed
  • +
  • Naked
  • +
  • Pain
  • +
  • Joywire
  • +
  • DoingPassionateWork
  • + +
  • MasochistPain
  • +
  • ProsthophileNoProsthetic
  • +
  • ProsthophileHappy
  • +
  • ProsthophobeUnhappy
  • +
  • ClothedNudist
  • +
  • HappyNude
  • +
  • Greedy
  • +
  • Jealous
  • +
  • Ascetic
  • + +
  • PN_Atefuel_nopn
  • +
  • PsychiteWithdrawal
  • +
  • YayoHigh
  • +
  • PsychiteTeaHigh
  • +
  • FlakeHigh
  • +
  • GoJuiceHigh
  • +
  • GoJuiceWithdrawal
  • + + + + + + + + + + +
  • IdeoRoleLost
  • +
  • IdeoRoleEmpty
  • +
  • IdeoLeaderResentmentStandard
  • +
  • IdeoLeaderResentmentDisapproved
  • +
  • IdeoLeaderResentmentHorrible
  • +
  • IdeoLeaderResentmentAbhorrent
  • +
  • IdeoRoleApparelRequirementNotMet
  • + + +
  • ObservedTerror
  • +
  • ObservedGibbetCage
  • +
  • ObservedSkullspike
  • + + + +
  • LookChangeDesired
  • + + +
  • PN_OfficerCommandThought
  • +
  • PN_MeisterAdviceThought
  • +
  • AgeReversalDemanded
  • +
    +
    + + + false + false + false + false + true + + + + + + + + + + +
  • PN_ApparelBasic
  • +
  • PN_ApparelBasicHat
  • + +
  • PN_ApparelCape
  • + +
  • PN_ApparelMilitia
  • +
  • PN_ApparelMilitiaHat
  • + +
  • PN_ApparelSoldier
  • +
  • PN_ApparelSoldierHat
  • + +
  • PN_ApparelWorker
  • +
  • PN_ApparelWorkerHat
  • + +
  • PN_ApparelMaid
  • +
  • PN_ApparelMaidHat
  • + +
  • PN_ApparelRoyalguard
  • +
  • PN_ApparelRoyalguardHat
  • + +
  • PN_ApparelRoyalmeister
  • +
  • PN_ApparelRoyalmeisterHat
  • +
  • PN_ApparelRoyalmeisterHatWithMonocle
  • +
  • PN_ApparelRoyalmeisterMonocle
  • + +
  • PN_ApparelRoyalmaid
  • +
  • PN_ApparelRoyalmaidHat
  • + +
  • PN_EliteSecurityUniform
  • +
  • PN_EliteSecurityHat
  • + + +
  • PN_OfficerModule
  • +
  • PN_MeisterModule
  • +
  • PN_IntensiveMedicalModule
  • +
  • PN_FieldMedicModule
  • + +
  • PN_RapidFireModule
  • +
  • PN_CQCModule
  • +
  • PN_MiningModule
  • +
  • PN_ConstructionModule
  • +
  • PN_CraftingModule
  • +
  • PN_PlantsModule
  • +
  • PN_CookingModule
  • +
  • PN_NursingModule
  • + +
  • PN_ArrayModule
  • +
  • PN_IntegratorModule
  • + +
    + + + +
  • Apparel_ShieldBelt
  • +
  • Apparel_PsychicShockLance
  • +
  • Apparel_PsychicInsanityLance
  • +
  • Apparel_SmokepopBelt
  • +
  • Apparel_FirefoampopPack
  • +
  • OrbitalTargeterBombardment
  • +
  • OrbitalTargeterPowerBeam
  • +
  • TornadoGenerator
  • +
  • Apparel_PackJump
  • +
  • Apparel_PackBroadshield
  • +
  • OrbitalTargeterMechCluster
  • +
  • Apparel_PackTox
  • + + +
  • Eccentric_PhasedShieldBelt
  • +
  • Eccentric_ModulatedShieldBelt
  • +
  • Eccentric_LayeredShieldBelt
  • + +
    + + +
  • PN_Chainsword
  • +
  • PN_Chainlongsword
  • +
  • PN_TwinPistol
  • +
  • PN_RoyalRifle
  • +
  • PN_RoyalRifle_Point
  • +
  • PN_RoyalHeavySlug
  • +
  • PN_RoyalMachinegun
  • +
  • PN_RoyalMachinegun_Mount
  • +
  • PN_RoyalMachinegun_Overheated
  • +
  • PN_RoyalLSW
  • +
  • PN_RoyalLSW_IE
  • +
  • PN_RoyalLSW_EMP
  • +
  • PN_RoyalLSW_Smoke
  • +
  • PN_RoyalLSW_FF
  • +
  • PN_RoyalSaber_Bladelink
  • +
  • PN_Chainsword_Bladelink
  • +
  • PN_RoyalHammer_Bladelink
  • +
  • PN_StormLance_Bladelink
  • + +
    + +
  • PN_AutomatonFuel
  • +
  • PN_antibiotics
  • +
    + + + +
    + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + +
    + + + 2000 + 70 + 4.6 + 0.7 + 0 + 38 + 4 + 1.00 + 1 + 1.20 + 100 + 0.99 + 0.8 + 0.75 + 0.6 + 0.00 + 0.0 + 0 + 0 + + 1.0 + 1.0 + 1.0 + 1.0 + 0 + 0 + 0 + + 0.8 + 1.0 + 1.0 + 0.30 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + 1.0 + 0.1 + + 0 + + + +
  • + + +
  • Blunt
  • + + 12 + 2 + LeftHand + + +
  • + Stun + 14 +
  • +
    +
    + +
  • + + +
  • Blunt
  • + + 12 + 2 + RightHand + + +
  • + Stun + 14 +
  • +
    +
    + +
  • + + +
  • Bite
  • + + 10.25 + 2 + Teeth + 0.07 + Pawn_Melee_HumanBite_Hit + Pawn_Melee_HumanBite_Miss + +
  • + + +
  • Blunt
  • + + 9 + 2 + HeadAttackTool + true + 0.2 + +
    + + Humanlike + HumanlikeConstant + Humanlike + true + 50 + + Leather_Automaton + Human + Paniel_Oil + PN_Flesh + 0.8 + (255, 255, 255) + + HumanStandard + false + PNBody + 1 + 1 + 1.0 + OmnivoreHuman + 30 + PN_NamerFemale + PN_NamerFemale + + +
  • (0, 0)
  • +
    +
    + +
  • + PNAdult + 0 + Pawn_DogSmall_Injured + Pawn_DogSmall_Dead + Pawn_DogSmall_Call + Pawn_DogSmall_Angry +
  • +
  • + HumanlikeBaby + 999995 +
  • +
  • + HumanlikeChild + 999996 +
  • +
  • + HumanlikePreTeenager + 999997 +
  • +
  • + HumanlikeTeenager + 999998 +
  • +
  • + HumanlikeAdult + 999999 +
  • +
    + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + Pawn_Melee_SmallScratch_HitPawn + Pawn_Melee_SmallScratch_HitBuilding + Pawn_Melee_SmallScratch_Miss + + (0.3, 0.8, 0.4) + (0,0,-0.3) + + + +
  • (20,0)
  • +
  • (21,100)
  • +
  • (22,40)
  • +
  • (23,0)
  • +
    +
    + +
  • PN_HediffGiverSet
  • +
    + Humanlike +
    + + 75 + 4 + 25 + + +
  • Anesthetize
  • +
  • SurgicalInspection
  • +
  • PN_Disassemble
  • +
  • PN_Repair
  • +
  • PN_Maintenance
  • +
    + +
  • +
    + +
    + + + PNAdult + + false + + Things/Pawn/Humanlike/Silhouettes/Silhouette_HumanAdult + Graphic_Single + 1 + + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/PanielRaceSettings.xml b/1.6/Core/Defs/AutomataRace/PanielRaceSettings.xml new file mode 100644 index 0000000..c54349e --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/PanielRaceSettings.xml @@ -0,0 +1,122 @@ + + + + Paniel_Race_Setting + + +
  • + +
  • + +
  • PN_Testsubject
  • + + 100.0 + + + +
  • Paniel_PlayerFaction
  • +
    + +
    + +
  • + +
  • Slave
  • + + 100.0 + +
    + +
  • + +
  • Slave
  • + + 100.0 + +
    + +
  • + +
  • + +
  • Colonist
  • + + 100.0 + + + +
  • OutlanderCivil
  • +
    + +
    +
    +
    + + + Paniel_Oil + + LiquidFuel + true + Normal + + -30 + -15 + 150 + 2.0 + + + Things/Filth/Spatter + (51, 51, 51, 180) + + + true + 35~40 + true + 70 + true + 1 + Interact_CleanFilth_Fluid + + + + + PN_CorpseCategory + + Corpses + + + + PN_Flesh + PN_CorpseCategory + Damage_HitMechanoid + true + + + + + Comp_CorpseSelfDestruct_Inject + +
  • + Corpse_Paniel_Race +
  • +
    + +
  • + 200 + PN_ResurrectModule + true +
  • + +
  • + 1.9 + Flame + Flame + Filth_Fuel + 0.5 + 200~750 + 5.0 + 2.0 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/AutomataRace/PanielRulePacks.xml b/1.6/Core/Defs/AutomataRace/PanielRulePacks.xml new file mode 100644 index 0000000..558fc65 --- /dev/null +++ b/1.6/Core/Defs/AutomataRace/PanielRulePacks.xml @@ -0,0 +1,55 @@ + + + + PN_NamerUtility + + +
  • PNSN->Names/Automaton/PNSN
  • +
  • PN09->Names/Automaton/PN09
  • +
  • PNAZ->Names/Automaton/PNAZ
  • +
  • PNNick->Names/Automaton/PNNick
  • +
  • PNDbPnL->Names/Automaton/PNDbPnL
  • +
  • PNPbar->Names/Automaton/PNPBAR
  • +
  • PNName->Names/Automaton/PNName
  • +
    +
    +
    + + + PN_NamerFirst + +
  • PN_NamerUtility
  • +
    + + +
  • PNFirstNamer->[PNName]
  • +
    +
    +
    + + + PN_NamerNick + +
  • PN_NamerUtility
  • +
    + + +
  • PNNickNamer->[PNSN][PN09][PN09][PN09][PNAZ][PNAZ]
  • +
    +
    +
    + + + PN_NamerFemale + +
  • PN_NamerUtility
  • +
  • PN_NamerFirst
  • +
  • PN_NamerNick
  • +
    + + +
  • r_name->[PNFirstNamer] '[PNNickNamer]' [PNDbPnL]
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/Drugs/DrugPolicyDefs.xml b/1.6/Core/Defs/Drugs/DrugPolicyDefs.xml new file mode 100644 index 0000000..66fbf24 --- /dev/null +++ b/1.6/Core/Defs/Drugs/DrugPolicyDefs.xml @@ -0,0 +1,16 @@ + + + + PN_fuelOneDrinkPerDay + + +
  • + PN_AutomatonFuel + true + true + 1 + 1 +
  • +
    +
    +
    \ 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 new file mode 100644 index 0000000..a126745 --- /dev/null +++ b/1.6/Core/Defs/Drugs/Drugs_Antibiotics.xml @@ -0,0 +1,218 @@ + + + + + PN_antibiotics + + Warning: Do not use on humans.\nThis antibiotics is for automaton only.\n\nAutomaton antibiotics for unknown diseases.\n(Used for diseases added by mod.) + + Things/Item/PNAntibiotics + Graphic_StackCount + 1 + + 25 + false + + 600 + 18 + 0.005 + 0.7 + + + 2 + 4 + + Industrial + + Processed + 30 + Ingest_Inject + + + (0.18,0,0) + + + Inject {0} + Injecting {0}. + false + 0 + Medical + +
  • + PN_AB_Bridge + 1 +
  • +
    +
    + +
  • + 1034 + 0 +
  • +
    + + + + + DrugSynthesisSpeed + Intellectual + Cook + PNRP_Production + +
  • PN_AutomatonBench
  • +
    + Recipe_Drug +
    +
    + + + + PN_AB_Bridge + HediffWithComps + + ... + (1,1,0.5) + false + 1.0 + false + +
  • + +
  • + PN_ateFuel +
  • +
  • + PN_AB_EffectBridge +
  • + + false + +
    +
    + + + PN_AB_EffectBridge + HediffWithComps + + ... + (1,1,0.5) + false + 1.0 + false + +
  • + PN_AB_Effect + +
  • PNBody
  • + + false + +
    +
    + + + PN_AB_Effect + Hediff_High + + Antibiotics are working. + + PN_antibiotics + + (1,0,0.5) + false + 1.00 + 1.0 + false + +
  • + -0.5 + true +
  • +
    + +
  • + + +
  • + Consciousness + 0.8 +
  • +
  • + Moving + 0.8 +
  • +
  • + Manipulation + 0.8 +
  • + + + 1.5 + + +
  • + + 0.25 + +
  • + Consciousness + 0.6 +
  • +
  • + Moving + 0.6 +
  • +
  • + Manipulation + 0.6 +
  • + + + 5 + + +
  • + + 0.75 + +
  • + Consciousness + 0.6 +
  • +
  • + Moving + 0.6 +
  • +
  • + Manipulation + 0.6 +
  • + + + 3 + + +
  • + + 0.9 + +
  • + Consciousness + 0.8 +
  • +
  • + Moving + 0.8 +
  • +
  • + Manipulation + 0.8 +
  • + + + 1 + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/Drugs/Drugs_Fuel.xml b/1.6/Core/Defs/Drugs/Drugs_Fuel.xml new file mode 100644 index 0000000..b70985e --- /dev/null +++ b/1.6/Core/Defs/Drugs/Drugs_Fuel.xml @@ -0,0 +1,205 @@ + + + + PN_Fuel + + Drugs + UI/Icons/PNCT_PNFuel + + + + + PN_AutomatonFuel + + Warning: Do not use on humans.\nThis fuel is for automaton only.\n\nThe fuel used by the automaton. Added a large amount of Psychite for mental stability. + Normal + + Things/Item/PNFuel + Graphic_StackCount + 1.0 + + 1 + 150 + false + + 50 + 6.1 + 0.05 + 2.0 + 1.0 + + Ultra + + Medical + 210 + Ingest_Drink + + + (0.18,0,0) + + + Drink {0} + Drinking {0}. + false + 25 + +
  • + PN_ateFuel + 1 + true +
  • +
  • + PN_deletFuel + 1 + true +
  • +
    + PN_Atefuel_nopn +
    + +
  • + PN_Chemical_Fuel + 0.000000001 + 0.20 + 1028 +
  • +
  • + 1.1 + Flame + 0.037 + +
  • Flame
  • + + 0.333 + Filth_Fuel + 1 + 70~150 + +
    + +
  • PN_Fuel
  • +
    + Buyable + +
  • PN_Fuel
  • +
    +
    + + + PN_Atefuel_nopn + 1 + +
  • + + ... + -4 +
  • +
    +
    + + + + + PN_ateFuel + HediffWithComps + + Ate Automaton Fuel + ... + (1,0,0.5) + false + 1.0 + false + +
  • + +
  • + PsychiteAddiction +
  • +
  • + FoodPoisoning +
  • +
  • + PN_deletFuel +
  • + + +
  • PNBody
  • +
    + false + +
    +
    + + + PN_deletFuel + HediffWithComps + + Ate Automaton Fuel + ... + (1,0,0.5) + false + 1.0 + false + +
  • + +
  • PN_AutomatonFuel_Addiction
  • + + +
  • PNBody
  • +
    + +
    +
    + + + PN_Chemical_Fuel + + PN_AutomatonFuel_Addiction + false + 0 + false + + + + PN_AutomatonFuel_Addiction + Hediff_Addiction + + A condition that requires PnL fuel. + (222,90,90) + PN_Need_Fuel + false + false + false + + + + +
  • + +
  • +
  • + + +
  • + Consciousness + 0.3 +
  • +
  • + Moving + 0.3 +
  • +
  • + Sight + 0.3 +
  • +
  • + Manipulation + 0.3 +
  • + + 8.0 + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/Factions_PnL/Factions_Player.xml b/1.6/Core/Defs/Factions_PnL/Factions_Player.xml new file mode 100644 index 0000000..690c490 --- /dev/null +++ b/1.6/Core/Defs/Factions_PnL/Factions_Player.xml @@ -0,0 +1,40 @@ + + + + Icon/Paniel_PlayerIcon + +
  • (255, 255, 255)
  • +
    +
    + + + + Paniel_PlayerFaction + + This is the settlement where PnL industry is experimenting. + true + PN_ColonistPawn + colonist + colonists + Industrial + +
  • Astropolitan
  • +
    + +
  • Offworld
  • +
    + Icon/Paniel_PlayerIcon + NamerInitialSettlementColony + NamerFactionOutlander + NamerSettlementOutlander + +
  • ClassicStart
  • +
    + + +
  • Cloth
  • +
    +
    + 0 +
    +
    diff --git a/1.6/Core/Defs/Factions_PnL/Factions_PnL.xml b/1.6/Core/Defs/Factions_PnL/Factions_PnL.xml new file mode 100644 index 0000000..8578fe8 --- /dev/null +++ b/1.6/Core/Defs/Factions_PnL/Factions_PnL.xml @@ -0,0 +1,404 @@ + + + + + + PN_indistryFaction + + Automaton + Automata + 1 + PnL Industry + Icon/Paniel_HQ + true + false + Spacer + false + +
  • Offworld
  • +
    + +
  • PN_PnLindistryCulture
  • +
    + +
  • PN_Structure
  • +
  • Loyalist
  • +
  • Collectivist
  • +
  • Transhumanist
  • +
  • HumanPrimacy
  • +
    + +
  • PN_Structure
  • +
  • Loyalist
  • +
  • Collectivist
  • +
  • Transhumanist
  • +
  • HumanPrimacy
  • +
    + +
  • ApparelDesired_Strong_Subordinate
  • +
  • ApparelDesired_Soft_Subordinate
  • +
    + 0 +
    + + + + PN_SubsidiaryFaction + + It is a subsidiary established by PnL industry to sell more products on the planet's surface. It is composed of rimworld locals and automaton.\n\nIts main job is to set up a logistics center on the planet's surface and receive products from orbit and transport them to settlements on the planet's surface.\n\nThey are concerned with the practical matters of trade, trust.\n\nThis particular group holds civil behavior in high regard. + Employee + Employees + 50 + 0.20 + 1 + 1 + true + true + true + CEO + true + +
  • PN_CEO
  • +
    + Icon/Paniel_Logi + +
  • (1, 1, 1)
  • +
  • (1, 1, 1)
  • +
    + false + 9999 + 50 + Spacer + PnL Logistics + NamerSettlementPnLSub + +
  • PN_PnLindistryCulture
  • +
    + +
  • PN_Structure
  • +
  • Loyalist
  • +
  • Collectivist
  • +
  • Transhumanist
  • +
  • HumanPrimacy
  • +
    + +
  • PN_Structure
  • +
  • Loyalist
  • +
  • Collectivist
  • +
  • Transhumanist
  • +
  • HumanPrimacy
  • +
    + +
  • ApparelDesired_Strong_Subordinate
  • +
  • ApparelDesired_Soft_Subordinate
  • +
    + 0 + +
  • Offworld
  • +
    + +
  • PN_Caravan_PnLindustry
  • +
    + +
  • Visitor_Outlander_Standard
  • +
    + +
  • PN_Base_PnLindustry
  • +
    + -40~45 + PN_SubsidiaryRaidLootMaker + + +
  • (0,35)
  • +
  • (70, 50)
  • +
  • (700, 100)
  • +
  • (1300, 150)
  • +
  • (100000, 10000)
  • +
    +
    + + + + +
  • + Trader + + 1 + + + 6 + 5 + 2 + 1 + + + 6 + 1 + 1 + 1 + 1 + + 1.5 + + 4 + 6 + 3 + 4 + + 6 + 4 + +
  • + +
  • + Trader + + 1 + + + 6 + 5 + 2 + 1 + + + 6 + 1 + 1 + 1 + 1 + + 1.5 + + 4 + 6 + 3 + 4 + + 6 + 4 + +
  • + +
  • + Settlement + + 12 + 3 + 3 + 3 + 3 + + 3 + 3 + 3 + + 3 + + 6 + + 2 + + 4 + 6 + 2 + 4 + + 6 + 2 + 2 + 2 + +
  • + +
  • + Peaceful + + 10 + 2 + 1 + 2 + 1 + + 1 + 1 + 1 + + 1 + + 10 + +
  • + + + +
  • + Combat + 100 + + 6 + 4 + + 0.25 + 0.25 + 2 + + 6 + 2 + 4 + 2 + + + 2 + 2 + 6 + + 2 + 2 + 2 + 2 + +
  • +
    + + +
  • Metallic
  • +
  • Fabric
  • +
  • Leathery
  • +
    + +
  • Leather_Thrumbo
  • +
  • Hyperweave
  • +
  • Gold
  • +
  • Silver
  • +
    +
    + Icon/Paniel_Logi +
    + + + PN_SubsidiaryRaidLootMaker + + + + +
  • Silver
  • +
  • MedicineIndustrial
  • +
  • PN_RepairKit
  • +
  • PN_Component
  • +
  • Gold
  • +
    +
    +
    +
    +
    + + + NamerSettlementPnLSub + +
  • PN_NamerUtility
  • +
    + + +
  • r_name->[PNAZ][PN09][PN09] logistics center
  • +
    +
    +
    + + + PN_PnLindistryCulture + + The corporate culture of PnL Industry. + NamerIdeoAstropolitan + NamerDeityAstropolitan + DeityTypeMakerAstropolitan + LeaderTitleMaker_Astropolitan + NamerFestivalAstropolitan + +
  • OriginSpacer
  • +
    + Icon/Paniel_Icon + (1, 1, 1) + +
  • + Urban + 1 + 1 +
  • +
  • + NoBeard + 1 + 1 +
  • +
  • + NoTattoo + 1 + 1 +
  • +
    +
    + + + NamerIdeo_PnLindistry + + +
  • r_ideoName->PnL bylaws
  • +
  • r_ideoAdjective->PnL
  • +
  • r_memberName->PnL Employee
  • +
    +
    +
    + + + NamerDeity_PnLindistry + + +
  • r_deityName->PnL
  • +
    +
    +
    + + + DeityTypeMaker_PnLindistry + + +
  • r_deityType->God of Capitalism
  • +
    +
    +
    + + + LeaderTitleMaker_PnLindistry + + +
  • r_leaderTitle->CEO
  • +
    +
    +
    +
    \ 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 new file mode 100644 index 0000000..818ab38 --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonBase.xml @@ -0,0 +1,299 @@ + + + + + PN_Immune_System + + Automaton immune system + HediffWithComps + (0.8, 0.8, 0.8) + false + 1 + 1 + false + true + +
  • + false + +
  • Malaria
  • +
  • SleepingSickness
  • +
  • Plague
  • +
  • FibrousMechanites
  • +
  • WoundInfection
  • +
  • GutWorms
  • +
  • Flu
  • +
  • MuscleParasites
  • +
  • Scaria
  • +
  • FoodPoisoning
  • + + +
    + + + +
    + + + + PN_Learning_Limit_System + + Automaton learning limit system + HediffWithComps + (0.8, 0.8, 0.8) + false + 1 + 1 + false + true + +
  • + false + + 0 + +
  • +
    + + + +
    + + + + PanielBaseHediff + HediffWithComps + + This pawn is Automaton. + (1,1,0.5) + false + 1 + 1 + false + true + +
  • Outdoors
  • +
  • DrugDesire
  • +
  • RoomSize
  • +
  • Comfort
  • +
  • Bladder
  • +
    + +
  • + false + 0 + 0 + 0 + -0.75 + + 0 + 0 + +
  • +
    + +
  • + +
  • Carcinoma
  • +
  • BadBack
  • +
  • Frail
  • +
  • Cataract
  • +
  • Blindness
  • +
  • HearingLoss
  • +
  • Asthma
  • +
  • HeartArteryBlockage
  • +
  • WoundInfection
  • +
  • Cirrhosis
  • +
  • ResurrectionSickness
  • +
  • DeathRefusalSickness
  • +
  • PsychiteAddiction
  • +
  • YayoHigh
  • +
  • PsychiteTolerance
  • +
  • PsychiteTeaHigh
  • +
  • FlakeHigh
  • +
  • GoJuiceHigh
  • +
  • GoJuiceAddiction
  • +
  • GoJuiceTolerance
  • +
  • Pregnant
  • +
  • PregnantHuman
  • + + true + PN_HediffNullifier + +
    + +
  • + Paniel_Race +
  • +
    +
    + + + + PN_OilLoss + + A reduction in the normal oil volume. Minor oil loss has relatively mild effects, but when oil loss becomes severe, internal device becomes badly impaired and the victim loses the ability to move. Extreme oil loss leads to explosion. + 1 + +
  • + + false +
  • +
  • + 0.15 + + +
  • + Consciousness + -0.2 +
  • + + +
  • + 0.30 + + +
  • + Consciousness + -0.4 +
  • + + +
  • + 0.45 + + +
  • + Consciousness + -0.6 +
  • + + +
  • + 0.60 + + true + +
  • + Consciousness + 0.3 +
  • + + +
    +
    + + + + PN_Overheating + + A generalized disruption to body functioning caused by excessive exposure to heat and sun. The victim becomes dizzy, weak, and confused. Recovery is quick once in a cool area, but if heat exposure continues, overheating gets worse until death. + (0.8, 0.8, 0.35) + 1 + HeatstrokeRevealed + +
  • + + false +
  • +
  • + + 0.04 + +
  • + Consciousness + -0.1 +
  • + + +
  • + + 0.2 + +
  • + Consciousness + -0.2 +
  • + + +
  • + + 0.35 + +
  • + Consciousness + -0.4 +
  • + + +
  • + + 0.62 + true + +
  • + Consciousness + -0.6 +
  • + + +
    +
    + + + + PN_OverCooling + + Dangerously low core body temperature. Unless re-warmed, overcooling gets worse and ends in death. Recovery is quick once the victim is re-warmed. Avoid overcooling by wearing warm clothes in cold environments. + (0.8, 0.8, 1) + 1 + HypothermiaRevealed + +
  • + + false +
  • +
  • + + 0.04 + +
  • + Consciousness + -0.1 +
  • + + +
  • + + 0.2 + +
  • + Consciousness + -0.2 +
  • + + +
  • + + 0.35 + +
  • + Consciousness + -0.4 +
  • + + +
  • + + 0.62 + true + +
  • + Consciousness + -0.6 +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml new file mode 100644 index 0000000..daaa919 --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade.xml @@ -0,0 +1,809 @@ + + + + + + + + + HediffWithComps + (1,1,0.5) + false + 1 + 1 + false + true + + + + + + + ... + +
  • + false +
  • +
    +
    + + + + + This pawn is an automaton.\nAfter production, it was rated awful grade. + +
  • + +
  • + Consciousness + -0.30 +
  • + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated poor grade. + +
  • + +
  • + Consciousness + -0.10 +
  • + + + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated normal grade. + +
  • + +
  • + Moving + 0.05 +
  • +
  • + Sight + 0.05 +
  • +
  • + Manipulation + 0.05 +
  • + + + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated good grade. + +
  • + +
  • + Consciousness + 0.05 +
  • +
  • + Moving + 0.10 +
  • +
  • + Sight + 0.10 +
  • +
  • + Manipulation + 0.10 +
  • + + +
    +
    + + + + + This pawn is an automaton.\nAfter production, it was rated normal grade. + +
  • + +
  • + Moving + 0.05 +
  • +
  • + Sight + 0.05 +
  • +
  • + Manipulation + 0.05 +
  • + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated good grade. + +
  • + +
  • + Consciousness + 0.05 +
  • +
  • + Moving + 0.10 +
  • +
  • + Sight + 0.10 +
  • +
  • + Manipulation + 0.10 +
  • + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated excellent grade. + +
  • + +
  • + Consciousness + 0.10 +
  • +
  • + Moving + 0.20 +
  • +
  • + Sight + 0.20 +
  • +
  • + Manipulation + 0.20 +
  • + + + -0.10 + 0.10 + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated masterwork grade. + +
  • + +
  • + Consciousness + 0.20 +
  • +
  • + Moving + 0.30 +
  • +
  • + Sight + 0.30 +
  • +
  • + Manipulation + 0.30 +
  • + + + -0.20 + 0.20 + -0.10 + -0.04 + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated legendary grade. + +
  • + +
  • + Consciousness + 0.30 +
  • +
  • + Moving + 0.50 +
  • +
  • + Sight + 0.50 +
  • +
  • + Manipulation + 0.50 +
  • + + + -0.35 + 0.35 + -0.25 + -0.08 + + +
    +
    + + + + + This pawn is an automaton.\nAfter production, it was rated excellent grade. + +
  • + +
  • + Consciousness + 0.10 +
  • +
  • + Moving + 0.20 +
  • +
  • + Sight + 0.20 +
  • +
  • + Manipulation + 0.20 +
  • + + + 0.05 + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated masterwork grade. + +
  • + +
  • + Consciousness + 0.20 +
  • +
  • + Moving + 0.30 +
  • +
  • + Sight + 0.30 +
  • +
  • + Manipulation + 0.30 +
  • + + + 0.10 + -0.04 + + +
    +
    + + + This pawn is an automaton.\nAfter production, it was rated legendary grade. + +
  • + +
  • + Consciousness + 0.30 +
  • +
  • + Moving + 0.50 +
  • +
  • + Sight + 0.50 +
  • +
  • + Manipulation + 0.50 +
  • + + + 0.20 + -0.08 + + +
    +
    + + + + + + + + PN_Give_Normal_Combat + +
  • + PNBody + +
  • + PN_SyncNormal_Combat +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncNormal_Combat + + + + + + + + PN_Give_Good_Combat + +
  • + PNBody + +
  • + PN_SyncGood_Combat +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncGood_Combat + + + + + + + + PN_Give_Excellent_Combat + +
  • + PNBody + +
  • + PN_SyncExcellent_Combat +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncExcellent_Combat + + + + + + + + PN_Give_Masterwork_Combat + +
  • + PNBody + +
  • + PN_SyncMasterwork_Combat +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncMasterwork_Combat + + + + + + + + PN_Give_Legendary_Combat + +
  • + PNBody + +
  • + PN_SyncLegendary_Combat +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncLegendary_Combat + + + + + + + + + + PN_Give_Normal_Engineer + +
  • + PNBody + +
  • + PN_SyncNormal_Engineer +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncNormal_Engineer + + + + + + + + PN_Give_Good_Engineer + +
  • + PNBody + +
  • + PN_SyncGood_Engineer +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncGood_Engineer + + + + + + + + PN_Give_Excellent_Engineer + +
  • + PNBody + +
  • + PN_SyncExcellent_Engineer +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncExcellent_Engineer + + + + + + + + PN_Give_Masterwork_Engineer + +
  • + PNBody + +
  • + PN_SyncMasterwork_Engineer +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncMasterwork_Engineer + + + + + + + + PN_Give_Legendary_Engineer + +
  • + PNBody + +
  • + PN_SyncLegendary_Engineer +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncLegendary_Engineer + + + + + + + + + + PN_Give_Normal_Domestic + +
  • + PNBody + +
  • + PN_SyncNormal_Domestic +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncNormal_Domestic + + + + + + + + PN_Give_Good_Domestic + +
  • + PNBody + +
  • + PN_SyncGood_Domestic +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncGood_Domestic + + + + + + + + PN_Give_Excellent_Domestic + +
  • + PNBody + +
  • + PN_SyncExcellent_Domestic +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncExcellent_Domestic + + + + + + + + PN_Give_Masterwork_Domestic + +
  • + PNBody + +
  • + PN_SyncMasterwork_Domestic +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncMasterwork_Domestic + + + + + + + + PN_Give_Legendary_Domestic + +
  • + PNBody + +
  • + PN_SyncLegendary_Domestic +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncLegendary_Domestic + + + + + + + + + + PN_SyncNormal_Modified + + This pawn is an automaton.\nAfter production, It has been modified in an unauthorized way. + +
  • + +
  • + Moving + 0.05 +
  • +
  • + Sight + 0.05 +
  • +
  • + Manipulation + 0.05 +
  • + + + 0.08 + + +
    +
    + + + + + + PN_Give_Awful_Failure + +
  • + PNBody + +
  • + PN_SyncAwful_Failure +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncAwful_Failure + + + + + + + + PN_Give_Poor_Failure + +
  • + PNBody + +
  • + PN_SyncPoor_Failure +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncPoor_Failure + + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml new file mode 100644 index 0000000..e635365 --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_AutomatonGrade_PA.xml @@ -0,0 +1,526 @@ + + + + + PN_PnLAuthenticated + + This automaton was made by PnL. + HediffWithComps + (1,1,0.5) + false + 1 + 1 + false + true + +
  • + +
  • + Consciousness + 0.05 +
  • + + + -0.10 + 0.10 + -0.04 + + +
    + +
  • + +
  • PN_Ex_filterA
  • + + +
    +
    + + + + + + + + PN_Give_Normal_Combat_PA + +
  • + PNBody + +
  • + PN_SyncNormal_Combat +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncNormal_Combat_PA + + + + + + + + PN_Give_Good_Combat_PA + +
  • + PNBody + +
  • + PN_SyncGood_Combat +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncGood_Combat_PA + + + + + + + + PN_Give_Excellent_Combat_PA + +
  • + PNBody + +
  • + PN_SyncExcellent_Combat +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncExcellent_Combat_PA + + + + + + + + PN_Give_Masterwork_Combat_PA + +
  • + PNBody + +
  • + PN_SyncMasterwork_Combat +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncMasterwork_Combat_PA + + + + + + + + PN_Give_Legendary_Combat_PA + +
  • + PNBody + +
  • + PN_SyncLegendary_Combat +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncLegendary_Combat_PA + + + + + + + + + + PN_Give_Normal_Engineer_PA + +
  • + PNBody + +
  • + PN_SyncNormal_Engineer +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncNormal_Engineer_PA + + + + + + + + PN_Give_Good_Engineer_PA + +
  • + PNBody + +
  • + PN_SyncGood_Engineer +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncGood_Engineer_PA + + + + + + + + PN_Give_Excellent_Engineer_PA + +
  • + PNBody + +
  • + PN_SyncExcellent_Engineer +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncExcellent_Engineer_PA + + + + + + + + PN_Give_Masterwork_Engineer_PA + +
  • + PNBody + +
  • + PN_SyncMasterwork_Engineer +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncMasterwork_Engineer_PA + + + + + + + + PN_Give_Legendary_Engineer_PA + +
  • + PNBody + +
  • + PN_SyncLegendary_Engineer +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncLegendary_Engineer_PA + + + + + + + + + + PN_Give_Normal_Domestic_PA + +
  • + PNBody + +
  • + PN_SyncNormal_Domestic +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncNormal_Domestic_PA + + + + + + + + PN_Give_Good_Domestic_PA + +
  • + PNBody + +
  • + PN_SyncGood_Domestic +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncGood_Domestic_PA + + + + + + + + PN_Give_Excellent_Domestic_PA + +
  • + PNBody + +
  • + PN_SyncExcellent_Domestic +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncExcellent_Domestic_PA + + + + + + + + PN_Give_Masterwork_Domestic_PA + +
  • + PNBody + +
  • + PN_SyncMasterwork_Domestic +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncMasterwork_Domestic_PA + + + + + + + + PN_Give_Legendary_Domestic_PA + +
  • + PNBody + +
  • + PN_SyncLegendary_Domestic +
  • +
  • + PN_PnLAuthenticated +
  • +
  • + PN_Learning_Limit_System +
  • + + +
    +
    + + + PN_SyncLegendary_Domestic_PA + + + + + + + + + + PN_Give_Testsubject + +
  • + PNBody + +
  • + PN_SyncGood_Testsubject +
  • +
  • + PN_PnLAuthenticated +
  • + + +
  • + PN_SyncGood_Testsubject + +
  • PN_Learning_Limit_System
  • + + PNBody + +
    +
    + + + 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 new file mode 100644 index 0000000..b574c5d --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_BodyParts.xml @@ -0,0 +1,380 @@ + + + + + Hediff_Implant + (0.6, 0.6, 1.0) + false + true + true + + + + Hediff_AddedPart + true + + + + PN_BodyPartsAutomaton + + BodyParts + Things/Item/Health/HealthItem + + + + ThingWithComps + Item + true + true + Item + Never + true + true + 14 + Buyable + + 50 + 0.7 + -4 + 2.0 + 1 + + +
  • PN_BodyParts
  • +
    + +
  • + + + + + Industrial + +
  • PN_BodyPartsAutomaton
  • + + + Things/Item/Health/HealthItem + Graphic_Single + 0.80 + (247,180,130) + + +
  • PN_BodyPartsNormal
  • +
    + + 15000 + + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + UnfinishedHealthItemProsthetic + + 5 + + + +
  • PN_AutomatonBench
  • +
    +
    +
    + + + Spacer + +
  • PN_BodyPartsAutomaton
  • +
    + + Things/Item/Health/HealthItem + Graphic_Single + 0.80 + (189,169,118) + + +
  • PN_BodyPartsRoyal
  • +
    + + 26000 + + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + UnfinishedHealthItemBionic + + 8 + + + +
  • PN_AutomatonBench
  • +
    +
    +
    + + + Recipe_InstallImplant + 2500 + + 5 + + +
  • Paniel_Race
  • +
    +
    + + + Recipe_InstallArtificialBodyPart + + + + + 4 + + + + + Recipe_RemoveImplant + 2500 + true + + 5 + + +
  • Paniel_Race
  • +
    +
    + + + + PN_ExperimentalModuleHediff + + Warning: This implant is not a PnL licensed implant. When installed, the performance of the Automaton will decrease.\n\n + +This implant makes the automaton learn like a human, but makes it mentally unstable.\n\n + +This implant cannot be removed after installation. + + PN_ExperimentalModule + + +
  • + + 1.0 + 0.80 + 0.12 + +
  • +
    + +
  • + +
  • PN_Learning_Limit_System
  • + + +
  • + +
  • PN_Learning_Limit_System
  • + + +
    +
    + + + PN_Ex_filterA + HediffWithComps + + This pawn is Automaton. + (1,1,0.5) + false + 1 + 1 + false + + + + +
  • + PNBody + +
  • + PN_Ex_filterB +
  • +
  • + PN_SyncNormal_Modified +
  • + + +
    +
    + + + PN_Ex_filterB + HediffWithComps + + This pawn is Automaton. + (1,1,0.5) + false + 1 + 1 + false + + + + +
  • + +
  • PN_SyncNormal_Combat
  • +
  • PN_SyncGood_Combat
  • +
  • PN_SyncExcellent_Combat
  • +
  • PN_SyncMasterwork_Combat
  • +
  • PN_SyncLegendary_Combat
  • + +
  • PN_SyncNormal_Engineer
  • +
  • PN_SyncGood_Engineer
  • +
  • PN_SyncExcellent_Engineer
  • +
  • PN_SyncMasterwork_Engineer
  • +
  • PN_SyncLegendary_Engineer
  • + +
  • PN_SyncNormal_Domestic
  • +
  • PN_SyncGood_Domestic
  • +
  • PN_SyncExcellent_Domestic
  • +
  • PN_SyncMasterwork_Domestic
  • +
  • PN_SyncLegendary_Domestic
  • + +
  • PN_SyncGood_Testsubject
  • + +
  • PN_Learning_Limit_System
  • + + +
    +
    + + + PN_ExperimentalModule + + Warning: This implant is not a PnL licensed implant. When installed, the performance of the Automaton will decrease.\n\n + +This implant makes the automaton learn like a human, but makes it mentally unstable.\n\n + +This implant cannot be removed after installation. + + PN_InstallExperimentalModule + + None + + 2 + 1 + 1 + + + 0.3 + + + PNRP_ExperimentalModule + + + + + PN_InstallExperimentalModule + + Install a custom core implant. + + PN_ExperimentalModule + PN_ExperimentalModuleHediff + + Installing custom core implant. + +
  • + + +
  • PN_ExperimentalModule
  • + + + 1 + +
    + + + +
  • PNBrain
  • +
    + PN_ExperimentalModuleHediff +
    + + + + PN_ResurrectModule + + a resurrect implant + This is the implant using resurrector mech serum.\nAn automaton equipped with this implant resurrection after death in a few seconds. + + PN_ResurrectModule + + + + + PN_ResurrectModule + + + + PN_ResurrectModule + + This is the implant using resurrector mech serum.\nAn automaton equipped with this implant resurrection after death in a few seconds. + + PN_InstallResurrectModule + + + 1 + 1 + + + 0.3 + + + PNRP_ResurrectModule + + + + + PN_InstallResurrectModule + + Install a resurrect implant. + + PN_ResurrectModule + PN_ResurrectModule + + Installing resurrect implant. + +
  • + + +
  • PN_ResurrectModule
  • + + + 1 + +
    + + + +
  • PNCore
  • +
    + PN_ResurrectModule +
    + + + PN_RemoveResurrectModule + + Remove the resurrect implant. + + PN_ResurrectModule + PN_ResurrectModule + + Removing resurrect implant. + PN_ResurrectModule + + + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_ContDamPN.xml b/1.6/Core/Defs/HediffDefs/Hediffs_ContDamPN.xml new file mode 100644 index 0000000..d541478 --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_ContDamPN.xml @@ -0,0 +1,110 @@ + + + + PN_ChainCutManeuver + PN_ChainCutTool + + Verb_MeleeAttackDamage + PN_ChainCutDamage + + MeleeAttack + Maneuver_Slash_MeleeHit + Maneuver_Slash_MeleeDeflect + Maneuver_Slash_MeleeMiss + Maneuver_Slash_MeleeDodge + + + + PN_ChainCutTool + + + + + PN_ChainCutDamage + PN_ChainCutHediff + PN_ChainCutHediff + PN_ChainCrackHediff + 1.4 + DamageWorker_AddInjury + Sharp + Slice + + + + PN_ChainCutHediff + + a cut + a cut. + +
  • + bandaged + sutured + set +
  • +
  • + 0.15 +
  • +
  • + cut scar +
  • +
  • + PN_ChainCutDamage_Con + 6 + 2 + 18 +
  • +
    + + 0.0125 + 0.00625 + 0.06 + false + Cut off + Cut off + +
    + + + PN_ChainCutDamage_Con + 1.4 + DamageWorker_AddInjury + Sharp + Slice + + + + PN_ChainCrackHediff + + a crack wound + A crack. + +
  • + set + set + set +
  • +
  • + permanent crack +
  • +
  • + PN_ChainCrackDamage_Con + 6 + 1 + 12 +
  • +
    + + 0.01 + 0.00625 + Shattered + +
    + + + PN_ChainCrackDamage_Con + 1.4 + DamageWorker_AddInjury + Sharp + Slice + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_HediffGiver.xml b/1.6/Core/Defs/HediffDefs/Hediffs_HediffGiver.xml new file mode 100644 index 0000000..1a31616 --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_HediffGiver.xml @@ -0,0 +1,64 @@ + + + + PN_HediffGiverSet + +
  • + PN_OilLoss +
  • + +
  • + PN_OverCooling +
  • + +
  • + PN_Overheating +
  • + +
  • + Paniel_Joy +
  • + +
  • + Dementia + +
  • Brain
  • + + + +
  • (0.85, 0)
  • +
  • (0.95, 0.0093)
  • +
  • (1.15, 0.093)
  • +
    +
    + + +
  • + Alzheimers + +
  • PNBrain
  • + + + +
  • (0.42, 0)
  • +
  • (0.7, 0.00061)
  • +
  • (0.9, 0.0012)
  • +
  • (1, 0.002)
  • +
  • (1.5, 0.003)
  • +
    +
    + 0.001 + + +
  • + TraumaSavant + +
  • PNBrain
  • + + 0.12 + Trauma savant + [PAWN_nameDef]'s brain injury has caused [PAWN_objective] to develop strange savant-like abilities. + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_Joy.xml b/1.6/Core/Defs/HediffDefs/Hediffs_Joy.xml new file mode 100644 index 0000000..b596049 --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_Joy.xml @@ -0,0 +1,57 @@ + + + + Paniel_Joy + + (0.8, 0.8, 0.8) + State affected by recreation.\n\nA high recreation has a beneficial effect. + false + +
  • + + true +
  • +
  • + + 0.15 + +
  • + Consciousness + -0.05 +
  • + + +
  • + + 0.3 + +
  • + Consciousness + 0.0 +
  • + + +
  • + + 0.7 + +
  • + Consciousness + 0.05 +
  • + + +
  • + + 0.85 + +
  • + Consciousness + 0.1 +
  • + + +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml b/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml new file mode 100644 index 0000000..5b1130e --- /dev/null +++ b/1.6/Core/Defs/HediffDefs/Hediffs_Maintenance.xml @@ -0,0 +1,152 @@ + + + + PN_Maintenance + + (0.8, 0.8, 0.8) + The maintenance status of the automaton.\nIf it is low, it will cause malfunction.\n\nMaintenance is required every year (60 rimworld days). + + PN_RepairKit + PN_SelfRepairKit + PN_Maintenance + PN_Repair + + false + true + false + +
  • + + 0.1 + true + 1.50 + +
  • + Consciousness + 0.5 +
  • +
  • + Moving + 0.5 +
  • +
  • + Sight + 0.5 +
  • +
  • + Manipulation + 0.5 +
  • + + + 0.80 + 0.16 + -0.20 + -0.8 + + +
  • PN_Need_Maintenance
  • +
    + +
  • + + 0.2 + 1.25 + +
  • + Consciousness + 0.75 +
  • +
  • + Moving + 0.75 +
  • +
  • + Sight + 0.75 +
  • +
  • + Manipulation + 0.75 +
  • + + + 0.40 + 0.08 + -0.10 + -0.4 + + +
  • PN_Need_Maintenance
  • +
    + +
  • + + 0.80 + + + + + + + +
  • PN_Need_Maintenance
  • + + +
  • + + 1 + + + + + -0.20 + -0.04 + 0.10 + 0.2 + + +
  • PN_Need_Maintenance
  • + + +
    + +
  • + Paniel_Race +
  • +
    +
    + + + PN_Maintenance_Thought + ThoughtWorker_Hediff + PN_Maintenance + true + +
  • + + I feel weird. I don't think my body is mine. + -15 +
  • +
  • + + I can't move my body well. + -5 +
  • +
  • + false +
  • +
  • + + I feel like I'm made new! + 5 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/NeedDefs/Needs.xml b/1.6/Core/Defs/NeedDefs/Needs.xml new file mode 100644 index 0000000..b73554a --- /dev/null +++ b/1.6/Core/Defs/NeedDefs/Needs.xml @@ -0,0 +1,25 @@ + + + + PN_Need_Fuel + Need_Chemical + + The amount of fuel used by the automaton. When the gauge reaches zero, The automaton will enter emergency power mode and become very slow. + 984 + 0.20 + true + true + true + + + + PN_Need_Maintenance + AutomataRace.Need_Maintenance + + The maintenance status of the automaton.\n\nIf it is low, it will cause malfunction.\n\nMaintenance is required every year (60 rimworld days). + true + 985 + 0.01333 + true + + \ No newline at end of file diff --git a/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Faction.xml b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Faction.xml new file mode 100644 index 0000000..a730b19 --- /dev/null +++ b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Faction.xml @@ -0,0 +1,735 @@ + + + + + + Paniel_Race + PN_SubsidiaryFaction + 0 + 0 + 1 + 20 + 25 + 2~4 + 13~21 + 0 + 0 + 0 + + + + PN_AutomatonFuel + 3~5 + + false + + + + Human + PN_SubsidiaryFaction + 0 + 0.05 + 2.55 + 0 + +
  • IndustrialBasic
  • +
  • IndustrialAdvanced
  • +
    +
    + + + + + PN_AssociateH + + 45 + Poor + false + 0.2~2.0 + +
  • Gun
  • +
  • PN_Shovel
  • +
    + 250~400 + 200~400 + 0.4 + 0.06 + 50~600 + +
  • Poor
  • +
  • Simple
  • +
  • ImplantEmpireCommon
  • +
    + 1~3 + 6~10 + 0 + false + + + 0.1 + 0.1 + 0.1 + 0.05 + 0.1 + 0.05 + + +
    + + + PN_AssociateP_EngineerA + + 60 + Poor + false + 0.2~2.0 + +
  • Gun
  • +
  • PN_Shovel
  • +
    + 250~400 + 200~400 + 0.4 + +
  • PN_ApparelBasic
  • +
    + +
  • Paniel_Basic
  • +
    + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_ApprenticeA_PA
  • + + +
    + 11~14 + 38~58 + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • Tough
  • +
    +
    + + + PN_AssociateP_EngineerB + + 65 + Normal + false + 0.7~3.2 + +
  • Gun
  • +
  • PN_Shovel
  • +
    + 250~400 + 400~600 + 0.6 + +
  • PN_ApparelBasic
  • +
    + +
  • Paniel_Basic
  • +
    + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_ApprenticeB_PA
  • + + +
    + 11~14 + 38~58 + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • Tough
  • +
    +
    + + + + PN_AssociateP_DomesticA + + 60 + Poor + false + 0.2~2.0 + +
  • Gun
  • +
    + 250~400 + 200~400 + 0.4 + +
  • PN_ApparelBasic
  • +
    + +
  • Paniel_Basic
  • +
    + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_MaidA_PA
  • + + +
    + 11~14 + 38~58 + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • TorturedArtist
  • +
  • Tough
  • +
    +
    + + + PN_AssociateP_DomesticB + + 65 + Normal + false + 0.7~3.2 + +
  • Gun
  • +
    + 250~400 + 400~600 + 0.6 + +
  • PN_ApparelBasic
  • +
    + +
  • Paniel_Basic
  • +
    + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_MaidB_PA
  • + + +
    + 11~14 + 38~58 + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • TorturedArtist
  • +
  • Tough
  • +
    +
    + + + + + PN_ManagerH + + true + 45 + false + 1~1 + Normal + +
  • Gun
  • +
    + 250~400 + 400~600 + +
  • IndustrialMilitaryBasic
  • +
  • IndustrialMilitaryAdvanced
  • +
  • BeltDefensePop
  • +
    + +
  • Apparel_BowlerHat
  • +
    + 0.15 + 600~1500 + +
  • Poor
  • +
  • Simple
  • +
  • Advanced
  • +
  • ImplantEmpireCommon
  • +
    + 5~7 + 26~40 + 0 + false + + + 0.2 + 0.2 + 0.2 + + +
    + + + PN_ManageUnit_Enginer + + 65 + Normal + false + 1~1 + +
  • Gun
  • +
  • PN_Shovel
  • +
    + 250~400 + 400~600 + 0.4 + +
  • PN_ApparelWorker
  • +
  • PN_ApparelWorkerHat
  • +
    + +
  • Paniel_Engineer
  • +
    + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_journeymanA_PA
  • + + +
    + 11~14 + 38~58 + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • TorturedArtist
  • +
  • Tough
  • +
    +
    + + + PN_ManageUnit_Domestic + + 65 + true + Normal + false + 1~1 + +
  • Gun
  • +
    + 250~400 + 400~600 + 0.4 + +
  • PN_ApparelMaid
  • +
  • PN_ApparelMaidHat
  • +
    + +
  • Paniel_Housekeeper
  • +
    + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_HousemaidA_PA
  • + + +
    + 11~14 + 38~58 + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • TorturedArtist
  • +
  • Tough
  • +
    +
    + + + PN_Director + + 40 + 30 + false + 1~1 + Good + 200~200 + +
  • Gun
  • +
    + 700~1200 + +
  • IndustrialMilitaryBasic
  • +
  • BeltDefensePop
  • +
    + +
  • Apparel_BowlerHat
  • +
    + 0.15 + 600~1500 + +
  • Simple
  • +
  • Advanced
  • +
  • ImplantEmpireCommon
  • +
    + 8~11 + 38~58 + false + + + 0.2 + 0.2 + 0.2 + + +
    + + + + 40 + 30 + false + 1~1 + Good + 200~200 + +
  • Gun
  • +
    + 700~1200 + +
  • IndustrialMilitaryBasic
  • +
  • BeltDefensePop
  • +
    + +
  • Apparel_BowlerHat
  • +
    + 0.15 + 600~1500 + +
  • Simple
  • +
  • Advanced
  • +
  • ImplantEmpireCommon
  • +
    + false + + + 0.2 + 0.2 + 0.2 + + +
    + + + + PN_SeniorDirector + + 10~13 + 38~58 + + + + PN_VP + + 11~14 + 38~58 + + + + PN_SVP + + 12~15 + 25~39 + + + + PN_CEO + + 13~16 + 38~58 + + + + + + PN_SecurityGuardH + + 60 + true + 0.6~2 + +
  • IndustrialMilitaryBasic
  • +
  • BeltDefensePop
  • +
    + 400~600 + 0.4 + +
  • Gun
  • +
    + 250~400 + 0.04 + 200~700 + +
  • Poor
  • +
  • Simple
  • +
  • ImplantEmpireCommon
  • +
    + 1~3 + 15~24 + + + 0.25 + 0.25 + + +
    + + + PN_SecurityUnit + + 70 + true + 0.7~3.2 + +
  • Gun
  • +
    + 250~400 + 400~600 + 0.6 + +
  • PN_ApparelBasic
  • +
    + +
  • Paniel_Basic
  • +
  • BeltDefensePop
  • +
    + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_MilitiaA_PA
  • + + +
    + 15~18 + 38~58 + +
  • Industriousness
  • +
  • TorturedArtist
  • +
  • Brawler
  • +
    +
    + + + + + + true + Normal + 0.7~3.2 + 0.2 + 1 + +
  • PN_ApparelMilitia
  • +
  • PN_ApparelMilitiaHat
  • +
    + +
  • Paniel_Militia
  • +
    + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_MilitiaB_PA
  • + + +
    + +
  • Industriousness
  • +
  • TorturedArtist
  • +
    + 14~17 + 38~58 +
    + + + + + 500~500 + 400~700 + +
  • Brawler
  • +
    +
    + + + + PN_GrenadeUnit_Destructive + 80 + true + true + +
  • GrenadeDestructive
  • +
    +
    + + + PN_GrenadeUnit_EMP + 65 + +
  • GrenadeEMP
  • +
    +
    + + + PN_GrenadeUnit_Smoke + 65 + +
  • GrenadeSmoke
  • +
    +
    + + + + + PN_Mid_CloseUnit + true + 150 + +
  • MedievalMeleeDecent
  • +
  • MedievalMeleeAdvanced
  • +
  • PN_Shovel
  • +
    + 200~500 + 1000~1500 + +
  • Apparel_ShieldBelt
  • +
    + +
  • ShootingAccuracy
  • +
    +
    + + + PN_Mid_RangeUnit + 95 + +
  • Gun
  • +
  • PN_Rifle
  • +
  • PN_Revolver
  • +
    + 450~650 + 1000~1500 + +
  • BeltDefensePop
  • +
    + +
  • Brawler
  • +
    +
    + + + + + + true + Good + 1~1 + 0.3 + 1 + 7000~10000 + +
  • PN_EliteSecurityUniform
  • +
  • PN_EliteSecurityHat
  • +
    + +
  • Paniel_EliteSecurity
  • +
    + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_SoldierA_PA
  • + + +
    + +
  • Industriousness
  • +
  • TorturedArtist
  • +
    + 15~18 + 38~58 +
    + + + PN_EliteCloseUnit + 190 + +
  • PN_Chainsword
  • +
    + 200~500 + +
  • ShootingAccuracy
  • +
    + +
  • Apparel_ShieldBelt
  • + +
    +
    + + + PN_EliteRangeUnit + 145 + +
  • PN_Rifle
  • +
    + +
  • BeltDefensePop
  • +
    + + + + 1100~2500 + +
  • Brawler
  • +
    +
    + + + PN_EliteHeavyUnit + 190 + +
  • PN_Machinegun
  • +
    + +
  • BeltDefensePop
  • +
    + + + + 1100~2500 + +
  • Brawler
  • +
    +
    + + + PN_EliteCannonUnit + 170 + +
  • PN_Cannon
  • +
    + +
  • BeltDefensePop
  • +
    + + + + 1100~2500 + +
  • Brawler
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox.xml b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox.xml new file mode 100644 index 0000000..b2517f4 --- /dev/null +++ b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox.xml @@ -0,0 +1,348 @@ + + + + + Paniel_Randombox_Awful + + 0 + false + +
  • + +
  • Paniel_Story_Awful
  • +
  • Paniel_Story_FailureA
  • + + +
    + 0 + 0 + 0 + + + + 2~4 + 13~21 +
    + + + Paniel_Randombox_Poor + + 0 + false + +
  • + +
  • Paniel_Story_Poor
  • +
  • Paniel_Story_FailureB
  • + + +
    + 0 + 0 + 0 + + + + 2~4 + 13~21 +
    + + + Paniel_Randombox_Normal + + 0 + false + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_Basic
  • + + +
    + 0 + 0 + 0 + + + + 11~14 + 38~58 +
    + + + + 0 + true + 0 + 0 + 0 + + + + +
  • Industriousness
  • +
  • TorturedArtist
  • +
    +
    + + + Paniel_Soldier_Normal + + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_MilitiaA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Soldier_Good + + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_MilitiaB
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Soldier_Excellent + + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_SoldierA
  • + + +
    + 14~17 + 38~58 +
    + + + Paniel_Soldier_Masterwork + + +
  • + +
  • Paniel_Story_Masterwork
  • +
  • Paniel_Story_SoldierB
  • + + +
    + 15~18 + 38~58 +
    + + + Paniel_Soldier_Legendary + + +
  • + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_Royalguard
  • + + +
    + 16~19 + 38~58 +
    + + + + 0 + true + 0 + 0 + 0 + + + + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • Tough
  • +
    +
    + + + Paniel_Worker_Normal + + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_ApprenticeA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Worker_Good + + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_ApprenticeB
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Worker_Excellent + + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_journeymanA
  • + + +
    + 14~17 + 38~58 +
    + + + Paniel_Worker_Masterwork + + +
  • + +
  • Paniel_Story_Masterwork
  • +
  • Paniel_Story_journeymanB
  • + + +
    + 15~18 + 38~58 +
    + + + Paniel_Worker_Legendary + + +
  • + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_Meister
  • + + +
    + 16~19 + 38~58 +
    + + + + 0 + true + 0 + 0 + 0 + + + + +
  • ShootingAccuracy
  • +
  • Brawler
  • +
  • TorturedArtist
  • +
  • Tough
  • +
    +
    + + + Paniel_Maid_Normal + + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_MaidA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Maid_Good + + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_MaidB
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Maid_Excellent + + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_HousemaidA
  • + + +
    + 14~17 + 38~58 +
    + + + Paniel_Maid_Masterwork + + +
  • + +
  • Paniel_Story_Masterwork
  • +
  • Paniel_Story_HousemaidB
  • + + +
    + 15~18 + 38~58 +
    + + + Paniel_Maid_Legendary + + +
  • + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_Ladysmaid
  • + + +
    + 16~19 + 38~58 +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox_PA.xml b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox_PA.xml new file mode 100644 index 0000000..3d4994c --- /dev/null +++ b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKind_Randombox_PA.xml @@ -0,0 +1,230 @@ + + + + + Paniel_Soldier_Normal_PA + + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_MilitiaA_PA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Soldier_Good_PA + + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_MilitiaB_PA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Soldier_Excellent_PA + + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_SoldierA_PA
  • + + +
    + 14~17 + 38~58 +
    + + + Paniel_Soldier_Masterwork_PA + + +
  • + +
  • Paniel_Story_Masterwork
  • +
  • Paniel_Story_SoldierB_PA
  • + + +
    + 15~18 + 38~58 +
    + + + Paniel_Soldier_Legendary_PA + + +
  • + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_Royalguard_PA
  • + + +
    + 16~19 + 38~58 +
    + + + + Paniel_Worker_Normal_PA + + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_ApprenticeA_PA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Worker_Good_PA + + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_ApprenticeB_PA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Worker_Excellent_PA + + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_journeymanA_PA
  • + + +
    + 14~17 + 38~58 +
    + + + Paniel_Worker_Masterwork_PA + + +
  • + +
  • Paniel_Story_Masterwork
  • +
  • Paniel_Story_journeymanB_PA
  • + + +
    + 15~18 + 38~58 +
    + + + Paniel_Worker_Legendary_PA + + +
  • + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_Meister_PA
  • + + +
    + 16~19 + 38~58 +
    + + + + Paniel_Maid_Normal_PA + + +
  • + +
  • Paniel_Story_Normal
  • +
  • Paniel_Story_MaidA_PA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Maid_Good_PA + + +
  • + +
  • Paniel_Story_Good
  • +
  • Paniel_Story_MaidB_PA
  • + + +
    + 11~14 + 38~58 +
    + + + Paniel_Maid_Excellent_PA + + +
  • + +
  • Paniel_Story_Excellent
  • +
  • Paniel_Story_HousemaidA_PA
  • + + +
    + 14~17 + 38~58 +
    + + + Paniel_Maid_Masterwork_PA + + +
  • + +
  • Paniel_Story_Masterwork
  • +
  • Paniel_Story_HousemaidB_PA
  • + + +
    + 15~18 + 38~58 +
    + + + Paniel_Maid_Legendary_PA + + +
  • + +
  • Paniel_Story_Legendary
  • +
  • Paniel_Story_Ladysmaid_PA
  • + + +
    + 16~19 + 38~58 +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/PawnKindDefs_PnL/PawnKinds_PNPlayer.xml b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKinds_PNPlayer.xml new file mode 100644 index 0000000..5b693f4 --- /dev/null +++ b/1.6/Core/Defs/PawnKindDefs_PnL/PawnKinds_PNPlayer.xml @@ -0,0 +1,90 @@ + + + + Paniel_Race + 30 + false + true + true + +
  • PN_ApparelBasic
  • +
    + + 130 + 130 + + +
  • PN_Apparel
  • +
    + Paniel_PlayerFaction + 0 + 20 + 23 + 10~13 + 38~58 + 0 + false +
    + + + + PN_ColonistPawn + + 0 + true + +
  • PN_ApparelBasicHat
  • +
  • PN_ApparelCape
  • +
    + + 330 + 2000 + + +
  • PN_Apparel
  • +
    + +
  • + +
  • Paniel_Story_Start
  • + + +
    + 0 + 0 + 0 + + +
    + + + + PN_Testsubject + + 0 + true + +
  • PN_ApparelBasicHat
  • +
  • PN_ApparelCape
  • +
    + + 330 + 2000 + + +
  • PN_Apparel
  • +
    + +
  • + +
  • Paniel_Story_Testsubject
  • + + +
    + 0 + 0 + 0 + + +
    +
    diff --git a/1.6/Core/Defs/RecipeDefs/Recipes_Drugs.xml b/1.6/Core/Defs/RecipeDefs/Recipes_Drugs.xml new file mode 100644 index 0000000..591cc1e --- /dev/null +++ b/1.6/Core/Defs/RecipeDefs/Recipes_Drugs.xml @@ -0,0 +1,79 @@ + + + + + PN_Make_AutomatonFuel + + Make Automaton fuel. + make Automaton fuel. + Cremate + 1200 + GeneralLaborSpeed + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PsychoidLeaves
  • + + + 8 + +
  • + + +
  • Chemfuel
  • + + + 4 + +
    + + + + + 4 + + PNRP_Production +
    + + + PN_Make_AutomatonFuel_bulk + + Make Automaton fuel. + make Automaton fuel. + Cremate + 4800 + GeneralLaborSpeed + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PsychoidLeaves
  • + + + 32 + +
  • + + +
  • Chemfuel
  • + + + 16 + +
    + + + + + 16 + + PNRP_Production +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/RecipeDefs/Recipes_Production.xml b/1.6/Core/Defs/RecipeDefs/Recipes_Production.xml new file mode 100644 index 0000000..bdbb916 --- /dev/null +++ b/1.6/Core/Defs/RecipeDefs/Recipes_Production.xml @@ -0,0 +1,184 @@ + + + + + PN_upgrade_SelfRepairKit + + upgrade automaton repair kit + Upgrading automaton repair kit. + GeneralLaborSpeed + Cook + Recipe_Machining + 800 + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_RepairKit
  • + + + 1 + +
  • + + +
  • MechSerumHealer
  • + + + 1 + +
    + + +
  • PN_RepairKit
  • +
  • MechSerumHealer
  • +
    +
    + + 1 + + + 8 + + Crafting + PNRP_SelfRepairKit +
    + + + + PN_Make_Leather_Automaton + + make automaton skin x10 + Making automaton skin. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • Leathers
  • + + +
  • Leather_Automaton
  • +
    + + 10 + +
  • + + +
  • Chemfuel
  • + + + 5 + +
    + + +
  • Leathers
  • +
    + +
  • Leather_Automaton
  • +
    +
    + + 10 + + + 4 + + Crafting + PNRP_Production +
    + + + + + PN_Disassemble_AutomatonPackage + + disassemble automaton package + disassembling package. + GeneralLaborSpeed + Cook + Recipe_Machining + 8000 + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_PackagedCatagory
  • + + + 1 + +
    + + +
  • PN_PackagedCatagory
  • +
    + +
    + + +
  • Packaged_NormalAutomaton
  • +
    +
    + + 75 + 4 + 25 + + + 6 + + Crafting + +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/RecipeDefs/Recipes_Randombox.xml b/1.6/Core/Defs/RecipeDefs/Recipes_Randombox.xml new file mode 100644 index 0000000..774a0c6 --- /dev/null +++ b/1.6/Core/Defs/RecipeDefs/Recipes_Randombox.xml @@ -0,0 +1,325 @@ + + + + PN_Make_Automaton + + make automaton + Making automaton. + GeneralLaborSpeed + Cook + Recipe_Machining + 48000 + UnfinishedAutomaton + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_BrainCoreCatagory
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 8 + +
  • + + +
  • Steel
  • + + + 150 + +
  • + + +
  • Leather_Automaton
  • + + + 50 + +
  • + + +
  • Chemfuel
  • + + + 20 + +
    + + +
  • PN_BrainCoreCatagory
  • +
    +
    + + 1 + + + 1 + + Crafting + + + + + 150 + 8 + 32 + 200 + 800 + 6 + 16 + + + Steel + 8 + 0 + false + +
  • + + +
  • PN_BrainCoreCatagory
  • + + + 1 + +
  • + + +
  • Leather_Automaton
  • + + + 50 + +
  • + + +
  • Chemfuel
  • + + + 20 + +
    +
    +
    + + + PN_Make_AutomatonSoldier + + make packaged automaton (Soldier) + Making automaton. + GeneralLaborSpeed + Cook + Recipe_Machining + 48000 + UnfinishedAutomaton + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_BrainCoreCatagory
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 8 + +
  • + + +
  • Steel
  • + + + 150 + +
  • + + +
  • Leather_Automaton
  • + + + 50 + +
  • + + +
  • Chemfuel
  • + + + 20 + +
    + + +
  • PN_BrainCoreCatagory
  • +
    +
    + + 1 + + + 8 + + Crafting + +
    + + + PN_Make_AutomatonEngineer + + make packaged automaton (Engineer) + Making automaton. + GeneralLaborSpeed + Cook + Recipe_Machining + 48000 + UnfinishedAutomaton + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_BrainCoreCatagory
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 8 + +
  • + + +
  • Steel
  • + + + 150 + +
  • + + +
  • Leather_Automaton
  • + + + 50 + +
  • + + +
  • Chemfuel
  • + + + 20 + +
    + + +
  • PN_BrainCoreCatagory
  • +
    +
    + + 1 + + + 8 + + Crafting + +
    + + + PN_Make_AutomatonDomestic + + make packaged automaton (Domestic) + Making automaton. + GeneralLaborSpeed + Cook + Recipe_Machining + 48000 + UnfinishedAutomaton + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_BrainCoreCatagory
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 8 + +
  • + + +
  • Steel
  • + + + 150 + +
  • + + +
  • Leather_Automaton
  • + + + 50 + +
  • + + +
  • Chemfuel
  • + + + 20 + +
    + + +
  • PN_BrainCoreCatagory
  • +
    +
    + + 1 + + + 8 + + Crafting + +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/RecipeDefs/Recipes_Surgery.xml b/1.6/Core/Defs/RecipeDefs/Recipes_Surgery.xml new file mode 100644 index 0000000..b7ff8df --- /dev/null +++ b/1.6/Core/Defs/RecipeDefs/Recipes_Surgery.xml @@ -0,0 +1,141 @@ + + + + Repair + Interact_Repair + MedicalOperationSpeed + Medicine + 16 + +
  • + + +
  • PN_RepairKit
  • + + + 1 + + +
    + +
    + + + PN_Disassemble + + Disassembling. + AutomataRace.Recipe_Disassemble + Disasembling. + Interact_Repair + Repair + 2000 + true + true + false + 5 + + + + + PN_Repair + + Reparing. + AutomataRace.Recipe_Repair + Reparing. + Interact_Repair + Repair + 2000 + true + false + false + 1.0 + +
  • + + +
  • PN_RepairKit
  • + + + 2 + +
    +
    + + + PN_Maintenance + + Maintenance. + AutomataRace.Recipe_Maintenance + Maintenance. + Interact_Repair + Repair + 2000 + true + false + false + 1.0 + + + + Recipe_PN_RemoveBrain_Inject + +
  • +
  • +
  • + true + Paniel_Race +
  • +
    + +
  • PN_ExtractBrain
  • +
    +
    + + + PN_ExtractBrain + + extract central nervous. + AutomataRace.Recipe_RemoveBrain + Remove central nervous. + 2000 + true + 1.0 + Adult + PNRP_Brain + PN_Brain + +
  • + + +
  • Medicine
  • + + + 1 + +
  • + + +
  • PN_BrainEmpty
  • + + + 1 + +
    + + +
  • Medicine
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ReserchDefs/Reserch_ProjectDefs.xml b/1.6/Core/Defs/ReserchDefs/Reserch_ProjectDefs.xml new file mode 100644 index 0000000..c2c71f5 --- /dev/null +++ b/1.6/Core/Defs/ReserchDefs/Reserch_ProjectDefs.xml @@ -0,0 +1,351 @@ + + + + PanielStart + + + + PN_technology + + + + + + + PNRP_Production + + Research how to craft an automaton. + PN_technology + 1000 + Industrial + +
  • BiofuelRefining
  • +
  • NutrientPaste
  • +
  • PsychiteRefining
  • +
  • Machining
  • +
    + 0 + 0 + +
  • PanielStart
  • +
    +
    + + + PNRP_Brain + + Researching methods of extracting the central nervous system to make automata. + PN_technology + 2000 + Industrial + HiTechResearchBench + +
  • PNRP_Production
  • +
  • Prosthetics
  • +
  • MicroelectronicsBasics
  • +
    + 2.0 + 0 + + + +
    + + + PNRP_ExperimentalModule + + Research how to make custom core implants. This implant makes the automaton learn like a human, but makes it mentally unstable.\n\nWarning: This implant is not a PnL licensed implant. When installed, the performance of the Automaton will decrease. + PN_technology + 1500 + Industrial + HiTechResearchBench + +
  • PNRP_Brain
  • +
    + 3.0 + 0.7 +
    + + + PNRP_BrainCasing + + Researching methods of long-term storage of the central nervous system. + PN_technology + 2000 + Spacer + HiTechResearchBench + +
  • MultiAnalyzer
  • +
    + +
  • PNRP_Brain
  • +
  • Bionics
  • +
  • BrainWiring
  • +
    + 4.0 + 0 +
    + + + + + PNRP_TierB_Parts + + Research how to craft basic Paniel parts. + PN_technology + 1000 + Industrial + HiTechResearchBench + +
  • PNRP_Production
  • +
  • MicroelectronicsBasics
  • +
    + 2.0 + 1.4 +
    + + + PNRP_TierC_Parts + + Research how to craft special Paniel parts. + PN_technology + 1000 + Industrial + HiTechResearchBench + +
  • PNRP_TierB_Parts
  • +
    + 3.0 + 1.4 +
    + + + + + PNRP_SelfRepairKit + + Research how to combine healer mech serum with repair kits. + PN_technology + 500 + Industrial + HiTechResearchBench + +
  • PNRP_Production
  • +
  • MicroelectronicsBasics
  • +
    + 2.0 + 1.4 +
    + + + PNRP_ResurrectModule + + Research how to embed the resurrector mech serum into the Automaton. + PN_technology + 500 + Industrial + HiTechResearchBench + +
  • PNRP_Production
  • +
  • MicroelectronicsBasics
  • +
    + 2.0 + 0.7 +
    + + + + + PNRP_TierA_Apparel + + Research how to craft a militia uniform. + PN_technology + 500 + Industrial + +
  • PNRP_Production
  • +
  • FlakArmor
  • +
    + 1.0 + 2.1 +
    + + + PNRP_TierB_Apparel + + Research how to make specialized uniforms. + PN_technology + 2000 + Industrial + HiTechResearchBench + +
  • PNRP_TierA_Apparel
  • +
  • MicroelectronicsBasics
  • +
  • Devilstrand
  • +
    + 2.0 + 2.1 +
    + + + PNRP_TierC_Apparel + + Research how to craft royal uniforms. + PN_technology + 6500 + Spacer + HiTechResearchBench + +
  • MultiAnalyzer
  • +
    + +
  • PNRP_TierB_Apparel
  • +
  • PoweredArmor
  • +
    + 4.0 + 2.1 +
    + + + + + PNRP_AutomatonWeapons + + Research how to craft basic PnL weapons. + PN_technology + 500 + Industrial + +
  • PNRP_Production
  • +
  • Gunsmithing
  • +
    + 1.0 + 3.5 +
    + + + PNRP_MachineGun + + Research how to craft basic PnL machine gun. + PN_technology + 500 + Industrial + HiTechResearchBench + +
  • PNRP_AutomatonWeapons
  • +
  • MultibarrelWeapons
  • +
    + 2.0 + 4.2 +
    + + + PNRP_Cannon + + Research how to craft basic PnL portable cannon. + PN_technology + 500 + Industrial + HiTechResearchBench + +
  • PNRP_AutomatonWeapons
  • +
  • Mortars
  • +
  • PrecisionRifling
  • +
    + 2.0 + 4.9 +
    + + + PNRP_AutoArtillery + + Research how to craft basic PnL Howitzer. + PN_technology + 1500 + Industrial + HiTechResearchBench + +
  • PNRP_Cannon
  • +
  • HeavyTurrets
  • +
    + 3.0 + 4.9 +
    + + + PNRP_RoyalWeapons + + Research how to craft Royal PnL weapons.\n\n[caution] : Royal weapons are exclusively for Paniel. + PN_technology + 500 + Spacer + HiTechResearchBench + +
  • MultiAnalyzer
  • +
    + +
  • ChargedShot
  • +
  • PNRP_AutomatonWeapons
  • +
  • PNRP_MachineGun
  • +
  • PNRP_Cannon
  • +
    + 4.0 + 3.5 +
    + + + PNRP_Railgun + + Research how to craft basic PnL Railgun. + PN_technology + 2000 + Spacer + HiTechResearchBench + +
  • MultiAnalyzer
  • +
    + +
  • SniperTurret
  • +
  • PNRP_AutoArtillery
  • +
  • PNRP_RoyalWeapons
  • +
    + 5.0 + 4.9 +
    + + + + PNRP_TierB_Module + + Research the ability modules available for (lged), (mast), (exc) model. + PN_technology + 1000 + Industrial + HiTechResearchBench + +
  • PNRP_TierB_Apparel
  • +
    + 3.0 + 2.8 +
    + + + PNRP_TierC_Module + + Research the ability modules available for (lged) model. (need Ideology or Biotech DLC) + PN_technology + 3250 + Spacer + HiTechResearchBench + +
  • MultiAnalyzer
  • +
    + +
  • PNRP_TierC_Apparel
  • +
  • PNRP_TierB_Module
  • +
    + 5.0 + 2.8 +
    + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/Scenarios/Scenarios.xml b/1.6/Core/Defs/Scenarios/Scenarios.xml new file mode 100644 index 0000000..148b57c --- /dev/null +++ b/1.6/Core/Defs/Scenarios/Scenarios.xml @@ -0,0 +1,98 @@ + + + + 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. + + PnL Industry wants to test a new type of automaton. + + PlayerFaction + Paniel_PlayerFaction + + + + +
  • + ConfigPage_ConfigureStartingPawns + 1 + 1 +
  • + + + +
  • + PlayerPawnsArriveMethod + false + DropPods +
  • + + +
  • + StartingResearch + PNRP_Production +
  • + + +
  • + GameStartDialog + +to. Experiment Manager + +Hello Manager. Thank you for participating in the test program. +Experimental automaton is a model that can study and acquire skills like humans. However, there have been a number of reports of mental instability. + +Only one test subject is provided. It cannot be resupplied in case of loss or destroy. + +As a spare, we provided one year's worth of fuel and three brain cores. It is up to the manager to decide how to use it. + +Please take part in the experiment diligently. + +from. PnL Industry Research Department. + GameStartSting +
  • + + +
  • + StartingThing_Defined + PN_BrainCasing + 3 +
  • + +
  • + StartingThing_Defined + PN_AutomatonFuel + 60 +
  • + +
  • + StartingThing_Defined + PN_SelfRepairKit + 5 +
  • + +
  • + StartingThing_Defined + PN_Shovel + Steel +
  • + + +
  • + DisableIncident + WandererJoin +
  • + +
  • + DisableIncident + StrangerInBlackJoin +
  • + +
  • + DisableIncident + WandererJoinAbasia +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/SoundDefs/Sounds.xml b/1.6/Core/Defs/SoundDefs/Sounds.xml new file mode 100644 index 0000000..8f69416 --- /dev/null +++ b/1.6/Core/Defs/SoundDefs/Sounds.xml @@ -0,0 +1,163 @@ + + + + + + PNRifleSound + + MapOnly + 1 + +
  • + +
  • + Things/PNRifleSound +
  • + + + 0.9152174 + 1.042391 + + +
    +
    + + + + PNRoyalMachinegunSound + + MapOnly + 1 + +
  • + +
  • + Things/PNRoyalMachinegunSound +
  • + + + 0.9152174 + 1.042391 + + +
    +
    + + + + PNCannonSound + + MapOnly + 1 + +
  • + +
  • + Things/PNCannonSound +
  • + + + 0.9152174 + 1.042391 + + +
    +
    + + + + PNRoyalRifleSound + + MapOnly + 1 + +
  • + +
  • + Things/PNRoyalRifleSound +
  • + + + 0.9152174 + 1.042391 + + +
    +
    + + + + PNRoyalHCSound + + MapOnly + 1 + +
  • + +
  • + Things/PNRoyalHCSound +
  • + + + 0.9152174 + 1.042391 + + +
    +
    + + + + PNChainswordSound + + MapOnly + 1 + +
  • + +
  • + Things/PNChainsword +
  • + + + 0.9152174 + 1.042391 + + +
    +
    + + + + PN_PrototypeRailGun_Warmup_Sound + true + MapOnly + 2 + PrioritizeNearest + +
  • + +
  • + Things/PNPrototypeRailGun_warmup +
  • + + +
    +
    + + + PN_PrototypeRailGun_Fire_Sound + + MapOnly + 1 + +
  • + +
  • + Things/PNPrototypeRailGun_fire +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Arm.xml b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Arm.xml new file mode 100644 index 0000000..67ea496 --- /dev/null +++ b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Arm.xml @@ -0,0 +1,12 @@ + + + + 2 + + 1 + + + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Base.xml b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Base.xml new file mode 100644 index 0000000..13eb339 --- /dev/null +++ b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Base.xml @@ -0,0 +1,76 @@ + + + + + PN_PartCatagory + + PN_AutomatonCatagory + UI/Icons/PNCT_PnL + + + + ThingWithComps + Item + MapMeshOnly + Middle + true + true + Item + Never + 2 + + 50 + 0.7 + -4 + 2.0 + + +
  • PN_PanielParts
  • +
    + +
  • + + true + true + false + 14 + + + + + (0.6, 0.6, 1.0) + false + true + true + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Body.xml b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Body.xml new file mode 100644 index 0000000..80edb6d --- /dev/null +++ b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Body.xml @@ -0,0 +1,12 @@ + + + + 2 + + 1 + + + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Head.xml b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Head.xml new file mode 100644 index 0000000..55a10f2 --- /dev/null +++ b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Head.xml @@ -0,0 +1,12 @@ + + + + 2 + + 1 + + + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Leg.xml b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Leg.xml new file mode 100644 index 0000000..5010eec --- /dev/null +++ b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Leg.xml @@ -0,0 +1,12 @@ + + + + 2 + + 1 + + + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Shell.xml b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Shell.xml new file mode 100644 index 0000000..61d8722 --- /dev/null +++ b/1.6/Core/Defs/ThingDef_PanielPart/ThingDef_Part_Shell.xml @@ -0,0 +1,12 @@ + + + + 2 + + 1 + + + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierA.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierA.xml new file mode 100644 index 0000000..2be56a0 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierA.xml @@ -0,0 +1,406 @@ + + + + PNApparel + + Apparel + + + + PNHeadgear + + PNApparel + + + + + +
  • PN_Apparel
  • + + +
  • PNApparel
  • +
    + false + + +
  • PNApparel
  • +
    + + false + + + + +
    + + + +
  • PNHeadgear
  • +
    + + + +
    + + + + PN_ApparelBasic + + + +
  • PN_AutomatonBench
  • +
    +
    + This is a basic paniel costume. It consists of a shirt and boots. + + Things/Apparel/PNBasic1 + Graphic_Single + CutoutComplex + + Industrial + 80 + +
  • Fabric
  • +
  • Leathery
  • +
    + + 200 + 2800 + 0.75 + 0.2 + 0.42 + 0.18 + 2 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNBasic + true + +
  • OnSkin
  • +
  • Middle
  • +
    + +
  • Paniel_Basic
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelBasicHat + + + +
  • PN_AutomatonBench
  • +
    +
    + This is a basic paniel hat. + + Things/Apparel/hats/PNbasichat1 + Graphic_Single + CutoutComplex + + Industrial + 25 + +
  • Fabric
  • +
  • Leathery
  • +
    + + 80 + 1800 + 0.14 + 0.2 + 0.60 + 0.50 + 0.8 + + + + + + +
  • UpperHead
  • +
    + Things/Apparel/hats/PNbasichat + true + +
  • Overhead
  • +
    + +
  • Paniel_Basic
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + PN_ApparelCape + This is a basic paniel cape. It has excellent performance in heat dissipation and insulation. + + + ComplexClothing + +
  • PN_AutomatonBench
  • +
    +
    + + Things/Apparel/PNCape1 + Graphic_Single + CutoutComplex + + Industrial + 80 + +
  • Fabric
  • +
  • Leathery
  • +
    + +
  • PNApparel
  • +
    + + 200 + 10000 + 2 + 0.3 + 2.00 + 0.85 + 3 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
    + Things/Apparel/PNCape + true + +
  • Shell
  • +
    + +
  • Paniel_Basic
  • +
  • Paniel_Militia
  • +
  • Paniel_Engineer
  • +
  • Paniel_Housekeeper
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + PN_ApparelMilitia + + A uniform worn by the militia on automata.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give it a decent defense. + + Things/Apparel/PNMilitia1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 60 + + 2 + 80 + + + +
  • PN_AutomatonBench
  • +
    + + 5 + + PNRP_TierA_Apparel +
    + + 200 + 21000 + 3 + 0.4 + 0.68 + 8.4 + 4.3 + 3 + + + -0.10 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNMilitia + true + +
  • OnSkin
  • +
  • Middle
  • +
    + +
  • Paniel_Militia
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelMilitiaHat + + A goggles worn by the militia on automata.\n\nThe built-in parts work with the automaton to give it a decent defense. + + Things/Apparel/hats/PNMilitiahat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 40 + + 2 + 10 + + + +
  • PN_AutomatonBench
  • +
    + + 5 + + PNRP_TierA_Apparel +
    + + 8000 + 120 + 1.2 + 0.68 + 12 + 12 + 1.5 + + + -0.05 + + + +
  • UpperHead
  • +
  • Eyes
  • +
    + Things/Apparel/hats/PNMilitiahat + true + +
  • Overhead
  • +
    + +
  • Paniel_Militia
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierB.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierB.xml new file mode 100644 index 0000000..c6347c1 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierB.xml @@ -0,0 +1,645 @@ + + + + + + PN_ApparelSoldier + + This is the uniform worn by the military on automata.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nBuilt-in parts work in conjunction with the automaton to provide good defense. But it doesn't help in situations other than combat. + + Things/Apparel/PNSoldier1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 100 + + 4 + 50 + + + +
  • PN_AutomatonBench
  • +
    + + 7 + + PNRP_TierB_Apparel +
    + + 60000 + 340 + 12 + 0.6 + 0.81 + 32 + 9 + 10 + + + -0.15 + 1 + -0.60 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNSoldier + true + +
  • OnSkin
  • +
  • Middle
  • +
  • Shell
  • +
    + +
  • Paniel_Soldier
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelSoldierHat + + This is the hat worn by the military on automata.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nBuilt-in parts work in conjunction with the automaton to provide good defense. But it doesn't help in situations other than combat. + + Things/Apparel/hats/PNSoldierhat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 40 + + 2 + 20 + + + +
  • PN_AutomatonBench
  • +
    + + 7 + + PNRP_TierB_Apparel +
    + + 150 + 21000 + 1.5 + 0.6 + 0.81 + 4 + 2 + 3 + + + -0.10 + -0.10 + 1 + 1 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNSoldierhat + true + +
  • Overhead
  • +
    + +
  • Paniel_Soldier
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + PN_ApparelWorker + + This is the uniform worn by the Automaton at the factory.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you adequate defense. It also has a function to assist the user's work. + + Things/Apparel/PNWorker1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 80 + + 3 + 40 + + + +
  • PN_AutomatonBench
  • +
    + + 6 + + PNRP_TierB_Apparel +
    + + 45000 + 280 + 9 + 0.6 + 0.69 + 32 + 9 + 7 + + + 0.10 + 0.10 + 0.10 + 0.10 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNWorker + true + +
  • OnSkin
  • +
  • Middle
  • +
    + +
  • Paniel_Engineer
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelWorkerHat + + This is the hat worn by the Automaton at the factory.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you adequate defense. It also has a function to assist the user's work. + + Things/Apparel/hats/PNWorkerhat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 30 + + 1 + 15 + + + +
  • PN_AutomatonBench
  • +
    + + 6 + + PNRP_TierB_Apparel +
    + + 15750 + 120 + 1 + 0.6 + 0.69 + 4 + 2 + 1 + + + 0.05 + 0.05 + 0.05 + 0.05 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNWorkerhat + true + +
  • Overhead
  • +
    + +
  • Paniel_Engineer
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + PN_ApparelMaid + + This is the uniform worn by the automaton in the noble mansion.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you adequate defense. It also has a function that assists users in their work. + + Things/Apparel/PNHousekeeper1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 80 + + 3 + 40 + + + +
  • PN_AutomatonBench
  • +
    + + 6 + + PNRP_TierB_Apparel +
    + + 45000 + 280 + 9 + 0.6 + 0.69 + 32 + 9 + 7 + + + 0.10 + 0.10 + 0.15 + 0.10 + 0.10 + 0.10 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNHousekeeper + true + +
  • OnSkin
  • +
  • Middle
  • +
    + +
  • Paniel_Housekeeper
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelMaidHat + + This is the hat worn by the automaton in the noble mansion.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you adequate defense. It also has a function that assists users in their work. + + Things/Apparel/hats/PNHousekeeperhat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 30 + + 1 + 15 + + + +
  • PN_AutomatonBench
  • +
    + + 6 + + PNRP_TierB_Apparel +
    + + 15750 + 120 + 1 + 0.6 + 0.69 + 4 + 2 + 1 + + + 0.05 + 0.05 + 0.10 + 0.05 + 0.05 + 0.05 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNHousekeeperhat + true + +
  • Overhead
  • +
    + +
  • Paniel_Housekeeper
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + + PN_EliteSecurityUniform + + This is the uniform worn by the PnL security on automata.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nBuilt-in parts work in conjunction with the automaton to provide good defense. + + Things/Apparel/PNEliteSecurity1 + Graphic_Single + CutoutComplex + 1 + + + 3 + 80 + 10 + + + + + + 45000 + 280 + 9 + 0.4 + 0.92 + 0.4 + 0.46 + 32 + 9 + 11 + + + 1 + -0.20 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNEliteSecurity + true + +
  • OnSkin
  • +
  • Middle
  • +
  • Shell
  • +
    + +
  • Paniel_EliteSecurity
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_EliteSecurityHat + + This is the hat worn by the PnL security on automata.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nBuilt-in parts work in conjunction with the automaton to provide good defense. + + Things/Apparel/hats/PNEliteSecurityhat1 + Graphic_Single + CutoutComplex + + + 1 + 30 + + + + + + 15750 + 120 + 1 + 0.4 + 0.92 + 0.4 + 0.46 + 4 + 2 + 2 + + + -0.10 + 1 + 1 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNEliteSecurityhat + true + +
  • Overhead
  • +
    + +
  • Paniel_EliteSecurity
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierC.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierC.xml new file mode 100644 index 0000000..4189d87 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Apparel_TierC.xml @@ -0,0 +1,692 @@ + + + + + + PNRoyalApparel + + PNApparel + + + + PNRoyalHeadgear + + PNHeadgear + + + + + +
  • PN_RoyalApparel
  • +
  • Royal
  • +
  • RoyalTier2
  • +
  • RoyalTier3
  • +
  • RoyalTier4
  • +
  • RoyalTier5
  • +
  • RoyalTier6
  • +
  • RoyalTier7
  • +
    + false +
    + +
  • PNRoyalApparel
  • +
    +
    + + + +
  • PNRoyalHeadgear
  • +
    + + + +
    + + + + PN_ApparelRoyalguard + + A uniform worn by the royal guards on Automaton.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nBuilt-in parts work with the automaton to provide excellent defense. But it doesn't help in situations other than combat. + + Things/Apparel/PNRoyalguard1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 150 + + 6 + 2 + 50 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 75000 + 400 + 15 + 0.4 + 0.93 + 36 + 12 + 13 + + + -0.35 + 3 + -0.1 + -0.60 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNRoyalguard + true + +
  • OnSkin
  • +
  • Middle
  • +
  • Shell
  • +
    + +
  • Paniel_Royalguard
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelRoyalguardHat + + A hat worn by the royal guards on Automaton.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nBuilt-in parts work with the automaton to provide excellent defense. But it doesn't help in situations other than combat. + + Things/Apparel/hats/PNRoyalguardhat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 50 + + 2 + 1 + 25 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 26250 + 180 + 2 + 0.4 + 0.93 + 4 + 2 + 4 + + + -0.15 + -0.15 + 3 + 3 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNRoyalguardhat + true + +
  • Overhead
  • +
    + +
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + PN_ApparelRoyalmeister + + This is the uniform worn by the automaton in the royal Workshop.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you excellent defense. It also has a function that assists users in their work. + + Things/Apparel/PNRoyalmeister1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 100 + + 4 + 2 + 30 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 75000 + 400 + 15 + 0.4 + 0.81 + 36 + 12 + 10 + + + 0.20 + 0.20 + 0.20 + 0.20 + -0.20 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNRoyalmeister + true + +
  • OnSkin
  • +
  • Middle
  • +
  • Shell
  • +
    + +
  • Paniel_Meister
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelRoyalmeisterHat + + This is the hat worn by the automaton in the royal Workshop.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you excellent defense. It also has a function that assists users in their work. + + Things/Apparel/hats/PNRoyalmeisterhat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 40 + + 2 + 1 + 10 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 26250 + 180 + 2 + 0.4 + 0.81 + 4 + 2 + 3 + + + 0.10 + 0.10 + 0.10 + 0.10 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNRoyalmeisterhat + true + +
  • Overhead
  • +
    + +
  • Paniel_Meister
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelRoyalmeisterHatWithMonocle + + This is the hat with monocle worn by the automaton in the royal Workshop.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you excellent defense. It also has a function that assists users in their work. + + Things/Apparel/hats/PNRoyalmeisterhatwm1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 40 + + 2 + 1 + 10 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 26250 + 180 + 2 + 0.4 + 0.81 + 4 + 2 + 3 + + + 0.10 + 0.10 + 0.10 + 0.10 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNRoyalmeisterhatwm + true + +
  • Overhead
  • +
    + +
  • Paniel_Meister
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelRoyalmeisterMonocle + + This is the monocle worn by the automaton in the royal Workshop.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you excellent defense. It also has a function that assists users in their work. + + Things/Apparel/hats/PNRoyalmeistermonocle1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 40 + + 2 + 1 + 10 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 26250 + 180 + 2 + 0.4 + 0.81 + 4 + 2 + 3 + + + 0.10 + 0.10 + 0.10 + 0.10 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNRoyalmeistermonocle + true + +
  • Overhead
  • +
    + +
  • Paniel_Meister
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + + PN_ApparelRoyalmaid + + This is the uniform worn by the automaton in the royal palace.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you excellent defense. It also has a function that assists users in their work. + + Things/Apparel/PNRoyalmaid1 + Graphic_Single + CutoutComplex + 1 + + +
  • Metallic
  • +
    + 100 + + 4 + 2 + 30 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 75000 + 400 + 15 + 0.4 + 0.81 + 36 + 12 + 10 + + + 0.10 + 0.20 + 0.20 + 0.30 + 0.20 + 0.20 + 0.20 + -0.20 + + + +
  • Torso
  • +
  • Neck
  • +
  • Shoulders
  • +
  • Arms
  • +
  • Legs
  • +
    + Things/Apparel/PNRoyalmaid + true + +
  • OnSkin
  • +
  • Middle
  • +
  • Shell
  • +
    + +
  • Paniel_Royalmaid
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    + + + PN_ApparelRoyalmaidHat + + This is the hat worn by the automaton in the royal palace.\n\nThis clothing is made with PnL industry's unique technology that combines metal and fabric.\n\nThe built-in parts work with the automaton to give you excellent defense. It also has a function that assists users in their work. + + Things/Apparel/hats/PNRoyalmaidhat1 + Graphic_Single + CutoutComplex + + +
  • Metallic
  • +
    + 40 + + 2 + 1 + 10 + + + +
  • PN_AutomatonBench
  • +
    + + 8 + + PNRP_TierC_Apparel +
    + + 26250 + 180 + 2 + 0.4 + 0.81 + 4 + 2 + 3 + + + 0.05 + 0.10 + 0.10 + 0.15 + 0.10 + 0.10 + 0.10 + + + +
  • FullHead
  • +
    + Things/Apparel/hats/PNRoyalmaidhat + true + +
  • Overhead
  • +
    + +
  • Paniel_Royalmaid
  • +
    + + + +
    + + +
  • + 10 + (255,255,255) +
  • +
  • + 15 + (255,255,255) +
  • +
  • + 20 + (255,255,255) +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Buildings.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Buildings.xml new file mode 100644 index 0000000..67a4a7f --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Buildings.xml @@ -0,0 +1,77 @@ + + + + + PN_AutomatonBench + + automaton fabrication bench + Building_WorkTable + Building + PassThroughOnly + 50 + + 300 + 5000 + 1.0 + + + + (5,2) + + 200 + 8 + + +
  • + +
  • ToolCabinet
  • + + +
  • + CompPowerTrader + 250 + true +
  • +
  • +
  • + + + + + + Things/Building/PNAutomatonBench + Graphic_Multi + CutoutComplex + (7,4) + + Damage/Corner + Damage/Corner + Damage/Corner + Damage/Corner + + + true + 0.20 + +
  • ITab_Bills
  • + + + BillsTab + + 0.5 + (0,0,-1) + true + Heavy + Production + Item + Misc12 + 6 + +
  • PlaceWorker_ShowFacilitiesConnections
  • +
  • PlaceWorker_PreventInteractionSpotOverlap
  • +
    + + + +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Item.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Item.xml new file mode 100644 index 0000000..3ce64ad --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Item.xml @@ -0,0 +1,464 @@ + + + + PN_AutomatonCatagory + + Manufactured + UI/Icons/PNCT_PnL + + + + + UnfinishedAutomaton + + An unfinished automaton. + + 0.5 + + + Things/Item/UnfinishedAutomaton + Graphic_Single + + + + + + + Leather_Automaton + + leather made for automaton production. looks like human leather. + + (255,240,227) + + + 4.2 + 0.64 + 12 + 12 + + +
  • PN_AutomatonCatagory
  • +
    + + + + Buyable + + (255,240,227) + 0.0025 + +
    + + + + + PN_BrainCoreCatagory + + PN_AutomatonCatagory + Things/Item/PNBrainCore + + + + + PN_BrainEmpty + + A case specially designed to contain the central nervous system. + + Things/Item/PNCentralnervous_empty + Graphic_Single + 1 + + false + +
  • PN_AutomatonCatagory
  • +
    + + 1 + 700 + 0.7 + + 10 + 1 + true + + 1 + 5 + 1 + + + + + Buyable + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + UnfinishedComponent + + 6 + + PNRP_Brain + +
  • PN_AutomatonBench
  • +
    +
    + + + +
    + + + PN_Brain + + A biological human central nervous. It doesn't look like it can be stored for long. + + Things/Item/PNCentralnervous + Graphic_Single + 1 + + +
  • PN_BrainCoreCatagory
  • +
    + + 548 + 1 + 0.7 + + false + + + + +
  • + 240000 + RaisedRock_Collapse +
  • +
    + Buyable + Normal +
    + + + PN_BrainCasing + + A brain core used to make automata. + + Things/Item/PNBrainCore + Graphic_Single + 1 + + false + +
  • PN_BrainCoreCatagory
  • +
    + Middle + + 1 + 13000 + 0.7 + + + 1 + 1 + 15 + 2 + + + + + Buyable + + + + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + UnfinishedHealthItemBionic + + 8 + + PNRP_BrainCasing + +
  • PN_AutomatonBench
  • +
    +
    +
    + + + PN_BrainCasingAntigrain + + A brain core used to Railgun. + + Things/Item/PNAntigrainCore + Graphic_Single + 1 + + false + +
  • PN_AutomatonCatagory
  • +
    + Middle + + 1 + 13000 + 0.7 + + + 1 + 2 + 2 + 15 + 1 + + + + + Buyable + Normal + +
  • + 14.9 + BombSuper + 0.4 + 0.7 + 0.22 + true + GiantExplosion + Explosion_GiantBomb + 60~120 +
  • +
    + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + UnfinishedHealthItemBionic + + 8 + + PNRP_Railgun + +
  • PN_AutomatonBench
  • +
    +
    +
    + + + + PN_Component + + This is a component used in special products of PnL Industry. It's tightly sealed, so reverse engineering looks difficult. + + Things/Item/PNComponent + Graphic_StackCount + + Metal_Drop + Standard_Drop + 50 + 1 + false + + 70 + 800 + 0.6 + 0.6 + 2.0 + + true + +
  • PN_AutomatonCatagory
  • +
    + +
  • PN_RoyalComp
  • +
    + Buyable + + + +
    + + + + PN_OTPCard + + A disposable OTP card used to connect to a secure line in the PnL industry. \n\nIt is used to request a PnL trader ship by contacting PnL logistics from the Comms console. + + Things/Item/PNOTPCard + Graphic_Single + + 10 + false + + 70 + 1500 + 0.1 + 0.6 + 2.0 + + true + +
  • PN_AutomatonCatagory
  • +
    + +
  • PN_OTPCard
  • +
    + Buyable + + + +
    + + + + PNKit + + PN_AutomatonCatagory + UI/Icons/PNCT_PNRepairkit + + + + PN_RepairKit + + A kit containing various materials to repair the automaton. + + Things/Item/PNRepairkit + Graphic_StackCount + 1.0 + + Industrial + 25 + 1 + false + + 60 + 2 + 0.7 + 700 + + +
  • PNKit
  • +
    + + 2 + 30 + 10 + 20 + + + GeneralLaborSpeed + Crafting + +
  • PN_AutomatonBench
  • +
    + PNRP_Production + + 4 + +
    + + + + + + + Buyable +
    + + + + PN_SelfRepairKit + + Repair kit combined with healer mech serum. It can be used alone without an operator, and the user can self-repair. + + Things/Item/PNSelfRepairkit + Graphic_StackCount + 1.0 + + Spacer + 25 + 1 + + 2 + 60 + 0.7 + 1500 + + +
  • PNKit
  • +
    + + 1 + 1 + 15 + 2 + 5 + + + GeneralLaborSpeed + Crafting + +
  • PN_AutomatonBench
  • +
    + PNRP_SelfRepairKit + + 8 + +
    + + + + +
  • + UseItem + Use self repair kit + 600 +
  • +
  • + +
  • Paniel_Race
  • + + false + +
  • + CompUseEffect_DestroySelf +
  • +
    + Buyable +
    + + + PN_AdministerSelfRepairKit + + Administer a self repair kit. + Recipe_AdministerUsableItem + Administering self repair kit. + false + false + 600 + false + true + 99999 + +
  • + + +
  • PN_SelfRepairKit
  • + + + 1 + +
    + + +
  • PN_SelfRepairKit
  • +
    +
    + +
  • Paniel_Race
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Module.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Module.xml new file mode 100644 index 0000000..d6d33c2 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Module.xml @@ -0,0 +1,573 @@ + + + + PNModule + + -5 + + + + PNApparelModule + + PNApparel + Things/Item/PNModuleIndustrial + + + + + 250 + 4 + 0.4 + 25 + + + UnfinishedHealthItemBionic + GeneralLaborSpeed + Crafting + Smith + Recipe_Machining + +
  • PN_AutomatonBench
  • +
    + false + + 4 + +
    + + false + false + false + true + 0 + +
  • Torso
  • +
    + +
  • PNModule
  • +
    +
    + +
  • PNApparelModule
  • +
    + + +
  • + 10 + (255,255,255) +
  • +
    +
    + true + None + + + +
    + + + + Graphic_Single + Things/Item/PNModuleIndustrial + + Industrial + + 45000 + + + + + + Graphic_Single + Things/Item/PNModuleSpacer + + Spacer + + 60000 + + + + + + + + PN_RapidFireModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nCombat model (legd), (mast), (exc)\n\nThis module allows automaton to use rapid fire ability. + + PN_RapidFireAbility + PN_RapidFireModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_RapidFireModuleHediff + PNTorso +
  • +
    +
    + + + PN_RapidFireModuleHediff + + The hediff created by installing rapid fire module. + + PN_RapidFireModule + + +
  • + + -2 + -0.20 + +
  • +
    + +
  • + PN_RapidFireAbility +
  • +
    +
    + + + + PN_CQCModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nCombat model (legd), (mast), (exc)\n\nThis module increases the automaton's close quarters combat stat, and allows automaton to use CQC ability. + + PN_CQCAbility + PN_CQCModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_CQCModuleHediff + PNTorso +
  • +
    +
    + + + PN_CQCModuleHediff + + The hediff created by installing close quarters combat module. + + PN_CQCModule + + +
  • + + 3 + 3 + -12 + 0.40 + -0.20 + 0.15 + +
  • +
    + +
  • + PN_CQCAbility +
  • +
    +
    + + + + PN_MiningModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nEngineer model (legd), (mast), (exc)\n\nThis module increases the automaton's miner speed stat. + + PN_MiningModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_MiningModuleHediff + PNTorso +
  • +
    +
    + + + PN_MiningModuleHediff + + The hediff created by installing mining module. + + PN_MiningModule + + +
  • + + 1.20 + 1.20 + 0.70 + 0.70 + 0.70 + +
  • +
    + + + +
    + + + + PN_ConstructionModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nEngineer model (legd), (mast), (exc)\n\nThis module increases the automaton's construction speed stat. + + PN_ConstructionModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_ConstructionModuleHediff + PNTorso +
  • +
    +
    + + + PN_ConstructionModuleHediff + + The hediff created by installing construction module. + + PN_ConstructionModule + + +
  • + + 0.70 + 0.70 + 0.70 + 1.20 + 0.70 + +
  • +
    + + + +
    + + + + PN_CraftingModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nEngineer model (legd), (mast), (exc)\n\nThis module increases the automaton's general labor speed stat. + + PN_CraftingModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_CraftingModuleHediff + PNTorso +
  • +
    +
    + + + PN_CraftingModuleHediff + + The hediff created by installing crafting module. + + PN_CraftingModule + + +
  • + + 0.70 + 0.70 + 1.20 + 0.70 + 1.20 + +
  • +
    + + + +
    + + + + PN_PlantsModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nDomestic model (legd), (mast), (exc)\n\nThis module increases the automaton's plant work speed stat. + + PN_PlantsModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_PlantsModuleHediff + PNTorso +
  • +
    +
    + + + PN_PlantsModuleHediff + + The hediff created by installing plants module. + + PN_PlantsModule + + +
  • + + 1.20 + 0.70 + 0.70 + 0.70 + 0.70 + +
  • +
    + + + +
    + + + + PN_CookingModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nDomestic model (legd), (mast), (exc)\n\nThis module increases the automaton's cooking speed stat. + + PN_CookingModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_CookingModuleHediff + PNTorso +
  • +
    +
    + + + PN_CookingModuleHediff + + The hediff created by installing cooking module. + + PN_CookingModule + + +
  • + + 0.70 + 0.70 + 0.70 + 1.20 + 1.20 + +
  • +
    + + + +
    + + + + PN_NursingModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nDomestic model (legd), (mast), (exc)\n\nThis module increases the automaton's medical speed stat. + + PN_NursingModuleHediff + + + 45 + 5 + 2 + 1 + + + PNRP_TierB_Module + + 6 + + + + + + + + +
  • + PN_NursingModuleHediff + PNTorso +
  • +
    +
    + + + PN_NursingModuleHediff + + The hediff created by installing nursing module. + + PN_NursingModule + + +
  • + + 0.70 + 1.20 + 1.20 + 0.70 + 0.70 + +
  • +
    + + + +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Randombox.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Randombox.xml new file mode 100644 index 0000000..a599ed2 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Randombox.xml @@ -0,0 +1,495 @@ + + + + PN_PackagedCatagory + + PN_AutomatonCatagory + UI/Icons/ThingCategories/Manufactured + + + + PN_TMPackagedCatagory + + PN_PackagedCatagory + UI/Icons/ThingCategories/Manufactured + + + + ThingWithComps + Item + MapMeshOnly + + Things/Item/PNAutomatonbox + Graphic_Single + + true + true + Item + 1 + + 100 + 80.0 + 0.2 + 48000 + + +
  • + + true + true + false + 14 + -1 + Buyable + +
  • PN_TMPackagedCatagory
  • + + + 75 + 75 + 4 + 4 + 1 + 50 + 20 + +
    + + + + Packaged_NormalAutomaton + + It's a box packed with automaton. + None + + 2000 + + +
  • + CompQuality +
  • +
  • +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? +
  • +
  • + CompUseEffect_DestroySelf +
  • +
    + +
  • PN_PackagedCatagory
  • +
    +
    + + + + Packaged_AutomatonSoldier + + A box containing a combat model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nPoor : 0.39%\nNormal : 15.79%\nGood : 54.28%\nExcellent : 27.40%\nMasterwork : 2.14% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 39 + Paniel_Randombox_Poor +
  • +
  • + 1579 + Paniel_Soldier_Normal +
  • +
  • + 5428 + Paniel_Soldier_Good +
  • +
  • + 2740 + Paniel_Soldier_Excellent +
  • +
  • + 214 + Paniel_Soldier_Masterwork +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + Packaged_AutomatonWorker + + A box containing a engineer model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nPoor : 0.39%\nNormal : 15.79%\nGood : 54.28%\nExcellent : 27.40%\nMasterwork : 2.14% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 39 + Paniel_Randombox_Poor +
  • +
  • + 1579 + Paniel_Worker_Normal +
  • +
  • + 5428 + Paniel_Worker_Good +
  • +
  • + 3740 + Paniel_Worker_Excellent +
  • +
  • + 214 + Paniel_Worker_Masterwork +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + Packaged_AutomatonMaid + + A box containing a domestic model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nPoor : 0.39%\nNormal : 15.79%\nGood : 54.28%\nExcellent : 27.40%\nMasterwork : 2.14% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 39 + Paniel_Randombox_Poor +
  • +
  • + 1579 + Paniel_Maid_Normal +
  • +
  • + 5428 + Paniel_Maid_Good +
  • +
  • + 2740 + Paniel_Maid_Excellent +
  • +
  • + 214 + Paniel_Maid_Masterwork +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + + Packaged_NormalAutomatonSoldier + + A box containing a combat model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nPoor : 0.39%\nNormal : 15.79%\nGood : 54.28%\nExcellent : 27.40%\nMasterwork : 2.14% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 39 + Paniel_Randombox_Poor +
  • +
  • + 1579 + Paniel_Soldier_Normal_PA +
  • +
  • + 5428 + Paniel_Soldier_Good_PA +
  • +
  • + 2740 + Paniel_Soldier_Excellent_PA +
  • +
  • + 214 + Paniel_Soldier_Masterwork_PA +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + Packaged_NormalAutomatonWorker + + A box containing a engineer model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nPoor : 0.39%\nNormal : 15.79%\nGood : 54.28%\nExcellent : 27.40%\nMasterwork : 2.14% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 39 + Paniel_Randombox_Poor +
  • +
  • + 1579 + Paniel_Worker_Normal_PA +
  • +
  • + 5428 + Paniel_Worker_Good_PA +
  • +
  • + 3740 + Paniel_Worker_Excellent_PA +
  • +
  • + 214 + Paniel_Worker_Masterwork_PA +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + Packaged_NormalAutomatonMaid + + A box containing a domestic model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nPoor : 0.39%\nNormal : 15.79%\nGood : 54.28%\nExcellent : 27.40%\nMasterwork : 2.14% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 39 + Paniel_Randombox_Poor +
  • +
  • + 1579 + Paniel_Maid_Normal_PA +
  • +
  • + 5428 + Paniel_Maid_Good_PA +
  • +
  • + 2740 + Paniel_Maid_Excellent_PA +
  • +
  • + 214 + Paniel_Maid_Masterwork_PA +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + + 150 + 2 + 6 + 1 + 50 + 20 + 1 + + + + + + Packaged_PremiumAutomatonSoldier + + A box containing a combat model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nGood : 9.14%\nExcellent : 50.76%\nMasterwork : 33.52%\nLegendary : 6.58% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 914 + Paniel_Soldier_Good_PA +
  • +
  • + 5076 + Paniel_Soldier_Excellent_PA +
  • +
  • + 3352 + Paniel_Soldier_Masterwork_PA +
  • +
  • + 658 + Paniel_Soldier_Legendary_PA +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + Packaged_PremiumAutomatonWorker + + A box containing a engineer model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nGood : 9.14%\nExcellent : 50.76%\nMasterwork : 33.52%\nLegendary : 6.58% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 914 + Paniel_Worker_Good_PA +
  • +
  • + 5076 + Paniel_Worker_Excellent_PA +
  • +
  • + 3352 + Paniel_Worker_Masterwork_PA +
  • +
  • + 658 + Paniel_Worker_Legendary_PA +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    + + + + Packaged_PremiumAutomatonMaid + + A box containing a domestic model automaton. Unpacking will reveal an automaton of a random grade.\n\n[Random Table]\nGood : 9.14%\nExcellent : 50.76%\nMasterwork : 33.52%\nLegendary : 6.58% + + + + +
  • + UseItem + Unpackage +
  • +
  • + Paniel in black + Sensing trouble, a mysterious [PAWN_kind] has arrived.\n\nWill [PAWN_pronoun] be able to set things right in these parts? + +
  • + 914 + Paniel_Maid_Good_PA +
  • +
  • + 5076 + Paniel_Maid_Excellent_PA +
  • +
  • + 3352 + Paniel_Maid_Masterwork_PA +
  • +
  • + 658 + Paniel_Maid_Legendary_PA +
  • + + +
  • + CompUseEffect_DestroySelf +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Security.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Security.xml new file mode 100644 index 0000000..643361d --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Security.xml @@ -0,0 +1,342 @@ + + + + + PN_Artillery_Base_Core + + Howitzer designed by PnL Industry. Using an automaton brain core, it has very good accuracy. However, it is necessary to periodically change the brain core due to excessive load in calculations. + + Building_TurretGun + MapMeshAndRealTime + + Things/Building/PN_Artillery_Base + Graphic_Single + CutoutComplex + (3,3) + + + + Building + True + (0,0,-3) + false + (3,3) + PassThroughOnly + 50 + 0.4 + + +
  • Metallic
  • +
    + Normal + Misc4 + Heavy + Security + 150 + 5 + + 150 + 6 + 2 + 1 + + +
  • ITab_Shells
  • +
    + +
  • +
  • + Violent +
  • +
  • + 240 + 5.9 + Bomb + 0.5 +
  • +
  • + Shots until core overload + Core overload + Cannot shoot: Needs new core + + +
  • PN_BrainCasing
  • + + + true + 10 + 10 + 1 + true + 1 + true + true + 0 + Things/Building/PN_cannoncore + +
    + + 520 + 0.7 + 15000 + 200 + -20 + 1.00 + + + PN_Artillery_Turret + 3.0 + (0, 0.35) + 1.0 + 14.0 + + + + +
  • PlaceWorker_TurretTop
  • +
  • PlaceWorker_PreventInteractionSpotOverlap
  • +
    + +
  • PNRP_AutoArtillery
  • +
    + Things/Building/PN_Artillery_Ui + 0.9 +
    + + + PN_Artillery_Turret + + Howitzer designed by PnL Industries. Using an automaton brain core, it has very good accuracy. However, it is necessary to periodically change the brain core due to excessive load in calculations. + + Things/Building/PN_Artillery_Turret + Graphic_Single + (6.0,6.0) + + 30 + MoteOverhead + + + + +
  • + Verb_Shoot + false + 2.0 + 0 + 0 + + false + 29.9 + 500 + 1 + PNCannonSound + 16 + 1 + + true + +
  • +
    + +
  • + + + + + +
  • PN_Shell_HE
  • +
  • PN_Shell_CI
  • +
  • PN_Shell_EMP
  • +
  • PN_Shell_FF
  • +
  • PN_Shell_Smoke
  • +
  • PN_Shell_AG
  • + + + + + + +
  • PN_Shell
  • +
    + +
  • PN_Shell_EMP
  • +
  • PN_Shell_FF
  • +
  • PN_Shell_Smoke
  • +
  • PN_Shell_AG
  • +
    +
    +
    + +
    + + + + PN_Railgun_Base_Core + + Railgun designed by PnL Industry. It uses an automaton brain core to control antigrain to generate huge amounts of power to charge the railgun.\nHowever, it is necessary to periodically change the brain core due to excessive load in antigrain control.\n\nUnlike PnL Howitzer, there is no aiming correction function. The component built into the shell replace the aiming correction function, but not perfect. + + Building_TurretGun + MapMeshAndRealTime + + Things/Building/PN_Artillery_Base + Graphic_Single + CutoutComplex + (3,3) + + + + Building + True + (0,0,-3) + false + (3,3) + PassThroughOnly + 50 + 0.4 + + +
  • Metallic
  • +
    + Normal + Misc4 + Heavy + Security + 150 + 5 + + 150 + 6 + 6 + 1 + + +
  • ITab_Shells
  • +
    + +
  • +
  • +
  • +
  • + Violent +
  • +
  • + 14.9 + BombSuper + 0.4 + 0.7 + 0.22 + true + GiantExplosion + Explosion_GiantBomb + 60~120 +
  • +
  • + Shots until core overload + Core overload + Cannot shoot: Needs new antigrain core + + +
  • PN_BrainCasingAntigrain
  • + + + true + 10 + 10 + 1 + true + 1 + true + true + 0 + Things/Building/PN_cannonAGcore + +
    + + 520 + 0.7 + 15000 + 200 + -20 + 1.00 + + + PN_Railgun_Turret + 3.0 + (0, 0.35) + 4.5 + 14.0 + + + + +
  • PlaceWorker_TurretTop
  • +
  • PlaceWorker_PreventInteractionSpotOverlap
  • +
    + +
  • PNRP_Railgun
  • +
    + Things/Building/PN_Railgun_Ui + 0.9 +
    + + + PN_Railgun_Turret + + Railgun designed by PnL Industries. + + Things/Building/PN_Railgun_Turret + Graphic_Single + (6.0,6.0) + + 30 + MoteOverhead + + + +
  • + Verb_Shoot + false + 4.5 + 0 + 0 + + true + 4.9 + 500 + 1 + PN_PrototypeRailGun_Warmup_Sound + PN_PrototypeRailGun_Fire_Sound + GunTail_Heavy + 16 + 1 + + true + +
  • +
    + +
  • + + + + + +
  • PN_Shell_RG
  • + + + + + + +
  • PN_Shell_RG
  • +
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Shell.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Shell.xml new file mode 100644 index 0000000..021ab83 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Shell.xml @@ -0,0 +1,568 @@ + + + + + + PN_Shell + + PN_AutomatonCatagory + UI/Icons/PNCT_PNShell + + + + + Graphic_StackCount + 1.0 + + Industrial + 25 + 1 + false + Metal_Drop + Standard_Drop + +
  • PN_Shell
  • +
    + Buyable + Normal + + GeneralLaborSpeed + Cook + Recipe_Machining + 800 + 5 + Crafting + +
  • PN_AutomatonBench
  • +
    + PNRP_AutoArtillery + + 4 + +
    +
    + + + + true + + + + + TorguePN.Projectile_Torgue_Rocket + + PN_CLbomb + 205 + 0.9 + Artillery_HitThickRoof + MortarBomb_Explode + MortarRound_PreImpact + MortarRound_Ambient + + + + + + PN_CLbomb + 10 + 5.0 + 1.30 + 1 + 1 + 1 + + + + + + PN_Shell_HE + + A high explosion cluster bomb that scatters submunitions when it hits a target. Explodes when damaged. + + Things/Item/PNShell/PNShellHE + + PN_Bullet_Shell_HE + + 60 + 1.25 + 1.0 + 1.5 + + +
  • + 3.9 + Bomb + 0.4 + 0.7 + 30~60 +
  • +
    + + 10 + 20 + 1 + + +
  • PN_Shell
  • +
    +
    + + + PN_Bullet_Shell_HE + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + + PN_Bullet_Shell_HE_Sub + 16 + 6.9 + + + + + PN_Bullet_Shell_HE_Sub + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + Bomb + 6.5 + 2.1 + 10 + 60 + 0.6 + true + Artillery_HitThickRoof + MortarIncendiary_Explode + MortarRound_PreImpact + MortarRound_Ambient + true + + + + + PN_CL_Bomb + + + + + + + PN_Shell_CI + + A cluster incendiary bomb that scatters submunitions when it hits a target. Explodes when damaged. + + Things/Item/PNShell/PNShellIN + + PN_Bullet_Shell_CI + + 60 + 1.25 + 1.0 + 1.5 + + +
  • + 3.9 + Flame + 0.4 + 0.7 + 30~60 +
  • +
    + + 10 + 20 + 1 + + +
  • PN_Shell
  • +
    +
    + + + PN_Bullet_Shell_CI + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + + PN_Bullet_Shell_CI_Sub + 16 + 8.1 + + + + + PN_Bullet_Shell_CI_Sub + + + Things/Projectile/ShellIncendiary + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + Flame + 6.5 + 2.4 + 10 + 60 + 0.6 + Filth_Fuel + 0.27 + true + Artillery_HitThickRoof + MortarIncendiary_Explode + MortarRound_PreImpact + MortarRound_Ambient + true + + + + + + + PN_Shell_EMP + + A cluster EMP bomb that scatters submunitions when it hits a target. Explodes when damaged. + + Things/Item/PNShell/PNShellEM + + PN_Bullet_Shell_EMP + + 60 + 1.25 + 1.0 + 1.5 + + +
  • + 12.9 + EMP + 0.4 + 0.7 + 30~60 +
  • +
    + + 5 + 20 + 1 + + +
  • PN_Shell
  • +
    +
    + + + PN_Bullet_Shell_EMP + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + + EMP + PN_Bullet_Shell_EMP_Sub + 10 + 14.9 + Artillery_HitThickRoof + Explosion_EMP + MortarRound_PreImpact + MortarRound_Ambient + + + + + PN_Bullet_Shell_EMP_Sub + + + Things/Projectile/ShellEMP + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + EMP + 6.5 + 5.9 + 60 + 0.6 + true + Artillery_HitThickRoof + Explosion_EMP + MortarRound_PreImpact + MortarRound_Ambient + true + + + + + + + PN_Shell_FF + + A cluster firefoam bomb that scatters submunitions when it hits a target. Explodes when damaged. + + Things/Item/PNShell/PNShellFF + + PN_Bullet_Shell_FF + + 60 + 1.25 + 1.0 + 1.5 + + +
  • + 10.9 + Extinguish + 0.4 + 0.7 + Filth_FireFoam + 1 + 3 + true + ExtinguisherExplosion + 30~60 +
  • +
    + + 5 + 20 + 1 + + +
  • PN_Shell
  • +
    +
    + + + PN_Bullet_Shell_FF + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + + Extinguish + PN_Bullet_Shell_FF_Sub + 10 + 14.9 + Artillery_HitThickRoof + Explosion_EMP + MortarRound_PreImpact + MortarRound_Ambient + + + + + PN_Bullet_Shell_FF_Sub + + + Things/Projectile/ShellFirefoam + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + Extinguish + 6.5 + 5.9 + 60 + 0.6 + true + Artillery_HitThickRoof + Explosion_EMP + MortarRound_PreImpact + MortarRound_Ambient + Filth_FireFoam + 1 + 3 + true + ExtinguisherExplosion + + + + + + + PN_Shell_Smoke + + A cluster smoke bomb that scatters submunitions when it hits a target. Explodes when damaged. + + Things/Item/PNShell/PNShellSM + + PN_Bullet_Shell_Smoke + + 60 + 1.25 + 1.0 + 1.5 + + +
  • + Smoke + 11 + BlindSmoke + 30~60 +
  • +
    + + 5 + 20 + 1 + + +
  • PN_Shell
  • +
    +
    + + + PN_Bullet_Shell_Smoke + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + + Smoke + PN_Bullet_Shell_Smoke_Sub + 10 + 14.9 + Artillery_HitThickRoof + Explosion_Smoke + MortarRound_PreImpact + MortarRound_Ambient + + + + + PN_Bullet_Shell_Smoke_Sub + + + Things/Projectile/ShellSmoke + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + Smoke + 6.5 + 5.9 + 60 + 0.6 + true + Artillery_HitThickRoof + Explosion_Smoke + MortarRound_PreImpact + MortarRound_Ambient + BlindSmoke + + + + + + + PN_Shell_AG + + An ultra-tech warhead powered by a grain of antimatter. Usually used by spacecraft or glitterworld war machines, it creates a huge explosion and starts fires around the target. Explodes when damaged. + + Things/Item/PNShell/PNShellAG + + PN_Bullet_Shell_AG + + 60 + 1.25 + 1.0 + 1.5 + + +
  • + 14.9 + BombSuper + 0.4 + 0.7 + 0.22 + true + GiantExplosion + Explosion_GiantBomb + 60~120 +
  • +
    + + 1 + 20 + + + 1 + +
    + + + PN_Bullet_Shell_AG + + + Things/Projectile/ShellAntigrainWarhead + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + BombSuper + 205 + 14.9 + 0.22 + true + GiantExplosion + Artillery_HitThickRoof + Explosion_GiantBomb + MortarRound_PreImpact + MortarRound_Ambient + + + + + + + PN_Shell_RG + + A special shell used in railgun. + + Things/Item/PNShell/PNShellAP + + PN_Bullet_RailGun + + 60 + 1.25 + 0 + 1.5 + + + + + + 30 + 50 + 1 + + + PNRP_Railgun + + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Industrial.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Industrial.xml new file mode 100644 index 0000000..7a6d15a --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Industrial.xml @@ -0,0 +1,1471 @@ + + + + + + ThingWithComps + Item + true + Item + true + Never + Primary + true + 14 + true + + 100 + 1.0 + 2 + -3 + 0.20 + + +
  • +
  • + CompEquippable +
  • +
    + + 35 + + 0 +
    + + + PN_WeaponsRanged + + WeaponsRanged + Icon/Paniel_HQ + + + + PN_WeaponsMelee + + WeaponsMelee + Icon/Paniel_HQ + + + + + Industrial + true + true + +
  • PN_WeaponsMelee
  • +
    + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + +
  • PN_AutomatonBench
  • +
    + UnfinishedWeapon +
    + +
  • ITab_Art
  • +
    + +
  • PN_Melee
  • +
    + +
  • Melee
  • +
    +
    + + + + + +
  • Root
  • +
    + +
  • Silver
  • +
  • Gold
  • +
  • WoodLog
  • +
    +
    +
    + +
  • + CompQuality +
  • +
  • + NamerArtWeaponMelee + ArtDescription_WeaponMelee + Excellent +
  • +
    + +
  • MeleePiercer
  • +
    +
    + + + + + +
  • Root
  • +
    + +
  • Silver
  • +
  • Gold
  • +
    +
    +
    + +
  • + CompQuality +
  • +
  • + NamerArtWeaponMelee + ArtDescription_WeaponMelee + Excellent +
  • +
    + +
  • MeleeBlunt
  • +
    +
    + + + + Industrial + true + +
  • PN_WeaponsRanged
  • +
    + +
  • ITab_Art
  • +
    + + 0.5 + + +
  • PN_Gun
  • +
    + +
  • + NamerArtWeaponGun + ArtDescription_WeaponGun + Excellent +
  • +
  • + CompQuality +
  • +
    + +
  • Ranged
  • +
    +
    + + + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + +
  • PN_AutomatonBench
  • +
    + UnfinishedGun +
    + + + +
    + + + Projectile + Normal + Projectile + Bullet + + False + True + + Transparent + + + + + + PN_Shovel + + It's a small shovel. Useful for farming, mining and construction. It looks powerful even when used as a weapon. + + Things/Weapons/PNShovel + Graphic_Single + CutoutComplex + + +
  • PN_Shovel
  • +
    + 50 + +
  • RewardStandardQualitySuper
  • +
    + + 8000 + 1.2 + + -65 + +
  • Metallic
  • +
    + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Cut
  • + + 16 + 2 + +
  • + + +
  • Blunt
  • + + 16 + 2 + +
    + + Smithing + + 5 + + +
  • ElectricSmithy
  • +
  • FueledSmithy
  • +
    +
    + + 0.15 + 0.15 + 0.15 + +
    + + + + PN_Chainsword + + [caution] : Automaton exclusive weapon.\n\nA sword with a rotating chain saw blade. It works by linking with the automaton and receiving power. + + Things/Weapons/PNSword + Graphic_Single + CutoutComplex + + PNChainswordSound + +
  • PN_Chainsword
  • +
    + 50 + + + + + 18000 + 2 + + -65 + +
  • Metallic
  • +
    + + 1 + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Stab
  • + + 16 + 2 + +
  • + + +
  • PN_ChainCutTool
  • + + 16 + 2 + +
    + + PNRP_AutomatonWeapons + + 5 + + + + 0.25 + +
    + + + + PN_Revolver + + A revolver similar to a shotgun that fires from six barrels at once. + + Things/Weapons/PNRevolver + Graphic_Single + 1 + + 1 + Interact_Revolver + +
  • RewardStandardQualitySuper
  • +
    + + 18000 + 1.6 + 0.75 + 0.45 + 0.15 + 0.05 + 1.8 + + +
  • PN_Revolver
  • +
    + + 50 + 2 + + + + 3 + + PNRP_AutomatonWeapons + + + + +
  • + TorguePN.Verb_Shoot_ShotGun + true + PN_Bullet_Revolver_Volley + 0.5 + 12.9 + 1 + 10 + Shot_Revolver + GunTail_Light + 9 + 6 +
  • +
    + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • + + 12 + 2 + +
    + +
  • ShortShots
  • +
    +
    + + + PN_Bullet_Revolver_Volley + + + Things/Projectile/Bullet_Small + Graphic_Single + + + Bullet + 6 + 0.5 + 0.12 + 55 + + + + + + PN_Rifle + + Lever action rifle produced by PnL industry. Users can choose between burst shot mode and point shot mode. + + Things/Weapons/PNRifle + Graphic_Single + + Interact_Rifle + + PNRP_AutomatonWeapons + + 6 + + + +
  • RewardStandardQualitySuper
  • +
    + + 40000 + 3.5 + 0.65 + 0.70 + 0.65 + 0.55 + 0.7 + + + 75 + 5 + + +
  • + + Things/Weapons/SYS/PNRifle_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRifle_Full + Graphic_Multi + + Back + + (0.15,0.3,0) + -45 + + + (-0.15,-0.3,0) + -45 + + + (-0.15,-0.3,0) + -30 + + + (0.15,-0.3,0) + 30 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + It fires slowly, but has a high accuracy and range. + PN_Rifle_Point + 30 + Interact_Rifle + UI/Commands/Snipe + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_Rifle + 0.7 + 30.9 + PNRifleSound + GunTail_Heavy + 9 +
  • +
    + +
  • PN_Rifle
  • +
    + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + 45 +
    + + + + + PN_Rifle_Point + + Lever action rifle produced by PnL industry. Users can choose between burst shot mode and point shot mode. + + Things/Weapons/PNRifle + Graphic_Single + + Interact_Rifle + + + + + + + + 40000 + 3.5 + 0.65 + 0.95 + 0.90 + 0.80 + 0.7 + + + 75 + 5 + + +
  • + + Things/Weapons/SYS/PNRifle_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRifle_Full + Graphic_Multi + + Back + + (0.15,0.3,0) + -45 + + + (-0.15,-0.3,0) + -45 + + + (-0.15,-0.3,0) + -30 + + + (0.15,-0.3,0) + 30 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + It fires quickly, but has a low accuracy and range. + PN_Rifle + 30 + Interact_Rifle + UI/Commands/Pew + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_Rifle + 2.3 + 36.9 + PNRifleSound + GunTail_Heavy + 9 +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + 45 +
    + + + PN_Bullet_Rifle + + + Bullet + 16 + 1.0 + 70 + + + Things/Projectile/Bullet_big + Graphic_Single + + + + + + PN_Machinegun + + Machine gun produced by PnL industry. + + Things/Weapons/PNMachinegun_carry + Graphic_Single + + Interact_Rifle + + PNRP_MachineGun + + 7 + + + +
  • RewardStandardLowFreq
  • +
  • RewardStandardQualitySuper
  • +
    + + 60000 + 10 + 0.15 + 0.25 + 0.25 + 0.18 + 1.8 + + + 150 + 10 + + +
  • + + Things/Weapons/SYS/PNMachinegun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNMachinegun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + Mount machinegun on the ground. It moves very slowly, but it can unleash heavy firepower. + PN_Machinegun_Mount + 120 + Interact_Rifle + UI/Commands/MG_Mount + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_Machinegun + 1.8 + 30.9 + 12 + 4 + Shot_AssaultRifle + GunTail_Medium + 9 +
  • +
    + +
  • PN_Machinegun
  • +
    + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + 45 + + -0.25 + + +
  • RangedHeavy
  • +
    +
    + + + + + PN_Machinegun_Mount + + Machine gun produced by PnL industry. + + Things/Weapons/PNMachinegun + Graphic_Single + + Interact_Rifle + + + + + + + + 60000 + 10 + 0.25 + 0.35 + 0.35 + 0.28 + 0.03 + + + 150 + 10 + + +
  • + + Things/Weapons/SYS/PNMachinegun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNMachinegun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + + + If it overheats, will change to cooling mode. + PN_Machinegun_Overheated + 800 + 2000 + UI/Commands/MG_overheat + 1 + + +
  • + + Fold the mount and move urgently. Cooling penalty still applies. + PN_Machinegun_Overheated + 2000 + Interact_Rifle + UI/Commands/MG_withdrawal + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_Machinegun + 0.03 + 30.9 + 10 + 4 + Shot_AssaultRifle + GunTail_Medium + 9 +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + 45 + + -99 + + +
  • RangedHeavy
  • +
    +
    + + + + + PN_Machinegun_Overheated + + Machine gun produced by PnL industry. + + Things/Weapons/PNMachinegun_carry + Graphic_Single + + Interact_Rifle + + + + + + + + 60000 + 10 + 0.25 + 0.35 + 0.35 + 0.28 + 1.8 + + + 150 + 10 + + +
  • + + Things/Weapons/SYS/PNMachinegun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNMachinegun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + + + Performance returns to normal when cooling is complete. + PN_Machinegun + 1700 + 2500 + UI/Commands/MG_cooling + 1 + + +
    + +
  • + Verb_Shoot + true + PN_Bullet_Machinegun + 1.8 + 30.9 + 6 + 8 + Shot_AssaultRifle + GunTail_Medium + 9 +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + 45 + + -1.00 + + +
  • RangedHeavy
  • +
    +
    + + + PN_Bullet_Machinegun + + + Bullet + 8 + 1.0 + 70 + + + Things/Projectile/Bullet_Small + Graphic_Single + + + + + + PN_Cannon + + portable cannon produced by PnL industry. It can fire high-explosive and penetrating rounds. + + Things/Weapons/PNCannon + Graphic_Single + + Interact_Rifle + + PNRP_Cannon + + 8 + + + +
  • RewardStandardQualitySuper
  • +
    + + 68000 + 9.5 + 0.65 + 0.65 + 0.85 + 0.75 + 4.5 + + + 150 + 10 + + +
  • + + Things/Weapons/SYS/PNCannon_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNCannon_Full + Graphic_Multi + + Back + + (0,0.3,-0.05) + 25 + + + (0,-0.3,-0.05) + -25 + + + (-0.15,-0.3,-0.05) + 70 + + + (0.15,-0.3,-0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use HE bullet. + PN_Cannon_HE + 120 + Interact_Rifle + UI/Commands/HE + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_AP + 3.5 + 4.9 + 44.9 + PNCannonSound + GunTail_Heavy + 14 +
  • +
    + +
  • PN_Cannon
  • +
    + +
  • + + +
  • Blunt
  • + + 15.7 + 2 + +
    + 45 + + -0.25 + + +
  • RangedHeavy
  • +
  • LongShots
  • +
    +
    + + + + + PN_Cannon_HE + + portable cannon produced by PnL industry. It can fire high-explosive and penetrating rounds. + + Things/Weapons/PNCannon + Graphic_Single + + Interact_Rifle + + + + + + + + 68000 + 9.5 + 0.65 + 0.65 + 0.85 + 0.75 + 4.5 + + + 150 + 10 + + +
  • + + Things/Weapons/SYS/PNCannon_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNCannon_Full + Graphic_Multi + + Back + + (0,0.3,-0.05) + 25 + + + (0,-0.3,-0.05) + -25 + + + (-0.15,-0.3,-0.05) + 70 + + + (0.15,-0.3,-0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use AP bullet. + PN_Cannon + 120 + Interact_Rifle + UI/Commands/AP + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_HE + 0.01 + 3.5 + 4.9 + 44.9 + PNCannonSound + GunTail_Heavy + 14 + + true + +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 15.7 + 2 + +
    + 45 + + -0.25 + + +
  • RangedHeavy
  • +
  • LongShots
  • +
    +
    + + + PN_Bullet_HE + + + Things/Projectile/ShellHighExplosive + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + PN_Bomb_Cannon + 100 + 1.9 + + + + + PN_Bullet_AP + + + Bullet + 40 + 3 + 0.70 + 100 + + + Things/Projectile/ShellHighExplosive + Graphic_Single + + + + + PN_Bomb_Cannon + + 50 + + + + + PN_PrototypeRailGun + + An experimental railgun that fires powerful explosions in a narrow area.\nOnce fired, it will break down and cannot be used. + Normal + Spacer + false + + Things/Weapons/PNPrototypeRailGun + Graphic_Single + + + 1250 + 8 + 4.5 + + +
  • PN_PrototypeRailGun
  • +
  • PN_SingleUse
  • +
    + +
  • ExoticMisc
  • +
    + +
  • SingleUseWeapon
  • +
  • RewardStandardLowFreq
  • +
    + +
  • + Verb_ShootOneUse + true + PN_Bullet_RailGun + 0.1 + 4.5 + 8 + 4.9 + 500 + 1 + PN_PrototypeRailGun_Warmup_Sound + PN_PrototypeRailGun_Fire_Sound + GunTail_Heavy + true + + true + + 14 +
  • +
    + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + +
  • +
  • + CompEquippable +
  • +
  • +
  • + NamerArtWeaponMelee + ArtDescription_WeaponMelee + Excellent +
  • +
  • + 7.8 + Bomb + Flame +
  • +
  • + + Things/Weapons/SYS/PNPrototypeRailGun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNPrototypeRailGun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
    + 45 +
    + + + PN_Bullet_RailGun + + + Things/Projectile/ChargeLanceShot + Graphic_Single + TransparentPostLight + + Projectile_Explosive + + PN_BombRG + 615 + 1.9 + + + + + PN_BombRG + DamageWorker_Blunt + 1.0 + 0.6~1.0 + Sharp + 550 + 700 + 5.0 + 2.00 + 0.1 + 0.1 + 1 + true + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Royal.xml b/1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Royal.xml new file mode 100644 index 0000000..dcfa4a7 --- /dev/null +++ b/1.6/Core/Defs/ThingDefs/ThingDef_Weapons_Royal.xml @@ -0,0 +1,1891 @@ + + + + + PN_Chainlongsword + + [caution] : Automaton exclusive weapon.\n\nA long sword with a rotating chain saw blade. It works by linking with the automaton and receiving power. + + Things/Weapons/PNSwordLong + Graphic_Single + CutoutComplex + + +
  • PN_RoyalChainsword
  • +
    + 100 + +
  • RewardStandardQualitySuper
  • +
    + + 18000 + 4 + + 45 + +
  • Metallic
  • +
    + + 1 + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Stab
  • + + 23 + 2.4 + +
  • + + +
  • PN_ChainCutTool
  • + + 23 + 2.4 + +
    + + PNRP_RoyalWeapons + + 5 + + + +
  • + True + + (0.2,0,0.25) + -45 + + + (-0.25,0.3,0.2) + 45 + + + (0.15,0.3,0.2) + -45 + + + (-0.15,-0.3,0.2) + 45 + +
  • +
    + + + +
    + + + + PN_WarHammer + + A luxurious war hammer made by PnL industry. There is no special function. + + Things/Weapons/PNWarHammer + Graphic_Single + CutoutComplex + + +
  • PN_WarHammer
  • +
    + 150 + +
  • RewardStandardQualitySuper
  • +
    + + 18000 + 4 + + +
  • Metallic
  • +
    + + 1 + + +
  • + + +
  • Poke
  • + + 11 + 2.6 + +
  • + + false + +
  • Blunt
  • + + 22 + 2.4 + +
    + + PNRP_RoyalWeapons + + 5 + + + + + + + + +
    + + + + PN_TwinPistol + + [caution] : Automaton exclusive weapon.\n\nA dual pistol that fires a lot of bullets at a close range. Used by the Royal Guard's Special Forces Automaton. In conjunction with the automaton, it enables fast reloading and gives the user high melee combat ability. + Spacer + 1 + + Things/Weapons/PNTwinpistol + Graphic_Single + + Interact_Rifle + + PNRP_RoyalWeapons + + 7 + + + +
  • RewardStandardQualitySuper
  • +
    + + 45000 + 3.2 + 0.57 + 0.45 + 0.14 + 0.03 + 0.85 + + + 75 + 2 + 1 + + +
  • +
    + +
  • + Verb_Shoot + true + PN_Bullet_TwinPistol + 0.35 + 12.9 + 2 + 12 + Shot_Revolver + GunTail_Light + 9 +
  • +
    + +
  • PN_RoyalRifle
  • +
    + +
  • + + +
  • Blunt
  • + + 9 + 1 + +
  • + + +
  • Blunt
  • + + 18 + 2 + +
  • + + +
  • Poke
  • + + 20 + 2 + 0.09 + +
    + +
  • ShortShots
  • +
  • Ultratech
  • +
    +
    + + + PN_Bullet_TwinPistol + + + Bullet + 4 + 0.5 + 0.15 + 70 + + + Things/Projectile/Bullet_Small + Graphic_Single + + + + + + PN_RoyalRifle + + [caution] : Automaton exclusive weapon.\n\nroyal guard rifle produced by PnL industry. Users can choose between burst shot mode and point shot mode. + Spacer + 1 + + Things/Weapons/PNRoyalRifle + Graphic_Single + + Interact_Rifle + + PNRP_RoyalWeapons + + 7 + + + +
  • RewardStandardQualitySuper
  • +
    + + 45000 + 4.6 + 0.65 + 0.70 + 0.65 + 0.55 + 0.7 + + + 75 + 2 + 1 + + +
  • +
  • + + Things/Weapons/SYS/PNRoyalRifle_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalRifle_Full + Graphic_Multi + + Back + + (0.15,0.3,0.05) + -45 + + + (-0.15,-0.3,0.05) + -45 + + + (-0.15,-0.3,0.05) + -30 + + + (0.15,-0.3,0.05) + 30 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + It fires slowly, but has a high accuracy and range. + PN_RoyalRifle_Point + 30 + Interact_Rifle + UI/Commands/Snipe + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_RoyalRifle + 0.7 + 30.9 + PNRoyalRifleSound + GunTail_Heavy + 9 +
  • +
    + +
  • PN_RoyalRifle
  • +
    + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + 45 + +
  • Ultratech
  • +
    +
    + + + + + PN_RoyalRifle_Point + + [caution] : Automaton exclusive weapon.\n\nroyal guard rifle produced by PnL industry. Users can choose between bust shot mode and point shot mode. + Spacer + 1 + + Things/Weapons/PNRoyalRifle + Graphic_Single + + Interact_Rifle + + + + + + + + 45000 + 4.6 + 0.65 + 0.95 + 0.90 + 0.80 + 0.7 + + + 75 + 2 + 1 + + +
  • +
  • + + Things/Weapons/SYS/PNRoyalRifle_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalRifle_Full + Graphic_Multi + + Back + + (0.15,0.3,0.05) + -45 + + + (-0.15,-0.3,0.05) + -45 + + + (-0.15,-0.3,0.05) + -30 + + + (0.15,-0.3,0.05) + 30 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + It fires quickly, but has a low accuracy and range. + PN_RoyalRifle + 30 + Interact_Rifle + UI/Commands/Pew + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_RoyalRifle + 2.3 + 36.9 + PNRoyalRifleSound + GunTail_Heavy + 9 +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + 45 + +
  • Ultratech
  • +
    +
    + + + PN_Bullet_RoyalRifle + + + Bullet + 20 + 1.5 + 0.38 + 100 + + + Things/Projectile/Bullet_big + Graphic_Single + + + + + + + PN_RoyalHeavySlug + + [caution] : Automaton exclusive weapon.\n\nheavy slug rifle produced by PnL industry. They fire huge bullets, but it have a short range. + Spacer + 1 + + Things/Weapons/PNRoyalHeavyslug + Graphic_Single + + Interact_Rifle + + PNRP_RoyalWeapons + + 7 + + + +
  • RewardStandardQualitySuper
  • +
    + + 45000 + 4.6 + 0.57 + 0.64 + 0.55 + 0.45 + 1.2 + + + 140 + 3 + 2 + + +
  • +
  • + + Things/Weapons/SYS/PNRoyalHeavyslug_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalHeavyslug_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
    + +
  • + Verb_Shoot + true + PN_Bullet_HeavySlug + 0.7 + 12.9 + PNRoyalHCSound + GunTail_Medium + 14 +
  • +
    + +
  • PN_Royalslug
  • +
    + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + 45 + +
  • Ultratech
  • +
    +
    + + + PN_Bullet_HeavySlug + + + Bullet + 40 + 3 + 0.38 + 100 + + + Things/Projectile/ShellHighExplosive + Graphic_Single + + + + + + PN_RoyalMachinegun + + [caution] : Automaton exclusive weapon.\n\nroyal machine gun produced by PnL industry. + Spacer + 1 + + Things/Weapons/PNRoyalMachinegun_carry + Graphic_Single + + Interact_Rifle + + PNRP_RoyalWeapons + + 7 + + + +
  • RewardStandardQualitySuper
  • +
    + + 75000 + 10 + 0.15 + 0.25 + 0.25 + 0.18 + 1.8 + + + 150 + 8 + 2 + + +
  • +
  • + + Things/Weapons/SYS/PNRoyalMachinegun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalMachinegun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + Mount machine gun on the ground. It moves very slowly, but it can unleash heavy firepower. + PN_RoyalMachinegun_Mount + 120 + Interact_Rifle + UI/Commands/MG_Mount + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_RoyalMachinegun + 1.8 + 30.9 + 6 + 9 + PNRoyalMachinegunSound + GunTail_Medium + 9 +
  • +
    + +
  • PN_RoyalMachinegun
  • +
    + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + 45 + + -0.25 + + +
  • RangedHeavy
  • +
    +
    + + + + + PN_RoyalMachinegun_Mount + + [caution] : Automaton exclusive weapon.\n\nroyal machine gun produced by PnL industry. + Spacer + 1 + + Things/Weapons/PNRoyalMachinegun + Graphic_Single + + Interact_Rifle + + + + + + + + 75000 + 10 + 0.15 + 0.25 + 0.25 + 0.18 + 0.07 + + + 150 + 8 + 2 + + +
  • +
  • + + Things/Weapons/SYS/PNRoyalMachinegun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalMachinegun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + + + If it overheats, will change to cooling mode. + PN_RoyalMachinegun_Overheated + 800 + 2000 + UI/Commands/MG_overheat + 1 + + +
  • + + Fold the mount and move urgently. Cooling penalty still applies. + PN_RoyalMachinegun_Overheated + 2000 + Interact_Rifle + UI/Commands/MG_withdrawal + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_RoyalMachinegun + 0.07 + 30.9 + 6 + 9 + PNRoyalMachinegunSound + GunTail_Medium + 9 +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + 45 + + -99 + + +
  • RangedHeavy
  • +
    +
    + + + + + PN_RoyalMachinegun_Overheated + + [caution] : Automaton exclusive weapon.\n\nroyal machine gun produced by PnL industry. + Spacer + 1 + + Things/Weapons/PNRoyalMachinegun_carry + Graphic_Single + + Interact_Rifle + + + + + + + + 75000 + 10 + 0.15 + 0.25 + 0.25 + 0.18 + 1.8 + + + 150 + 8 + 2 + + +
  • +
  • + + Things/Weapons/SYS/PNRoyalMachinegun_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalMachinegun_Full + Graphic_Multi + + Back + + (0,0.3,0.05) + 25 + + + (0,-0.3,0.05) + -25 + + + (-0.15,-0.3,0.05) + 70 + + + (0.15,-0.3,0.05) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + + + Performance returns to normal when cooling is complete. + PN_RoyalMachinegun + 1700 + 2500 + UI/Commands/MG_cooling + 1 + + +
    + +
  • + Verb_Shoot + true + PN_Bullet_RoyalMachinegun + 1.8 + 30.9 + 3 + 18 + PNRoyalMachinegunSound + GunTail_Medium + 9 +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 11.7 + 2.6 + +
    + 45 + + -1.00 + + +
  • RangedHeavy
  • +
    +
    + + + PN_Bullet_RoyalMachinegun + + + Bullet + 20 + 1.5 + 0.38 + 100 + + + Things/Projectile/Bullet_big + Graphic_Single + + + + + + + PN_RoyalLSW + + [caution] : Automaton exclusive weapon.\n\nA launcher that can fire a variety of grenades. Users can fire Frag, Incendiary, EMP, Smoke, and Firefoam grenades. + Spacer + + Things/Weapons/PNRoyalLSW + Graphic_Single + + Interact_Rifle + + PNRP_RoyalWeapons + + 7 + + + +
  • RewardStandardLowFreq
  • +
  • RewardStandardQualitySuper
  • +
    + + 75000 + 7 + 3.0 + + + 100 + 3 + 2 + + +
  • + + Things/Weapons/SYS/PNRoyalLSW_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalLSW_Full + Graphic_Multi + + Back + + (0,0.3,0) + 25 + + + (0,-0.3,0) + -25 + + + (-0.15,-0.3,0) + 70 + + + (0.15,-0.3,0) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use Incendiary shell + PN_RoyalLSW_IE + 30 + Interact_Rifle + UI/Commands/Flame + 1 +
  • +
  • + + use EMP shell + PN_RoyalLSW_EMP + 30 + Interact_Rifle + UI/Commands/EMP + 1 +
  • +
  • + + use Smoke shell + PN_RoyalLSW_Smoke + 30 + Interact_Rifle + UI/Commands/Smoke + 1 +
  • +
  • + + use Firefoam shell + PN_RoyalLSW_FF + 30 + Interact_Rifle + UI/Commands/FF + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_LSW_bomb + 3.0 + 23.9 + 0.9 + 1 + Shot_IncendiaryLauncher + GunTail_Heavy + 14 + + true + +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + +
  • Ultratech
  • +
    +
    + + + + + PN_RoyalLSW_IE + + [caution] : Automaton exclusive weapon.\n\nA launcher that can fire a variety of grenades. Users can fire Frag, Incendiary, EMP, Smoke, and Firefoam grenades. + Spacer + + Things/Weapons/PNRoyalLSW + Graphic_Single + + Interact_Rifle + + + + + + + + 75000 + 7 + 3.0 + + + 100 + 3 + 2 + + +
  • + + Things/Weapons/SYS/PNRoyalLSW_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalLSW_Full + Graphic_Multi + + Back + + (0,0.3,0) + 25 + + + (0,-0.3,0) + -25 + + + (-0.15,-0.3,0) + 70 + + + (0.15,-0.3,0) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use HE shell + PN_RoyalLSW + 30 + Interact_Rifle + UI/Commands/HE + 1 +
  • +
  • + + use EMP shell + PN_RoyalLSW_EMP + 30 + Interact_Rifle + UI/Commands/EMP + 1 +
  • +
  • + + use Smoke shell + PN_RoyalLSW_Smoke + 30 + Interact_Rifle + UI/Commands/Smoke + 1 +
  • +
  • + + use Firefoam shell + PN_RoyalLSW_FF + 30 + Interact_Rifle + UI/Commands/FF + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_LSW_Flame + 3.0 + 23.9 + 0.9 + 1 + Shot_IncendiaryLauncher + GunTail_Heavy + 14 + + true + +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + +
  • Ultratech
  • +
    +
    + + + + + PN_RoyalLSW_EMP + + [caution] : Automaton exclusive weapon.\n\nA launcher that can fire a variety of grenades. Users can fire Frag, Incendiary, EMP, Smoke, and Firefoam grenades. + Spacer + + Things/Weapons/PNRoyalLSW + Graphic_Single + + Interact_Rifle + + + + + + + + 75000 + 7 + 3.0 + + + 100 + 3 + 2 + + +
  • + + Things/Weapons/SYS/PNRoyalLSW_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalLSW_Full + Graphic_Multi + + Back + + (0,0.3,0) + 25 + + + (0,-0.3,0) + -25 + + + (-0.15,-0.3,0) + 70 + + + (0.15,-0.3,0) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use HE shell + PN_RoyalLSW + 30 + Interact_Rifle + UI/Commands/HE + 1 +
  • +
  • + + use Incendiary shell + PN_RoyalLSW_IE + 30 + Interact_Rifle + UI/Commands/Flame + 1 +
  • +
  • + + use Smoke shell + PN_RoyalLSW_Smoke + 30 + Interact_Rifle + UI/Commands/Smoke + 1 +
  • +
  • + + use Firefoam shell + PN_RoyalLSW_FF + 30 + Interact_Rifle + UI/Commands/FF + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_LSW_EMP + 3.0 + 23.9 + 0.9 + 1 + Shot_IncendiaryLauncher + GunTail_Heavy + 14 + + true + +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + +
  • Ultratech
  • +
    +
    + + + + + PN_RoyalLSW_Smoke + + [caution] : Automaton exclusive weapon.\n\nA launcher that can fire a variety of grenades. Users can fire Frag, Incendiary, EMP, Smoke, and Firefoam grenades. + Spacer + + Things/Weapons/PNRoyalLSW + Graphic_Single + + Interact_Rifle + + + + + + + + 75000 + 7 + 3.0 + + + 100 + 3 + 2 + + +
  • + + Things/Weapons/SYS/PNRoyalLSW_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalLSW_Full + Graphic_Multi + + Back + + (0,0.3,0) + 25 + + + (0,-0.3,0) + -25 + + + (-0.15,-0.3,0) + 70 + + + (0.15,-0.3,0) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use HE shell + PN_RoyalLSW + 30 + Interact_Rifle + UI/Commands/HE + 1 +
  • +
  • + + use Incendiary shell + PN_RoyalLSW_IE + 30 + Interact_Rifle + UI/Commands/Flame + 1 +
  • +
  • + + use EMP shell + PN_RoyalLSW_EMP + 30 + Interact_Rifle + UI/Commands/EMP + 1 +
  • +
  • + + use Firefoam shell + PN_RoyalLSW_FF + 30 + Interact_Rifle + UI/Commands/FF + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_LSW_Smoke + 3.0 + 23.9 + 0.9 + 1 + Shot_IncendiaryLauncher + GunTail_Heavy + 14 + + true + +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + +
  • Ultratech
  • +
    +
    + + + + + PN_RoyalLSW_FF + + [caution] : Automaton exclusive weapon.\n\nA launcher that can fire a variety of grenades. Users can fire Frag, Incendiary, EMP, Smoke, and Firefoam grenades. + Spacer + + Things/Weapons/PNRoyalLSW + Graphic_Single + + Interact_Rifle + + + + + + + + 75000 + 7 + 3.0 + + + 100 + 3 + 2 + + +
  • + + Things/Weapons/SYS/PNRoyalLSW_Sheath + Graphic_Single + + + Things/Weapons/SYS/PNRoyalLSW_Full + Graphic_Multi + + Back + + (0,0.3,0) + 25 + + + (0,-0.3,0) + -25 + + + (-0.15,-0.3,0) + 70 + + + (0.15,-0.3,0) + -70 + +
  • +
  • + +
  • RimWorld.CompProperties_Styleable
  • +
  • RimWorld.CompStyleable
  • +
  • RimWorld.CompProperties_Biocodable
  • +
  • RimWorld.CompBiocodable
  • +
  • RimWorld.CompQuality
  • +
  • RimWorld.CompProperties_Art
  • +
  • RimWorld.CompArt
  • +
  • RimWorld.CompReloadable
  • + + +
  • + + use HE shell + PN_RoyalLSW + 30 + Interact_Rifle + UI/Commands/HE + 1 +
  • +
  • + + use Incendiary shell + PN_RoyalLSW_IE + 30 + Interact_Rifle + UI/Commands/Flame + 1 +
  • +
  • + + use EMP shell + PN_RoyalLSW_EMP + 30 + Interact_Rifle + UI/Commands/EMP + 1 +
  • +
  • + + use Smoke shell + PN_RoyalLSW_Smoke + 30 + Interact_Rifle + UI/Commands/Smoke + 1 +
  • +
    + +
    + +
  • + Verb_Shoot + true + PN_Bullet_LSW_FF + 3.0 + 23.9 + 0.9 + 1 + Shot_IncendiaryLauncher + GunTail_Heavy + 14 + + true + +
  • +
    + + + + +
  • + + +
  • Blunt
  • + + 9 + 2 + +
  • + + +
  • Blunt
  • +
  • Poke
  • + + 9 + 2 + +
    + +
  • Ultratech
  • +
    +
    + + + PN_Bullet_LSW_bomb + + Projectile_Explosive + + 1.9 + Bomb + 40 + true + 0.2 + 0.6 + + + Things/Projectile/LauncherShot + Graphic_Single + + + + + PN_Bullet_LSW_Flame + + Projectile_Explosive + + 1.9 + Flame + 40 + Filth_Fuel + 0.6 + true + 0.2 + 0.6 + + + Things/Projectile/LauncherShot + Graphic_Single + + + + + PN_Bullet_LSW_EMP + + Projectile_Explosive + + 1.9 + EMP + 40 + 0.2 + 0.6 + + + Things/Projectile/LauncherShot + Graphic_Single + + + + + PN_Bullet_LSW_Smoke + + Projectile_Explosive + + 40 + Smoke + + 2.4 + BlindSmoke + true + 0.2 + 0.6 + 0.5 + + + Things/Projectile/LauncherShot + Graphic_Single + + + + + PN_Bullet_LSW_FF + + Projectile_Explosive + + 2.4 + Extinguish + 40 + 0.2 + 0.6 + Filth_FireFoam + 1 + 3 + ExtinguisherExplosion + + + Things/Projectile/LauncherShot + Graphic_Single + + +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThoughtDefs/Thoughts_LostDeath.xml b/1.6/Core/Defs/ThoughtDefs/Thoughts_LostDeath.xml new file mode 100644 index 0000000..216f08d --- /dev/null +++ b/1.6/Core/Defs/ThoughtDefs/Thoughts_LostDeath.xml @@ -0,0 +1,203 @@ + + + + + PN_KnowColonyAutomatonDied + 6 + 5 + +
  • Psychopath
  • +
  • Bloodlust
  • +
    + +
  • + + One of our automaton destroyed. That automaton was our property. + -2 +
  • +
    +
    + + + PN_AutomatonWithGoodOpinionDied + 20 + 5 + 1 + +
  • Psychopath
  • +
    + +
  • + + Such a wonderful automaton, gone forever. The universe gets darker every day. + -5 +
  • +
    +
    + + + PN_AutomatonWithBadOpinionDied + 10 + 5 + 1 + +
  • + + That scrap was finally destroyed. + 5 +
  • +
    +
    + + + PN_WitnessedDestroyedAlly + Things/Mote/ThoughtSymbol/Skull + true + 2 + 5 + +
  • Psychopath
  • +
  • Bloodlust
  • +
    + +
  • + + I saw one of our automaton destroyed. That automaton was our property. + -2 +
  • +
    +
    + + + + PN_ColonyAutomatonLost + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + One of our automaton lost. That automaton was our property. + -2 +
  • +
    +
    + + + PN_AutomatonWithGoodOpinionLost + 10 + 5 + 1 + +
  • Psychopath
  • +
    + +
  • + + Such a wonderful automaton, lost. The universe gets darker every day. + -5 +
  • +
    +
    + + + PN_AutomatonWithBadOpinionLost + 10 + 5 + 1 + +
  • + + That scrap was finally disappeared. + 5 +
  • +
    +
    + + + + PN_ColonyAutomatondisassemble + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + One of our automaton disassembled. it's a pity we won't be able to see it again. + -1 +
  • +
    +
    + + + PN_AutomatonWithGoodOpiniondisassemble + 10 + 5 + 1 + +
  • Psychopath
  • +
    + +
  • + + Such a wonderful automaton, disassembled. It was a colony decision, but I can't stand the disappointment. + -3 +
  • +
    +
    + + + PN_AutomatonWithBadOpiniondisassemble + 10 + 5 + 1 + +
  • + + That scrap was finally disassembled. + 3 +
  • +
    +
    + + + + PN_AutomatonBanished + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + We just banished automaton. I hope they can meet their new master. + -1 +
  • +
    +
    + + + PN_AutomatonBanishedToDie + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + We banished automaton in such a way that there's almost no way they'll survive. + -2 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/ThoughtDefs/Thoughts_PanielReplace.xml b/1.6/Core/Defs/ThoughtDefs/Thoughts_PanielReplace.xml new file mode 100644 index 0000000..7be71f9 --- /dev/null +++ b/1.6/Core/Defs/ThoughtDefs/Thoughts_PanielReplace.xml @@ -0,0 +1,244 @@ + + + + + PN_KnowColonyAutomatonDiedforPN + 6 + 5 + +
  • Psychopath
  • +
  • Bloodlust
  • +
    + +
  • + + My colleague was destroyed. Did she fulfill her duties? + -2 +
  • +
    +
    + + + PN_AutomatonWithGoodOpinionDiedforPN + 20 + 5 + 1 + +
  • Psychopath
  • +
    + +
  • + + My friend was destroyed. It's so sad that we can't carry out our duties with her. + -5 +
  • +
    +
    + + + PN_AutomatonWithBadOpinionDiedforPN + 10 + 5 + 1 + +
  • + + That scrap was finally destroyed. + 5 +
  • +
    +
    + + + PN_WitnessedDestroyedAllyforPN + Things/Mote/ThoughtSymbol/Skull + true + 2 + 5 + +
  • Psychopath
  • +
  • Bloodlust
  • +
    + +
  • + + I saw one of our colleague destroyed. Did she fulfill her duties? + -2 +
  • +
    +
    + + + + PN_ColonyAutomatonLostforPN + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + My colleague was lost. Did she do her duty? + -2 +
  • +
    +
    + + + PN_AutomatonWithGoodOpinionLostforPN + 10 + 5 + 1 + +
  • Psychopath
  • +
    + +
  • + + My friend was lost. It's so sad that we can't carry out our duties with her. + -5 +
  • +
    +
    + + + PN_AutomatonWithBadOpinionLostforPN + 10 + 5 + 1 + +
  • + + That scrap was finally disappeared. + 5 +
  • +
    +
    + + + + PN_ColonyAutomatondisassembleforPN + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + My colleague was disassembled. Did she do her duty? + -2 +
  • +
    +
    + + + PN_AutomatonWithGoodOpiniondisassembleforPN + 10 + 5 + 1 + +
  • Psychopath
  • +
    + +
  • + + My friend was disassemble. It's so sad that we can't carry out our duties with her. + -5 +
  • +
    +
    + + + PN_AutomatonWithBadOpiniondisassembleforPN + 10 + 5 + 1 + +
  • + + That scrap was finally disassembled. + 5 +
  • +
    +
    + + + + PN_AutomatonBanishedforPN + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + We just banished colleague. I hope they can meet their new master. + -2 +
  • +
    +
    + + + PN_AutomatonBanishedToDieforPN + 6 + 5 + true + +
  • Psychopath
  • +
    + +
  • + + We banished colleague in such a way that there's almost no way they'll survive. + -3 +
  • +
    +
    + + + + PN_AteLavishMeal + 2 + +
  • + + I've heard that lavish meal feels like nourished body and soul. I'm not sure, but it feels like something good! + 12 +
  • +
    +
    + + + PN_AteFineMeal + 2 + +
  • + + I heard that fine meal is delicious. Yum? + 5 +
  • +
    +
    + + + + PN_DefeatedMechCluster + Things/Mote/ThoughtSymbol/Skull + true + 10 + 5 + +
  • + + Stupid murder cans who know neither duty nor honor! + 4 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Defs/TraderKindDefs/TraderKinds_Base.xml b/1.6/Core/Defs/TraderKindDefs/TraderKinds_Base.xml new file mode 100644 index 0000000..7078b28 --- /dev/null +++ b/1.6/Core/Defs/TraderKindDefs/TraderKinds_Base.xml @@ -0,0 +1,251 @@ + + + + PN_Base_PnLindustry + + + +
  • + Silver + 2000~4000 +
  • +
  • + ComponentIndustrial + 20~70 +
  • +
  • + ComponentSpacer + 1~6 +
  • +
  • + Steel + 500~800 +
  • +
  • + Plasteel + 100~400 +
  • +
  • + Uranium + 40~200 +
  • +
  • + Chemfuel + 200~600 +
  • +
  • + Neutroamine + 50~100 +
  • +
  • + MedicineIndustrial + 25~50 +
  • +
  • + Hyperweave + 10~25 +
  • +
  • + DevilstrandCloth + 10~25 +
  • +
  • + FoodRaw + +
  • EggsFertilized
  • + + 2~4 + 400~800 + +
  • + FoodMeals + 1~2 + 12~50 +
  • +
  • + ResourcesRaw + 2~4 + 400~800 +
  • +
  • + Textiles + 1~2 + 400~800 +
  • +
  • + 1~4 +
  • +
  • + MortarShell + 1~2 + 20~40 +
  • +
  • + PN_Shell + 1~2 + 3~6 +
  • +
  • + Chocolate + -30~70 +
  • +
  • + Beer + -40~100 +
  • + + +
  • + PN_AutomatonFuel + 200~600 +
  • +
  • + PN_antibiotics + 2~6 +
  • + + +
  • + PN_RepairKit + 10~20 +
  • +
  • + PN_BrainCasing + 3~6 +
  • +
  • + Leather_Automaton + 50~200 +
  • +
  • + PN_Component + 4~8 +
  • + +
  • + Packaged_NormalAutomatonSoldier + 0~1 +
  • +
  • + Packaged_NormalAutomatonWorker + 0~1 +
  • +
  • + Packaged_NormalAutomatonMaid + 0~1 +
  • + + +
  • + BasicClothing + 7~15 +
  • +
  • + Clothing + 3~5 +
  • +
  • + Armor + 8~10 +
  • + + +
  • + WeaponRanged + 3~6 +
  • +
  • + WeaponsMelee + 3~4 + 1~2 +
  • + + +
  • + PN_ResurrectModule + -1~1 +
  • +
  • + TechHediff + 2~4 + 1~1 +
  • + + +
  • + BuildingsFurniture + 3~4 + 1~2 +
  • +
  • + Art + 4~8 +
  • +
  • + Television + 1~2 + 1~2 +
  • +
  • + Telescope + 0~1 +
  • + + +
  • + +
  • + 2 + 0.5 +
  • +
  • + 3 + 0.5 +
  • + + + + + +
  • + Artifact + 1~4 + 1~1 +
  • +
  • + ExoticMisc + 1~4 + 1~2 + +
  • ComponentSpacer
  • + + + 2~15 + 50~200 + 3~4 + + + + +
  • + +
  • AnimalFarm
  • +
  • AnimalPet
  • + + +
  • AnimalUncommon
  • +
  • AnimalExotic
  • +
    + 2~4 + 3~8 + +
  • AnimalFarm
  • +
    + + + +
  • + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/TraderKindDefs/TraderKinds_CaravanPnL.xml b/1.6/Core/Defs/TraderKindDefs/TraderKinds_CaravanPnL.xml new file mode 100644 index 0000000..07636f5 --- /dev/null +++ b/1.6/Core/Defs/TraderKindDefs/TraderKinds_CaravanPnL.xml @@ -0,0 +1,74 @@ + + + + PN_Caravan_PnLindustry + + + + +
  • + Silver + 750~1200 +
  • +
  • + ComponentIndustrial + 8~16 +
  • +
  • + ComponentSpacer + -1~2 +
  • +
  • + Steel + 75~150 +
  • +
  • + Chemfuel + 50~150 +
  • + + +
  • + PN_AutomatonFuel + 50~150 +
  • +
  • + PN_antibiotics + 1~2 +
  • + + +
  • + PN_RepairKit + 2~6 +
  • +
  • + PN_BrainCasing + 1~3 +
  • +
  • + Leather_Automaton + 20~60 +
  • + +
  • + PN_OTPCard + -3~1 +
  • + + + + + + + + + + + + +
  • + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/TraderKindDefs/TraderKinds_OrbitalPnL.xml b/1.6/Core/Defs/TraderKindDefs/TraderKinds_OrbitalPnL.xml new file mode 100644 index 0000000..8f80cee --- /dev/null +++ b/1.6/Core/Defs/TraderKindDefs/TraderKinds_OrbitalPnL.xml @@ -0,0 +1,133 @@ + + + + PN_Orbital_PnLindustry + + true + PN_SubsidiaryFaction + + + +
  • + Silver + 2000~4000 +
  • +
  • + ComponentIndustrial + 15~30 +
  • +
  • + ComponentSpacer + 1~2 +
  • +
  • + Steel + 500~800 +
  • +
  • + Plasteel + 100~400 +
  • +
  • + Uranium + 40~200 +
  • +
  • + Chemfuel + 200~600 +
  • +
  • + Neutroamine + 50~100 +
  • +
  • + MedicineIndustrial + 10~15 +
  • +
  • + Hyperweave + 10~25 +
  • +
  • + DevilstrandCloth + 10~25 +
  • + + +
  • + PN_AutomatonFuel + 200~600 +
  • +
  • + PN_antibiotics + 2~6 +
  • + + +
  • + PN_RepairKit + 10~20 +
  • +
  • + PN_BrainCasing + 3~6 +
  • +
  • + Leather_Automaton + 50~200 +
  • +
  • + PN_Component + 4~8 +
  • + +
  • + Packaged_NormalAutomatonSoldier + 0~1 +
  • +
  • + Packaged_NormalAutomatonWorker + 0~1 +
  • +
  • + Packaged_NormalAutomatonMaid + 0~1 +
  • + +
  • + PN_PrototypeRailGun + -3~1 +
  • +
  • + PN_WeaponsMeleeBladelink + 1 + -4~1 +
  • + + + +
  • + PN_ResurrectModule + -1~1 +
  • + + +
  • + Techprint_CataphractArmor + -4~1 +
  • +
  • + Techprint_BrainWiring + -4~1 +
  • + + + + + + +
  • + + + + \ No newline at end of file diff --git a/1.6/Core/Defs/TraitDefs/PN_Traits.xml b/1.6/Core/Defs/TraitDefs/PN_Traits.xml new file mode 100644 index 0000000..76fc7c6 --- /dev/null +++ b/1.6/Core/Defs/TraitDefs/PN_Traits.xml @@ -0,0 +1,14 @@ + + + + + PN_PerfectMemory + 0 + +
  • + + {PAWN_nameDef} is automata, automata auto memory system logging all things she saw. {PAWN_possessive} skills will never decay. +
  • + + +
    \ No newline at end of file diff --git a/1.6/Core/Patches/Anomaly.xml b/1.6/Core/Patches/Anomaly.xml new file mode 100644 index 0000000..54a2c8e --- /dev/null +++ b/1.6/Core/Patches/Anomaly.xml @@ -0,0 +1,88 @@ + + + + +
  • Anomaly
  • +
    + + Always + +
  • + Defs/AlienRace.ThingDef_AlienRace[defName="Paniel_Race"]/race + + true + Basic + 3 + +
  • + +
  • + Defs/AlienRace.ThingDef_AlienRace[defName="Paniel_Race"]/comps + +
  • + 8 + true +
  • +
  • + 120000 + 1 + true +
  • + + + +
  • + Defs/AlienRace.ThingDef_AlienRace[defName="Paniel_Race"]/alienRace/graphicPaths/body + + + + Paniel/Body/Naked_Female + + + +
  • + +
  • + Defs/AlienRace.ThingDef_AlienRace[defName="Paniel_Race"]/alienRace/graphicPaths/head + + + + Paniel/Heads/PNHead/PNHead1 + + + +
  • + +
  • + Defs/MutantDef[defName="Ghoul"]/drugWhitelist + +
  • PN_AutomatonFuel
  • + + + +
  • + Defs/AutomataRace.ThingDefInjectDef[defName="Comp_CorpseSelfDestruct_Inject"]/comps + +
  • + 200 + DeathRefusal + true +
  • + + + +
  • + Defs/AutomataRace.ThingDefInjectDef[defName="Comp_CorpseSelfDestruct_Inject"]/comps + +
  • + 200 + DeathRefusalCreepJoiner + true +
  • + + + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Patches/Ideology.xml b/1.6/Core/Patches/Ideology.xml new file mode 100644 index 0000000..a0ed5ac --- /dev/null +++ b/1.6/Core/Patches/Ideology.xml @@ -0,0 +1,86 @@ + + + + +
  • Ideology
  • +
    + + Always + + + + + + +
  • + /Defs/ThingDef[defName = "Apparel_Burka"]/apparel/tags + + /Defs/ThingDef[defName = "Apparel_Burka"]/apparel + + +
  • PN_Burka
  • + + + + + /Defs/ThingDef[defName = "Apparel_Burka"]/apparel/tags + +
  • PN_Burka
  • +
    +
    + + + +
  • + /Defs/HediffDef[defName = PN_RapidFireModuleHediff]/comps + +
  • +
  • + PN_RapidFireAbility +
  • + + + + +
  • + /Defs/ThingDef[defName = PN_RapidFireModule]/descriptionHyperlinks + +
  • + PN_RapidFireAbility +
  • + + + +
  • + /Defs/HediffDef[defName = PN_CQCModuleHediff]/comps + +
  • +
  • + PN_CQCAbility +
  • + + + + +
  • + /Defs/ThingDef[defName = PN_CQCModule]/descriptionHyperlinks + +
  • + PN_CQCAbility +
  • + + + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Patches/Royalty.xml b/1.6/Core/Patches/Royalty.xml new file mode 100644 index 0000000..9e9fd51 --- /dev/null +++ b/1.6/Core/Patches/Royalty.xml @@ -0,0 +1,208 @@ + + + + +
  • Royalty
  • +
    + + Always + + +
  • + /Defs/HediffDef[defName = "PanielBaseHediff"]/comps/li[@Class = "MoharHediffs.HediffCompProperties_HediffNullifier"]/hediffToNullify + + +
  • PsychicLove
  • +
  • Joyfuzz
  • + + + + +
  • + /Defs/FactionDef[defName = "Empire"]/permanentEnemyToEveryoneExcept + +
  • Paniel_PlayerFaction
  • +
  • PN_indistryFaction
  • +
  • PN_SubsidiaryFaction
  • + + + + +
  • + /Defs/ResearchProjectDef[defName = "PNRP_TierC_Apparel"]/baseCost + + 500 + +
  • +
  • + /Defs/ResearchProjectDef[defName = "PNRP_TierC_Apparel"]/prerequisites + + +
  • PNRP_TierB_Apparel
  • +
  • CataphractArmor
  • + + + + + +
  • + /Defs/TraderKindDef[defName = "PN_Orbital_PnLindustry"]/stockGenerators + +
  • + Techprint_CataphractArmor + -2~1 +
  • +
  • + Techprint_BrainWiring + -2~1 +
  • + + + +
  • + /Defs/TraderKindDef[defName = "PN_Base_PnLindustry"]/stockGenerators + +
  • + Techprint_CataphractArmor + -1~1 +
  • +
  • + Techprint_BrainWiring + -1~1 +
  • + + + + +
  • + /Defs/FactionDef[defName = "PN_SubsidiaryFaction"] + + +
  • PN_PnLCareerTitleTag
  • + + RoyalTitleInheritanceWorker + + + PnL result point + Icon/Paniel_PlayerIcon + + + +
  • + /Defs/FactionDef[defName = "PN_SubsidiaryFaction"]/caravanTraderKinds + +
  • PN_Caravan_TributeCollector
  • + + + + + +
  • + /Defs/QuestScriptDef[defName="Util_ChooseRandomQuestLodgerKind"]/root[@Class="QuestNode_Sequence"]/nodes/li[@Class="QuestNode_IsSet"]/node[@Class="QuestNode_GetRandomPawnKindForFaction"]/choices + +
  • + PN_SubsidiaryFaction + +
  • PN_AssociateH
  • +
  • PN_AssociateP_EngineerA
  • +
  • PN_AssociateP_EngineerB
  • +
  • PN_AssociateP_DomesticA
  • +
  • PN_AssociateP_DomesticB
  • + + + + + +
  • + /Defs/QuestScriptDef[defName="Util_ChooseRandomQuestHelperKind"]/root[@Class="QuestNode_Sequence"]/nodes/li[@Class="QuestNode_GetRandomPawnKindForFaction"]/choices + +
  • + PN_SubsidiaryFaction + +
  • PN_Mid_CloseUnit
  • +
  • PN_Mid_RangeUnit
  • +
  • PN_EliteCloseUnit
  • +
  • PN_EliteRangeUnit
  • + + + + + + +
  • + /Defs/PawnKindDef[defName = "PN_AssociateH"] + + 1 + +
  • PN_Title_Associate
  • +
  • PN_Title_Senior
  • + + + + +
  • + /Defs/PawnKindDef[defName = "PN_ManagerH"] + + 1 + +
  • PN_Title_Manager
  • +
  • PN_Title_SeniorManager
  • + + + + +
  • + /Defs/PawnKindDef[defName = "PN_Director"] + + 1 + +
  • PN_Title_Director
  • + + + + +
  • + /Defs/PawnKindDef[defName = "PN_SeniorDirector"] + + 1 + +
  • PN_Title_SeniorDirector
  • + + + + +
  • + /Defs/PawnKindDef[defName = "PN_VP"] + + 1 + +
  • PN_TitleVP
  • + + + + +
  • + /Defs/PawnKindDef[defName = "PN_SVP"] + + 1 + +
  • PN_TitleSVP
  • + + + + +
  • + /Defs/PawnKindDef[defName = "PN_CEO"] + + 1 + +
  • PN_TitleCEO
  • + + + + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Core/Patches/Vanilla.xml b/1.6/Core/Patches/Vanilla.xml new file mode 100644 index 0000000..e77d5f2 --- /dev/null +++ b/1.6/Core/Patches/Vanilla.xml @@ -0,0 +1,36 @@ + + + + + */WorkGiverDef[defName="DoBillsFabricationBench"]/fixedBillGiverDefs + +
  • PN_AutomatonBench
  • +
    +
    + + + + + +
    \ No newline at end of file diff --git a/1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Industrial.xml b/1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Industrial.xml new file mode 100644 index 0000000..9b9133e --- /dev/null +++ b/1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Industrial.xml @@ -0,0 +1,106 @@ + + + + + + + + + + PN_RapidFireAbility + + This ability allows users to shoot quickly, but lowers the shooting accuracy. + + PN_RapidFire + + CastAbilityOnThing + False + False + UI/Abilities/PNTriggerHappy + UI/Abilities/PNTriggerHappy + True + False + True + False + PNModule_1day + Misc12 + 3 + CombatCommand_Warmup + + 167 + + + Verb_CastAbility + 0.5 + -1 + False + False + + true + false + false + false + false + false + + + +
  • + CompAbilityEffect_GiveHediff + PN_RapidFire + True + true +
  • +
    +
    + + + + PN_CQCAbility + + This ability increases users to close quarters combat stat, but lowers the shooting accuracy. + + PN_CQC + + CastAbilityOnThing + False + False + UI/Abilities/PNCQC + UI/Abilities/PNCQC + True + False + True + False + PNModule_1day + Misc12 + 3 + CombatCommand_Warmup + + 167 + + + Verb_CastAbility + 0.5 + -1 + False + False + + true + false + false + false + false + false + + + +
  • + CompAbilityEffect_GiveHediff + PN_CQC + True + true +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Spacer.xml b/1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Spacer.xml new file mode 100644 index 0000000..4b20329 --- /dev/null +++ b/1.6/Ideology/Defs/AbilityDefs/Ideo_AbilityDef_Spacer.xml @@ -0,0 +1,291 @@ + + + + + + + + + + PN_OfficerCommandAbility + + Create an aura that boosts the combat skills of everyone nearby. The effect lasts 6 hours and remains attached to the user for the duration. + + PN_OfficerCommandBuff + + CastAbilityOnThing + False + False + UI/Abilities/PNOfficerCommand + UI/Abilities/PNOfficerCommand + True + False + True + False + PNModule_2day + Misc12 + 3 + CombatCommand_Warmup + + 250 + 9.9 + + + Verb_CastAbility + 0.5 + 9.9 + False + False + + true + false + false + false + false + false + + + +
  • + CompAbilityEffect_GiveHediff + PN_OfficerCommand + True + True + true +
  • +
    +
    + + + + PN_MeisterAdviceAbility + + Create an aura that boosts the engineer skills of everyone nearby. The effect lasts 12 hours and remains attached to the user for the duration. + + PN_MeisterAdviceBuff + + CastAbilityOnThing + False + False + UI/Abilities/PNMeisterAdvice + UI/Abilities/PNMeisterAdvice + True + False + True + False + PNModule_2day + Misc12 + 3 + CombatCommand_Warmup + + 500 + 9.9 + + + Verb_CastAbility + 0.5 + 9.9 + False + False + + true + false + false + false + false + false + + + +
  • + CompAbilityEffect_GiveHediff + PN_MeisterAdvice + True + True + true +
  • +
    +
    + + + + PN_IntensiveMedicalAbility + + This ability makes users more proficient in medical work. + + PN_IntensiveMedical + + CastAbilityOnThing + False + False + UI/Abilities/PNIntensiveMedical + UI/Abilities/PNIntensiveMedical + True + False + True + False + PNModule_1day + Misc12 + 3 + CombatCommand_Warmup + + 84 + + + Verb_CastAbility + 0.5 + -1 + False + False + + true + false + false + false + false + false + + + +
  • + CompAbilityEffect_GiveHediff + PN_IntensiveMedical + True + true +
  • +
    +
    + + + + PN_ImmunityDriveAbility + + Offer module support that energizes the body, boosting someone's immunity gain for one day. + + PN_ImmunityDrive + PN_ImmunityDriveAbility + + PNModule_rightoff + UI/Abilities/PNImmunityDrive + UI/Abilities/PNImmunityDrive + Misc12 + CastAbilityOnThingMelee + True + False + True + False + ImmunityDrive_Resolve + + 1000 + + +
  • + CompAbilityEffect_GiveHediff + PN_ImmunityDrive + true +
  • +
    + + Verb_CastAbilityTouch + False + -1 + 1.5 + + False + True + + +
    + + + + PN_FieldMedicAbility + + This ability enables users to provide rapid medical support in the field. + + PN_FieldMedic + PN_StimPackAbility + + CastAbilityOnThing + False + False + UI/Abilities/PNFieldMedic + UI/Abilities/PNFieldMedic + True + False + True + False + PNModule_2day + Misc12 + 3 + CombatCommand_Warmup + + 250 + + + Verb_CastAbility + 0.5 + -1 + False + False + + true + false + false + false + false + false + + + +
  • + CompAbilityEffect_GiveHediff + PN_FieldMedic + True + true +
  • +
    +
    + + + + PN_StimPackAbility + + Inject drugs that increase physical stat into the target. It is not addictive, but side effects occur when the effect is over. + + PN_StimPack + PN_StimPackSideEffect + + PNModule_rightoff + UI/Abilities/PNStimPack + UI/Abilities/PNStimPack + Misc12 + CastAbilityOnThingMelee + True + False + True + False + ImmunityDrive_Resolve + + 250 + + +
  • + CompAbilityEffect_GiveHediff + PN_StimPack + true +
  • +
    + + Verb_CastAbilityTouch + False + -1 + 1.5 + + False + True + + +
    + +
    \ No newline at end of file diff --git a/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml new file mode 100644 index 0000000..f6c777a --- /dev/null +++ b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Industrial.xml @@ -0,0 +1,146 @@ + + + + + + + + PN_RapidFire + + The hediff created by activating rapid fire ability. + HediffWithComps + +
  • + + -4 + + + 0.70 + +
  • +
    + +
  • + True +
  • +
  • +
  • + +
  • PN_RapidFireOverload
  • + + +
    + false +
    + + + PN_RapidFireOverload + + module overloaded + module overloaded + HediffWithComps + +
  • + 5000 + True +
  • +
  • + + +
  • + +
  • + Moving + 0.10 +
  • + + + -3 + + + 1.3 + + + +
    + + + + PN_CQC + + The hediff created by activating close quarters combat ability. + HediffWithComps + +
  • + +
  • + Moving + 0.10 +
  • + + + 2 + 2 + -0.15 + 0.10 + + +
    + +
  • + True +
  • +
  • +
  • + +
  • PN_CQCOverload
  • + + +
    + false +
    + + + PN_CQCOverload + + module overloaded + module overloaded + HediffWithComps + +
  • + 5000 + True +
  • +
  • + + +
  • + +
  • + Moving + -0.10 +
  • +
  • + Manipulation + -0.10 +
  • + + + -4 + -4 + -0.25 + -0.20 + + + +
    +
    \ No newline at end of file diff --git a/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml new file mode 100644 index 0000000..68ae75e --- /dev/null +++ b/1.6/Ideology/Defs/HediffDefs/Ideo_Hediffs_Cast_Spacer.xml @@ -0,0 +1,504 @@ + + + + + + PN_OfficerCommand + + By encouraging and commanding nearby allies, this person can enhance their focus in combat and thus their battle performance. + HediffWithComps + +
  • + True +
  • +
  • +
  • + 9.9 + Mote_CombatCommand + true + + false + false + false + true + + PN_OfficerCommandBuff +
  • +
  • + +
  • PN_OfficerCommandOverload
  • + + +
    + +
  • + + 2 + 0.10 + + + 0.80 + + +
  • + Moving + 0.20 +
  • + + +
    + false +
    + + + PN_OfficerCommandBuff + + Combat abilities are boosted thanks to being near someone who is using the officer command ability. + HediffWithComps + +
  • + false +
  • +
  • +
  • +
    + false + +
  • + + 2 + 0.10 + + + 0.80 + + +
  • + Moving + 0.20 +
  • + + +
    +
    + + + PN_OfficerCommandThought + ThoughtWorker_Hediff + PN_OfficerCommandBuff + true + +
  • + + I can't believe I have to follow the commands of an automaton. + -5 +
  • +
    +
    + + + PN_OfficerCommandThoughtforPN + AutomataRace.ThoughtWorker_RaceBPHediff + +
  • + + The officer is with us. We will be able to win this battle under the officer's command. + 5 +
  • +
    + +
  • + Paniel_Race + PN_OfficerCommandBuff + PNBrain + + 1 + 999 + +
  • +
    +
    + + + PN_OfficerCommandOverload + + module overloaded + module overloaded + HediffWithComps + +
  • + 60000 + True +
  • +
  • + + +
  • + +
  • + Consciousness + -0.30 +
  • +
  • + Moving + -0.50 +
  • +
  • + Sight + -0.50 +
  • +
  • + Manipulation + -0.50 +
  • + + + +
    + + + + PN_MeisterAdvice + + By encouraging and advising nearby allies, this person can enhance their focus in engineer work performance. + HediffWithComps + +
  • + True +
  • +
  • +
  • + 9.9 + Mote_WorkCommand + true + + false + false + false + true + + PN_MeisterAdviceBuff +
  • +
  • + +
  • PN_OfficerCommandOverload
  • + + +
    + +
  • + + + + + + + + 1.25 + 1.25 + 1.25 + 1.25 + 1.25 + +
  • +
    + false +
    + + + PN_MeisterAdviceBuff + + work abilities are boosted thanks to being near someone who is using the meister's advice ability. + HediffWithComps + +
  • + false +
  • +
  • +
  • +
    + false + +
  • + + 1.25 + 1.25 + 1.25 + 1.25 + 1.25 + + +
  • + Moving + 0.20 +
  • + + +
    +
    + + + PN_MeisterAdviceThought + ThoughtWorker_Hediff + PN_MeisterAdviceBuff + true + +
  • + + I can't believe I have to follow the advice of an automaton. + -5 +
  • +
    +
    + + + + PN_IntensiveMedical + + The hediff created by activating intensive medical ability. + HediffWithComps + +
  • + + 0.2 + + + 1.50 + 1.50 + 1.50 + 1.50 + +
  • +
    + +
  • + True +
  • +
  • +
  • + +
  • PN_OfficerCommandOverload
  • + + +
  • + PN_ImmunityDriveAbility +
  • +
    + false +
    + + + + PN_ImmunityDrive + + immunity drive + HediffWithComps + +
  • + + 1.25 + +
  • +
    + +
  • + True +
  • +
    + false +
    + + + + PN_FieldMedic + + The hediff created by activating field medic ability. + HediffWithComps + +
  • + + 0.4 + + + 1.50 + +
  • +
    + +
  • + True +
  • +
  • +
  • + +
  • PN_OfficerCommandOverload
  • + + +
  • + PN_StimPackAbility +
  • +
    + false +
    + + + + PN_StimPack + + stim pack injected + HediffWithComps + +
  • + 0.5 + 0.5 + +
  • + Consciousness + 0.10 +
  • +
  • + Sight + 0.20 +
  • +
  • + Moving + 0.30 +
  • + + + -0.12 + + +
    + +
  • + True +
  • +
  • + +
  • PN_StimPackSideEffect
  • + + +
  • + +
  • PN_StimPackSideEffect
  • + + +
    + false +
    + + + PN_StimPackThought + ThoughtWorker_Hediff + PN_StimPack + true + +
  • + + Feeling pumped! Let's do this! + 20 +
  • +
    +
    + + + PN_StimPackSideEffect + + stim pack side effect + stim pack side effect + HediffWithComps + 1.0 + 1.0 + +
  • + -1 + true +
  • +
  • + + +
  • + + 0 + 3 + 0.3 + 0.5 + +
  • + Consciousness + -0.20 +
  • +
  • + Moving + -0.50 +
  • +
  • + Sight + -0.20 +
  • +
  • + BloodPumping + -0.20 +
  • +
  • + Manipulation + -0.10 +
  • + + +
  • + + 0.80 + +
  • + Consciousness + -0.15 +
  • +
  • + Moving + -0.20 +
  • +
  • + Sight + -0.10 +
  • +
  • + BloodPumping + -0.10 +
  • +
  • + Manipulation + -0.05 +
  • + + +
  • + + 0.90 +
  • + +
    + + + PN_StimPackSideEffectThought + ThoughtWorker_Hediff + PN_StimPackSideEffect + true + +
  • + + I'm all fuzzy and can't think straight. My limbs feel heavy, I'm tired and hungry, everything hurts. And why won't my eyes focus properly? + -15 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Ideology/Defs/MemeDefs/Memes_PnL.xml b/1.6/Ideology/Defs/MemeDefs/Memes_PnL.xml new file mode 100644 index 0000000..e3c3fa3 --- /dev/null +++ b/1.6/Ideology/Defs/MemeDefs/Memes_PnL.xml @@ -0,0 +1,111 @@ + + + + + + + PN_Structure + + Bylaws of PnL industry. An exemplary PnL employee would not break bylaws. + Structure + Icon/Paniel_bylaw + 0 + Conference room + 0 + + +
  • memeLeaderNoun->CEO
  • +
  • memeMoralist->Personnel Manager
  • +
    +
    + + + +
  • episode(tag=meme_PN_Structure) ->...PnL Industry, founded by Paul and Lauren, has evolved from a small industrial company in Glitterworld to a giant interstellar company.\n\n...\n\nEven though we were kicked out of Rimworld for an "unfortunate incident," we're going back to Glitterworld.
  • +
    +
    + +
  • + PN_IdeoStoryPattern +
  • +
    + +
  • + PN_Structure + true +
  • +
    +
    + +
  • + PnL bylaws + PnL + PnL + PnL Employee +
  • +
    + +
  • +
  • BodyMod_Approved
  • + +
  • +
  • OrganUse_Acceptable
  • + +
  • +
  • DrugUse_MedicalOrSocial
  • + +
  • +
  • Apostasy_Abhorrent
  • + +
  • +
  • IdeoDiversity_Abhorrent
  • + +
  • +
  • Nudity_Female_UncoveredGroinOrChestDisapproved
  • + +
  • +
  • Nudity_Male_UncoveredGroinOrChestDisapproved
  • + +
  • +
  • Execution_DontCare
  • + +
  • +
  • Scarification_Horrible
  • + +
  • +
  • Slavery_Abhorrent
  • + +
  • +
  • HAR_AlienSlavery_Abhorrent
  • + +
  • +
  • Cannibalism_Horrible
  • + +
  • +
  • NutrientPasteEating_DontMind
  • + + +
    +
    + + + PN_IdeoStoryPattern + +
  • episode
  • +
    + + +
  • IdeoDescriptionGlobal
  • +
    +
    +
    + + + PN_IdeoIcon + Icon/Paniel_Icon + +
  • PN_Structure
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Ideology/Defs/ThingDefs/Ideo_ThingDef_Module_Spacer.xml b/1.6/Ideology/Defs/ThingDefs/Ideo_ThingDef_Module_Spacer.xml new file mode 100644 index 0000000..9d8049c --- /dev/null +++ b/1.6/Ideology/Defs/ThingDefs/Ideo_ThingDef_Module_Spacer.xml @@ -0,0 +1,211 @@ + + + + + + PN_OfficerModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nCombat model (legd)\n\nThis module allows automaton to use officer command ability. + + PN_OfficerCommandAbility + + + 75000 + + + 45 + 5 + 3 + + + PNRP_TierC_Module + + 6 + + + + + + + + +
  • + PN_OfficerModuleHediff + PNTorso +
  • +
    +
    + + + PN_OfficerModuleHediff + + The hediff created by installing officer module. + + PN_OfficerModule + + + + + +
  • + PN_OfficerCommandAbility +
  • +
    +
    + + + + PN_MeisterModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nEngineer model (legd)\n\nThis module allows automaton to use meister's advice ability. + + PN_MeisterAdviceAbility + + + 75000 + + + 45 + 5 + 3 + + + PNRP_TierC_Module + + 6 + + + + + + + + +
  • + PN_MeisterModuleHediff + PNTorso +
  • +
    +
    + + + PN_MeisterModuleHediff + + The hediff created by installing meister module. + + PN_MeisterModule + + + + + +
  • + PN_MeisterAdviceAbility +
  • +
    +
    + + + + PN_IntensiveMedicalModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nDomestic model (legd)\n\nThis module allows automaton to use intensive medical mode ability.\nAnd if automaton activates intensive medical mode, immunity drive ability can be used. + + PN_IntensiveMedicalAbility + + + 75000 + + + 45 + 5 + 3 + + + PNRP_TierC_Module + + 6 + + + + + + + + +
  • + PN_IntensiveMedicalModuleHediff + PNTorso +
  • +
    +
    + + + PN_IntensiveMedicalModuleHediff + + The hediff created by installing intensive medical module. + + PN_IntensiveMedicalModule + + + + + +
  • + PN_IntensiveMedicalAbility +
  • +
    +
    + + + + PN_FieldMedicModule + + [CAUTION]\nThis module can only be installed on compatible models.\nAlso, the module system must be stable.\n\n[compatible models list]\n\nDomestic model (legd)\nCombat model (legd)\n\nThis module allows automaton to use field medic mode ability.\nAnd if automaton activates field medic mod, injection stim pack ability can be used. + + PN_FieldMedicAbility + + + 75000 + + + 45 + 5 + 3 + + + PNRP_TierC_Module + + 6 + + + + + + + + +
  • + PN_FieldMedicModuleHediff + PNTorso +
  • +
    +
    + + + PN_FieldMedicModuleHediff + + The hediff created by installing intensive field medical module. + + PN_FieldMedicModule + + + + + +
  • + PN_FieldMedicAbility +
  • +
    +
    +
    \ 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 new file mode 100644 index 0000000..e06d358 --- /dev/null +++ b/1.6/Mods/Paniel_Experimental/Defs/HediffDefs/HediffDef_PNE_BodyParts.xml @@ -0,0 +1,161 @@ + + + + PN_ExperimentalEngineCore + + a experimental engine core + 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. + + PN_ExperimentalEngineCore + + + true + 1.1 + true + + +
  • PN_Need_Fuel
  • +
    + +
  • + 0.75 +
  • +
    +
    + + + PN_ExperimentalEngineCore + + An experimental engine core. allow automata to power without fuel. using this can be extrame dangerous. + + PN_InstallExperimentalEngineCore + + + 1 + 1 + 1000 + + + 0.3 + + + PNRP_TierC_Parts + + + + + PN_InstallExperimentalEngineCore + + Install an experimental engine core. + + PN_ExperimentalEngineCore + PN_ExperimentalEngineCore + + Installing experimental engine core. + +
  • + + +
  • PN_ExperimentalEngineCore
  • + + + 1 + +
    + + + +
  • PNCore
  • +
    + PN_ExperimentalEngineCore +
    + + + PN_RemoveExperimentalEngineCore + + Remove the experimental engine core. + + PN_ExperimentalEngineCore + PN_ExperimentalEngineCore + + Removing experimental engine core. + PN_ExperimentalEngineCore + + + + PN_AutoRepairSystem + + An automata auto repair system. allow automaton slowly repair damaged body part. + + PN_InstallAutoRepairSystem + + + 1 + 1 + + + 0.3 + + + PNRP_TierC_Parts + + + + + PN_InstallAutoRepairSystem + + Install an auto repair system. + + PN_AutoRepairSystem + PN_AutoRepairSystem + + Installing auto repair system. + +
  • + + +
  • PN_AutoRepairSystem
  • + + + 1 + +
    + + + +
  • PNTorso
  • +
    + PN_AutoRepairSystem +
    + + + PN_RemoveAutoRepairSystem + + Remove the auto repair system. + + PN_AutoRepairSystem + PN_AutoRepairSystem + + Removing auto repair system. + PN_AutoRepairSystem + + + + PN_AutoRepairSystem + + An auto repair system. slowly repair damaged body part. + + PN_AutoRepairSystem + + +
  • + 0 + 10 + true +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/HediffDef/HediffDef_PNE_BodyParts.xml b/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/HediffDef/HediffDef_PNE_BodyParts.xml new file mode 100644 index 0000000..826766b --- /dev/null +++ b/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/HediffDef/HediffDef_PNE_BodyParts.xml @@ -0,0 +1,12 @@ + + + + 实验型动力核心 + 一个已安装的实验型动力核心,能驱动姬关人形而无需额外燃料消耗。使用可能伴随巨大潜在风险。 + 实验型动力核心 + + 自动修复系统 + 已安装的姬关人形自动修复系统,能缓慢修复身体部件的损伤。 + 自动修复系统 + + \ No newline at end of file diff --git a/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/RecipeDef/RecipeDef_PNE_BodyParts.xml b/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/RecipeDef/RecipeDef_PNE_BodyParts.xml new file mode 100644 index 0000000..cae0222 --- /dev/null +++ b/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/RecipeDef/RecipeDef_PNE_BodyParts.xml @@ -0,0 +1,18 @@ + + + + 安装实验型动力核心 + 安装实验型动力核心 + 安装实验型动力核心中 + 移除实验型动力核心 + 移除实验型动力核心 + 移除实验型动力核心中 + + 安装自动修复系统 + 安装自动修复系统 + 安装自动修复系统中 + 移除自动修复系统 + 移除自动修复系统 + 移除自动修复系统中 + + \ No newline at end of file diff --git a/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/ThingDef/ThingDef_PNE_BodyParts.xml b/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/ThingDef/ThingDef_PNE_BodyParts.xml new file mode 100644 index 0000000..21cbfcf --- /dev/null +++ b/1.6/Mods/Paniel_Experimental/Languages/ChineseSimplified/DefInjected/ThingDef/ThingDef_PNE_BodyParts.xml @@ -0,0 +1,10 @@ + + + + 姬关人形实验型动力核心 + 一个实验性的动力核心。允许姬关人形在不使用燃料的情况下提供动力。使用可能伴随巨大潜在风险。 + + 姬关人形自动修复系统 + 一个实验性的姬关人形自动修复系统模块。允许姬关人形缓慢的自我修复损伤。 + + \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/SOS2.xml b/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/SOS2.xml new file mode 100644 index 0000000..36a091b --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/SOS2.xml @@ -0,0 +1,364 @@ + + + + +
  • Save Our Ship 2
  • +
    + + Always + + + + +
  • + Defs/ThingDef[defName = "PN_ApparelMaid"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelMaid"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelMaid"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelMaidHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelMaidHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelMaidHat"]/statBases/Insulation_Heat + + 25 + +
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelWorker"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelWorker"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelWorker"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelWorkerHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelWorkerHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelWorkerHat"]/statBases/Insulation_Heat + + 25 + +
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelSoldier"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelSoldier"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelSoldier"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelSoldierHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelSoldierHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelSoldierHat"]/statBases/Insulation_Heat + + 25 + +
  • + + + +
  • + Defs/ThingDef[defName = "PN_EliteSecurityUniform"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_EliteSecurityUniform"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_EliteSecurityUniform"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_EliteSecurityHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_EliteSecurityHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_EliteSecurityHat"]/statBases/Insulation_Heat + + 25 + +
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalguard"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalguard"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalguard"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalguardHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalguardHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalguardHat"]/statBases/Insulation_Heat + + 25 + +
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeister"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeister"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeister"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterHat"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterHatWithMonocle"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterHatWithMonocle"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterHatWithMonocle"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterMonocle"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterMonocle"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmeisterMonocle"]/statBases/Insulation_Heat + + 25 + +
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmaid"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmaid"]/statBases/Insulation_Cold + + 100 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmaid"]/statBases/Insulation_Heat + + 25 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmaidHat"]/apparel/tags + +
  • EVA
  • + + + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmaidHat"]/statBases/Insulation_Cold + + 50 + +
  • + +
  • + Defs/ThingDef[defName = "PN_ApparelRoyalmaidHat"]/statBases/Insulation_Heat + + 25 + +
  • + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/Yayo_combat_3.xml b/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/Yayo_combat_3.xml new file mode 100644 index 0000000..eead124 --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Core/Patches/Yayo_combat_3.xml @@ -0,0 +1,36 @@ + + + + +
  • Yayo's Combat 3
  • +
  • Yayo's Combat 3 [Adopted]
  • +
    + + Always + + + +
  • + Defs/ThingDef[defName = "PN_Chainlongsword"]/equippedAngleOffset + + 0 + +
  • +
  • + Defs/ThingDef[defName = "PN_Chainlongsword"]/comps +
  • + + +
  • + Defs/ThingDef[defName = "PN_StormLance_Bladelink"]/equippedAngleOffset + + 0 + +
  • +
  • + Defs/ThingDef[defName = "PN_StormLance_Bladelink"]/comps +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Mods/RimImmortal/Defs/PN_RI_Items_Special.xml b/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Mods/RimImmortal/Defs/PN_RI_Items_Special.xml new file mode 100644 index 0000000..bd0537a --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/1.5/Mods/RimImmortal/Defs/PN_RI_Items_Special.xml @@ -0,0 +1,232 @@ + + + + + PN_EnergyRoot + + A cyan middle quality energy root. The energy root is a benign neuroma the size of a mung bean, located inside the prefrontal lobe, an organ that only a very small number of people have. Once you have the energy root, you can feel the Qi in the atmosphere, and indirectly receive a large amount of memory information in a moment. + + Things/Health/EnergyRoot + Graphic_Single + + + 2000 + 2.5 + + +
  • +
  • + WhoXiuXian.CompUsableRoot + InstallEnergyRoot + Inject {0_label} to become a cultivator +
  • +
  • + Hediff_RI_EnergyRoot + 0.5 + PNBrain + false +
  • +
    +
    + + + PN_Make_PN_EnergyRoot + + make 【Medium quality】Energy root for Automata. + Making 【Medium quality】Energy root for Automata. + GeneralLaborSpeed + Cook + Recipe_Machining + 1 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • EnergyRoot
  • + + + 1 + +
    + + 1 + + Crafting +
    + + + PN_EnergyRootHigh + + A cyan high quality energy root. The energy root is a benign neuroma the size of a mung bean, located inside the prefrontal lobe, an organ that only a very small number of people have. Once you have the energy root, you can feel the Qi in the atmosphere, and indirectly receive a large amount of memory information in a moment.\n\nThis energy root is extremely active and can speed up the efficiency of Qi acquisition. + + Things/Health/EnergyRootHigh + Graphic_Single + + + 3000 + 2.5 + + +
  • +
  • + WhoXiuXian.CompUsableRoot + InstallEnergyRoot + Inject {0_label} to become a cultivator +
  • +
  • + Hediff_RI_EnergyRoot + PNBrain + 1 + false +
  • +
    +
    + + + PN_Make_PN_EnergyRootHigh + + make 【Best quality】Energy root for Automata. + Making 【Best quality】Energy root for Automata. + GeneralLaborSpeed + Cook + Recipe_Machining + 1 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • EnergyRootHigh
  • + + + 1 + +
    + + 1 + + Crafting +
    + + + PN_EnergyRootLow + + A cyan low quality energy root. The energy root is a benign neuroma the size of a mung bean, located inside the prefrontal lobe, an organ that only a very small number of people have. Once you have the energy root, you can feel the Qi in the atmosphere, and indirectly receive a large amount of memory information in a moment.\n\nThis energy root is not very active, and the acquisition of Qi is slower than the average cultivator. + + Things/Health/EnergyRootLow + Graphic_Single + + + 1000 + 2.5 + + +
  • +
  • + WhoXiuXian.CompUsableRoot + InstallEnergyRoot + Inject {0_label} to become a cultivator +
  • +
  • + Hediff_RI_EnergyRoot + 0.3 + PNBrain + false +
  • +
    +
    + + + PN_Make_PN_EnergyRootLow + + make 【Low quality】Energy root for Automata. + Making 【Low quality】Energy root for Automata. + GeneralLaborSpeed + Cook + Recipe_Machining + 1 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • EnergyRootLow
  • + + + 1 + +
    + + 1 + + Crafting +
    + + + PN_RI_Things_JadeLiquid + + A medicinal wine that makes you feel wonderful. After drinking, one can briefly gain a connection with the celestial deity and receive a soul shock directly from the celestial deity. This will forcibly activate a person's energy root, and if there is no energy root, part of the Qi in the wine will be used to create a lower energy root. The effect of this medicinal wine is varied, and it seems that the effect of all people is not the same. Most people have heard a man who named Thran's laugh, or a few gossip, or a hiccup. For a moment their souls seem to travel through the endless darkness and see themselves from birth to the present, and when they come to their senses, it seems as if they have had a dream, but the slightly sore forehead reminds them that they have become cultivator. + + Things/Health/RI_Things_JadeLiquid + Graphic_Single + + + 1000 + 2.5 + + +
  • +
  • + WhoXiuXian.CompUsableRoot + InstallEnergyRoot + Drink {0_label} to please the Thran and become a cultivator +
  • +
  • + Hediff_RI_EnergyRoot + 0.3 + PNBrain + false +
  • +
    +
    + + + PN_Make_PN_RI_Things_JadeLiquid + + make QingMing jade wine for Automata. + Making QingMing jade wine for Automata. + GeneralLaborSpeed + Cook + Recipe_Machining + 1 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • RI_Things_JadeLiquid
  • + + + 1 + +
    + + 1 + + Crafting +
    + +
    \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/About/About.xml b/1.6/Mods/Paniel_Misc_Compatibility_Patch/About/About.xml new file mode 100644 index 0000000..62d9276 --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/About/About.xml @@ -0,0 +1,25 @@ + + + Paniel Misc Compatibility Patch + Kalo + kalospacer.PanielMiscCompatibilityPatch + +
  • 1.5
  • +
    + Icon/Paniel_Logi + +Miscellaneous compatibility patch for Paniel the Automata. + + + + + +
  • AhnDemi.PanieltheAutomata
  • +
  • kalospacer.AhnDemi.PanieltheAutomata
  • +
  • RI.RimImmortal.Core
  • +
    +
    \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/About/preview.png b/1.6/Mods/Paniel_Misc_Compatibility_Patch/About/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..6798ac3ccf6e62e01475fff8d011ba6179e2f03f GIT binary patch literal 724992 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 z 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%0AT$vv^Px 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

  • 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
    ^<8n>oyk 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�N;f0nDJY8rl2+c1wmmm*(+Z4s0T+WIrxIPXt6f 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
    q-_tSRXTa*iVM5?eJ9a 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�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
  • 1.5/Core
  • +
  • Content
  • +
  • 1.5/Mods/RimImmortal
  • + + \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/readme.md b/1.6/Mods/Paniel_Misc_Compatibility_Patch/readme.md new file mode 100644 index 0000000..f73226c --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/readme.md @@ -0,0 +1,12 @@ +This Mod is for compatibility with other mods.To use this,Copy the entire folder "Paniel_Misc_Compatibility_Patch" to your Mods folder and active it. +Now Contain: +RimImmoral:Core +Save our Ship 2 +Yayo's Combat 3 + +//这个Mod是为了与其他Mod兼容。要使用这个,将整个"Paniel_Misc_Compatibility_Patch"文件夹复制到你的Mods文件夹并激活它。 + +现在包含: +边缘仙路-羽化登仙 RimImmortal-Core[1.5] +Save our Ship 2 +Yayo's Combat 3 \ No newline at end of file diff --git a/1.6/Royalty/Defs/PnLCareerLevel/Royal_Permits.xml b/1.6/Royalty/Defs/PnLCareerLevel/Royal_Permits.xml new file mode 100644 index 0000000..e4bb866 --- /dev/null +++ b/1.6/Royalty/Defs/PnLCareerLevel/Royal_Permits.xml @@ -0,0 +1,418 @@ + + + + + PN_TradeBenefit + + + + + + PN_SubsidiaryFaction + 1 + 60 + + + + + RoyalTitlePermitWorker_DropResources + true + + 39.9 + + + + + + PN_AnnualSalary_A + + This is the annual salary (800 Silver) paid to PnL Logistics employees. can use PnL result point to receive advance salary. + PN_Title_Associate + 1 + (0,0) + + + 800 + + 1 + + + + + PN_AnnualSalary_B + + This is the annual salary (3200 Silver) paid to PnL Logistics employees. can use PnL result point to receive advance salary. + PN_Title_Manager + 1 + PN_AnnualSalary_A + (1,0) + + + 3200 + + 4 + + + + + + PN_RequestSecurityUnitClose + + Request 4 melee combat security unit to aid in your battle. + RoyalTitlePermitWorker_CallAid + PN_Title_Senior + 1 + (0,1) + PN_SubsidiaryFaction + + 2 + PN_Mid_CloseUnit + 4 + 39.9 + + 60 + + + + PN_RequestEliteSecurityUnitClose + + Request 4 melee combat elite security unit to aid in your battle. + RoyalTitlePermitWorker_CallAid + PN_Title_SeniorManager + 1 + PN_RequestSecurityUnitClose + (1,1) + PN_SubsidiaryFaction + + 4 + PN_EliteCloseUnit + 4 + 39.9 + + 60 + + + + + PN_RequestSecurityUnitRange + + Request 4 range combat security unit to aid in your battle. + RoyalTitlePermitWorker_CallAid + PN_Title_Senior + 1 + (0,2) + PN_SubsidiaryFaction + + 2 + PN_Mid_RangeUnit + 4 + 39.9 + + 60 + + + + PN_RequestEliteSecurityUnitRange + + Request 4 rifle combat elite security unit to aid in your battle. + RoyalTitlePermitWorker_CallAid + PN_Title_SeniorManager + 1 + PN_RequestSecurityUnitRange + (1,2) + PN_SubsidiaryFaction + + 4 + PN_EliteRangeUnit + 4 + 39.9 + + 60 + + + + PN_RequestEliteSecurityUnitHeavy + + Request 2 heavy combat elite security unit to aid in your battle. + RoyalTitlePermitWorker_CallAid + PN_Title_SeniorManager + 1 + (1,3) + PN_SubsidiaryFaction + + 4 + PN_EliteHeavyUnit + 2 + 39.9 + + 60 + + + + PN_RequestEliteSecurityUnitCannon + + Request 2 cannon combat elite security unit to aid in your battle. + RoyalTitlePermitWorker_CallAid + PN_Title_SeniorManager + 1 + (1,4) + PN_SubsidiaryFaction + + 4 + PN_EliteCannonUnit + 2 + 39.9 + + 60 + + + + + PN_RequestEngineerUnit + + Request a group of 4 engineer units to assist you for 4 days. These workers can only do general labor tasks. You can control them as though they were your own colonists. You are required to keep them safe. + RoyalTitlePermitWorker_CallLaborers + PN_Title_Senior + 1 + (0,5) + PN_SubsidiaryFaction + + 2 + PN_AssociateP_EngineerB + 4 + 4 + 39.9 + + 60 + + + + PN_RequestEliteEngineerUnit + + Request a group of 4 elite engineer units to assist you for 4 days. These workers can only do general labor tasks. You can control them as though they were your own colonists. You are required to keep them safe. + RoyalTitlePermitWorker_CallLaborers + PN_Title_SeniorManager + 1 + PN_RequestEngineerUnit + (1,5) + PN_SubsidiaryFaction + + 4 + PN_ManageUnit_Enginer + 4 + 4 + 39.9 + + 60 + + + + + PN_RequestDomesticUnit + + Request a group of 4 domestic units to assist you for 4 days. These workers can only do general labor tasks. You can control them as though they were your own colonists. You are required to keep them safe. + RoyalTitlePermitWorker_CallLaborers + PN_Title_Senior + 1 + (0,6) + PN_SubsidiaryFaction + + 2 + PN_AssociateP_DomesticB + 4 + 4 + 39.9 + + 60 + + + + PN_RequestEliteDomesticUnit + + Request a group of 4 elite domestic units to assist you for 4 days. These workers can only do general labor tasks. You can control them as though they were your own colonists. You are required to keep them safe. + RoyalTitlePermitWorker_CallLaborers + PN_Title_SeniorManager + 1 + PN_RequestDomesticUnit + (1,6) + PN_SubsidiaryFaction + + 4 + PN_ManageUnit_Domestic + 4 + 4 + 39.9 + + 60 + + + + + PN_DropOTPCard + + Request for a drop of PnL OTP card. + PN_Title_Manager + 1 + (0,7) + + + 1 + + 2 + + + + + + PN_DropPackagedAutomatonSoldier + + Request for a drop of PnL automaton™ (Combat) box. + PN_Title_Manager + 1 + 300 + (0,8) + + + 1 + + 4 + + + + + PN_DropPackagedAutomatonSoldierPremium + + Request for a drop of PnL automaton™ Pro (Combat) box. + PN_Title_Director + 1 + 300 + PN_DropPackagedAutomatonSoldier + (1,8) + + + 1 + + 10 + + + + + + PN_DropPackagedAutomatonWorker + + Request for a drop of PnL automaton™ (Engineer) box. + PN_Title_Manager + 1 + 300 + (0,9) + + + 1 + + 4 + + + + + PN_DropPackagedAutomatonWorkerPremium + + Request for a drop of PnL automaton™ Pro (Engineer) box. + PN_Title_Director + 1 + 300 + PN_DropPackagedAutomatonWorker + (1,9) + + + 1 + + 10 + + + + + + + PN_DropPackagedAutomatonMaid + + Request for a drop of PnL automaton™ (Domestic) box. + PN_Title_Manager + 1 + 300 + (0,10) + + + 1 + + 4 + + + + + PN_DropPackagedAutomatonMaidPremium + + Request for a drop of PnL automaton™ Pro (Domestic) box. + PN_Title_Director + 1 + 300 + PN_DropPackagedAutomatonMaid + (1,10) + + + 1 + + 10 + + + + + + PN_RequestTransportShuttle + + request a shuttle for your own use. It will transport colonists, items, and animals anywhere you like within 70 world tiles. + RoyalTitlePermitWorker_CallShuttle + PN_Title_Manager + PN_SubsidiaryFaction + 1 + 60 + true + (0,11) + + 4 + 44.9 + false + + + + + + PN_DropPnLComponent + + Request for a drop of 3 PnL Component. + PN_Title_Director + 1 + (1,11) + + + 3 + + 3 + + + + + + PN_DropBrainCore + + Request for a drop of 3 automaton brain core. + PN_Title_Director + 1 + (1,12) + + + 3 + + 3 + + + \ No newline at end of file diff --git a/1.6/Royalty/Defs/PnLCareerLevel/Royal_Thoughts.xml b/1.6/Royalty/Defs/PnLCareerLevel/Royal_Thoughts.xml new file mode 100644 index 0000000..086624b --- /dev/null +++ b/1.6/Royalty/Defs/PnLCareerLevel/Royal_Thoughts.xml @@ -0,0 +1,36 @@ + + + + + PN_TitlePromotion + 7 + Thought_MemoryRoyalTitle + +
  • Ascetic
  • +
    + +
  • + + I was promoted to {TITLE}. I love the recognition! + 8 +
  • +
    +
    + + + + PN_TitleDemotion + 7 + Thought_MemoryRoyalTitle + +
  • Ascetic
  • +
    + +
  • + + I demoted to {TITLE}. + -8 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/PnLCareerLevel/Royal_Titles.xml b/1.6/Royalty/Defs/PnLCareerLevel/Royal_Titles.xml new file mode 100644 index 0000000..d9acf8f --- /dev/null +++ b/1.6/Royalty/Defs/PnLCareerLevel/Royal_Titles.xml @@ -0,0 +1,272 @@ + + + + + +
  • PN_PnLCareerTitleTag
  • +
    + 1 + PN_TitlePromotion + PN_TitleDemotion + False + RoyalTitleAwardWorker_Instant +
    + + + + PN_Title_Intern + + Intern of PnL Logistics. + 0 + 1 + 0 + 1000 + + + + + PN_Title_Associate + + Associate of PnL Logistics. + 1 + 6 + 1 + 1200 + 10 + + + + + PN_Title_Senior + + Senior of PnL Logistics. + 2 + 8 + 2 + 1600 + 25 + Normal + + + + + PN_Title_Manager + + Manager of PnL Logistics. + 3 + 18 + 3 + Moderate + 2200 + 40 + Normal + +
  • + 16 +
  • +
  • + RoomRequirementAllFloored + +
  • Floor
  • +
  • FineFloor
  • + +

    ANtmtZ~nnQ_??gc@n`S9 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%0Dp274Ry$Dal| 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%0D&&?vs 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 JnLHCiVeED~YW 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 z zQ~;!#{;gx?l9D>0vSBh=*AijqU?N~})SS7(!~-4FQzJQlS_Vfohl5THH%>_#2xwsN zso+qDJ}2}HVD>fns1I1;M<-hZH+=`m3VYZjRgEAQXT7^)&m++qc-4d_f@-Pe5jjBN zlwJW);6s4^r4tn%*^po%x>*^*QLScA8_57XpLIwF1@ov#q)C0oMq+lii2fc-9*O$< zu2pUmE1|Zb9O{GFWlL&^U?E{@Ad(>QgYj8`cRxf3$1HiVWU6KstPxjgCX@4ObzV6!(-lel8@Bf<5_Tz(e9fqGWFLs} zYiMFxL*WEPEz(dPjenwg8XV(`jZ$XaY8sfx|;6#5&Xl$~Yx?^O~gHV5nM)9I;XX1V#3PVh`5v1C z?+tTIo6UngG3}~2-`mJlNETvK7f23_8K*56Jjx{CxC<&$MZ>jd;j3xW@)jOk4Q8-3 z{59WnCQ99FZ9`EFX zC?#I}cmVWXQ)#JmDevtn=8irDl_e4Nf)vpV4~{MqHuC)b`R0u`-p~PML@+$6dLZrC zCbySo4^8KcXGu;RBnc^KlXI@W-x>Axc_9(14vS@{LDzUYpw^+Vr%=Gl_%nK()3Tb_vkv%{nHZ&1#Ik1u`53$?&XtBv*>HfdFzzLqyRFwJ64nOv@5Ok&}P zav)PrdT-cZh$z*KfCuq<4AWRY|Fq<~`*R=^J*ur4tN46|l=LmC1TjItnmCuqH5Txj zdVkoRRY_3uA~E{R7X)DeN8lB#S`05}Gz1)l6zub^4HK6h7!ApJCtcin++@Jc_hiNx z?&Ti_=B}^gbVXCy98GNoV1<-=6zLq0rxT1%Fl26FnSn%upR7qwFMN{Qqvg4Ra~)n} zU)})L5O$PDV&^63fZfx8juPF$!Dfo)5qPpmnq-ZTpb6zDfIa!~Lw4eH+ed(=UT|p6 z{A4Cs5?5NZL5mM2J3Jk(7V=Sy?5ZlfCK8kS7zHB73GO4NjsLu;QHOp|&%sT5a&nSJ zuXf+Y$aOJwmJa0LYEUdPv&jGLG=TlZ z>sXQlvZ%pRv;y*U6GP3i_&C+-^;W@S*ur3%fo9st>m;<-Bb9KqGgV{K?7?Ac@b6(n zI-xevlWX_ZfQjacTA_ufs5yqI^%V;`R`uAoz-;n0v$?3G7A#*Li1CbK@{G9|QD4m_ zf$2Chodi#wB7LD^(aQ?e)&yznpD>)u&?H2}Y!uM+Q@3JgnP{mEekPTDJ7=JG)NjPp z6zoP16=dAMS5qucYd-Go@7}*v-F5aBqzhw2jFDJ|Agkt0jn+b+s5<1#0i8)B}E>&b}PVNY~Og6d&h=OkG^w zL9nb*;I_8S^Ta^Or!QtH3|uMN@++oLT)5l^l`JPgb7vZVAiV< zHaB6ar@7B-m#1qd0U6Uo#fA@r4G7>t7UWGmj5wWMoZrF!elJZ8)HI=bbP=q1GZs(p z-M(sw56_pk8WE=l0u}Wp9cushV&9e}GF}cQGML+9)qxGN|mZEAG3$d)o&r zXeci-t|xtO<@o95mM=5wVw7tH-8G6!of%wtY&yeqkKU+4h8+B(UR1e`FlDZgh9j7> ziv=+vb-Cy@+P1-zlI|mymvjDYM2Xp`G4*F+;GrGqWmC9biSc+fsl$e&G%u2+PZ?DE zd$jX&o3gTkx)T6A5uKfsxZ!Q)Y9p54mp+IOowBxTBhq?!13P5Q6@hiiy3k;>*4e37 znn3tp`w3MunIH@)3@h!Ymj;=GGC==WSFtC+8yw_&z%{Ly9n~cn zk~bS)0$)Xa>fH$6H4FXpV)y<*KC5IBx|DVuS&kJ_3?bGo+!NFCGSe^)<#gV0yws`X zlPq|v8N3yilyHCTbn|>~|1Jc%KZmG4;~W4W*uh0n-e1Hia?YR6nw++~{E5yetg{g}I*NA(fx zf_XYdO(ZCb8FrqYDTF}RZ!-$Hg`8BC)R4n0q<+Ar5Sc<96mJV8B-*8~V43VoiyXk{ zE({%jAt<)?LO9yO{sbd{D2-DBN4|W%e{g@VtwZBJVW20i6T#i~QZ&ZxwKcvH zTH>FHGJr)B>sX>i!LIx7SxX56am0k<%7+fWJ#TT7$LF*dsUp~(SRG{?3!w;TcN4lhTh=5-sTxkF% z$vyzn0YaI6NGwu^qrL}FdnnzPqD#qK$x;XuI!>!#N2_sqDW?L_*cw&&M$$y^-&i5kgBrvCv>hDoJ6N#Mfcg6{#*hJ(&tP$N)><=agoeD_p zW{f-BF16LbFk2M}=g)Uek8IqIC_W)(HL(;uZR;JtC}{!JU|j%6RSGo-(8`CG=N2<9 zux)Mt#Z-JYDe(Y|7d3t|memp;Aqu((JN?t+O&i%Lt}s|tfH!U$K{|hMx#uGp+2SEi z{V0kQg;K}`mtB8uB8Gm*r=eeTpC;Ovi_wpAkVOtisst1jO?)~2YP~~2KLlx5Yn-;} zL4%%Mp}RJO=eUmx!ZEGAv`k8;;8O$fJew32><5_4guX|H=p7{~jtd(^r?UGpgch}I zpHZLZbqyGMI}6@1TiHeYPsGFA00=EsZlc?fK5CJe6zDk90pG2tVH-39mDoh`h;@1= z>1b|+?!XS^o}%gmFu84T6!vdaxvq_DDN|6WocwE16Xogh4%-q>RhLhie+&<< z42~*~NTx-6XdrUcYdkI>Y5+RES|M|&X-Hr46zs$nMk@ED0LeUEA(P-x+P|7N^0;++ z;9E2sDL#C9_ou5z!_rz0x$!0^avkVLo{iclN4-+#i8=L6Z`Hr(0>n2(u0fsM^`MW< z+Zez5T)um|n-4a39||kS4d6u$@6dMIhqPVnApr3H+F5C89lz-LawZ7Y=l@UdY6RJVqOk0Tu0S8i~ z#nHCD(WE>5QI0(HOfREN`_KI(957-B^&o&nAiYoLRbdE&s(4)^E@fHs!?sSWY1E?t zZpmnz+NsC+Ok5NJVbev6-05)CZt&tpvJo&HT2T*jVRyefk)tuC4G(sow5F$}KL_T> zR8kF%Nou1$2k|OYg9@)}cD?G4ZgYisYJ;%a(Z2#3O{)B*Y;XG*p6<`}ge0Y%vkTX~ zh8b|t<_IHcZ!SoK=#OGv&xlM%Q;LKOCwUE+15rK8eJrNa#4kxATqXh)eV&hhW9GAE zmUSh)J~>%bi79pJvWXB-3T+LoU~H=`d(e5dO98#mQFiT3m>Hbmk4M2 z4>OM;;?}fVdG0JPf2Fu+Vs*@(j^7e5qb)iFPs#;Ms2qWTq$>a;$tu5tfn9|1k^+P` z#h4V~83xtfGE%+mX4v5&83vJtc&meQE)6Ee*_peBDIDuDMW&*F<XAl>5>J3FR3QFq*231It5j>tj3rCO2F&dGNBQNfB|?S&v0MW-w#iCBQ4UZ zHt+zLdY8~ePhy=)Mq3;_>7()61w1XS9%q9RQ-?jU_J8qT{8Ju3vpv{KDJz>M4FynR zgw^fQ#SqF1QDH0JNTy^-U>Hg7oN_Ejv+1fl)JK!Be0P8E{muD(eQ;;zqs@i93b-^? z=XZGRJi9QLw6Oz#I|iC~jA~?yFj1_PiUimPn3P&j+ww`*(Ei~)8_%|^WB}ugtZk!2 zn`We(Qk*z%qT)@I^_KtoU5?Bt=TdX*8hk0U zj#0_6M!@y>{FJ3XOrUGP#5WBUg#bQ{B3Jfcs0DeD5QtXJq}29LeO2UgV??`!fhrFR`408-t;M{Tw_2cdL_CcG+ZxR&*U|9{Jh@Gyt+X!- z=a#&XJqe@j(Dh+6CJ~&Y32SpD6G+;9A`N`nr7<)O{g@G0Lme010ez>y&{MSTEIudn z81?z|-AEiN)9_KCT|&`iMhZdDiNgST)+SL7*D$%7SGHzf2EHh zdo}X*L`i>p+t~w*PFpo;m?8&{#|@BbEzOgx=~RZN^#^5)ZT|nB?xi=5;|SpRK1qs{ z<=99JD5qQ!1il9F#m9XAuaQFn!4xH063yMs?_W)6G+OS?^mNy|s;eJU1$y&J3Ie9r zQ|8hXVHouoLgk8^aW(!S*1AruR7j#YW}+)orJ_7#;m8Y2ifJf)U!>@{u?Jib=%`G0 zxT11vK}=d?X+}q+_x3$qYsx`uxRWG^0vByl-nxRul@w$U{UT|t4!|r9W@RrJE??r~ z%#N!MmJ!xHPGwX*Qv;(QVu;2DOy5JM;9Qw++aV4`2p3=+;PXWQ0c9~Xfk$l3X+2GE zXt-Pkcdme>>2=-OOh-CZz5W?e!)oWW#2V4WsFCI(sS5oa&_ueiot%(_5vm5x7Hx-j zL7oeoei2r7D|7wOfh%A6=U|3Rg=+kGV}Olf9Gw_m&47zbc;HmMs>4S z=?L*afU5RDR9Fr_Nphz4&P6W}#tQ+EV$&%aZ#5I%!a9RM9X=ldPj{UyP2MI+A1zh^ z71nr3Wo+er#TG7+h|x9Q(O>|o|1h>FGWtG#q)$~|e){WAhwtvdSD=FwX}UM9=IWHT z#bm?rLp|D!EQE)dHI+hy4N9-4l5f+H(iB9#&7lbsH!+1>AW_m#jGB5!w)`}vIq&8S zh0X!IzvyAo4`_7>h#BFO*I8w<1LbH+uDjy9lQ0k@-b(Vt*il6%W;LBmF!TQW^xD)E zD~)!IY-pYDuz&%u9`v|_DeB`qzw|$5*XeX6j8(Y* z^_QPbfp7i0>Js14-W(s}W(HLoq^k)1qxPt7u|bGMG}J824J$OtCn)}Ta`mtFoBy3C zYV_Aw-KNd)<7~s^rx;6?@%!t;tJ2@6PZHKZr&#nIy~qKcH@G*-q(gIR3P+I@KVzPy z?&JRYp~1dvid`f#&6>g*HMJPd#EBqGHap}psc3;hQsB#W_i%0jiqc|Mwv5S;Do!#c z)XP~V`bAyYw}{`Z7!6FYDOn7W!n_Nwk--U!KKCY!W{0Sj{{x41z^OPH8W-4g_yYE! zaRgYmoalCU#Ro*#9&92YaeORKTrBslS*a$ul8%5=tT9i~TS{FE8sf|hDzQEcT(HHc zfVVS+cv^+ek{Kb@^u(w!vY4Hrv}X!yzp8pU1f3C6vww0SYs(LPR{M_W9ywHw8a=kY z`>fp=VNH<&&xAss-j(N>cesh=@doH_+&mPH$<(cvg%KvwX2RVFghIqS{k&nAFS#k7kP8L4^+jg)C3 zW~|P-GW-VX(MA2MXIFel+`9e z)Nq;LNX@VsDoN{THNwKqo<7PLwNV&?KuQha-YkI(rrD??AVm*KqO!UfA^u&R=9wEJ&$Vv^2p6taTOwyjsai@QR zX;8(cEUK_8_>H}SXGE_tw5mc#v`eZhi$tJBVTb09`aM|>7^i6s*Nm2-2I_0yuuJB8 zxK-bLs!(jN~ zktH`4$au#ajGA|83e#04-q6Pt1t03JoCXVcv{+G2nT zm#<~G(gnR|qh!I5?0*uQGc>wp7~akO?YH5<`VzxRzJL}t`k(L&jl@8uJTobPtS;b> zdqp(D7ULV9&9yms0qa4L3pxuU>Wr0OM3xEVszM#WkdEwb4i2i-?|iXE^}(iRrSycY z#1*G#O@RmAO}|cEGWU{|E77%mnraA%WN$?xT1Qp-X#YAl_Ji%w?L+(h*f6n_aU=ZemU!@;I*9s!*o zJ@putKd^vAU@V0l?lATJ>FV=Y+JcBOM8q#iCUr!GjIjyCY2Ui9oc2w=EjMYDN6_#4 zM1jelo?R=|$a-ecoW;}o?epW=TAZ*Hf%hrkbkU_d6}+bkUo%Mh+EVh_OTdDs#7MzZ6e{5y#dXj zSO+mr1*%4(-`({g&OyBO|P=1{ohD!W`MK zFL`r0r6~T!8oFR$qVR6;w0PD|2qHzjnzEAT=l`0;*!W%h!ic|FjhQG~*bDs;o8~{k zf~F&~5SG2BHS`A^P^l0c<^?&IcMl)({AF|80->jHN|jF24--FgibNYTduq(r5&*?WC0z+H>?04%fFM9yg)Af!=A%=j z9jEfso86;LqbFXA8jy)Iuv}uFRynchiO{Q>7^xyAN3nXGQ-U(SZ%&s`%)^o#7XgX{ zn_Vn$;oIAm5657ufMa^ASF0hCX7~%!(@r;}a#!QajuA?=-mJLL~HsnORXYs}J!?L;|nr&Csv_zE9{nOF=TB{eg8A{cx# zY4xi&VKyxvqf#{2*bm3RWy!r*2%lHwhO`w)zn%b~2qDEoXB+FZAbS!vRy~7}T$D9* z%PY9Qlg#4st#T&2qW|%0uX9*tkqYa9dwkK{=)k1+lAW7E9;R$^lhZkexrSAU3d##8 zmjxh*b(N>EKi;@h-;$*;8yh`a^&0czzqV2tbn&-tL>3J`0v#a>o2bt5F$7V*%y(_t z6J`Qa(d4u4P;44E4GfZDo-@5hr80?^gJGycFRGOti!OfRdt;#O3#lt80`#~CGNVi8 zjX3i`1Y;3_$RN1r-*_fE3c+Akey!eOlr43sa@5%zZc2LE$VsM@ti8~`0V3ZNB?Mg068$AsWwzt$A|4+mk!GzBebHi zqz59FM_g|SE*B!PE^syTK75-AuJ3_zO(9?@s^;nP{Keq!V6Js{ZT3EqdNMjoMl!5} zO`y>V!ISt#9+XEUUZPR((*vht_Cv_f$0j<^wX{WTex_yvB-Wz=Xhm{>!D|9z_0OU} zka_bk_hed_{T~FH<$5bmRU8FjkeMdeGpW{?o>c?DYPu|u3*slC$*5hY!yN-c^ zI>G4{vyyDRkqv;M8%ok`(TsXiqBxS|=y3UpHYDBubc|kc74$9cgrl}UY_7f4%$L_Y zwzXa;;w<+NuNczSK7&6i?myVGrEGUcBt?l#ge$zM zS3j_@+NakZ@m{?^#lNBavh3<=u1hCqR{)m1gc@`IsosP~QxL;R70QJ(&8|UKNYu{e z8OLTmSRX34osXPczM;ux6H>S$g5VugE8kDhEGz&m`=}x9`Yw)DKCpAQW5t@ZZDCNY zJ3WhQzent%NuRpYh}ahq*eL zJXmKhtJJW*@OUBOO8nqyNQ(O5SQO_+<55CuoZ^pMf3=hUttv;dx7|KS zh{i`7+T(cfE+n<0PCq-CsXBG!ZRkGNRt=S3_(r|b-nya8ize_0O`Xeh0N?S{U|U}R zM+Q_PK2Qmz)+n2)Vp=kVTM ze$&snuQgyhQ*6J~=E^X?N^oHkjoGj-6Dk>>lwmalLELU9v?zZSAljG!q$nN;^YOVhO-;+7%k@ss$dYcJ(BP z2BADCCK{%ZYLI4Aoi2-6*=Zs~>@gAA0FKL5WhB8C92iQ#3grhF_y!5-irebn9PPP= zDuz8>6fmfPv8;@~F5#Ry38zYRd&nP?>ATkZUvx_}VuLJo)w(&x|FgZc#I*-QbuM* + + + 制作【中品】姬关人形用灵芽 + 将【中品】灵芽改造为【中品】姬关人形用灵芽。 + 正在制作【中品】姬关人形用灵芽。 + + 制作【上品】姬关人形用灵芽 + 将【上品】灵芽改造为【上品】姬关人形用灵芽。 + 正在制作【上品】姬关人形用灵芽。 + + 制作【下品】姬关人形用灵芽 + 将【下品】灵芽改造为【下品】姬关人形用灵芽。 + 正在制作【下品】姬关人形用灵芽。 + + 制作姬关人形用青玉仙露 + 将青玉仙露改造为姬关人形用青玉仙露。 + 正在制作姬关人形用青玉仙露。 + + \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/Content/Languages/ChineseSimplified/DefInjected/ThingDef/PN_RI_Items_Special.xml b/1.6/Mods/Paniel_Misc_Compatibility_Patch/Content/Languages/ChineseSimplified/DefInjected/ThingDef/PN_RI_Items_Special.xml new file mode 100644 index 0000000..941c650 --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/Content/Languages/ChineseSimplified/DefInjected/ThingDef/PN_RI_Items_Special.xml @@ -0,0 +1,32 @@ + + + + + 【中品】姬关人形用灵芽 + + 一颗青色的中品灵芽。\n\n灵芽是一个绿豆大小的良性神经瘤,位于前额叶内部,只有极少数人拥有此器官。而一旦拥有灵芽,就可以感受到大气中灵气的存在,并在一瞬间接收到大量的记忆信息。 + + 注入{0_label},变成修炼者 + + + 【上品】姬关人形用灵芽 + + 一颗青色的上品灵芽。\n\n灵芽是一个绿豆大小的良性神经瘤,位于前额叶内部,只有极少数人拥有此器官。而一旦拥有灵芽,就可以感受到大气中灵气的存在,并在一瞬间接收到大量的记忆信息。这颗灵芽极其活跃,可以加快灵气获取的效率。 + + 注入{0_label},变成修炼者 + + + 【下品】姬关人形用灵芽 + + 一颗青色的下品灵芽。\n\n灵芽是一个绿豆大小的良性神经瘤,位于前额叶内部,只有极少数人拥有此器官。而一旦拥有灵芽,就可以感受到大气中灵气的存在,并在一瞬间接收到大量的记忆信息。这颗灵芽不太活跃,对灵气的获取比一般修炼者慢一些。 + + 注入{0_label},变成修炼者 + + + 姬关人形用青玉仙露 + + 一种能让人产生奇妙感觉的药酒。喝下后可以令人短暂获得与天仙的连接,并直接从天仙那里受到一股灵魂冲击。这将会强行激活一个人的灵芽,如果没有灵芽,则会用药酒中的部分灵气制造一颗下品灵芽。\n\n这种药酒的效果众说纷纭,似乎所有人的效果都不相同。大部分人都听到了一个自称为喰仙的人的笑声,抑或是几句闲言碎语,或者是打嗝声。他们的灵魂在一瞬间仿佛穿越到了一望无际的黑暗中,并看到了自己从出生到现在的景象,而等他们回过神来,似乎又觉得是做了一场梦,但微微作痛的前额会提醒他们,他们已经成为了修炼者。 + + 喝下{0_label}以取悦喰仙,成为修炼者 + + \ No newline at end of file diff --git a/1.6/Mods/Paniel_Misc_Compatibility_Patch/LoadFolders.xml b/1.6/Mods/Paniel_Misc_Compatibility_Patch/LoadFolders.xml new file mode 100644 index 0000000..573969a --- /dev/null +++ b/1.6/Mods/Paniel_Misc_Compatibility_Patch/LoadFolders.xml @@ -0,0 +1,8 @@ + + + +

  • +
  • + RoomRequirementNoProductionFacilities + +
  • Production
  • + + + + + MealSimple + Processed, Liquor + +
  • Ambrosia
  • +
  • Milk
  • +
  • RawBerries
  • +
    +
    + + + + + PN_Title_SeniorManager + + Senior Manager of PnL Logistics. + 4 + 24 + 4 + +
  • PN_TradeBenefit
  • +
    + Moderate + 2800 + 60 + Normal + +
  • + 24 +
  • +
  • + 40 +
  • +
  • + RoomRequirementAllFloored + +
  • Floor
  • +
  • FineFloor
  • + + +
  • + RoomRequirementNoProductionFacilities + +
  • Production
  • + + +
    + + MealSimple + Processed, Liquor + +
  • Ambrosia
  • +
  • Milk
  • +
  • RawBerries
  • +
    +
    +
    + + + + PN_Title_Director + + Director of PnL Logistics. + 500 + 54 + 5 + +
  • PN_TradeBenefit
  • +
    + High + 3500 + 75 + Normal + +
  • + 24 +
  • +
  • + 50 +
  • +
  • + RoomRequirementAllFloored + +
  • Floor
  • +
  • FineFloor
  • + + +
  • + RoomRequirementNoProductionFacilities + +
  • Production
  • + + +
    + + MealFine + Processed, Liquor + +
  • Ambrosia
  • +
  • Milk
  • +
  • RawBerries
  • +
    +
    +
    + + + + +
  • PN_TradeBenefit
  • +
    + Normal + +
  • + 30 +
  • +
  • + 70 +
  • +
  • + RoomRequirementAllFineFloored + +
  • Floor
  • +
  • FineFloor
  • + + +
  • + RoomRequirementNoProductionFacilities + +
  • Production
  • + + +
    + + MealFine + Processed, Liquor + +
  • Ambrosia
  • +
  • Milk
  • +
  • RawBerries
  • +
    +
    +
    + + + + + PN_Title_SeniorDirector + + Senior Director of PnL Logistics. + 600 + 1 + High + 125 + Normal + + + + + PN_TitleVP + + VP of PnL Logistics. + 700 + 1 + High + 150 + Normal + + + + + PN_TitleSVP + + SVP of PnL Logistics. + 800 + 0.6 + High + 200 + Normal + + + + + PN_TitleCEO + + CEO of PnL Logistics. + 900 + 0.1 + High + 300 + Normal + + \ No newline at end of file diff --git a/1.6/Royalty/Defs/PnLCareerLevel/Royal_TraderKinds.xml b/1.6/Royalty/Defs/PnLCareerLevel/Royal_TraderKinds.xml new file mode 100644 index 0000000..951ec0f --- /dev/null +++ b/1.6/Royalty/Defs/PnLCareerLevel/Royal_TraderKinds.xml @@ -0,0 +1,173 @@ + + + + PN_Caravan_TributeCollector + + True + 1 + Favor + PN_SubsidiaryFaction + True + + +
  • + Gold +
  • +
  • + PN_SilverCase +
  • +
    +
    + + + + + PN_Orbital_PnLbenefit + + true + PN_SubsidiaryFaction + PN_TradeBenefit + + + +
  • + Silver + 2000~4000 +
  • +
  • + ComponentIndustrial + 30~60 +
  • +
  • + ComponentSpacer + 8~16 +
  • +
  • + Steel + 500~800 +
  • +
  • + Plasteel + 200~600 +
  • +
  • + Uranium + 60~300 +
  • +
  • + Chemfuel + 200~600 +
  • +
  • + MedicineUltratech + 5~30 +
  • +
  • + Neutroamine + 100~500 +
  • +
  • + Hyperweave + 50~200 +
  • +
  • + DevilstrandCloth + 50~200 +
  • + + +
  • + PN_AutomatonFuel + 200~600 +
  • +
  • + PN_antibiotics + 6~18 +
  • + + +
  • + PN_RepairKit + 20~40 +
  • +
  • + PN_SelfRepairKit + 2~5 +
  • +
  • + PN_BrainCasing + 6~10 +
  • +
  • + Leather_Automaton + 50~200 +
  • +
  • + PN_Component + 8~16 +
  • + +
  • + Packaged_NormalAutomatonSoldier + 1~3 +
  • +
  • + Packaged_NormalAutomatonWorker + 1~3 +
  • +
  • + Packaged_NormalAutomatonMaid + 1~3 +
  • + +
  • + Packaged_PremiumAutomatonSoldier + 1 +
  • +
  • + Packaged_PremiumAutomatonWorker + 1 +
  • +
  • + Packaged_PremiumAutomatonMaid + 1 +
  • + + +
  • + PN_PrototypeRailGun + 1 +
  • +
  • + PN_WeaponsMeleeBladelink + 1 + 1 +
  • + + + + +
  • + PN_ResurrectModule + 1~3 +
  • + + +
  • + Techprint_CataphractArmor + 1 +
  • +
  • + Techprint_BrainWiring + 1 +
  • + + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Psychic.xml b/1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Psychic.xml new file mode 100644 index 0000000..d1c3386 --- /dev/null +++ b/1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Psychic.xml @@ -0,0 +1,99 @@ + + + + + PN_PsychicAmplifier + + A consumable archotech-created device that forms or upgrades a psylink in the user's mind.\n\nThe user presses the device over the eyes, where it links to the brain directly and restructures part of it. Afterwards, the device disintegrates into worthless ash. + + PsychicAmplifier + + ThingWithComps + Item + Archotech + true + 14 + true + Item + Never + true + Middle + +
  • BodyPartsArchotech
  • +
    + + 100 + -4 + 1 + 2600 + 0 + + + Things/Item/Special/PsylinkNeuroformer + Graphic_Single + + +
  • PsylinkNeuroformer
  • +
    + +
  • + CompUsableImplant + UseItem + Use neuroformer to form psylink +
  • +
  • + PsychicAmplifier + PNBrain + true +
  • +
  • + PsyAmpInstalled +
  • +
  • + CompUseEffect_DestroySelf +
  • +
  • + + + + + PN_Make_PsychicAmplifier_Automaton + + make automaton psylink + Making automaton psylink. + GeneralLaborSpeed + Cook + Recipe_Machining + 2000 + true + +
  • PN_AutomatonBench
  • + + +
  • + + +
  • PsychicAmplifier
  • + + + 1 + +
  • + + +
  • ComponentIndustrial
  • + + + 2 + +
    + + 1 + + + 6 + + Crafting + PNRP_PsychicAmplifier + +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Vanilla.xml b/1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Vanilla.xml new file mode 100644 index 0000000..39a482f --- /dev/null +++ b/1.6/Royalty/Defs/Royal_Hediffs_BodyParts_Vanilla.xml @@ -0,0 +1,525 @@ + + + + + PN_InstallDrillArm + + Install a drill arm. + + DrillArm + DrillArm + + Installing drill arm. + +
  • + + +
  • DrillArm
  • + + + 1 + +
    + + +
  • DrillArm
  • +
    +
    + +
  • PNArm
  • +
    + DrillArm +
    + + + + PN_InstallFieldHand + + Install a field hand. + + FieldHand + FieldHand + + Installing field hand. + +
  • + + +
  • FieldHand
  • + + + 1 + +
    + + +
  • FieldHand
  • +
    +
    + +
  • PNHand
  • +
    + FieldHand +
    + + + + PN_InstallPowerClaw + + Install a power claw. + + PowerClaw + PowerClaw + + Installing power claw. + +
  • + + +
  • PowerClaw
  • + + + 1 + +
    + + +
  • PowerClaw
  • +
    +
    + +
  • PNHand
  • +
    + PowerClaw +
    + + + + PN_InstallHandTalon + + Install a hand talon. + + HandTalon + HandTalon + + Installing hand talon. + +
  • + + +
  • HandTalon
  • + + + 1 + +
    + + +
  • HandTalon
  • +
    +
    + +
  • PNHand
  • +
    + HandTalon +
    + + + PN_RemoveHandTalon + + Remove hand talon. + + HandTalon + HandTalon + + Removing hand talon. + HandTalon + + + + + PN_InstallElbowBlade + + Install an elbow blade. + + ElbowBlade + ElbowBlade + + Installing elbow blade. + +
  • + + +
  • ElbowBlade
  • + + + 1 + +
    + + +
  • ElbowBlade
  • +
    +
    + +
  • PNArm
  • +
    + ElbowBlade +
    + + + PN_RemoveElbowBlade + + Remove elbow blade. + + ElbowBlade + ElbowBlade + + Removing elbow blade. + ElbowBlade + + + + + PN_InstallKneeSpike + + Install a knee spike. + + KneeSpike + KneeSpike + + Installing knee spike. + +
  • + + +
  • KneeSpike
  • + + + 1 + +
    + + +
  • KneeSpike
  • +
    +
    + +
  • PNLeg
  • +
    + KneeSpike +
    + + + PN_RemoveKneeSpike + + Remove knee spike. + + KneeSpike + KneeSpike + + Removing knee spike. + KneeSpike + + + + + PN_InstallVenomFangs + + Install venom fangs. + + VenomFangs + VenomFangs + + Installing venom fangs. + +
  • + + +
  • VenomFangs
  • + + + 1 + +
    + + +
  • VenomFangs
  • +
    +
    + +
  • Teeth
  • +
    + VenomFangs +
    + + + PN_RemoveVenomFangs + + Remove venom fangs. + + VenomFangs + VenomFangs + + Removing venom fangs. + VenomFangs + + + + + PN_InstallVenomTalon + + Install a venom talon. + + VenomTalon + VenomTalon + + Installing venom talon. + +
  • + + +
  • VenomTalon
  • + + + 1 + +
    + + +
  • VenomTalon
  • +
    +
    + +
  • MiddleFingers
  • +
    + VenomTalon +
    + + + PN_RemoveVenomTalon + + Remove venom talon. + + VenomTalon + VenomTalon + + Removing venom talon. + VenomTalon + + + + + PN_InstallNeurocalculator + + Install a neurocalculator. + + Neurocalculator + Neurocalculator + + Installing neurocalculator. + +
  • + + +
  • Neurocalculator
  • + + + 1 + +
    + + +
  • Neurocalculator
  • +
    +
    + +
  • PNBrain
  • +
    + Neurocalculator +
    + + + PN_RemoveNeurocalculator + + Remove neurocalculator. + + Neurocalculator + Neurocalculator + + Removing neurocalculator. + Neurocalculator + + + + + PN_InstallCircadianAssistant + + Install a circadian assistant. + + CircadianAssistant + CircadianAssistant + + Installing circadian assistant. + +
  • + + +
  • CircadianAssistant
  • + + + 1 + +
    + + +
  • CircadianAssistant
  • +
    +
    + +
  • PNBrain
  • +
    + CircadianAssistant +
    + + + PN_RemoveCircadianAssistant + + Remove circadian assistant. + + CircadianAssistant + CircadianAssistant + + Removing circadian assistant. + CircadianAssistant + + + + + PN_InstallCircadianHalfCycler + + Install a circadian half-cycler. + + CircadianHalfCycler + CircadianHalfCycler + + Installing circadian half-cycler. + +
  • + + +
  • CircadianHalfCycler
  • + + + 1 + +
    + + +
  • CircadianHalfCycler
  • +
    +
    + +
  • PNBrain
  • +
    + CircadianHalfCycler +
    + + + PN_RemoveCircadianHalfCycler + + Remove circadian half-cycler. + + CircadianHalfCycler + CircadianHalfCycler + + Removing circadian half-cycler. + CircadianHalfCycler + + + + + PN_InstallPsychicSensitizer + + Install a psychic sensitizer. + + PsychicSensitizer + PsychicSensitizer + + Installing psychic sensitizer. + +
  • + + +
  • PsychicSensitizer
  • + + + 1 + +
    + + +
  • PsychicSensitizer
  • +
    +
    + +
  • PNBrain
  • +
    + PsychicSensitizer +
    + + + PN_RemovePsychicSensitizer + + Remove psychic sensitizer. + + PsychicSensitizer + PsychicSensitizer + + Removing psychic sensitizer. + PsychicSensitizer + + + + + PN_InstallPsychicReader + + Install a psychic reader. + + PsychicReader + PsychicReader + + Installing psychic reader. + +
  • + + +
  • PsychicReader
  • + + + 1 + +
    + + +
  • PsychicReader
  • +
    +
    + +
  • PNBrain
  • +
    + PsychicReader +
    + + + PN_RemovePsychicReader + + Remove psychic reader. + + PsychicReader + PsychicReader + + Removing psychic reader. + PsychicReader + +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/Royal_Hediffs_ContDamPN.xml b/1.6/Royalty/Defs/Royal_Hediffs_ContDamPN.xml new file mode 100644 index 0000000..10024a0 --- /dev/null +++ b/1.6/Royalty/Defs/Royal_Hediffs_ContDamPN.xml @@ -0,0 +1,302 @@ + + + + + + PN_ChainCutManeuverMono + PN_ChainCutToolMono + + Verb_MeleeAttackDamage + PN_ChainCutDamageMono + + MeleeAttack + Maneuver_Slash_MeleeHit + Maneuver_Slash_MeleeDeflect + Maneuver_Slash_MeleeMiss + Maneuver_Slash_MeleeDodge + + + + PN_ChainCutToolMono + + + + + PN_ChainCutDamageMono + PN_ChainCutHediffMono + PN_ChainCutHediffMono + PN_ChainCrackHediffMono + 1.4 + DamageWorker_AddInjury + Sharp + Slice + + + + PN_ChainCutHediffMono + + a cut + a cut. + +
  • + bandaged + sutured + set +
  • +
  • + 0.15 +
  • +
  • + cut scar +
  • +
  • + PN_ChainCutDamage_ConMono + 6 + 4 + 18 +
  • +
    + + 0.0125 + 0.00625 + 0.06 + false + Cut off + Cut off + +
    + + + PN_ChainCutDamage_ConMono + 1.4 + DamageWorker_AddInjury + Sharp + Slice + + + + PN_ChainCrackHediffMono + + a crack wound + A crack. + +
  • + set + set + set +
  • +
  • + permanent crack +
  • +
  • + PN_ChainCrackDamage_ConMono + 6 + 2 + 12 +
  • +
    + + 0.01 + 0.00625 + Shattered + +
    + + + PN_ChainCrackDamage_ConMono + 1.4 + DamageWorker_AddInjury + Sharp + Slice + + + + + + PN_ElectricalBluntManeuver + PN_ElectricalBluntTool + + Verb_MeleeAttackDamage + PN_ElectricalBluntDamage + + MeleeAttack + Maneuver_Smash_MeleeHit + Maneuver_Smash_MeleeDeflect + Maneuver_Smash_MeleeMiss + Maneuver_Smash_MeleeDodge + + + + PN_ElectricalBluntTool + + + + + PN_ElectricalBluntDamage + PN_ElectricalCrushHediff + PN_ElectricalBruiseHediff + Crack + + + + PN_ElectricalCrushHediff + + a crush wound + A crushing wound. + +
  • + bandaged + sutured + set +
  • +
  • + 0.15 +
  • +
  • + mangled scar +
  • +
  • + PN_ElectricalBurnDamage_Con + 6 + 4 + 18 +
  • +
    + + 0.0125 + 0.00625 + 0.01 + true + Crushed + +
    + + + PN_ElectricalBruiseHediff + + a bruise + A bruise. + +
  • + bandaged + tended + set +
  • +
  • + PN_ElectricalBurnDamage_Con + 6 + 4 + 18 +
  • +
    + + 0.0125 + 0.00625 + false + Destroyed + +
    + + + PN_ElectricalBurnDamage_Con + + DamageWorker_AddInjury + PN_ElectricalBurn + + + + PN_ElectricalBurn + + a electrical burn + A electrical burn. + +
  • + bandaged + tended + tended +
  • +
  • + 0.30 +
  • +
  • + burn scar +
  • +
    + + 0.01875 + 0.00625 + false + Burned off + Burned out + +
    + + + + + PN_ElectricalStabManeuver + PN_ElectricalStabTool + + Verb_MeleeAttackDamage + PN_ElectricalStabDamage + + MeleeAttack + Maneuver_Slash_MeleeHit + Maneuver_Slash_MeleeDeflect + Maneuver_Slash_MeleeMiss + Maneuver_Slash_MeleeDodge + + + + PN_ElectricalStabTool + + + + + PN_ElectricalStabDamage + + DamageWorker_Stab + true + {0} has been stabbed to death. + PN_ElectricalStabHediff + Crack + Slice + Sharp + 0.6 + 0.4~1.0 + + + + PN_ElectricalStabHediff + + a stab wound + A stab wound. + +
  • + bandaged + sutured + set +
  • +
  • + 0.15 +
  • +
  • + stab scar +
  • +
  • + PN_ElectricalBurnDamage_Con + 6 + 4 + 12 +
  • +
    + + 0.0125 + 0.00625 + 0.06 + false + Cut off + Cut out + +
    +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/Royal_Reserch_ProjectDefs.xml b/1.6/Royalty/Defs/Royal_Reserch_ProjectDefs.xml new file mode 100644 index 0000000..d24390e --- /dev/null +++ b/1.6/Royalty/Defs/Royal_Reserch_ProjectDefs.xml @@ -0,0 +1,17 @@ + + + + PNRP_PsychicAmplifier + + Research how to modify psylink for use by the Automaton. + PN_technology + 300 + Industrial + +
  • PNRP_Production
  • +
    + 1.0 + 4.2 + +
    +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/Royal_ThingDef_Misc.xml b/1.6/Royalty/Defs/Royal_ThingDef_Misc.xml new file mode 100644 index 0000000..7d1aba0 --- /dev/null +++ b/1.6/Royalty/Defs/Royal_ThingDef_Misc.xml @@ -0,0 +1,99 @@ + + + + + + + + + PN_SilverCase + + the case of 800 silvers. can get a result point by submitting it to PnL result appraiser.\n\nIt is locked with a special security device that even the maker cannot open. It takes a lot of effort to unlock, so the merchant will try to cut the price of it. + + Things/Item/PNSilverCase + Graphic_StackCount + 1.0 + + Silver_Drop + Silver_Drop + 10 + 1 + false + + 800 + 6.4 + 1 + 700 + + +
  • PN_AutomatonCatagory
  • +
    + +
  • PN_SilverChest
  • +
    + + + + + 80 + 15 + 1 + + + GeneralLaborSpeed + Crafting + Smith + Recipe_Smith + UnfinishedComponent + + 4 + + +
  • PN_AutomatonBench
  • +
    + PNRP_Production +
    +
    + + + PN_UnlockSilverCase + + unlock PnL silver case. can't get the perfect result by forcibly breaking the security device. + unlocking PnL silver case. + GeneralLaborSpeed + Smith + Recipe_Smith + 1600 + true + +
  • PN_AutomatonBench
  • +
    + +
  • + + +
  • PN_SilverCase
  • + + + 1 + +
    + + 480 + 5 + + + + Crafting + +
    + +
    \ No newline at end of file diff --git a/1.6/Royalty/Defs/Royal_ThingDef_Weapon.xml b/1.6/Royalty/Defs/Royal_ThingDef_Weapon.xml new file mode 100644 index 0000000..fb30c56 --- /dev/null +++ b/1.6/Royalty/Defs/Royal_ThingDef_Weapon.xml @@ -0,0 +1,404 @@ + + + + + + + PN_NamerChainSwordfirst + + +
  • PNof->Names/Weapon/PNof
  • +
  • PNChainSword->Names/Weapon/PNChainSword
  • +
    +
    +
    + + + PN_NamerChainSword + +
  • PN_NamerFirst
  • +
  • PN_NamerChainSwordfirst
  • +
    + + +
  • r_weapon_name->[PNChainSword] [PNof] [PNFirstNamer]
  • +
    +
    +
    + + + PN_WeaponsMeleeBladelink + + PN_WeaponsMelee + Icon/Paniel_HQ + + + + Ultra + + 2000 + 2 + + +
  • + CompQuality +
  • +
  • + NamerArtWeaponMelee + ArtDescription_WeaponMelee + Excellent +
  • +
  • + + false + true + true + +
  • PN_WeaponsMelee
  • + + +
  • PN_UltratechMelee
  • +
    + +
  • Melee
  • +
  • Ultratech
  • +
    + + + +
    + + + Ultra + true + 1 + +
  • PN_Bladelink
  • +
    + +
  • Ultratech
  • +
    + +
  • + CompQuality +
  • +
  • + true +
  • +
  • +
    + false + true + +
  • PN_WeaponsMeleeBladelink
  • +
    + + + +
    + + + + + PN_RoyalSaber_Bladelink + + [caution] : Automaton exclusive weapon.\n\nA sword that uses the Royal Guard Automaton. It can cut anything with its sharp cutting power. It also uses the power of the automaton to inflict additional burn damage with the heated blade.\nThis weapon has an onboard persona that can bond to only a single person. The wielder and intelligent weapon can synchronize their reflexes and attack with frightening speed, accuracy, and creativity. Once bonded to a wielder, the weapon's persona will refuse to be wielded by anyone else. + + 3000 + 2 + + 0 + + Graphic_Single + Things/Weapons/PNRoyalSaber + (255,255,255) + + Interact_BladelinkPlasmaSword + MeleeHit_BladelinkPlasmaSword + +
  • Melee
  • +
  • MeleePiercer
  • +
    + +
  • + + +
  • Blunt
  • + + 12 + 1.6 + +
  • + + +
  • Stab
  • + + 24 + 1.6 + 0.9 + +
  • + Burn + 20 + 1.0 +
  • +
    + +
  • + + +
  • Cut
  • + + 24 + 1.6 + 0.9 + +
  • + Burn + 20 + 1.0 +
  • +
    + +
    +
    + + + + + PN_Chainsword_Bladelink + + [caution] : Automaton exclusive weapon.\n\nA bloody chain sword that seems to have many stories. For some reason, it has a much better performance than a normal chain sword.\nThis weapon has an onboard persona that can bond to only a single person. The wielder and intelligent weapon can synchronize their reflexes and attack with frightening speed, accuracy, and creativity. Once bonded to a wielder, the weapon's persona will refuse to be wielded by anyone else. + + 3000 + 2 + + -65 + + Graphic_Single + Things/Weapons/PNSwordLink + (255,255,255) + + Interact_BladelinkMonoSword + PNChainswordSound + +
  • Melee
  • +
  • MeleePiercer
  • +
    + +
  • + + +
  • Blunt
  • + + 12 + 1.6 + +
  • + + +
  • Stab
  • + + 27 + 1.6 + 0.9 + +
  • + + +
  • PN_ChainCutToolMono
  • + + 27 + 1.6 + 0.9 + +
    + +
  • + PN_NamerChainSword +
  • +
    +
    + + + + + PN_RoyalHammer_Bladelink + + [caution] : Automaton exclusive weapon.\n\nWarhammer used by the Automaton RoyalGuards. It has a built-in overcharge core that electrocutes when attacking an enemy, causing electrical burns. + + 3000 + 4 + + 0 + + Things/Weapons/PNPersonaHammer + AutomataRace.Graphic_Sprite + (255,255,255) + 170 + +
  • + 0 + 0 +
  • +
  • + 120 + 1 +
  • +
  • + 125 + 2 +
  • +
  • + 130 + 0 +
  • +
  • + 165 + 1 +
  • +
    +
    + Interact_BladelinkZeusHammer + MeleeHit_BladelinkZeusHammer + +
  • Melee
  • +
  • MeleeBlunt
  • +
    + +
  • + + +
  • Poke
  • + + 15 + 1.6 + +
  • + + false + +
  • PN_ElectricalBluntTool
  • + + 31 + 2.2 + +
  • + EMP + 10 +
  • +
    + +
    +
    + + + + + PN_StormLance_Bladelink + + [caution] : Automaton exclusive weapon.\n\nlance used by the Automaton RoyalGuards. It has a built-in overcharge core that electrocutes when attacking an enemy, causing electrical burns. + + 3000 + 4 + + 45 + + Things/Weapons/PNStormLance + AutomataRace.Graphic_Sprite + (255,255,255) + 170 + +
  • + 0 + 0 +
  • +
  • + 120 + 1 +
  • +
  • + 125 + 2 +
  • +
  • + 130 + 0 +
  • +
  • + 165 + 1 +
  • +
    +
    + Interact_BladelinkZeusHammer + MeleeHit_BladelinkZeusHammer + +
  • Melee
  • +
  • MeleeBlunt
  • +
  • MeleePiercer
  • +
    + +
  • + + +
  • Poke
  • + + 15 + 1.6 + +
  • + + false + +
  • PN_ElectricalBluntTool
  • + + 31 + 2.2 + 0.9 + +
  • + EMP + 10 +
  • +
    + +
  • + + +
  • PN_ElectricalStabTool
  • + + 31 + 2.2 + 0.9 + +
  • + EMP + 10 +
  • +
    + +
    + +
  • + True + + (0.2,0,0.25) + -45 + + + (-0.25,0.3,0.2) + 45 + + + (0.15,0.3,0.2) + -45 + + + (-0.15,-0.3,0.2) + 45 + +
  • +
    +
    +
    \ No newline at end of file diff --git a/LoadFolders.xml b/LoadFolders.xml index 85f8b29..86e7f08 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -11,4 +11,15 @@
  • 1.5/Mods/Paniel_Experimental
  • + +
  • 1.6/Core
  • +
  • Content
  • +
  • 1.6/Royalty
  • +
  • 1.6/Ideology
  • +
  • 1.6/Biotech
  • +
  • 1.6/Anomaly
  • + + +
  • 1.6/Mods/Paniel_Experimental
  • +
    \ No newline at end of file