diff --git a/1.3/Assemblies/RJW_PlasticSurgeries.dll b/1.3/Assemblies/RJW_PlasticSurgeries.dll index f035d61..9e0e3e6 100644 Binary files a/1.3/Assemblies/RJW_PlasticSurgeries.dll and b/1.3/Assemblies/RJW_PlasticSurgeries.dll differ diff --git a/About/Manifest.xml b/About/Manifest.xml index 5e02532..5abb061 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -2,5 +2,5 @@ RJW PlasticSurgeries - 4943.0.1.3 + 4943.0.1.4 \ No newline at end of file diff --git a/Assemblies/RJW_PlasticSurgeries.dll b/Assemblies/RJW_PlasticSurgeries.dll index f035d61..9e0e3e6 100644 Binary files a/Assemblies/RJW_PlasticSurgeries.dll and b/Assemblies/RJW_PlasticSurgeries.dll differ diff --git a/Defs/Recipe_Surgery/Recipes_Surgery_Penoplasty.xml b/Defs/Recipe_Surgery/Recipes_Surgery_Penoplasty.xml new file mode 100644 index 0000000..3edac14 --- /dev/null +++ b/Defs/Recipe_Surgery/Recipes_Surgery_Penoplasty.xml @@ -0,0 +1,72 @@ + + + + + Surgery_Penoplasty + + Surgically enlarges the pawn's Penis by 25%. + + enlarging Penis + Surgery + Recipe_Surgery + MedicalOperationSpeed + Medicine + 0.2 + 400 + true + +
  • Human
  • +
    + 95 + +
  • + + +
  • Medicine
  • + + + 1 + +
    + + +
  • Medicine
  • +
    +
    +
    + + Surgery_Penoplasty_Micro + + Surgically gives the pawn an micro Penis. + RJW_PlasticSurgeries.Recipe_Surgery_Penoplasty_Micro + alter Penis size to micro + + + Surgery_Penoplasty_Small + + Surgically gives the pawn an small Penis. + RJW_PlasticSurgeries.Recipe_Surgery_Penoplasty_Small + alter Penis size to small + + + Surgery_Penoplasty_Average + + Surgically gives the pawn an average Penis. + RJW_PlasticSurgeries.Recipe_Surgery_Penoplasty_Average + alter Penis size to average + + + Surgery_Penoplasty_Large + + Surgically gives the pawn an accomodating Penis. + RJW_PlasticSurgeries.Recipe_Surgery_Penoplasty_Large + alter Penis size to large + + + Surgery_Penoplasty_Huge + + Surgically gives the pawn an huge Penis. + RJW_PlasticSurgeries.Recipe_Surgery_Penoplasty_Huge + alter Penis size to huge + +
    \ No newline at end of file diff --git a/Source/RJW_PlasticSurgeries/Properties/AssemblyInfo.cs b/Source/RJW_PlasticSurgeries/Properties/AssemblyInfo.cs index 516f4fd..911e560 100644 --- a/Source/RJW_PlasticSurgeries/Properties/AssemblyInfo.cs +++ b/Source/RJW_PlasticSurgeries/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("RJW Vaginoplasty")] +[assembly: AssemblyTitle("RJW PlasticSurgeries")] [assembly: AssemblyDescription("Surgically alter pawn's genitals.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4943.0.1.3")] -[assembly: AssemblyFileVersion("4943.0.1.3")] \ No newline at end of file +[assembly: AssemblyVersion("4943.0.1.5")] +[assembly: AssemblyFileVersion("4943.0.1.5")] \ No newline at end of file diff --git a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.csproj b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.csproj index a28f25d..085cb80 100644 --- a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.csproj +++ b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.csproj @@ -48,8 +48,7 @@ false - - + RJW_PlasticSurgeries.snk @@ -72,6 +71,7 @@ + @@ -89,6 +89,9 @@ Defs\Recipe_Surgery\Recipes_Surgery_Mammoplasty.xml + + Defs\Recipe_Surgery\Recipes_Surgery_Penoplasty.xml + Defs\Recipe_Surgery\Recipes_Surgery_Sphinctoplasty.xml @@ -96,5 +99,8 @@ Defs\Recipe_Surgery\Recipes_Surgery_Vaginoplasty.xml + + + \ No newline at end of file diff --git a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.snk b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.snk new file mode 100644 index 0000000..26d5d3a Binary files /dev/null and b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries.snk differ diff --git a/Source/RJW_PlasticSurgeries/Recipe_Surgery_Penoplasty.cs b/Source/RJW_PlasticSurgeries/Recipe_Surgery_Penoplasty.cs new file mode 100644 index 0000000..0234026 --- /dev/null +++ b/Source/RJW_PlasticSurgeries/Recipe_Surgery_Penoplasty.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using Dyspareunia; +using RimWorld; +using rjw; +using Verse; +using DamageDefOf = Dyspareunia.DamageDefOf; + +namespace RJW_PlasticSurgeries +{ + public abstract class Recipe_Surgery_Penoplasty : Recipe_Surgery + { + public override IEnumerable GetPartsToApplyOn(Pawn pawn, RecipeDef recipe) + { + var part = Genital_Helper.get_genitalsBPR(pawn); + if (part != null) + { + var hediffs = Genital_Helper.get_PartsHediffList(pawn, part); + if (Genital_Helper.has_penis_fertile(pawn, hediffs) || + Genital_Helper.has_penis_infertile(pawn, hediffs)) yield return part; + } + } + + /// + public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List ingredients, + Bill bill) + { + if (billDoer != null) + { + TaleRecorder.RecordTale(TaleDefOf.DidSurgery, billDoer, pawn); + SurgeryResult(pawn); + } + } + + public abstract void SurgeryResult(Pawn pawn); + + protected void SurgeryX(Pawn pawn, float severity) + { + pawn.GetGenitalsList().FindAll(Genital_Helper.is_penis).ForEach(hed => + { + hed.Severity = severity; + try + { + PenetrationUtility.AddDamageHediff(DamageDefOf.SexStretch, 0.5f, hed, null); + } + catch (Exception e) + { + Log.Error("Try enabling Dyspareunia for sore genitals"); + } + }); + } + } + + public class Recipe_Surgery_Penoplasty_Micro : Recipe_Surgery_Penoplasty + { + public override void SurgeryResult(Pawn pawn) => SurgeryX(pawn, 0.1f); + } + + public class Recipe_Surgery_Penoplasty_Small : Recipe_Surgery_Penoplasty + { + public override void SurgeryResult(Pawn pawn) => SurgeryX(pawn, 0.3f); + } + + public class Recipe_Surgery_Penoplasty_Average : Recipe_Surgery_Penoplasty + { + public override void SurgeryResult(Pawn pawn) => SurgeryX(pawn, 0.5f); + } + + public class Recipe_Surgery_Penoplasty_Large : Recipe_Surgery_Penoplasty + { + public override void SurgeryResult(Pawn pawn) => SurgeryX(pawn, 0.7f); + } + + public class Recipe_Surgery_Penoplasty_Huge : Recipe_Surgery_Penoplasty + { + public override void SurgeryResult(Pawn pawn) => SurgeryX(pawn, 0.9f); + } +} \ No newline at end of file diff --git a/Source/build.gradle.kts b/Source/build.gradle.kts index 4d7cc8a..41f2ff5 100644 --- a/Source/build.gradle.kts +++ b/Source/build.gradle.kts @@ -11,7 +11,7 @@ plugins { //id("com.ullink.nunit") version "1.12" } -version = "4943.0.1.3" +version = "4943.0.1.5" val friendlyName = "rjw-plasticsurgeries" tasks.register("buildC#") { diff --git a/Source/gradle/wrapper/gradle-wrapper.properties b/Source/gradle/wrapper/gradle-wrapper.properties index e750102..2e6e589 100644 --- a/Source/gradle/wrapper/gradle-wrapper.properties +++ b/Source/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists