diff --git a/RimJobWorld.Main.csproj b/RimJobWorld.Main.csproj index 4b6d21785d22ee6768757d0f9c0ad7738dc4af66..84342f8ce45411773e691ac761b94bccc192ff1c 100644 --- a/RimJobWorld.Main.csproj +++ b/RimJobWorld.Main.csproj @@ -43,9 +43,11 @@ <RootNamespace>rjw</RootNamespace> </PropertyGroup> <ItemGroup> - <Compile Include="Source\Common\bondage_gear.cs" /> + <Compile Include="Source\Harmony\patch_races.cs" /> + <Compile Include="Source\Modules\Bondage\bondage_gear.cs" /> <Compile Include="Source\Common\Breeder_Helper.cs" /> - <Compile Include="Source\Common\BukkakeContent.cs" /> + <Compile Include="Source\Modules\Multiplayer\Multiplayer.cs" /> + <Compile Include="Source\Modules\SemenOverlay\BukkakeContent.cs" /> <Compile Include="Source\Common\config.cs" /> <Compile Include="Source\Common\CORE_EXPOSED\CORE_EXPOSED.cs" /> <Compile Include="Source\Common\DataStore.cs" /> @@ -56,72 +58,72 @@ <Compile Include="Source\Common\PartsData.cs" /> <Compile Include="Source\Common\PawnData.cs" /> <Compile Include="Source\Common\CORE_EXPOSED\PawnGenerator.cs" /> - <Compile Include="Source\Common\Pregnancy_Helper.cs" /> - <Compile Include="Source\Common\SemenHelper.cs" /> + <Compile Include="Source\Modules\Pregnancy\Pregnancy_Helper.cs" /> + <Compile Include="Source\Modules\SemenOverlay\SemenHelper.cs" /> <Compile Include="Source\Common\SexUtility.cs" /> - <Compile Include="Source\Common\std.cs" /> + <Compile Include="Source\Modules\STD\std.cs" /> <Compile Include="Source\Common\StringListDef.cs" /> <Compile Include="Source\Common\Unprivater.cs" /> - <Compile Include="Source\Common\Whoring_Helper.cs" /> + <Compile Include="Source\Modules\Whoring\Whoring_Helper.cs" /> <Compile Include="Source\Common\xxx.cs" /> <Compile Include="Source\Comps\CompAdder.cs" /> - <Compile Include="Source\Comps\CompBondageGear.cs" /> - <Compile Include="Source\Comps\CompGetBondageGear.cs" /> - <Compile Include="Source\Comps\CompHoloCryptoStamped.cs" /> + <Compile Include="Source\Modules\Bondage\Comps\CompBondageGear.cs" /> + <Compile Include="Source\Modules\Bondage\Comps\CompGetBondageGear.cs" /> + <Compile Include="Source\Modules\Bondage\Comps\CompHoloCryptoStamped.cs" /> <Compile Include="Source\Comps\CompProperties_RJW.cs" /> <Compile Include="Source\Comps\CompRJW.cs" /> - <Compile Include="Source\Comps\CompStampedApparelKey.cs" /> - <Compile Include="Source\Comps\CompUnlockBondageGear.cs" /> - <Compile Include="Source\DefOf\RJW_HediffDefOf.cs" /> - <Compile Include="Source\DefOf\RJW_JobDefOf.cs" /> + <Compile Include="Source\Modules\Bondage\Comps\CompStampedApparelKey.cs" /> + <Compile Include="Source\Modules\Bondage\Comps\CompUnlockBondageGear.cs" /> + <Compile Include="Source\Modules\SemenOverlay\DefOf\RJW_HediffDefOf.cs" /> + <Compile Include="Source\Modules\SemenOverlay\DefOf\RJW_JobDefOf.cs" /> <Compile Include="Source\Designators\RJWdesignations.cs" /> <Compile Include="Source\Harmony\CnPcompatibility.cs" /> <Compile Include="Source\Harmony\First.cs" /> - <Compile Include="Source\Harmony\patches_ABF.cs" /> - <Compile Include="Source\Harmony\patches_backstory_generator.cs" /> - <Compile Include="Source\Harmony\patches_bondage_gear.cs" /> - <Compile Include="Source\Harmony\patches_DubsBadHygiene.cs" /> - <Compile Include="Source\Harmony\patches_lovin.cs" /> - <Compile Include="Source\Harmony\patches_pregnancy.cs" /> + <Compile Include="Source\Harmony\patch_ABF.cs" /> + <Compile Include="Source\Harmony\patch_backstory_generator.cs" /> + <Compile Include="Source\Harmony\patch_bondage_gear.cs" /> + <Compile Include="Source\Harmony\patch_DubsBadHygiene.cs" /> + <Compile Include="Source\Harmony\patch_lovin.cs" /> + <Compile Include="Source\Harmony\patch_pregnancy.cs" /> <Compile Include="Source\Harmony\patch_semenOverlay.cs" /> <Compile Include="Source\Harmony\Rjw_buttons.cs" /> <Compile Include="Source\Harmony\SexualityCard.cs" /> <Compile Include="Source\Harmony\SexualityCardInternal.cs" /> <Compile Include="Source\Harmony\submit_button.cs" /> <Compile Include="Source\Hediffs\HediffComp_SeverityPerDayIfRest.cs" /> - <Compile Include="Source\Hediffs\Hediff_Bukkake.cs" /> + <Compile Include="Source\Modules\SemenOverlay\Hediffs\Hediff_Bukkake.cs" /> <Compile Include="Source\Hediffs\Hediff_Cocoon.cs" /> - <Compile Include="Source\Hediffs\Hediff_Semen.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\HediffDef_EnemyImplants.cs" /> + <Compile Include="Source\Modules\SemenOverlay\Hediffs\Hediff_Semen.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\HediffDef_EnemyImplants.cs" /> <Compile Include="Source\Hediffs\Hediff_ID.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_InsectEggPregnancy.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_InsectEggPregnancy.cs" /> <Compile Include="Source\Hediffs\Hediff_InvisibleImplant.cs" /> - <Compile Include="Source\Hediffs\Hediff_MCEvents.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_MechanoidPregnancy.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_MechImplants.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\HeDiff_MicroComputer.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_ParasitePregnancy.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_MCEvents.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_MechanoidPregnancy.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_MechImplants.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\HeDiff_MicroComputer.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_ParasitePregnancy.cs" /> <Compile Include="Source\Hediffs\Hediff_Submitting.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_BasePregnancy.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_BestialPregnancy.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_HumanlikePregnancy.cs" /> - <Compile Include="Source\Hediffs\Pregnancy\Hediff_SimpleBaby.cs" /> - <Compile Include="Source\Incidents\IncidentWorker_NymphJoins.cs" /> - <Compile Include="Source\Incidents\IncidentWorker_NymphVisitorGroup.cs" /> - <Compile Include="Source\Incidents\IncidentWorker_TestInc.cs" /> - <Compile Include="Source\Incidents\IncidentWorker_TestInc2.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_BasePregnancy.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_BestialPregnancy.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_HumanlikePregnancy.cs" /> + <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_SimpleBaby.cs" /> + <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_NymphJoins.cs" /> + <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_NymphVisitorGroup.cs" /> + <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_TestInc.cs" /> + <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_TestInc2.cs" /> <Compile Include="Source\Interactions\InteractionWorker_SexAttempt.cs" /> <Compile Include="Source\JobDrivers\JobDriver_BestialityForMale.cs" /> <Compile Include="Source\JobDrivers\JobDriver_BestialityForFemale.cs" /> <Compile Include="Source\JobDrivers\JobDriver_Breeding.cs" /> - <Compile Include="Source\JobDrivers\JobDriver_CleanSelf.cs" /> + <Compile Include="Source\Modules\SemenOverlay\JobDrivers\JobDriver_CleanSelf.cs" /> <Compile Include="Source\JobDrivers\JobDriver_Fappin.cs" /> <Compile Include="Source\JobDrivers\JobDriver_GettinLoved.cs" /> <Compile Include="Source\JobDrivers\JobDriver_GettinRaped.cs" /> <Compile Include="Source\JobDrivers\JobDriver_JoinInBed.cs" /> <Compile Include="Source\JobDrivers\JobDriver_QuickFap.cs" /> <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByHumanlike.cs" /> - <Compile Include="Source\JobDrivers\JobDriver_WhoreInvitingVisitors.cs" /> + <Compile Include="Source\Modules\Whoring\JobDrivers\JobDriver_WhoreInvitingVisitors.cs" /> <Compile Include="Source\JobDrivers\JobDriver_PrisonerComfortRapin.cs" /> <Compile Include="Source\JobDrivers\JobDriver_RandomRape.cs" /> <Compile Include="Source\JobDrivers\JobDriver_Rape.cs" /> @@ -130,10 +132,10 @@ <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByInsect.cs" /> <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByMech.cs" /> <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyToParasite.cs" /> - <Compile Include="Source\JobDrivers\JobDriver_StruggleInBondageGear.cs" /> - <Compile Include="Source\JobDrivers\JobDriver_UseItemOn.cs" /> + <Compile Include="Source\Modules\Bondage\JobDrivers\JobDriver_StruggleInBondageGear.cs" /> + <Compile Include="Source\Modules\Bondage\JobDrivers\JobDriver_UseItemOn.cs" /> <Compile Include="Source\JobDrivers\JobDriver_ViolateCorpse.cs" /> - <Compile Include="Source\JobDrivers\JobDriver_WhoreIsServingVisitors.cs" /> + <Compile Include="Source\Modules\Whoring\JobDrivers\JobDriver_WhoreIsServingVisitors.cs" /> <Compile Include="Source\JobGivers\JobGiver_AIRapePrisoner.cs" /> <Compile Include="Source\JobGivers\JobGiver_Bestiality.cs" /> <Compile Include="Source\JobGivers\JobGiver_Breed.cs" /> @@ -143,40 +145,36 @@ <Compile Include="Source\JobGivers\JobGiver_RandomRape.cs" /> <Compile Include="Source\JobGivers\JobGiver_RapeEnemy.cs" /> <Compile Include="Source\JobGivers\JobGiver_ViolateCorpse.cs" /> - <Compile Include="Source\JobGivers\JobGiver_WhoreInvitingVisitors.cs" /> + <Compile Include="Source\Modules\Whoring\JobGivers\JobGiver_WhoreInvitingVisitors.cs" /> <Compile Include="Source\MentalStates\MentalState_RandomRape.cs" /> <Compile Include="Source\MentalStates\SexualMentalState.cs" /> <Compile Include="Source\Needs\Need_Sex.cs" /> <Compile Include="Source\PawnCapacities\BodyPartTagDefOf.cs" /> <Compile Include="Source\PawnCapacities\PawnCapacityWorker_Fertility.cs" /> - <Compile Include="Source\Pawns\Nymph_Backstories.cs" /> - <Compile Include="Source\Pawns\Nymph_Generator.cs" /> - <Compile Include="Source\Recipes\Install_Part\Recipe_InstallAnus.cs" /> - <Compile Include="Source\Recipes\Install_Part\Recipe_InstallBreasts.cs" /> - <Compile Include="Source\Recipes\Install_Part\Recipe_InstallGenitals.cs" /> + <Compile Include="Source\Modules\Nymphs\Pawns\Nymph_Backstories.cs" /> + <Compile Include="Source\Modules\Nymphs\Pawns\Nymph_Generator.cs" /> <Compile Include="Source\Recipes\Install_Part\Recipe_InstallPart.cs" /> - <Compile Include="Source\Recipes\Recipe_Abortion.cs" /> - <Compile Include="Source\Recipes\Recipe_ChastityBelt.cs" /> - <Compile Include="Source\Recipes\Recipe_ClaimChild.cs" /> - <Compile Include="Source\Recipes\Recipe_DeterminePregnancy.cs" /> - <Compile Include="Source\Recipes\Recipe_ForceOffGear.cs" /> - <Compile Include="Source\Recipes\Recipe_InstallIUD.cs" /> - <Compile Include="Source\Recipes\Recipe_PregnancyHackMech.cs" /> - <Compile Include="Source\Recipes\Recipe_Sterilize.cs" /> + <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_Abortion.cs" /> + <Compile Include="Source\Modules\Bondage\Recipes\Recipe_ChastityBelt.cs" /> + <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_ClaimChild.cs" /> + <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_DeterminePregnancy.cs" /> + <Compile Include="Source\Modules\Bondage\Recipes\Recipe_ForceOffGear.cs" /> + <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_InstallIUD.cs" /> + <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_PregnancyHackMech.cs" /> + <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_Sterilize.cs" /> + <Compile Include="Source\Recipes\Recipe_Restraints.cs" /> <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveAnus.cs" /> <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveBreasts.cs" /> <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveGenitals.cs" /> <Compile Include="Source\Recipes\Remove_Part\Recipe_RemovePart.cs" /> - <Compile Include="Source\Recipes\Remove_Part\Recipe_RemovePenis.cs" /> - <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveVagina.cs" /> <Compile Include="Source\Recipes\Transgender\Recipe_MakeFuta.cs" /> <Compile Include="Source\Recipes\Transgender\Recipe_MakeFutaF.cs" /> <Compile Include="Source\Recipes\Transgender\Recipe_MakeFutaM.cs" /> <Compile Include="Source\Settings\RJWDebugSettings.cs" /> <Compile Include="Source\Settings\RJWPregnancySettings.cs" /> - <Compile Include="Source\Settings\RJWPreferenceSettings.cs" /> <Compile Include="Source\Settings\RJWSettings.cs" /> <Compile Include="Source\Settings\RJWSettingsController.cs" /> + <Compile Include="Source\Settings\RJWSexSettings.cs" /> <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Bestiality.cs" /> <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Breed.cs" /> <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Fappin.cs" /> @@ -191,20 +189,19 @@ <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalNympho.cs" /> <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalRapist.cs" /> <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalSexChecks.cs" /> - <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalTrait.cs" /> - <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalWhore.cs" /> - <Compile Include="Source\Thoughts\ThoughtWorker_Bound.cs" /> + <Compile Include="Source\Modules\Whoring\ThinkTreeNodes\ThinkNode_ConditionalWhore.cs" /> + <Compile Include="Source\Modules\Bondage\Thoughts\ThoughtWorker_Bound.cs" /> <Compile Include="Source\Thoughts\ThoughtWorker_FeelingBroken.cs" /> - <Compile Include="Source\Thoughts\ThoughtWorker_ItchyCrotch.cs" /> + <Compile Include="Source\Modules\STD\Thoughts\ThoughtWorker_ItchyCrotch.cs" /> <Compile Include="Source\Thoughts\ThoughtWorker_NeedSex.cs" /> <Compile Include="Source\Thoughts\ThoughtWorker_SexChange.cs" /> - <Compile Include="Source\Thoughts\ThoughtWorker_SyphiliticThoughts.cs" /> - <Compile Include="Source\Thoughts\ThoughtWorker_WastingAway.cs" /> - <Compile Include="Source\Thoughts\ThoughtWorker_Whore.cs" /> + <Compile Include="Source\Modules\STD\Thoughts\ThoughtWorker_SyphiliticThoughts.cs" /> + <Compile Include="Source\Modules\STD\Thoughts\ThoughtWorker_WastingAway.cs" /> + <Compile Include="Source\Modules\Whoring\Thoughts\ThoughtWorker_Whore.cs" /> <Compile Include="Source\Triggers\Trigger_SexSatisfy.cs" /> <Compile Include="Source\WorkGivers\WorkGiver_BestialityForFemale.cs" /> <Compile Include="Source\WorkGivers\WorkGiver_BestialityForMale.cs" /> - <Compile Include="Source\WorkGivers\WorkGiver_CleanSelf.cs" /> + <Compile Include="Source\Modules\SemenOverlay\WorkGivers\WorkGiver_CleanSelf.cs" /> <Compile Include="Source\WorkGivers\WorkGiver_Fap.cs" /> <Compile Include="Source\WorkGivers\WorkGiver_Fap_Bed.cs" /> <Compile Include="Source\WorkGivers\WorkGiver_Rape.cs" /> @@ -222,7 +219,7 @@ <Content Include="Assemblies\%24HugsLibChecker.dll" /> <Content Include="Assemblies\0Harmony.dll" /> <Content Include="Assemblies\RJW.dll" /> - <Compile Include="Source\Settings.cs" /> + <Compile Include="Source\Settings\Settings.cs" /> <Content Include="Defs\BodyPartDefs\BodyParts_Humanlike.xml"> <SubType>Designer</SubType> </Content> @@ -561,6 +558,9 @@ <HintPath>packages\UnlimitedHugs.Rimworld.HugsLib.6.1.1\lib\net35\0Harmony.dll</HintPath> <Private>True</Private> </Reference> + <Reference Include="0MultiplayerAPI"> + <HintPath>packages\Multiplayer\Assemblies\0MultiplayerAPI.dll</HintPath> + </Reference> <Reference Include="Assembly-CSharp"> <HintPath>..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath> <Private>False</Private> @@ -599,9 +599,7 @@ <Private>False</Private> </Reference> </ItemGroup> - <ItemGroup> - <Folder Include="Source\Recipes\Replace_Part\" /> - </ItemGroup> + <ItemGroup /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" /> <ProjectExtensions> <VisualStudio AllowExistingFolder="true" /> diff --git a/Source/Common/CORE_EXPOSED/PawnGenerator.cs b/Source/Common/CORE_EXPOSED/PawnGenerator.cs index 13ca70cd740a3e833b7ec56882e21b29a560656c..bd43aab20ba034b2e58dbb874e0481ffde83bdfb 100644 --- a/Source/Common/CORE_EXPOSED/PawnGenerator.cs +++ b/Source/Common/CORE_EXPOSED/PawnGenerator.cs @@ -1,3 +1,12 @@ +/* + * + * + * ALL THE CODE IN THIS FILE HAS JUST BEEN COPIED FROM THE DECOMPILED CORE ASSEMBLY. + * used for nymphs generation, since CORE for some reason ignores gender preference + * + * + */ + using RimWorld; using RimWorld.Planet; using System; diff --git a/Source/DefOf/RJW_RecipeDefOf.cs b/Source/DefOf/RJW_RecipeDefOf.cs new file mode 100644 index 0000000000000000000000000000000000000000..3ae2eefffe981ebbc2a42123bbdff30189b412ec --- /dev/null +++ b/Source/DefOf/RJW_RecipeDefOf.cs @@ -0,0 +1,13 @@ +using RimWorld; +using Verse; + +namespace rjw +{ + [DefOf] + public static class RJW_RecipeDefOf + { + public static RecipeDef AttachPenis; + public static RecipeDef InstallPenis; + public static RecipeDef RemovePenis; + } +} diff --git a/Source/Harmony/patches_ABF.cs b/Source/Harmony/patch_ABF.cs similarity index 100% rename from Source/Harmony/patches_ABF.cs rename to Source/Harmony/patch_ABF.cs diff --git a/Source/Harmony/patches_DubsBadHygiene.cs b/Source/Harmony/patch_DubsBadHygiene.cs similarity index 82% rename from Source/Harmony/patches_DubsBadHygiene.cs rename to Source/Harmony/patch_DubsBadHygiene.cs index a0bfc938d3a331131fad7f0a8c8fc19ac69cfa55..8c28198e2eec77fb6accd68818625b0aabf596c1 100644 --- a/Source/Harmony/patches_DubsBadHygiene.cs +++ b/Source/Harmony/patch_DubsBadHygiene.cs @@ -34,9 +34,9 @@ namespace rjw if (__instance.GetType() == JobDriver_useWashBucket) { //clear one instance of semen - Hediff hediff = pawn.health.hediffSet.hediffs.Find(x => ( x.def == RJW_HediffDefOf.Hediff_Semen - || x.def == RJW_HediffDefOf.Hediff_InsectSpunk - || x.def == RJW_HediffDefOf.Hediff_MechaFluids + Hediff hediff = pawn.health.hediffSet.hediffs.Find(x => ( x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Semen + || x.def == RJW_SemenoOverlayHediffDefOf.Hediff_InsectSpunk + || x.def == RJW_SemenoOverlayHediffDefOf.Hediff_MechaFluids )); if (hediff != null) { @@ -53,9 +53,9 @@ namespace rjw //clear all instance of semen foreach (Hediff hediff in pawn.health.hediffSet.hediffs) { - if (hediff.def == RJW_HediffDefOf.Hediff_Semen || - hediff.def == RJW_HediffDefOf.Hediff_InsectSpunk || - hediff.def == RJW_HediffDefOf.Hediff_MechaFluids + if (hediff.def == RJW_SemenoOverlayHediffDefOf.Hediff_Semen || + hediff.def == RJW_SemenoOverlayHediffDefOf.Hediff_InsectSpunk || + hediff.def == RJW_SemenoOverlayHediffDefOf.Hediff_MechaFluids ) { //Log.Message("[RJW]patches_DubsBadHygiene::" + __instance.GetType() + " clear => " + hediff.Label); diff --git a/Source/Harmony/patches_backstory_generator.cs b/Source/Harmony/patch_backstory_generator.cs similarity index 100% rename from Source/Harmony/patches_backstory_generator.cs rename to Source/Harmony/patch_backstory_generator.cs diff --git a/Source/Harmony/patches_bondage_gear.cs b/Source/Harmony/patch_bondage_gear.cs similarity index 100% rename from Source/Harmony/patches_bondage_gear.cs rename to Source/Harmony/patch_bondage_gear.cs diff --git a/Source/Harmony/patches_lovin.cs b/Source/Harmony/patch_lovin.cs similarity index 100% rename from Source/Harmony/patches_lovin.cs rename to Source/Harmony/patch_lovin.cs diff --git a/Source/Harmony/patches_need.cs b/Source/Harmony/patch_need.cs similarity index 100% rename from Source/Harmony/patches_need.cs rename to Source/Harmony/patch_need.cs diff --git a/Source/Harmony/patches_pregnancy.cs b/Source/Harmony/patch_pregnancy.cs similarity index 100% rename from Source/Harmony/patches_pregnancy.cs rename to Source/Harmony/patch_pregnancy.cs diff --git a/Source/Harmony/patch_semenOverlay.cs b/Source/Harmony/patch_semenOverlay.cs index a4d00b2481dcce7efe255de0ac1b9e1aad32b579..f750227309dc4ed9059a5273d6c5399f72fa7067 100644 --- a/Source/Harmony/patch_semenOverlay.cs +++ b/Source/Harmony/patch_semenOverlay.cs @@ -17,13 +17,14 @@ namespace rjw { Pawn pawn = Traverse.Create(__instance).Field("pawn").GetValue<Pawn>();//get local variable - if (pawn.RaceProps.Humanlike && RJWSettings.cum_overlays)//for now, only draw humans + if (false) //causes memory leak-> h.DrawSemen->Draw->GenDraw.DrawMeshNowOrLater + if (pawn.RaceProps.Humanlike && RJWSettings.cum_overlays)//for now, only draw humans { //find bukkake hediff. if it exists, use its draw function List<Hediff> hediffs = pawn.health.hediffSet.hediffs; - if (hediffs.Exists(x => x.def == RJW_HediffDefOf.Hediff_Bukkake)) + if (hediffs.Exists(x => x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake)) { - Hediff_Bukkake h = hediffs.Find(x => x.def == RJW_HediffDefOf.Hediff_Bukkake) as Hediff_Bukkake; + Hediff_Bukkake h = hediffs.Find(x => x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake) as Hediff_Bukkake; quat.ToAngleAxis(out float angle, out Vector3 axis);//angle changes when pawn is e.g. downed @@ -39,7 +40,6 @@ namespace rjw drawLoc.y = vector2.y; } - h.DrawSemen(drawLoc, quat, forPortrait, angle); } } diff --git a/Source/JobGivers/JobGiver_NymphJoinInBed.cs.bak b/Source/JobGivers/JobGiver_NymphJoinInBed.cs.bak new file mode 100644 index 0000000000000000000000000000000000000000..01c107150169e7d6ac46e78307d6cd8e01bda3df --- /dev/null +++ b/Source/JobGivers/JobGiver_NymphJoinInBed.cs.bak @@ -0,0 +1,150 @@ +using System.Collections.Generic; +using System.Linq; +using RimWorld; +using Verse; +using Verse.AI; + +namespace rjw +{ + public class JobGiver_NymphJoinInBed : ThinkNode_JobGiver + { + private static bool roll_to_skip(Pawn nymph, Pawn target) + { + float fuckability = xxx.would_fuck(nymph, target); // 0.0 to 1.0 + if (fuckability < 0.1f) + return false; + float chance_to_skip = 0.9f - 0.7f * fuckability; + return Rand.Value < chance_to_skip; + } + + private static bool is_healthy(Pawn target) + { + return xxx.is_healthy(target) && + (xxx.can_fuck(target) || xxx.can_be_fucked(target)); + } + + public static Pawn find_pawn_to_fuck(Pawn nymph, Map map) + { + Pawn best_fuckee = null; + float best_distance = 1.0e6f; + List<Pawn> valid_targets = new List<Pawn>(); + + // find lover/partner on same map + IEnumerable<Pawn> targets = map.mapPawns.AllPawnsSpawned.Where(x => x != nymph && x.InBed() && !x.Position.IsForbidden(nymph) && !x.Suspended && !x.Downed && is_healthy(x)); + + foreach (DirectPawnRelation relation in nymph.relations.DirectRelations) + { + if (relation.def != PawnRelationDefOf.Lover + && relation.def != PawnRelationDefOf.Spouse + && relation.def != PawnRelationDefOf.Fiance) + //|| (relation.def != PawnRelationDefOf.Bond && (!xxx.is_animal(relation.otherPawn) || (xxx.is_zoophile(nymph) && RJWSettings.bestiality_enabled)))) + continue; + { + //Log.Message("[RJW] find_pawn_to_fuck( " + xxx.get_pawnname(best_fuckee) + " ) Lover/Spouse/Fiance found"); + if (nymph.Position.DistanceToSquared(relation.otherPawn.Position) < 60 && + nymph.CanReserveAndReach(relation.otherPawn, PathEndMode.OnCell, Danger.Some, 1, 0) && + relation.otherPawn.CanReserve(nymph, 1, 0)) + + if (targets.Contains(relation.otherPawn)) + valid_targets.Add(relation.otherPawn); + //Log.Message("[RJW] find_pawn_to_fuck( " + xxx.get_pawnname(best_fuckee) + " ) Lover/Spouse/Fiance cant be fucked right now"); + } + } + + if (valid_targets != null && valid_targets.Any()) + { + foreach (Pawn q in valid_targets) + { + if (xxx.is_laying_down_alone(q) && + nymph.CanReserveAndReach(q, PathEndMode.OnCell, Danger.Some, 1, 0) && + q.CanReserve(nymph, 1, 0) && + roll_to_skip(nymph, q)) + { + int dis = nymph.Position.DistanceToSquared(q.Position); + if (dis < best_distance) + { + best_fuckee = q; + best_distance = dis; + } + } + } + if (best_fuckee != null) + return best_fuckee; + } + + targets = targets.Where(x => xxx.is_human(x)); + foreach (Pawn q in targets) + { + if (xxx.is_laying_down_alone(q) && + nymph.CanReserveAndReach(q, PathEndMode.OnCell, Danger.Some, 1, 0) && + q.CanReserve(nymph, 1, 0) && + roll_to_skip(nymph, q)) + { + int dis = nymph.Position.DistanceToSquared(q.Position); + if (dis < best_distance) + { + best_fuckee = q; + best_distance = dis; + } + } + } + return best_fuckee; + } + + protected override Job TryGiveJob(Pawn nymph) + { + //--Log.Message("[RJW] JobGiver_NymphJoinInBed( " + xxx.get_pawnname(nymph) + " ) called"); + + if ((nymph.CurJob == null || nymph.CurJob.def == JobDefOf.LayDown)) + { + //--Log.Message(" checking nympho and abilities"); + if ((xxx.can_fuck(nymph) || xxx.can_be_fucked(nymph))) + { + //--Log.Message(" finding partner"); + Pawn partner = find_pawn_to_fuck(nymph, nymph.Map); + + //--Log.Message(" checking partner"); + if (partner == null) return null; + + Building_Bed bed; + + if (xxx.is_human(partner)) + { + // Can never be null, since find checks for bed. + bed = partner.CurrentBed(); + + // Interrupt current job. + if (nymph.CurJob != null) + nymph.jobs.curDriver.EndJobWith(JobCondition.InterruptForced); + + //--Log.Message(" returning job"); + return new Job(DefDatabase<JobDef>.GetNamed("NymphJoinInBed"), partner, bed); + } + /* + else if (xxx.is_animal(partner) && xxx.is_zoophile(nymph) && RJWSettings.bestiality_enabled) + { + if (xxx.can_rape(nymph) && Rand.Value < 0.5f) + { + if (nymph.CurJob != null) + nymph.jobs.curDriver.EndJobWith(JobCondition.InterruptForced); + + return new Job(xxx.bestiality, partner); + } + + //not sure if animal can "wakeup" and go to nymph + bed = nymph.ownership.OwnedBed; + if (!xxx.can_be_fucked(nymph) || bed == null || !partner.CanReach(bed, PathEndMode.OnCell, Danger.Some)) return null; + + if (nymph.CurJob != null) + nymph.jobs.curDriver.EndJobWith(JobCondition.InterruptForced); + + return new Job(xxx.bestialityForFemale, partner, bed, bed.SleepPosOfAssignedPawn(nymph)); + } + */ + } + } + + return null; + } + } +} diff --git a/Source/Comps/CompBondageGear.cs b/Source/Modules/Bondage/Comps/CompBondageGear.cs similarity index 100% rename from Source/Comps/CompBondageGear.cs rename to Source/Modules/Bondage/Comps/CompBondageGear.cs diff --git a/Source/Comps/CompGetBondageGear.cs b/Source/Modules/Bondage/Comps/CompGetBondageGear.cs similarity index 100% rename from Source/Comps/CompGetBondageGear.cs rename to Source/Modules/Bondage/Comps/CompGetBondageGear.cs diff --git a/Source/Comps/CompHoloCryptoStamped.cs b/Source/Modules/Bondage/Comps/CompHoloCryptoStamped.cs similarity index 100% rename from Source/Comps/CompHoloCryptoStamped.cs rename to Source/Modules/Bondage/Comps/CompHoloCryptoStamped.cs diff --git a/Source/Comps/CompStampedApparelKey.cs b/Source/Modules/Bondage/Comps/CompStampedApparelKey.cs similarity index 100% rename from Source/Comps/CompStampedApparelKey.cs rename to Source/Modules/Bondage/Comps/CompStampedApparelKey.cs diff --git a/Source/Comps/CompUnlockBondageGear.cs b/Source/Modules/Bondage/Comps/CompUnlockBondageGear.cs similarity index 100% rename from Source/Comps/CompUnlockBondageGear.cs rename to Source/Modules/Bondage/Comps/CompUnlockBondageGear.cs diff --git a/Source/JobDrivers/JobDriver_StruggleInBondageGear.cs b/Source/Modules/Bondage/JobDrivers/JobDriver_StruggleInBondageGear.cs similarity index 100% rename from Source/JobDrivers/JobDriver_StruggleInBondageGear.cs rename to Source/Modules/Bondage/JobDrivers/JobDriver_StruggleInBondageGear.cs diff --git a/Source/JobDrivers/JobDriver_UseItemOn.cs b/Source/Modules/Bondage/JobDrivers/JobDriver_UseItemOn.cs similarity index 100% rename from Source/JobDrivers/JobDriver_UseItemOn.cs rename to Source/Modules/Bondage/JobDrivers/JobDriver_UseItemOn.cs diff --git a/Source/Recipes/Recipe_ChastityBelt.cs b/Source/Modules/Bondage/Recipes/Recipe_ChastityBelt.cs similarity index 100% rename from Source/Recipes/Recipe_ChastityBelt.cs rename to Source/Modules/Bondage/Recipes/Recipe_ChastityBelt.cs diff --git a/Source/Recipes/Recipe_ForceOffGear.cs b/Source/Modules/Bondage/Recipes/Recipe_ForceOffGear.cs similarity index 100% rename from Source/Recipes/Recipe_ForceOffGear.cs rename to Source/Modules/Bondage/Recipes/Recipe_ForceOffGear.cs diff --git a/Source/Thoughts/ThoughtWorker_Bound.cs b/Source/Modules/Bondage/Thoughts/ThoughtWorker_Bound.cs similarity index 100% rename from Source/Thoughts/ThoughtWorker_Bound.cs rename to Source/Modules/Bondage/Thoughts/ThoughtWorker_Bound.cs diff --git a/Source/Common/bondage_gear.cs b/Source/Modules/Bondage/bondage_gear.cs similarity index 100% rename from Source/Common/bondage_gear.cs rename to Source/Modules/Bondage/bondage_gear.cs diff --git a/Source/Comps/CompMilkableHuman.cs b/Source/Modules/Milking/Comps/CompMilkableHuman.cs similarity index 100% rename from Source/Comps/CompMilkableHuman.cs rename to Source/Modules/Milking/Comps/CompMilkableHuman.cs diff --git a/Source/Comps/CompProperties_MilkableHuman.cs b/Source/Modules/Milking/Comps/CompProperties_MilkableHuman.cs similarity index 100% rename from Source/Comps/CompProperties_MilkableHuman.cs rename to Source/Modules/Milking/Comps/CompProperties_MilkableHuman.cs diff --git a/Source/JobDrivers/JobDefOfZ.cs b/Source/Modules/Milking/JobDrivers/JobDefOfZ.cs similarity index 100% rename from Source/JobDrivers/JobDefOfZ.cs rename to Source/Modules/Milking/JobDrivers/JobDefOfZ.cs diff --git a/Source/JobDrivers/JobDriver_GatherHumanBodyResources.cs b/Source/Modules/Milking/JobDrivers/JobDriver_GatherHumanBodyResources.cs similarity index 100% rename from Source/JobDrivers/JobDriver_GatherHumanBodyResources.cs rename to Source/Modules/Milking/JobDrivers/JobDriver_GatherHumanBodyResources.cs diff --git a/Source/JobDrivers/JobDriver_MilkHuman.cs b/Source/Modules/Milking/JobDrivers/JobDriver_MilkHuman.cs similarity index 100% rename from Source/JobDrivers/JobDriver_MilkHuman.cs rename to Source/Modules/Milking/JobDrivers/JobDriver_MilkHuman.cs diff --git a/Source/WorkGivers/WorkGiver_GatherHumanBodyResources.cs b/Source/Modules/Milking/WorkGivers/WorkGiver_GatherHumanBodyResources.cs similarity index 100% rename from Source/WorkGivers/WorkGiver_GatherHumanBodyResources.cs rename to Source/Modules/Milking/WorkGivers/WorkGiver_GatherHumanBodyResources.cs diff --git a/Source/WorkGivers/WorkGiver_MilkHuman.cs b/Source/Modules/Milking/WorkGivers/WorkGiver_MilkHuman.cs similarity index 100% rename from Source/WorkGivers/WorkGiver_MilkHuman.cs rename to Source/Modules/Milking/WorkGivers/WorkGiver_MilkHuman.cs diff --git a/Source/Incidents/IncidentWorker_NymphJoins.cs b/Source/Modules/Nymphs/Incidents/IncidentWorker_NymphJoins.cs similarity index 100% rename from Source/Incidents/IncidentWorker_NymphJoins.cs rename to Source/Modules/Nymphs/Incidents/IncidentWorker_NymphJoins.cs diff --git a/Source/Incidents/IncidentWorker_NymphVisitorGroup.cs b/Source/Modules/Nymphs/Incidents/IncidentWorker_NymphVisitorGroup.cs similarity index 100% rename from Source/Incidents/IncidentWorker_NymphVisitorGroup.cs rename to Source/Modules/Nymphs/Incidents/IncidentWorker_NymphVisitorGroup.cs diff --git a/Source/Incidents/IncidentWorker_TestInc.cs b/Source/Modules/Nymphs/Incidents/IncidentWorker_TestInc.cs similarity index 100% rename from Source/Incidents/IncidentWorker_TestInc.cs rename to Source/Modules/Nymphs/Incidents/IncidentWorker_TestInc.cs diff --git a/Source/Incidents/IncidentWorker_TestInc2.cs b/Source/Modules/Nymphs/Incidents/IncidentWorker_TestInc2.cs similarity index 100% rename from Source/Incidents/IncidentWorker_TestInc2.cs rename to Source/Modules/Nymphs/Incidents/IncidentWorker_TestInc2.cs diff --git a/Source/Pawns/Nymph_Backstories.cs b/Source/Modules/Nymphs/Pawns/Nymph_Backstories.cs similarity index 100% rename from Source/Pawns/Nymph_Backstories.cs rename to Source/Modules/Nymphs/Pawns/Nymph_Backstories.cs diff --git a/Source/Pawns/Nymph_Generator.cs b/Source/Modules/Nymphs/Pawns/Nymph_Generator.cs similarity index 100% rename from Source/Pawns/Nymph_Generator.cs rename to Source/Modules/Nymphs/Pawns/Nymph_Generator.cs diff --git a/Source/Hediffs/Pregnancy/HeDiff_MicroComputer.cs b/Source/Modules/Pregnancy/Hediffs/HeDiff_MicroComputer.cs similarity index 100% rename from Source/Hediffs/Pregnancy/HeDiff_MicroComputer.cs rename to Source/Modules/Pregnancy/Hediffs/HeDiff_MicroComputer.cs diff --git a/Source/Hediffs/Pregnancy/HediffDef_EnemyImplants.cs b/Source/Modules/Pregnancy/Hediffs/HediffDef_EnemyImplants.cs similarity index 100% rename from Source/Hediffs/Pregnancy/HediffDef_EnemyImplants.cs rename to Source/Modules/Pregnancy/Hediffs/HediffDef_EnemyImplants.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_BasePregnancy.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_BasePregnancy.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_BasePregnancy.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_BasePregnancy.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_BestialPregnancy.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_BestialPregnancy.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_BestialPregnancy.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_BestialPregnancy.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_HumanlikePregnancy.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_HumanlikePregnancy.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_HumanlikePregnancy.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_HumanlikePregnancy.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_InsectEggPregnancy.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_InsectEggPregnancy.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_InsectEggPregnancy.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_InsectEggPregnancy.cs diff --git a/Source/Hediffs/Hediff_MCEvents.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_MCEvents.cs similarity index 100% rename from Source/Hediffs/Hediff_MCEvents.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_MCEvents.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_MechImplants.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_MechImplants.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_MechImplants.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_MechImplants.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_MechanoidPregnancy.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_MechanoidPregnancy.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_MechanoidPregnancy.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_MechanoidPregnancy.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_ParasitePregnancy.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_ParasitePregnancy.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_ParasitePregnancy.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_ParasitePregnancy.cs diff --git a/Source/Hediffs/Pregnancy/Hediff_SimpleBaby.cs b/Source/Modules/Pregnancy/Hediffs/Hediff_SimpleBaby.cs similarity index 100% rename from Source/Hediffs/Pregnancy/Hediff_SimpleBaby.cs rename to Source/Modules/Pregnancy/Hediffs/Hediff_SimpleBaby.cs diff --git a/Source/Common/Pregnancy_Helper.cs b/Source/Modules/Pregnancy/Pregnancy_Helper.cs similarity index 100% rename from Source/Common/Pregnancy_Helper.cs rename to Source/Modules/Pregnancy/Pregnancy_Helper.cs diff --git a/Source/Recipes/Recipe_Abortion.cs b/Source/Modules/Pregnancy/Recipes/Recipe_Abortion.cs similarity index 100% rename from Source/Recipes/Recipe_Abortion.cs rename to Source/Modules/Pregnancy/Recipes/Recipe_Abortion.cs diff --git a/Source/Recipes/Recipe_ClaimChild.cs b/Source/Modules/Pregnancy/Recipes/Recipe_ClaimChild.cs similarity index 100% rename from Source/Recipes/Recipe_ClaimChild.cs rename to Source/Modules/Pregnancy/Recipes/Recipe_ClaimChild.cs diff --git a/Source/Recipes/Recipe_DeterminePregnancy.cs b/Source/Modules/Pregnancy/Recipes/Recipe_DeterminePregnancy.cs similarity index 92% rename from Source/Recipes/Recipe_DeterminePregnancy.cs rename to Source/Modules/Pregnancy/Recipes/Recipe_DeterminePregnancy.cs index 2a0688de54d17507d6c306ccda5b42880d3f451d..7ae54bec2832dec35f40bb91b70fa158a3f60068 100644 --- a/Source/Recipes/Recipe_DeterminePregnancy.cs +++ b/Source/Modules/Pregnancy/Recipes/Recipe_DeterminePregnancy.cs @@ -9,7 +9,13 @@ namespace rjw { public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe) { - BodyPartRecord part = pawn.RaceProps.body.corePart; + /* Males can be impregnated by mechanoids, probably + if (!xxx.is_female(pawn)) + { + yield break; + } + */ + BodyPartRecord part = pawn.RaceProps.body.corePart; if (recipe.appliedOnFixedBodyParts[0] != null) part = pawn.RaceProps.body.AllParts.Find(x => x.def == recipe.appliedOnFixedBodyParts[0]); if (part != null && (pawn.ageTracker.CurLifeStage.reproductive) diff --git a/Source/Recipes/Recipe_InstallIUD.cs b/Source/Modules/Pregnancy/Recipes/Recipe_InstallIUD.cs similarity index 100% rename from Source/Recipes/Recipe_InstallIUD.cs rename to Source/Modules/Pregnancy/Recipes/Recipe_InstallIUD.cs diff --git a/Source/Recipes/Recipe_PregnancyHackMech.cs b/Source/Modules/Pregnancy/Recipes/Recipe_PregnancyHackMech.cs similarity index 100% rename from Source/Recipes/Recipe_PregnancyHackMech.cs rename to Source/Modules/Pregnancy/Recipes/Recipe_PregnancyHackMech.cs diff --git a/Source/Modules/Pregnancy/Recipes/Recipe_Sterilize.cs b/Source/Modules/Pregnancy/Recipes/Recipe_Sterilize.cs new file mode 100644 index 0000000000000000000000000000000000000000..f48daed1daea5471e286e9e8e2e7a6fca83ccbfc --- /dev/null +++ b/Source/Modules/Pregnancy/Recipes/Recipe_Sterilize.cs @@ -0,0 +1,27 @@ +using RimWorld; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace rjw +{ + /// <summary> + /// Sterilization + /// </summary> + public class Recipe_InstallImplantToExistParts : Recipe_InstallImplant + { + public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe) + { + bool blocked = Genital_Helper.genitals_blocked(pawn) || xxx.is_slime(pawn); + + if (!blocked) + foreach (BodyPartRecord record in pawn.RaceProps.body.AllParts.Where(x => recipe.appliedOnFixedBodyParts.Contains(x.def))) + { + if (!pawn.health.hediffSet.hediffs.Any((Hediff x) => x.def == recipe.addsHediff)) + { + yield return record; + } + } + } + } +} diff --git a/Source/Thoughts/ThoughtWorker_ItchyCrotch.cs b/Source/Modules/STD/Thoughts/ThoughtWorker_ItchyCrotch.cs similarity index 100% rename from Source/Thoughts/ThoughtWorker_ItchyCrotch.cs rename to Source/Modules/STD/Thoughts/ThoughtWorker_ItchyCrotch.cs diff --git a/Source/Thoughts/ThoughtWorker_SyphiliticThoughts.cs b/Source/Modules/STD/Thoughts/ThoughtWorker_SyphiliticThoughts.cs similarity index 100% rename from Source/Thoughts/ThoughtWorker_SyphiliticThoughts.cs rename to Source/Modules/STD/Thoughts/ThoughtWorker_SyphiliticThoughts.cs diff --git a/Source/Thoughts/ThoughtWorker_WastingAway.cs b/Source/Modules/STD/Thoughts/ThoughtWorker_WastingAway.cs similarity index 100% rename from Source/Thoughts/ThoughtWorker_WastingAway.cs rename to Source/Modules/STD/Thoughts/ThoughtWorker_WastingAway.cs diff --git a/Source/Common/std.cs b/Source/Modules/STD/std.cs similarity index 100% rename from Source/Common/std.cs rename to Source/Modules/STD/std.cs diff --git a/Source/Common/BukkakeContent.cs b/Source/Modules/SemenOverlay/BukkakeContent.cs similarity index 100% rename from Source/Common/BukkakeContent.cs rename to Source/Modules/SemenOverlay/BukkakeContent.cs diff --git a/Source/DefOf/RJW_HediffDefOf.cs b/Source/Modules/SemenOverlay/DefOf/RJW_HediffDefOf.cs similarity index 89% rename from Source/DefOf/RJW_HediffDefOf.cs rename to Source/Modules/SemenOverlay/DefOf/RJW_HediffDefOf.cs index 7d6cf94c7421d342fa3c44e87951745cf613d516..74c9ec103f97fb2363cf0ef573c93883b11eabe1 100644 --- a/Source/DefOf/RJW_HediffDefOf.cs +++ b/Source/Modules/SemenOverlay/DefOf/RJW_HediffDefOf.cs @@ -5,7 +5,7 @@ namespace rjw { //I took the liberty of adding the new DefOf files since I find that easier than managing all the defs via xxx.cs [DefOf] - public static class RJW_HediffDefOf + public static class RJW_SemenoOverlayHediffDefOf { public static HediffDef Hediff_Semen;//for humans & animals; also parent for insect and mech spunk public static HediffDef Hediff_InsectSpunk; diff --git a/Source/DefOf/RJW_JobDefOf.cs b/Source/Modules/SemenOverlay/DefOf/RJW_JobDefOf.cs similarity index 71% rename from Source/DefOf/RJW_JobDefOf.cs rename to Source/Modules/SemenOverlay/DefOf/RJW_JobDefOf.cs index 72e4f789b004e6df02be819e4f052c129c2b7253..1ca90e4f7ac81c128f77265bbba5d75574565b9d 100644 --- a/Source/DefOf/RJW_JobDefOf.cs +++ b/Source/Modules/SemenOverlay/DefOf/RJW_JobDefOf.cs @@ -4,7 +4,7 @@ using Verse; namespace rjw { [DefOf] - static class RJW_JobDefOf + static class RJW_SemenOverlayJobDefOf { public static JobDef CleanSelf; } diff --git a/Source/Hediffs/Hediff_Bukkake.cs b/Source/Modules/SemenOverlay/Hediffs/Hediff_Bukkake.cs similarity index 97% rename from Source/Hediffs/Hediff_Bukkake.cs rename to Source/Modules/SemenOverlay/Hediffs/Hediff_Bukkake.cs index a85ebfdcdb7bb8951e6875477090ecf1ce4d1d8c..4b6e53fb9074938c9ed42317a1b0eca6436cf0e8 100644 --- a/Source/Hediffs/Hediff_Bukkake.cs +++ b/Source/Modules/SemenOverlay/Hediffs/Hediff_Bukkake.cs @@ -36,7 +36,7 @@ namespace rjw { if (pawn.RaceProps.Humanlike)//for now, only humans are supported { - hediffs_semen = this.pawn.health.hediffSet.hediffs.FindAll(x => (x.def == RJW_HediffDefOf.Hediff_Semen || x.def == RJW_HediffDefOf.Hediff_InsectSpunk || x.def == RJW_HediffDefOf.Hediff_MechaFluids)); + hediffs_semen = this.pawn.health.hediffSet.hediffs.FindAll(x => (x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Semen || x.def == RJW_SemenoOverlayHediffDefOf.Hediff_InsectSpunk || x.def == RJW_SemenoOverlayHediffDefOf.Hediff_MechaFluids)); float bukkakeLevel = CalculateBukkakeLevel();//sum of severity of all the semen hediffs x semenWeight this.Severity = bukkakeLevel; bool updatePortrait = false; @@ -240,6 +240,7 @@ namespace rjw //drawPos.y += yAdjust[facingDir];// 0.00: over body; 0.01: over body but under face, 0.02: over face, but under hair, -99 = "never" visible drawPos.y += yAdjust[facingDir]; + // this causes crash, pawn tick -> draw-> full ram-> crash GenDraw.DrawMeshNowOrLater(mesh, drawPos, quat, semenMaterial, forPortrait); } diff --git a/Source/Hediffs/Hediff_Semen.cs b/Source/Modules/SemenOverlay/Hediffs/Hediff_Semen.cs similarity index 100% rename from Source/Hediffs/Hediff_Semen.cs rename to Source/Modules/SemenOverlay/Hediffs/Hediff_Semen.cs diff --git a/Source/JobDrivers/JobDriver_CleanSelf.cs b/Source/Modules/SemenOverlay/JobDrivers/JobDriver_CleanSelf.cs similarity index 76% rename from Source/JobDrivers/JobDriver_CleanSelf.cs rename to Source/Modules/SemenOverlay/JobDrivers/JobDriver_CleanSelf.cs index 060724891154630cf2d57885d8e52a7b048e99e9..fa92ec885543f4b8ce67392f7bd797dd92487200 100644 --- a/Source/JobDrivers/JobDriver_CleanSelf.cs +++ b/Source/Modules/SemenOverlay/JobDrivers/JobDriver_CleanSelf.cs @@ -19,7 +19,7 @@ namespace rjw this.FailOn(delegate { List<Hediff> hediffs = pawn.health.hediffSet.hediffs; - return !hediffs.Exists(x => x.def == RJW_HediffDefOf.Hediff_Bukkake);//fail if bukkake disappears - means that also all the semen is gone + return !hediffs.Exists(x => x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake);//fail if bukkake disappears - means that also all the semen is gone }); Toil cleaning = Toils_General.Wait(cleaningTime, TargetIndex.None);//duration of cleaning.WithProgressBarToilDelay(TargetIndex.A); @@ -30,7 +30,7 @@ namespace rjw initAction = delegate () { //get one of the semen hediffs, reduce its severity - Hediff hediff = pawn.health.hediffSet.hediffs.Find(x => (x.def == RJW_HediffDefOf.Hediff_Semen || x.def == RJW_HediffDefOf.Hediff_InsectSpunk || x.def == RJW_HediffDefOf.Hediff_MechaFluids)); + Hediff hediff = pawn.health.hediffSet.hediffs.Find(x => (x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Semen || x.def == RJW_SemenoOverlayHediffDefOf.Hediff_InsectSpunk || x.def == RJW_SemenoOverlayHediffDefOf.Hediff_MechaFluids)); if (hediff != null) { hediff.Severity -= cleanAmount; diff --git a/Source/Common/SemenHelper.cs b/Source/Modules/SemenOverlay/SemenHelper.cs similarity index 96% rename from Source/Common/SemenHelper.cs rename to Source/Modules/SemenOverlay/SemenHelper.cs index 1b85d0d5ad8bb5a942e356bd260b498af9a17449..7b40741af4a3b50de66236dbaa10956affe0e970 100644 --- a/Source/Common/SemenHelper.cs +++ b/Source/Modules/SemenOverlay/SemenHelper.cs @@ -232,15 +232,15 @@ namespace rjw Hediff_Semen hediff; if (semenType == CUM_NORMAL) { - hediff = (Hediff_Semen)HediffMaker.MakeHediff(RJW_HediffDefOf.Hediff_Semen, receiver, null); + hediff = (Hediff_Semen)HediffMaker.MakeHediff(RJW_SemenoOverlayHediffDefOf.Hediff_Semen, receiver, null); } else if (semenType == CUM_INSECT) { - hediff = (Hediff_Semen)HediffMaker.MakeHediff(RJW_HediffDefOf.Hediff_InsectSpunk, receiver, null); + hediff = (Hediff_Semen)HediffMaker.MakeHediff(RJW_SemenoOverlayHediffDefOf.Hediff_InsectSpunk, receiver, null); } else { - hediff = (Hediff_Semen)HediffMaker.MakeHediff(RJW_HediffDefOf.Hediff_MechaFluids, receiver, null); + hediff = (Hediff_Semen)HediffMaker.MakeHediff(RJW_SemenoOverlayHediffDefOf.Hediff_MechaFluids, receiver, null); } hediff.Severity = amount;//if this body part is already maximally full -> spill over to other parts @@ -250,16 +250,18 @@ namespace rjw receiver.health.AddHediff(hediff, bodyPart, null, null); - if (amount > 1f)//spillover in case of very large amounts: just apply hediff a second time - { - Hediff_Semen hediff2 = (Hediff_Semen)HediffMaker.MakeHediff(hediff.def, receiver, null); - hediff2.semenType = semenType; - hediff2.Severity = amount - 1f; - receiver.health.AddHediff(hediff2, bodyPart, null, null); - } + //Log.Message(xxx.get_pawnname(receiver) + " cum ammount" + amount); + //causes significant memory leak, fixx someday + //if (amount > 1f)//spillover in case of very large amounts: just apply hediff a second time + //{ + // Hediff_Semen hediff2 = (Hediff_Semen)HediffMaker.MakeHediff(hediff.def, receiver, null); + // hediff2.semenType = semenType; + // hediff2.Severity = amount - 1f; + // receiver.health.AddHediff(hediff2, bodyPart, null, null); + //} //always also add bukkake hediff as manager - receiver.health.AddHediff(RJW_HediffDefOf.Hediff_Bukkake); + receiver.health.AddHediff(RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake); } //if spunk on one body part reaches a certain level, it can spill over to others, this function returns from where to where diff --git a/Source/WorkGivers/WorkGiver_CleanSelf.cs b/Source/Modules/SemenOverlay/WorkGivers/WorkGiver_CleanSelf.cs similarity index 90% rename from Source/WorkGivers/WorkGiver_CleanSelf.cs rename to Source/Modules/SemenOverlay/WorkGivers/WorkGiver_CleanSelf.cs index 37e9aac7cd1d4ce0d82f6616de09925fe6369b43..0f1d69fad7419969b92bc64f13a4d48133ad86a9 100644 --- a/Source/WorkGivers/WorkGiver_CleanSelf.cs +++ b/Source/Modules/SemenOverlay/WorkGivers/WorkGiver_CleanSelf.cs @@ -30,7 +30,7 @@ namespace rjw //conditions for self-cleaning job to be available public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { - Hediff hediff = pawn.health.hediffSet.hediffs.Find(x => (x.def == RJW_HediffDefOf.Hediff_Bukkake)); + Hediff hediff = pawn.health.hediffSet.hediffs.Find(x => (x.def == RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake)); int minAge = 3 * 2500;//3 hours in-game must have passed if (pawn == t && hediff != null && hediff.ageTicks > minAge && pawn.CanReserve(t, 1, -1, null, forced) && !xxx.DubsBadHygieneIsActive) { @@ -41,7 +41,7 @@ namespace rjw public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false) { - return new Job(RJW_JobDefOf.CleanSelf); + return new Job(RJW_SemenOverlayJobDefOf.CleanSelf); } } } diff --git a/Source/JobDrivers/JobDriver_WhoreInvitingVisitors.cs b/Source/Modules/Whoring/JobDrivers/JobDriver_WhoreInvitingVisitors.cs similarity index 100% rename from Source/JobDrivers/JobDriver_WhoreInvitingVisitors.cs rename to Source/Modules/Whoring/JobDrivers/JobDriver_WhoreInvitingVisitors.cs diff --git a/Source/JobDrivers/JobDriver_WhoreIsServingVisitors.cs b/Source/Modules/Whoring/JobDrivers/JobDriver_WhoreIsServingVisitors.cs similarity index 100% rename from Source/JobDrivers/JobDriver_WhoreIsServingVisitors.cs rename to Source/Modules/Whoring/JobDrivers/JobDriver_WhoreIsServingVisitors.cs diff --git a/Source/JobGivers/JobGiver_WhoreInvitingVisitors.cs b/Source/Modules/Whoring/JobGivers/JobGiver_WhoreInvitingVisitors.cs similarity index 100% rename from Source/JobGivers/JobGiver_WhoreInvitingVisitors.cs rename to Source/Modules/Whoring/JobGivers/JobGiver_WhoreInvitingVisitors.cs diff --git a/Source/ThinkTreeNodes/ThinkNode_ChancePerHour_Whore.cs b/Source/Modules/Whoring/ThinkTreeNodes/ThinkNode_ChancePerHour_Whore.cs similarity index 100% rename from Source/ThinkTreeNodes/ThinkNode_ChancePerHour_Whore.cs rename to Source/Modules/Whoring/ThinkTreeNodes/ThinkNode_ChancePerHour_Whore.cs diff --git a/Source/ThinkTreeNodes/ThinkNode_ConditionalWhore.cs b/Source/Modules/Whoring/ThinkTreeNodes/ThinkNode_ConditionalWhore.cs similarity index 100% rename from Source/ThinkTreeNodes/ThinkNode_ConditionalWhore.cs rename to Source/Modules/Whoring/ThinkTreeNodes/ThinkNode_ConditionalWhore.cs diff --git a/Source/Thoughts/ThoughtWorker_Whore.cs b/Source/Modules/Whoring/Thoughts/ThoughtWorker_Whore.cs similarity index 100% rename from Source/Thoughts/ThoughtWorker_Whore.cs rename to Source/Modules/Whoring/Thoughts/ThoughtWorker_Whore.cs diff --git a/Source/Common/Whoring_Helper.cs b/Source/Modules/Whoring/Whoring_Helper.cs similarity index 100% rename from Source/Common/Whoring_Helper.cs rename to Source/Modules/Whoring/Whoring_Helper.cs diff --git a/Source/Recipes/Recipe_Sterilize.cs b/Source/Recipes/Recipe_Sterilize.cs deleted file mode 100644 index 0ada385b255035b342e611d10e9f2cef45ba9f2f..0000000000000000000000000000000000000000 --- a/Source/Recipes/Recipe_Sterilize.cs +++ /dev/null @@ -1,38 +0,0 @@ -using RimWorld; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace rjw -{ - /// <summary> - /// Sterilization - /// </summary> - public class Recipe_InstallImplantToExistParts : Recipe_InstallImplant - { - public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe) - { - for (int i = 0; i < recipe.appliedOnFixedBodyParts.Count; i++) - { - BodyPartDef part = recipe.appliedOnFixedBodyParts[i]; - List<BodyPartRecord> bpList = pawn.RaceProps.body.AllParts; - bool blocked = Genital_Helper.genitals_blocked(pawn) || xxx.is_slime(pawn); - for (int j = 0; j < bpList.Count; j++) - { - BodyPartRecord record = bpList[j]; - if (record.def == part && !blocked) - { - if (pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined).Contains(record)) - { - if (!pawn.health.hediffSet.hediffs.Any((Hediff x) => x.Part == record && x.def == recipe.addsHediff)) - { - yield return record; - } - } - } - } - } - yield break; - } - } -} diff --git a/Source/Settings/RJWPreferenceSettings.cs b/Source/Settings/RJWSexSettings.cs similarity index 100% rename from Source/Settings/RJWPreferenceSettings.cs rename to Source/Settings/RJWSexSettings.cs diff --git a/Source/Settings.cs b/Source/Settings/Settings.cs similarity index 100% rename from Source/Settings.cs rename to Source/Settings/Settings.cs