From 65afc7f93def5bf65aa3b23cb1686894ab9bf890 Mon Sep 17 00:00:00 2001 From: Ed86 Date: Sat, 25 Jun 2022 19:23:11 +0300 Subject: [PATCH] 1.0? fixed boobitis added mod options other stuff --- 1.3/Assemblies/STD.dll | Bin 19968 -> 23552 bytes ...{Damage_Viral.xml => HIV_Damage_Viral.xml} | 0 1.3/Defs/HediffsDef/Boobitis.xml | 3 - 1.3/Defs/HediffsDef/Immunodeficiency.xml | 67 ++++++++++++++++++ 1.3/Defs/HediffsDef/VirusPerma.xml | 24 +++++++ .../{Incidents_STD.xml => Boobitis.xml} | 0 1.3/Defs/STDDefs/Boobitis.xml | 17 +++++ 1.3/Defs/STDDefs/HIV.xml | 14 ++++ 1.3/Defs/STDDefs/Herpes.xml | 16 +++++ 1.3/Defs/STDDefs/STDs.xml | 63 ---------------- 1.3/Defs/STDDefs/Syphilis.xml | 13 ++++ 1.3/Defs/STDDefs/Warts.xml | 15 ++++ 1.3/Defs/ThoughtDefs/HIV.xml | 15 ++++ .../{Thoughts_STD.xml => Rash.xml} | 31 +------- 1.3/Defs/ThoughtDefs/Syphilis.xml | 20 ++++++ 1.3/Languages/English/Keyed/STD.xml | 34 +++++++-- 1.3/Source/{STD => Mod}/STD.csproj | 2 + 1.3/Source/Mod/STDBase.cs | 46 ++++++++++++ .../STDs/Boobitis/harmony_Boobitis.cs | 2 +- 1.3/Source/Mod/STDs/Boobitis/std_Boobitis.cs | 60 ++++++++++++++++ 1.3/Source/{STD => Mod}/STDs/HIV/Hediff_ID.cs | 0 .../STDs/HIV/ThoughtWorker_WastingAway.cs | 0 .../STDs/HIV/harmony_Immunodeficiency.cs | 0 .../STDs/HIV/std_Immunodeficiency.cs | 2 +- .../STDs/Rash/ThoughtWorker_ItchyCrotch.cs | 0 .../{STD => Mod}/STDs/Rash/harmony_Rash.cs | 2 +- 1.3/Source/{STD => Mod}/STDs/Rash/std_Rash.cs | 0 .../ThoughtWorker_SyphiliticThoughts.cs | 0 .../STDs/Syphilis/harmony_Syphilis.cs | 0 .../STDs/Syphilis/std_Syphilis.cs | 0 1.3/Source/{STD => Mod}/harmony_add_stds.cs | 2 +- 1.3/Source/Mod/harmony_stds_generator.cs | 31 ++++++++ 1.3/Source/Mod/harmony_update_stds.cs | 35 +++++++++ 1.3/Source/{STD => Mod}/packages.config | 0 1.3/Source/{STD => Mod}/std.cs | 0 1.3/Source/{STD => Mod}/std_def.cs | 0 1.3/Source/{STD => Mod}/std_spreader.cs | 56 +++++++-------- 1.3/Source/{STD => Mod}/std_updater.cs | 0 1.3/Source/STD/STDBase.cs | 27 ------- 1.3/Source/STD/STDs/Boobitis/std_Boobitis.cs | 65 ----------------- 1.3/Source/{STD.sln => mod.sln} | 2 +- README.md | 6 +- 42 files changed, 442 insertions(+), 228 deletions(-) rename 1.3/Defs/DamageDefs/{Damage_Viral.xml => HIV_Damage_Viral.xml} (100%) create mode 100644 1.3/Defs/HediffsDef/Immunodeficiency.xml create mode 100644 1.3/Defs/HediffsDef/VirusPerma.xml rename 1.3/Defs/IncidentDef/{Incidents_STD.xml => Boobitis.xml} (100%) create mode 100644 1.3/Defs/STDDefs/Boobitis.xml create mode 100644 1.3/Defs/STDDefs/HIV.xml create mode 100644 1.3/Defs/STDDefs/Herpes.xml delete mode 100644 1.3/Defs/STDDefs/STDs.xml create mode 100644 1.3/Defs/STDDefs/Syphilis.xml create mode 100644 1.3/Defs/STDDefs/Warts.xml create mode 100644 1.3/Defs/ThoughtDefs/HIV.xml rename 1.3/Defs/ThoughtDefs/{Thoughts_STD.xml => Rash.xml} (62%) create mode 100644 1.3/Defs/ThoughtDefs/Syphilis.xml rename 1.3/Source/{STD => Mod}/STD.csproj (97%) create mode 100644 1.3/Source/Mod/STDBase.cs rename 1.3/Source/{STD => Mod}/STDs/Boobitis/harmony_Boobitis.cs (97%) create mode 100644 1.3/Source/Mod/STDs/Boobitis/std_Boobitis.cs rename 1.3/Source/{STD => Mod}/STDs/HIV/Hediff_ID.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/HIV/ThoughtWorker_WastingAway.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/HIV/harmony_Immunodeficiency.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/HIV/std_Immunodeficiency.cs (98%) rename 1.3/Source/{STD => Mod}/STDs/Rash/ThoughtWorker_ItchyCrotch.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/Rash/harmony_Rash.cs (96%) rename 1.3/Source/{STD => Mod}/STDs/Rash/std_Rash.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/Syphilis/ThoughtWorker_SyphiliticThoughts.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/Syphilis/harmony_Syphilis.cs (100%) rename 1.3/Source/{STD => Mod}/STDs/Syphilis/std_Syphilis.cs (100%) rename 1.3/Source/{STD => Mod}/harmony_add_stds.cs (97%) create mode 100644 1.3/Source/Mod/harmony_stds_generator.cs create mode 100644 1.3/Source/Mod/harmony_update_stds.cs rename 1.3/Source/{STD => Mod}/packages.config (100%) rename 1.3/Source/{STD => Mod}/std.cs (100%) rename 1.3/Source/{STD => Mod}/std_def.cs (100%) rename 1.3/Source/{STD => Mod}/std_spreader.cs (80%) rename 1.3/Source/{STD => Mod}/std_updater.cs (100%) delete mode 100644 1.3/Source/STD/STDBase.cs delete mode 100644 1.3/Source/STD/STDs/Boobitis/std_Boobitis.cs rename 1.3/Source/{STD.sln => mod.sln} (93%) diff --git a/1.3/Assemblies/STD.dll b/1.3/Assemblies/STD.dll index 269d622bf64a1e9f12f689e44e69eec6c3f1c7ce..9086e6373467700249d01eb90428400ee316ce8d 100644 GIT binary patch literal 23552 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 literal 19968 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 Izcldw06JC{iU0rr diff --git a/1.3/Defs/DamageDefs/Damage_Viral.xml b/1.3/Defs/DamageDefs/HIV_Damage_Viral.xml similarity index 100% rename from 1.3/Defs/DamageDefs/Damage_Viral.xml rename to 1.3/Defs/DamageDefs/HIV_Damage_Viral.xml diff --git a/1.3/Defs/HediffsDef/Boobitis.xml b/1.3/Defs/HediffsDef/Boobitis.xml index c4058f2..23178e3 100644 --- a/1.3/Defs/HediffsDef/Boobitis.xml +++ b/1.3/Defs/HediffsDef/Boobitis.xml @@ -10,7 +10,6 @@ 0.1 - 0.1 0.1 @@ -19,7 +18,6 @@ 0.2 - 0.2 0.3 @@ -28,7 +26,6 @@ 0.3 - 0.3 0.5 diff --git a/1.3/Defs/HediffsDef/Immunodeficiency.xml b/1.3/Defs/HediffsDef/Immunodeficiency.xml new file mode 100644 index 0000000..8c07c5e --- /dev/null +++ b/1.3/Defs/HediffsDef/Immunodeficiency.xml @@ -0,0 +1,67 @@ + + + + + + Immunodeficiency + std.Hediff_ID + (1.0, 0.0, 0.0) + + false + 0.600 + Very susceptible to disease. + 0.601 + false + +
  • + 0.60 + + 1.10 + +
  • + Consciousness + -0.05 +
  • + + +
  • + 0.75 + + 1.30 + +
  • + Consciousness + -0.10 +
  • +
  • + Manipulation + -0.15 +
  • +
  • + Moving + -0.15 +
  • + + +
  • + 0.90 + + 1.50 + +
  • + Consciousness + -0.15 +
  • +
  • + Manipulation + -0.30 +
  • +
  • + Moving + -0.30 +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/HediffsDef/VirusPerma.xml b/1.3/Defs/HediffsDef/VirusPerma.xml new file mode 100644 index 0000000..68eb6a0 --- /dev/null +++ b/1.3/Defs/HediffsDef/VirusPerma.xml @@ -0,0 +1,24 @@ + + + + VirusPerma + Hediff_Injury + false + true + 1.0 + Viral damage. + + +
  • + permanent viral damage + permanent viral damage +
  • +
    + + 0.0 + 0.0 + Destroyed by disease + Destroyed by disease + +
    +
    \ No newline at end of file diff --git a/1.3/Defs/IncidentDef/Incidents_STD.xml b/1.3/Defs/IncidentDef/Boobitis.xml similarity index 100% rename from 1.3/Defs/IncidentDef/Incidents_STD.xml rename to 1.3/Defs/IncidentDef/Boobitis.xml diff --git a/1.3/Defs/STDDefs/Boobitis.xml b/1.3/Defs/STDDefs/Boobitis.xml new file mode 100644 index 0000000..43ec6b1 --- /dev/null +++ b/1.3/Defs/STDDefs/Boobitis.xml @@ -0,0 +1,17 @@ + + + + + Boobitis + + Boobitis is a highly contagious mechanite plague that causes permanent breast growth if left untreated. It was initialy created as a harmless glittertech "party drug" but has since mutated and spread to virtually every human colony. + Boobitis + 0.75 + 0.00 + 0.00 + 0.04 + +
  • Chest
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/STDDefs/HIV.xml b/1.3/Defs/STDDefs/HIV.xml new file mode 100644 index 0000000..58e7fb5 --- /dev/null +++ b/1.3/Defs/STDDefs/HIV.xml @@ -0,0 +1,14 @@ + + + + + HIV + + HIV consists of two parts: an acute and a chronic infection. Both parts follow the same course, reducing the infected pawn's blood filtration as their severity increases. The acute phase progresses rapidly but can be fought by the pawn's immune system, whereas the chronic phase progresses very slowly but can never be cured. Treatment can modestly slow the progress of the disease. + ChronicHIV + AcuteHIV + 0.05 + 0.005 + 0.80 + + \ No newline at end of file diff --git a/1.3/Defs/STDDefs/Herpes.xml b/1.3/Defs/STDDefs/Herpes.xml new file mode 100644 index 0000000..9b920f9 --- /dev/null +++ b/1.3/Defs/STDDefs/Herpes.xml @@ -0,0 +1,16 @@ + + + + + Herpes + + Herpes is an incurable but nonfatal disease. Affected pawns experience pain and itchiness in the affected body parts. Treatment is effective at reducing the intensity of the symptoms. + Herpes + 0.14 + 0.04 + 1.00 + +
  • Genitals
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/STDDefs/STDs.xml b/1.3/Defs/STDDefs/STDs.xml deleted file mode 100644 index 4c83d2e..0000000 --- a/1.3/Defs/STDDefs/STDs.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - HIV - - HIV consists of two parts: an acute and a chronic infection. Both parts follow the same course, reducing the infected pawn's blood filtration as their severity increases. The acute phase progresses rapidly but can be fought by the pawn's immune system, whereas the chronic phase progresses very slowly but can never be cured. Treatment can modestly slow the progress of the disease. - ChronicHIV - AcuteHIV - 0.05 - 0.005 - 0.80 - - - - Herpes - - Herpes is an incurable but nonfatal disease. Affected pawns experience pain and itchiness in the affected body parts. Treatment is effective at reducing the intensity of the symptoms. - Herpes - 0.14 - 0.04 - 1.00 - -
  • Genitals
  • -
    -
    - - - Warts - - Genital warts are unsightly and cause an itching/burning sensation. They are easily treated and never fatal. - Warts - 0.20 - 0.07 - -
  • Genitals
  • -
    -
    - - - Syphilis - - Syphilis is a serious disease that affects the mind. If left untreated, it leads to corrupted thoughts, mood problems, potential permanent damage to the brain, liver, and kidneys, and, ultimately, death. The good news is that it is easily defeated by proper treatment. - Syphilis - 0.08 - 0.03 - 0.01 - - - - Boobitis - - Boobitis is a highly contagious mechanite plague that causes permanent breast growth if left untreated. It was initialy created as a harmless glittertech "party drug" but has since mutated and spread to virtually every human colony. - Boobitis - 0.75 - 0.00 - 0.00 - 0.04 - -
  • Chest
  • -
    -
    -
    \ No newline at end of file diff --git a/1.3/Defs/STDDefs/Syphilis.xml b/1.3/Defs/STDDefs/Syphilis.xml new file mode 100644 index 0000000..eb20f65 --- /dev/null +++ b/1.3/Defs/STDDefs/Syphilis.xml @@ -0,0 +1,13 @@ + + + + + Syphilis + + Syphilis is a serious disease that affects the mind. If left untreated, it leads to corrupted thoughts, mood problems, potential permanent damage to the brain, liver, and kidneys, and, ultimately, death. The good news is that it is easily defeated by proper treatment. + Syphilis + 0.08 + 0.03 + 0.01 + + \ No newline at end of file diff --git a/1.3/Defs/STDDefs/Warts.xml b/1.3/Defs/STDDefs/Warts.xml new file mode 100644 index 0000000..f072337 --- /dev/null +++ b/1.3/Defs/STDDefs/Warts.xml @@ -0,0 +1,15 @@ + + + + + Warts + + Genital warts are unsightly and cause an itching/burning sensation. They are easily treated and never fatal. + Warts + 0.20 + 0.07 + +
  • Genitals
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/ThoughtDefs/HIV.xml b/1.3/Defs/ThoughtDefs/HIV.xml new file mode 100644 index 0000000..7a72fda --- /dev/null +++ b/1.3/Defs/ThoughtDefs/HIV.xml @@ -0,0 +1,15 @@ + + + + + WastingAway + STD.ThoughtWorker_WastingAway + +
  • + + Every day I feel weaker than the day before. I can feel my life slowly slipping away. + -5 +
  • +
    +
    +
    diff --git a/1.3/Defs/ThoughtDefs/Thoughts_STD.xml b/1.3/Defs/ThoughtDefs/Rash.xml similarity index 62% rename from 1.3/Defs/ThoughtDefs/Thoughts_STD.xml rename to 1.3/Defs/ThoughtDefs/Rash.xml index 709b7d9..46267d3 100644 --- a/1.3/Defs/ThoughtDefs/Thoughts_STD.xml +++ b/1.3/Defs/ThoughtDefs/Rash.xml @@ -1,7 +1,7 @@ - + ItchyCrotch STD.ThoughtWorker_ItchyCrotch @@ -18,35 +18,6 @@ - - SyphiliticThoughts - STD.ThoughtWorker_SyphiliticThoughts - -
  • - - Everyone's so stupid and everything's so annoying. Even me, I just can't think clearly. - -8 -
  • -
  • - - OK, what I need is... uh... what was I doing again? Oh right this thing. This fucking thing THIS FUCKING PIECE OF SHIT. FUCKING DAMN PIECE OF GARBAGE - -16 -
  • -
    -
    - - - WastingAway - STD.ThoughtWorker_WastingAway - -
  • - - Every day I feel weaker than the day before. I can feel my life slowly slipping away. - -5 -
  • -
    -
    - SawDiseasedPrivates1 Thought_MemorySocial diff --git a/1.3/Defs/ThoughtDefs/Syphilis.xml b/1.3/Defs/ThoughtDefs/Syphilis.xml new file mode 100644 index 0000000..f405fc4 --- /dev/null +++ b/1.3/Defs/ThoughtDefs/Syphilis.xml @@ -0,0 +1,20 @@ + + + + + SyphiliticThoughts + STD.ThoughtWorker_SyphiliticThoughts + +
  • + + Everyone's so stupid and everything's so annoying. Even me, I just can't think clearly. + -8 +
  • +
  • + + OK, what I need is... uh... what was I doing again? Oh right this thing. This fucking thing THIS FUCKING PIECE OF SHIT. FUCKING DAMN PIECE OF GARBAGE + -16 +
  • +
    +
    +
    diff --git a/1.3/Languages/English/Keyed/STD.xml b/1.3/Languages/English/Keyed/STD.xml index 8e1686e..26ccf7c 100644 --- a/1.3/Languages/English/Keyed/STD.xml +++ b/1.3/Languages/English/Keyed/STD.xml @@ -1,13 +1,39 @@ - Enable STDs - Enables sexually transmitted diseases. + STDs from sex + Pawns will catch STDs from sex with infected pawn. STDs from environment - Pawns will catch STDs from dirty environment. + Pawns will catch STDs from sex in dirty environment. + Show STD catch roll + Logs the process of handing out STDs after sex for debug purposes (or for anyone who's curious) + Min STD severity to spread + STD infections must be at least this severe to spread between pawns + + Clean rooms spread modifier + = 0]]> + Dirty rooms spread modifier + + Outdoor Cleanliness + + Immunodeficiency spread + Chance to get additional infections due to Immunodeficiency + + Pawn spawn STD multiplier + Multiplier to spawn pawn with STDs (std base chance * this). + Nymph spawn STD multiplier + Multiplier to spawn nymphs with STDs (std base chance * this) + {0} has developed an infection due to a weakened immune system. - {0} has suffered permanent damage to {1} {2} due to an advanced {3} infection. + {0} has suffered permanent damage to {1} {2} due to an advancement of {3} infection. + + + + {0} has {1} {2} grown to {3} cup from {4}. \ No newline at end of file diff --git a/1.3/Source/STD/STD.csproj b/1.3/Source/Mod/STD.csproj similarity index 97% rename from 1.3/Source/STD/STD.csproj rename to 1.3/Source/Mod/STD.csproj index 092443f..26ff271 100644 --- a/1.3/Source/STD/STD.csproj +++ b/1.3/Source/Mod/STD.csproj @@ -60,6 +60,8 @@ + + diff --git a/1.3/Source/Mod/STDBase.cs b/1.3/Source/Mod/STDBase.cs new file mode 100644 index 0000000..c7174b4 --- /dev/null +++ b/1.3/Source/Mod/STDBase.cs @@ -0,0 +1,46 @@ +using System; +using HugsLib; +using HugsLib.Settings; +using Verse; + +namespace STD +{ + public class STDBase : ModBase + { + public override string ModIdentifier + { + get + { + return "RJW_STD"; + } + } + + public static SettingHandle std_sex; + public static SettingHandle std_floor; + public static SettingHandle std_show_roll_to_catch; + public static SettingHandle std_min_severity_to_pitch; + public static SettingHandle std_env_pitch_cleanliness_exaggeration; + public static SettingHandle std_env_pitch_dirtiness_exaggeration; + public static SettingHandle std_outdoor_cleanliness; + public static SettingHandle opp_inf_initial_immunity; + public static SettingHandle pawn_spawn_with_std_mul; + public static SettingHandle nymph_spawn_with_std_mul; + + public override void DefsLoaded() + { + std_sex = Settings.GetHandle("std_sex", Translator.Translate("std_sex"), Translator.Translate("std_sex_desc"), true); + std_floor = Settings.GetHandle("std_floor", Translator.Translate("std_floor"), Translator.Translate("std_floor_desc"), true); + + std_show_roll_to_catch = Settings.GetHandle("std_show_roll_to_catch", Translator.Translate("std_show_roll_to_catch"), Translator.Translate("std_show_roll_to_catch_desc"), false); + std_min_severity_to_pitch = Settings.GetHandle("std_min_severity_to_pitch", Translator.Translate("std_min_severity_to_pitch"), Translator.Translate("std_min_severity_to_pitch_desc"), 0.21f); + + std_env_pitch_cleanliness_exaggeration = Settings.GetHandle("std_env_pitch_cleanliness_exaggeration", Translator.Translate("std_env_pitch_cleanliness_exaggeration"), Translator.Translate("std_env_pitch_cleanliness_exaggeration_desc"), 2.0f); + std_env_pitch_dirtiness_exaggeration = Settings.GetHandle("std_env_pitch_dirtiness_exaggeration", Translator.Translate("std_env_pitch_dirtiness_exaggeration"), Translator.Translate("std_env_pitch_dirtiness_exaggeration_desc"), 0.5f); + std_outdoor_cleanliness = Settings.GetHandle("std_outdoor_cleanliness", Translator.Translate("std_outdoor_cleanliness"), Translator.Translate("std_outdoor_cleanliness_desc"), -1.0f); + + opp_inf_initial_immunity = Settings.GetHandle("opp_inf_initial_immunity", Translator.Translate("opp_inf_initial_immunity"), Translator.Translate("opp_inf_initial_immunity_desc"), 0.55f); + pawn_spawn_with_std_mul = Settings.GetHandle("pawn_spawn_with_std_mul", Translator.Translate("pawn_spawn_with_std_mul"), Translator.Translate("pawn_spawn_with_std_mul_desc"), 1.0f); + nymph_spawn_with_std_mul = Settings.GetHandle("nymph_spawn_with_std_mul", Translator.Translate("nymph_spawn_with_std_mul"), Translator.Translate("nymph_spawn_with_std_mul_desc"), 3.0f); + } + } +} diff --git a/1.3/Source/STD/STDs/Boobitis/harmony_Boobitis.cs b/1.3/Source/Mod/STDs/Boobitis/harmony_Boobitis.cs similarity index 97% rename from 1.3/Source/STD/STDs/Boobitis/harmony_Boobitis.cs rename to 1.3/Source/Mod/STDs/Boobitis/harmony_Boobitis.cs index e829822..27b0b80 100644 --- a/1.3/Source/STD/STDs/Boobitis/harmony_Boobitis.cs +++ b/1.3/Source/Mod/STDs/Boobitis/harmony_Boobitis.cs @@ -42,7 +42,7 @@ namespace STD { try { - //std_Boobitis.update(p); + std_Boobitis.update(p); } catch (Exception e) { diff --git a/1.3/Source/Mod/STDs/Boobitis/std_Boobitis.cs b/1.3/Source/Mod/STDs/Boobitis/std_Boobitis.cs new file mode 100644 index 0000000..0b8751d --- /dev/null +++ b/1.3/Source/Mod/STDs/Boobitis/std_Boobitis.cs @@ -0,0 +1,60 @@ +using Verse; +using HarmonyLib; +using System; +using rjw; +using RimWorld; + +namespace STD +{ + public static class std_Boobitis + { + public static std_def boobitis = DefDatabase.GetNamed("Boobitis"); + public static void update(Pawn pawn) + { + if (pawn.health.hediffSet.HasHediff(boobitis.hediff_def)) + UpdateBoobitis(pawn); + + } + + public static void UpdateBoobitis(Pawn pawn) + { + var Parts = pawn.GetBreastList(); + + if (!Parts.NullOrEmpty()) + { + foreach (Hediff hed in Parts) + { + if (!(hed is Hediff_PartBaseNatural)) + continue; + + var boob = pawn.health.hediffSet.GetFirstHediffOfDef(boobitis.hediff_def).Severity; + if (boob >= 1.0) + { + //re-add boob dmg someday? + continue; + } + + var hedstage = hed.CurStageIndex; + //GenderHelper.ChangeSex(pawn, () => + //{ + hed.Severity += boob * 0.01f; // ~0.7 beast grow + //}); + + if (hedstage < hed.CurStageIndex) + { + PartSizeExtension.TryGetCupSize(hed, out float size); + var cupSize = (int)size; + var cup = PartStagesDef.GetCupSizeLabel(cupSize); + + string message_title = boobitis.LabelCap; + string message_text = "RJW_BreastsHaveGrownFromBoobitis".Translate(xxx.get_pawnname(pawn), pawn.Possessive(), hed.def.label.ToLower(), cup, boobitis.LabelCap).CapitalizeFirst(); + Find.LetterStack.ReceiveLetter(message_title, message_text, LetterDefOf.NeutralEvent, pawn); + + //var message = "RJW_BreastsHaveGrownFromBoobitis".Translate(xxx.get_pawnname(pawn)); + //Messages.Message(message, pawn, MessageTypeDefOf.SilentInput); + } + } + } + } + } +} diff --git a/1.3/Source/STD/STDs/HIV/Hediff_ID.cs b/1.3/Source/Mod/STDs/HIV/Hediff_ID.cs similarity index 100% rename from 1.3/Source/STD/STDs/HIV/Hediff_ID.cs rename to 1.3/Source/Mod/STDs/HIV/Hediff_ID.cs diff --git a/1.3/Source/STD/STDs/HIV/ThoughtWorker_WastingAway.cs b/1.3/Source/Mod/STDs/HIV/ThoughtWorker_WastingAway.cs similarity index 100% rename from 1.3/Source/STD/STDs/HIV/ThoughtWorker_WastingAway.cs rename to 1.3/Source/Mod/STDs/HIV/ThoughtWorker_WastingAway.cs diff --git a/1.3/Source/STD/STDs/HIV/harmony_Immunodeficiency.cs b/1.3/Source/Mod/STDs/HIV/harmony_Immunodeficiency.cs similarity index 100% rename from 1.3/Source/STD/STDs/HIV/harmony_Immunodeficiency.cs rename to 1.3/Source/Mod/STDs/HIV/harmony_Immunodeficiency.cs diff --git a/1.3/Source/STD/STDs/HIV/std_Immunodeficiency.cs b/1.3/Source/Mod/STDs/HIV/std_Immunodeficiency.cs similarity index 98% rename from 1.3/Source/STD/STDs/HIV/std_Immunodeficiency.cs rename to 1.3/Source/Mod/STDs/HIV/std_Immunodeficiency.cs index dfca7ff..0aa571f 100644 --- a/1.3/Source/STD/STDs/HIV/std_Immunodeficiency.cs +++ b/1.3/Source/Mod/STDs/HIV/std_Immunodeficiency.cs @@ -93,7 +93,7 @@ namespace STD p.health.HealthTick(); // Creates the immunity record ImmunityRecord ir = p.health.immunity.GetImmunityRecord(HediffDefOf.WoundInfection); if (ir != null) - ir.immunity = xxx.config.opp_inf_initial_immunity; + ir.immunity = STDBase.opp_inf_initial_immunity; const string message_title = "Opportunistic Infection"; string message_text = "RJW_Opportunistic_Infection_Message".Translate(xxx.get_pawnname(p)).CapitalizeFirst(); Find.LetterStack.ReceiveLetter(message_title, message_text, LetterDefOf.ThreatSmall); diff --git a/1.3/Source/STD/STDs/Rash/ThoughtWorker_ItchyCrotch.cs b/1.3/Source/Mod/STDs/Rash/ThoughtWorker_ItchyCrotch.cs similarity index 100% rename from 1.3/Source/STD/STDs/Rash/ThoughtWorker_ItchyCrotch.cs rename to 1.3/Source/Mod/STDs/Rash/ThoughtWorker_ItchyCrotch.cs diff --git a/1.3/Source/STD/STDs/Rash/harmony_Rash.cs b/1.3/Source/Mod/STDs/Rash/harmony_Rash.cs similarity index 96% rename from 1.3/Source/STD/STDs/Rash/harmony_Rash.cs rename to 1.3/Source/Mod/STDs/Rash/harmony_Rash.cs index 43575ef..01ef13f 100644 --- a/1.3/Source/STD/STDs/Rash/harmony_Rash.cs +++ b/1.3/Source/Mod/STDs/Rash/harmony_Rash.cs @@ -10,7 +10,7 @@ namespace STD [StaticConstructorOnStartup] static class Aftersex_STDThoughtApply { - [HarmonyPrefix] + [HarmonyPostfix] private static void ThinkAboutDiseasesStdPatch(Pawn pawn, Pawn partner, bool isReceiving, SexProps props, bool whoring = false) { try diff --git a/1.3/Source/STD/STDs/Rash/std_Rash.cs b/1.3/Source/Mod/STDs/Rash/std_Rash.cs similarity index 100% rename from 1.3/Source/STD/STDs/Rash/std_Rash.cs rename to 1.3/Source/Mod/STDs/Rash/std_Rash.cs diff --git a/1.3/Source/STD/STDs/Syphilis/ThoughtWorker_SyphiliticThoughts.cs b/1.3/Source/Mod/STDs/Syphilis/ThoughtWorker_SyphiliticThoughts.cs similarity index 100% rename from 1.3/Source/STD/STDs/Syphilis/ThoughtWorker_SyphiliticThoughts.cs rename to 1.3/Source/Mod/STDs/Syphilis/ThoughtWorker_SyphiliticThoughts.cs diff --git a/1.3/Source/STD/STDs/Syphilis/harmony_Syphilis.cs b/1.3/Source/Mod/STDs/Syphilis/harmony_Syphilis.cs similarity index 100% rename from 1.3/Source/STD/STDs/Syphilis/harmony_Syphilis.cs rename to 1.3/Source/Mod/STDs/Syphilis/harmony_Syphilis.cs diff --git a/1.3/Source/STD/STDs/Syphilis/std_Syphilis.cs b/1.3/Source/Mod/STDs/Syphilis/std_Syphilis.cs similarity index 100% rename from 1.3/Source/STD/STDs/Syphilis/std_Syphilis.cs rename to 1.3/Source/Mod/STDs/Syphilis/std_Syphilis.cs diff --git a/1.3/Source/STD/harmony_add_stds.cs b/1.3/Source/Mod/harmony_add_stds.cs similarity index 97% rename from 1.3/Source/STD/harmony_add_stds.cs rename to 1.3/Source/Mod/harmony_add_stds.cs index 82b8b13..b51d996 100644 --- a/1.3/Source/STD/harmony_add_stds.cs +++ b/1.3/Source/Mod/harmony_add_stds.cs @@ -12,7 +12,7 @@ namespace STD [StaticConstructorOnStartup] static class Aftersex_STD_Apply { - [HarmonyPrefix] + [HarmonyPostfix] private static void Aftersex_STD_Patch(SexProps props) { try diff --git a/1.3/Source/Mod/harmony_stds_generator.cs b/1.3/Source/Mod/harmony_stds_generator.cs new file mode 100644 index 0000000..601db33 --- /dev/null +++ b/1.3/Source/Mod/harmony_stds_generator.cs @@ -0,0 +1,31 @@ +using Verse; +using HarmonyLib; +using rjw; +using System; +using System.Reflection; + +namespace STD +{ + /// + ///roll for STD update every 10 sex need ticks + /// + [HarmonyPatch(typeof(PawnGenerator), "GeneratePawn", new Type[] { typeof(PawnGenerationRequest)})] + [StaticConstructorOnStartup] + static class PawnGenerator_STD_spreader + { + [HarmonyPostfix] + private static void PawnGenerator_STD_spreader_Patch(ref PawnGenerationRequest request, ref Pawn __result) + { + try + { + if (!request.Newborn) + if (__result != null) + std_spreader.generate_on(__result); + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + } +} diff --git a/1.3/Source/Mod/harmony_update_stds.cs b/1.3/Source/Mod/harmony_update_stds.cs new file mode 100644 index 0000000..9dfa62b --- /dev/null +++ b/1.3/Source/Mod/harmony_update_stds.cs @@ -0,0 +1,35 @@ +using Verse; +using HarmonyLib; +using rjw; +using System; +using System.Reflection; + +namespace STD +{ + /// + ///roll for STD update every 10 sex need ticks + /// + [HarmonyPatch(typeof(Need_Sex), "NeedInterval")] + [StaticConstructorOnStartup] + static class Need_Sex_STD_Update + { + [HarmonyPostfix] + private static void Need_Sex_STD_Patch(Need_Sex __instance, Pawn ___pawn) + { + try + { + if (__instance.isInvisible) + return; // no caravans + + if (__instance.needsex_tick <= 0) // every 10 ticks - real tick + { + std_updater.update(___pawn); + } + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + } +} diff --git a/1.3/Source/STD/packages.config b/1.3/Source/Mod/packages.config similarity index 100% rename from 1.3/Source/STD/packages.config rename to 1.3/Source/Mod/packages.config diff --git a/1.3/Source/STD/std.cs b/1.3/Source/Mod/std.cs similarity index 100% rename from 1.3/Source/STD/std.cs rename to 1.3/Source/Mod/std.cs diff --git a/1.3/Source/STD/std_def.cs b/1.3/Source/Mod/std_def.cs similarity index 100% rename from 1.3/Source/STD/std_def.cs rename to 1.3/Source/Mod/std_def.cs diff --git a/1.3/Source/STD/std_spreader.cs b/1.3/Source/Mod/std_spreader.cs similarity index 80% rename from 1.3/Source/STD/std_spreader.cs rename to 1.3/Source/Mod/std_spreader.cs index 92dd8b9..398ea20 100644 --- a/1.3/Source/STD/std_spreader.cs +++ b/1.3/Source/Mod/std_spreader.cs @@ -80,47 +80,47 @@ namespace STD float catch_chance = GetCatchChance(catcher, sd); float catch_rv = Rand.Value; - //if (xxx.config.std_show_roll_to_catch) - //--Log.Message(" Chance to catch " + sd.label + ": " + catch_chance.ToStringPercent() + "; rolled: " + catch_rv.ToString()); + if (STDBase.std_show_roll_to_catch) + Log.Message(" Chance to catch " + sd.label + ": " + catch_chance.ToStringPercent() + "; rolled: " + catch_rv.ToString()); if (catch_rv < catch_chance) { - string pitch_source; float pitch_chance; + string pitch_source = "sex"; + float pitch_chance = -9001f; { - if (get_severity(pitcher, sd) >= xxx.config.std_min_severity_to_pitch) - { - pitch_source = xxx.get_pawnname(pitcher); - pitch_chance = 1.0f; + if (STDBase.std_sex) + { + if (get_severity(pitcher, sd) >= STDBase.std_min_severity_to_pitch) + { + pitch_source = xxx.get_pawnname(pitcher); + pitch_chance = 1.0f; + } } - else + if (STDBase.std_floor && pitch_chance != 1.0f) { pitch_source = "the environment"; pitch_chance = sd.environment_pitch_chance * cleanliness_factor; - if (!STDBase.std_floor) - { - pitch_chance = -9001f; - } } } float pitch_rv = Rand.Value; - //if (xxx.config.std_show_roll_to_catch) - //--Log.Message(" Chance to pitch (from " + pitch_source + "): " + pitch_chance.ToStringPercent() + "; rolled: " + pitch_rv.ToString()); + if (STDBase.std_show_roll_to_catch) + Log.Message(" Chance to pitch (from " + pitch_source + "): " + pitch_chance.ToStringPercent() + "; rolled: " + pitch_rv.ToString()); if (pitch_rv < pitch_chance) { infect(catcher, sd); show_infection_letter(catcher, sd, pitch_source, catch_chance * pitch_chance); - //if (xxx.config.std_show_roll_to_catch) - //--Log.Message(" INFECTED!"); + if (STDBase.std_show_roll_to_catch) + Log.Message(" INFECTED!"); } } } - //else - //if (xxx.config.std_show_roll_to_catch) - //--Log.Message(" Still immune to " + sd.label); + else + if (STDBase.std_show_roll_to_catch) + Log.Message(" Still immune to " + sd.label); } - //else - //if (xxx.config.std_show_roll_to_catch) - //--Log.Message(" Already infected with " + sd.label); + else + if (STDBase.std_show_roll_to_catch) + Log.Message(" Already infected with " + sd.label); } } @@ -182,22 +182,22 @@ namespace STD static float GetCleanlinessFactor(Pawn catcher) { Room room = catcher.GetRoom(); - float cle = room?.GetStat(RoomStatDefOf.Cleanliness) ?? xxx.config.std_outdoor_cleanliness; - float exa = cle >= 0.0f ? xxx.config.std_env_pitch_cleanliness_exaggeration : xxx.config.std_env_pitch_dirtiness_exaggeration; + float cle = room?.GetStat(RoomStatDefOf.Cleanliness) ?? STDBase.std_outdoor_cleanliness; + float exa = cle >= 0.0f ? STDBase.std_env_pitch_cleanliness_exaggeration : STDBase.std_env_pitch_dirtiness_exaggeration; return Mathf.Max(0.0f, 1.0f - exa * cle); } - // Not called anywhere? //[SyncMethod] public static void generate_on(Pawn p) { if (p == null) return; //prevent error on world gen for pawns with broken bodies(no genitals) - if (p.RaceProps.body.HasPartWithTag(rjw.BodyPartTagDefOf.RJW_Fertility)) - return; + //??? + //if (p.RaceProps.body.HasPartWithTag(rjw.BodyPartTagDefOf.RJW_Fertility)) + // return; if (!xxx.is_human(p)) return; - float nymph_mul = !xxx.is_nympho(p) ? 1.0f : xxx.config.nymph_spawn_with_std_mul; + float nymph_mul = !xxx.is_nympho(p) ? STDBase.pawn_spawn_with_std_mul : STDBase.nymph_spawn_with_std_mul; //Rand.PopState(); //Rand.PushState(RJW_Multiplayer.PredictableSeed()); foreach (std_def sd in std.all) diff --git a/1.3/Source/STD/std_updater.cs b/1.3/Source/Mod/std_updater.cs similarity index 100% rename from 1.3/Source/STD/std_updater.cs rename to 1.3/Source/Mod/std_updater.cs diff --git a/1.3/Source/STD/STDBase.cs b/1.3/Source/STD/STDBase.cs deleted file mode 100644 index 43904c3..0000000 --- a/1.3/Source/STD/STDBase.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using HugsLib; -using HugsLib.Settings; -using Verse; - -namespace STD -{ - public class STDBase : ModBase - { - public override string ModIdentifier - { - get - { - return "RJW_STD"; - } - } - - public static SettingHandle std_sex; - public static SettingHandle std_floor; - - public override void DefsLoaded() - { - std_sex = Settings.GetHandle("std_sex", Translator.Translate("std_sex"), Translator.Translate("std_sex_Desc"), true); - std_floor = Settings.GetHandle("std_floor", Translator.Translate("std_floor"), Translator.Translate("std_floor_Desc"), true); - } - } -} diff --git a/1.3/Source/STD/STDs/Boobitis/std_Boobitis.cs b/1.3/Source/STD/STDs/Boobitis/std_Boobitis.cs deleted file mode 100644 index ac76046..0000000 --- a/1.3/Source/STD/STDs/Boobitis/std_Boobitis.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Verse; -using HarmonyLib; -using System; -using rjw; - -namespace STD -{ - public static class std_Boobitis - { - public static std_def boobitis = DefDatabase.GetNamed("Boobitis"); - public static void update(Pawn pawn) - { - if (pawn.health.hediffSet.HasHediff(boobitis.hediff_def)) - UpdateBoobitis(pawn); - } - - public static void UpdateBoobitis(Pawn pawn) - { - //var partBPR = Genital_Helper.get_breastsBPR(pawn); - //var Parts = Genital_Helper.get_PartsHediffList(pawn, partBPR); - - //if (!Parts.NullOrEmpty()) - //{ - // foreach (Hediff hed in Parts) - // { - // if (!(hed is Hediff_PartBaseNatural)) - // continue; - - // GenderHelper.ChangeSex(pawn, () => - // { - // hed.Severity += 0.1f; - // }); - // var message = "RJW_BreastsHaveGrownFromBoobitis".Translate(pawn); - // Messages.Message(message, pawn, MessageTypeDefOf.SilentInput); - // } - //} - - //var hediff = std.get_infection(pawn, std.boobitis); - //if (hediff == null - // || !(hediff.Severity >= 0.20f) - // || hediff.FullyImmune() - // || !BreastSize_Helper.TryGetBreastSize(pawn, out var oldSize, out var oldBoobs) - // || oldSize >= BreastSize_Helper.MaxSize - // || !RollFor(hediff.Severity > 0.90f ? 5f : 15f)) - //{ - // return; - //} - //var chest = Genital_Helper.get_breastsBPR(pawn); - //var newSize = oldSize + 1; - //var newBoobs = BreastSize_Helper.GetHediffDef(newSize); - - //GenderHelper.ChangeSex(pawn, () => - //{ - // if (oldBoobs != null) - // { - // pawn.health.RemoveHediff(oldBoobs); - // } - // pawn.health.AddHediff(newBoobs, chest); - //}); - - //var message = "RJW_BreastsHaveGrownFromBoobitis".Translate(pawn); - //Messages.Message(message, pawn, MessageTypeDefOf.SilentInput); - } - } -} diff --git a/1.3/Source/STD.sln b/1.3/Source/mod.sln similarity index 93% rename from 1.3/Source/STD.sln rename to 1.3/Source/mod.sln index 2356b0d..ddd59bc 100644 --- a/1.3/Source/STD.sln +++ b/1.3/Source/mod.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26228.4 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STD", "STD\STD.csproj", "{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STD", "Mod\STD.csproj", "{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/README.md b/README.md index 1bf6ab0..364adcd 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,10 @@ LoversLab: Requirements: Harmony Hugslib -Rimjobworld (https://gitgud.io/Ed86/rjw) +Rimjobworld 5.0+ (https://gitgud.io/Ed86/rjw) + +Additional features to RimJobWorld (STDs): -Additional features to RimJobWorld: -(STDs): - HIVs - Immunodeficiency - Syphilis