fixed boobitis
added mod options
other stuff
This commit is contained in:
Ed86 2022-06-25 19:23:11 +03:00
parent 3beb2663f2
commit 65afc7f93d
42 changed files with 442 additions and 228 deletions

Binary file not shown.

View File

@ -10,7 +10,6 @@
<painOffset>0.1</painOffset>
<label>subtle swelling</label>
<statOffsets>
<SexAbility>0.1</SexAbility>
<Vulnerability>0.1</Vulnerability>
</statOffsets>
</li>
@ -19,7 +18,6 @@
<label>noticable swelling</label>
<painOffset>0.2</painOffset>
<statOffsets>
<SexAbility>0.2</SexAbility>
<Vulnerability>0.3</Vulnerability>
</statOffsets>
</li>
@ -28,7 +26,6 @@
<label>spectacular swelling</label>
<painOffset>0.3</painOffset>
<statOffsets>
<SexAbility>0.3</SexAbility>
<Vulnerability>0.5</Vulnerability>
</statOffsets>
</li>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Severity will be set to equal (1.0 - blood_filtration) in xxx.update_std_effects -->
<!-- part of HIV -->
<HediffDef>
<defName>Immunodeficiency</defName>
<hediffClass>std.Hediff_ID</hediffClass>
<defaultLabelColor>(1.0, 0.0, 0.0)</defaultLabelColor>
<label>Immunodeficiency</label>
<makesSickThought>false</makesSickThought>
<minSeverity>0.600</minSeverity>
<description>Very susceptible to disease.</description>
<initialSeverity>0.601</initialSeverity>
<tendable>false</tendable>
<stages>
<li>
<minSeverity>0.60</minSeverity>
<label>minor</label>
<restFallFactor>1.10</restFallFactor>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.05</offset>
</li>
</capMods>
</li>
<li>
<minSeverity>0.75</minSeverity>
<label>major</label>
<restFallFactor>1.30</restFallFactor>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.10</offset>
</li>
<li>
<capacity>Manipulation</capacity>
<offset>-0.15</offset>
</li>
<li>
<capacity>Moving</capacity>
<offset>-0.15</offset>
</li>
</capMods>
</li>
<li>
<minSeverity>0.90</minSeverity>
<label>extreme</label>
<restFallFactor>1.50</restFallFactor>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.15</offset>
</li>
<li>
<capacity>Manipulation</capacity>
<offset>-0.30</offset>
</li>
<li>
<capacity>Moving</capacity>
<offset>-0.30</offset>
</li>
</capMods>
</li>
</stages>
</HediffDef>
</Defs>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<HediffDef>
<defName>VirusPerma</defName>
<hediffClass>Hediff_Injury</hediffClass>
<tendable>false</tendable>
<displayWound>true</displayWound>
<chanceToCauseNoPain>1.0</chanceToCauseNoPain>
<description>Viral damage.</description>
<label>viral damage</label>
<comps>
<li Class="HediffCompProperties_GetsPermanent">
<permanentLabel>permanent viral damage</permanentLabel>
<instantlyPermanentLabel>permanent viral damage</instantlyPermanentLabel>
</li>
</comps>
<injuryProps>
<painPerSeverity>0.0</painPerSeverity>
<averagePainPerSeverityPermanent>0.0</averagePainPerSeverityPermanent>
<destroyedLabel>Destroyed by disease</destroyedLabel>
<destroyedOutLabel>Destroyed by disease</destroyedOutLabel>
</injuryProps>
</HediffDef>
</Defs>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<STD.std_def>
<defName>Boobitis</defName>
<label>boobitis</label>
<description>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.</description>
<hediff_def>Boobitis</hediff_def>
<catch_chance>0.75</catch_chance>
<environment_pitch_chance>0.00</environment_pitch_chance>
<autocure_below_severity>0.00</autocure_below_severity>
<spawn_chance>0.04</spawn_chance>
<appliedOnFixedBodyParts>
<li>Chest</li>
</appliedOnFixedBodyParts>
</STD.std_def>
</Defs>

14
1.3/Defs/STDDefs/HIV.xml Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<STD.std_def>
<defName>HIV</defName>
<label>HIV</label>
<description>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.</description>
<hediff_def>ChronicHIV</hediff_def>
<cohediff_def>AcuteHIV</cohediff_def>
<catch_chance>0.05</catch_chance>
<spawn_chance>0.005</spawn_chance>
<spawn_severity>0.80</spawn_severity>
</STD.std_def>
</Defs>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<STD.std_def>
<defName>Herpes</defName>
<label>herpes</label>
<description>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.</description>
<hediff_def>Herpes</hediff_def>
<catch_chance>0.14</catch_chance>
<spawn_chance>0.04</spawn_chance>
<spawn_severity>1.00</spawn_severity>
<appliedOnFixedBodyParts>
<li>Genitals</li>
</appliedOnFixedBodyParts>
</STD.std_def>
</Defs>

View File

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<STD.std_def>
<defName>HIV</defName>
<label>HIV</label>
<description>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.</description>
<hediff_def>ChronicHIV</hediff_def>
<cohediff_def>AcuteHIV</cohediff_def>
<catch_chance>0.05</catch_chance>
<spawn_chance>0.005</spawn_chance>
<spawn_severity>0.80</spawn_severity>
</STD.std_def>
<STD.std_def>
<defName>Herpes</defName>
<label>herpes</label>
<description>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.</description>
<hediff_def>Herpes</hediff_def>
<catch_chance>0.14</catch_chance>
<spawn_chance>0.04</spawn_chance>
<spawn_severity>1.00</spawn_severity>
<appliedOnFixedBodyParts>
<li>Genitals</li>
</appliedOnFixedBodyParts>
</STD.std_def>
<STD.std_def>
<defName>Warts</defName>
<label>warts</label>
<description>Genital warts are unsightly and cause an itching/burning sensation. They are easily treated and never fatal.</description>
<hediff_def>Warts</hediff_def>
<catch_chance>0.20</catch_chance>
<environment_pitch_chance>0.07</environment_pitch_chance>
<appliedOnFixedBodyParts>
<li>Genitals</li>
</appliedOnFixedBodyParts>
</STD.std_def>
<STD.std_def>
<defName>Syphilis</defName>
<label>syphilis</label>
<description>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.</description>
<hediff_def>Syphilis</hediff_def>
<catch_chance>0.08</catch_chance>
<environment_pitch_chance>0.03</environment_pitch_chance>
<autocure_below_severity>0.01</autocure_below_severity>
</STD.std_def>
<STD.std_def>
<defName>Boobitis</defName>
<label>boobitis</label>
<description>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.</description>
<hediff_def>Boobitis</hediff_def>
<catch_chance>0.75</catch_chance>
<environment_pitch_chance>0.00</environment_pitch_chance>
<autocure_below_severity>0.00</autocure_below_severity>
<spawn_chance>0.04</spawn_chance>
<appliedOnFixedBodyParts>
<li>Chest</li>
</appliedOnFixedBodyParts>
</STD.std_def>
</Defs>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<STD.std_def>
<defName>Syphilis</defName>
<label>syphilis</label>
<description>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.</description>
<hediff_def>Syphilis</hediff_def>
<catch_chance>0.08</catch_chance>
<environment_pitch_chance>0.03</environment_pitch_chance>
<autocure_below_severity>0.01</autocure_below_severity>
</STD.std_def>
</Defs>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<STD.std_def>
<defName>Warts</defName>
<label>warts</label>
<description>Genital warts are unsightly and cause an itching/burning sensation. They are easily treated and never fatal.</description>
<hediff_def>Warts</hediff_def>
<catch_chance>0.20</catch_chance>
<environment_pitch_chance>0.07</environment_pitch_chance>
<appliedOnFixedBodyParts>
<li>Genitals</li>
</appliedOnFixedBodyParts>
</STD.std_def>
</Defs>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThoughtDef>
<defName>WastingAway</defName>
<workerClass>STD.ThoughtWorker_WastingAway</workerClass>
<stages>
<li>
<label>wasting away</label>
<description>Every day I feel weaker than the day before. I can feel my life slowly slipping away.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThoughtDef>
<ThoughtDef>
<defName>ItchyCrotch</defName>
<workerClass>STD.ThoughtWorker_ItchyCrotch</workerClass>
<stages>
@ -18,35 +18,6 @@
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>SyphiliticThoughts</defName>
<workerClass>STD.ThoughtWorker_SyphiliticThoughts</workerClass>
<stages>
<li>
<label>syphilitic thoughts</label>
<description>Everyone's so stupid and everything's so annoying. Even me, I just can't think clearly.</description>
<baseMoodEffect>-8</baseMoodEffect>
</li>
<li>
<label>extreme syphilitic thoughts</label>
<description>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</description>
<baseMoodEffect>-16</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>WastingAway</defName>
<workerClass>STD.ThoughtWorker_WastingAway</workerClass>
<stages>
<li>
<label>wasting away</label>
<description>Every day I feel weaker than the day before. I can feel my life slowly slipping away.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>SawDiseasedPrivates1</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThoughtDef>
<defName>SyphiliticThoughts</defName>
<workerClass>STD.ThoughtWorker_SyphiliticThoughts</workerClass>
<stages>
<li>
<label>syphilitic thoughts</label>
<description>Everyone's so stupid and everything's so annoying. Even me, I just can't think clearly.</description>
<baseMoodEffect>-8</baseMoodEffect>
</li>
<li>
<label>extreme syphilitic thoughts</label>
<description>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</description>
<baseMoodEffect>-16</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@ -1,13 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<!-- Settings -->
<std_sex>Enable STDs</std_sex>
<std_sex_desc>Enables sexually transmitted diseases.</std_sex_desc>
<std_sex>STDs from sex</std_sex>
<std_sex_desc>Pawns will catch STDs from sex with infected pawn.</std_sex_desc>
<std_floor>STDs from environment</std_floor>
<std_floor_desc>Pawns will catch STDs from dirty environment.</std_floor_desc>
<std_floor_desc>Pawns will catch STDs from sex in dirty environment.</std_floor_desc>
<std_show_roll_to_catch>Show STD catch roll</std_show_roll_to_catch>
<std_show_roll_to_catch_desc>Logs the process of handing out STDs after sex for debug purposes (or for anyone who's curious)</std_show_roll_to_catch_desc>
<std_min_severity_to_pitch>Min STD severity to spread</std_min_severity_to_pitch>
<std_min_severity_to_pitch_desc>STD infections must be at least this severe to spread between pawns</std_min_severity_to_pitch_desc>
<std_env_pitch_cleanliness_exaggeration>Clean rooms spread modifier</std_env_pitch_cleanliness_exaggeration>
<std_env_pitch_cleanliness_exaggeration_desc><![CDATA[1.0f - this * RoomStatDefOf.Cleanliness.
RoomStatDefOf.Cleanliness >= 0]]></std_env_pitch_cleanliness_exaggeration_desc>
<std_env_pitch_dirtiness_exaggeration>Dirty rooms spread modifier</std_env_pitch_dirtiness_exaggeration>
<std_env_pitch_dirtiness_exaggeration_desc><![CDATA[1.0f - this * RoomStatDefOf.Cleanliness.
RoomStatDefOf.Cleanliness < 0]]></std_env_pitch_dirtiness_exaggeration_desc>
<std_outdoor_cleanliness>Outdoor Cleanliness</std_outdoor_cleanliness>
<std_outdoor_cleanliness_desc><![CDATA[Cleanliness stat for sex outdoor
RoomStatDefOf.Cleanliness = this]]></std_outdoor_cleanliness_desc>
<opp_inf_initial_immunity>Immunodeficiency spread</opp_inf_initial_immunity>
<opp_inf_initial_immunity_desc>Chance to get additional infections due to Immunodeficiency</opp_inf_initial_immunity_desc>
<pawn_spawn_with_std_mul>Pawn spawn STD multiplier</pawn_spawn_with_std_mul>
<pawn_spawn_with_std_mul_desc>Multiplier to spawn pawn with STDs (std base chance * this).</pawn_spawn_with_std_mul_desc>
<nymph_spawn_with_std_mul>Nymph spawn STD multiplier</nymph_spawn_with_std_mul>
<nymph_spawn_with_std_mul_desc>Multiplier to spawn nymphs with STDs (std base chance * this)</nymph_spawn_with_std_mul_desc>
<!-- STDs -->
<RJW_Opportunistic_Infection_Message>{0} has developed an infection due to a weakened immune system.</RJW_Opportunistic_Infection_Message>
<!--RJW_Poisoned_by_Rimming_Message>{0} has gotten food poisoning by rimming {1}</RJW_Poisoned_by_Rimming_Message-->
<RJW_Syphilis_Damage_Message>{0} has suffered permanent damage to {1} {2} due to an advanced {3} infection.</RJW_Syphilis_Damage_Message>
<RJW_Syphilis_Damage_Message>{0} has suffered permanent damage to {1} {2} due to an advancement of {3} infection.</RJW_Syphilis_Damage_Message>
<!--Breast size changes-->
<!--<RJW_BreastsHaveGrownFromBoobitis>{0} breasts have grown from boobitis.</RJW_BreastsHaveGrownFromBoobitis>-->
<RJW_BreastsHaveGrownFromBoobitis>{0} has {1} {2} grown to {3} cup from {4}.</RJW_BreastsHaveGrownFromBoobitis>
</LanguageData>

View File

@ -60,6 +60,8 @@
<ItemGroup>
<Compile Include="..\Properties\AssemblyInfo.cs" />
<Compile Include="harmony_add_stds.cs" />
<Compile Include="harmony_stds_generator.cs" />
<Compile Include="harmony_update_stds.cs" />
<Compile Include="STDs\Boobitis\harmony_Boobitis.cs" />
<Compile Include="STDs\HIV\harmony_Immunodeficiency.cs" />
<Compile Include="STDs\Rash\harmony_Rash.cs" />

46
1.3/Source/Mod/STDBase.cs Normal file
View File

@ -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<bool> std_sex;
public static SettingHandle<bool> std_floor;
public static SettingHandle<bool> std_show_roll_to_catch;
public static SettingHandle<float> std_min_severity_to_pitch;
public static SettingHandle<float> std_env_pitch_cleanliness_exaggeration;
public static SettingHandle<float> std_env_pitch_dirtiness_exaggeration;
public static SettingHandle<float> std_outdoor_cleanliness;
public static SettingHandle<float> opp_inf_initial_immunity;
public static SettingHandle<float> pawn_spawn_with_std_mul;
public static SettingHandle<float> 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);
}
}
}

View File

@ -42,7 +42,7 @@ namespace STD
{
try
{
//std_Boobitis.update(p);
std_Boobitis.update(p);
}
catch (Exception e)
{

View File

@ -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<std_def>.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);
}
}
}
}
}
}

View File

@ -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);

View File

@ -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

View File

@ -12,7 +12,7 @@ namespace STD
[StaticConstructorOnStartup]
static class Aftersex_STD_Apply
{
[HarmonyPrefix]
[HarmonyPostfix]
private static void Aftersex_STD_Patch(SexProps props)
{
try

View File

@ -0,0 +1,31 @@
using Verse;
using HarmonyLib;
using rjw;
using System;
using System.Reflection;
namespace STD
{
///<summary>
///roll for STD update every 10 sex need ticks
///</summary>
[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());
}
}
}
}

View File

@ -0,0 +1,35 @@
using Verse;
using HarmonyLib;
using rjw;
using System;
using System.Reflection;
namespace STD
{
///<summary>
///roll for STD update every 10 sex need ticks
///</summary>
[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());
}
}
}
}

View File

@ -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)

View File

@ -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<bool> std_sex;
public static SettingHandle<bool> 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);
}
}
}

View File

@ -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<std_def>.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);
}
}
}

View File

@ -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

View File

@ -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