diff --git a/1.3/Assemblies/RJW_PlasticSurgeries.dll b/1.3/Assemblies/RJW_PlasticSurgeries.dll
index 2761384..1777e8f 100644
Binary files a/1.3/Assemblies/RJW_PlasticSurgeries.dll and b/1.3/Assemblies/RJW_PlasticSurgeries.dll differ
diff --git a/1.4/Assemblies/RJW_PlasticSurgeries.dll b/1.4/Assemblies/RJW_PlasticSurgeries.dll
index 512eb3e..30f5e3c 100644
Binary files a/1.4/Assemblies/RJW_PlasticSurgeries.dll and b/1.4/Assemblies/RJW_PlasticSurgeries.dll differ
diff --git a/1.5/Assemblies/RJW_PlasticSurgeries.dll b/1.5/Assemblies/RJW_PlasticSurgeries.dll
index 717f787..310d315 100644
Binary files a/1.5/Assemblies/RJW_PlasticSurgeries.dll and b/1.5/Assemblies/RJW_PlasticSurgeries.dll differ
diff --git a/About/Manifest.xml b/About/Manifest.xml
index cb4e292..320abaa 100644
--- a/About/Manifest.xml
+++ b/About/Manifest.xml
@@ -2,5 +2,5 @@
RJW PlasticSurgeries
- 5400.0.1.8
-
\ No newline at end of file
+ 5603.0.1.8
+
diff --git a/Source/RJW_PlasticSurgeries.sln b/Source/RJW_PlasticSurgeries.sln
index 9b720f4..a8eb130 100644
--- a/Source/RJW_PlasticSurgeries.sln
+++ b/Source/RJW_PlasticSurgeries.sln
@@ -15,12 +15,12 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {EB363145-6DB4-42CB-B2CB-82DA7AE02A97}.Debug|Any CPU.ActiveCfg = Release|Any CPU
- {EB363145-6DB4-42CB-B2CB-82DA7AE02A97}.Debug|Any CPU.Build.0 = Release|Any CPU
+ {EB363145-6DB4-42CB-B2CB-82DA7AE02A97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EB363145-6DB4-42CB-B2CB-82DA7AE02A97}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB363145-6DB4-42CB-B2CB-82DA7AE02A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB363145-6DB4-42CB-B2CB-82DA7AE02A97}.Release|Any CPU.Build.0 = Release|Any CPU
- {F17C6B3F-BA9D-4133-A201-1265A64BCB72}.Debug|Any CPU.ActiveCfg = Release|Any CPU
- {F17C6B3F-BA9D-4133-A201-1265A64BCB72}.Debug|Any CPU.Build.0 = Release|Any CPU
+ {F17C6B3F-BA9D-4133-A201-1265A64BCB72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F17C6B3F-BA9D-4133-A201-1265A64BCB72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F17C6B3F-BA9D-4133-A201-1265A64BCB72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F17C6B3F-BA9D-4133-A201-1265A64BCB72}.Release|Any CPU.Build.0 = Release|Any CPU
{02AA6D85-913F-44B8-9C32-6E8024261824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
diff --git a/Source/RJW_PlasticSurgeries/1.5/Recipe_Surgery_Mammoplasty.cs b/Source/RJW_PlasticSurgeries/1.5/Recipe_Surgery_Mammoplasty.cs
new file mode 100644
index 0000000..549373c
--- /dev/null
+++ b/Source/RJW_PlasticSurgeries/1.5/Recipe_Surgery_Mammoplasty.cs
@@ -0,0 +1,198 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using rjw;
+using Verse;
+
+namespace RJW_PlasticSurgeries
+{
+ public abstract class Recipe_Surgery_Mammoplasty : Recipe_Plastic_Surgery
+ {
+ protected override BodyPartRecord GetPartCandidate(Pawn pawn)
+ {
+ return Genital_Helper.get_genitalsBPR(pawn);
+ }
+
+ protected override bool HasPart(Pawn pawn, List hediffs)
+ {
+ return Genital_Helper.has_breasts(pawn, hediffs) &&
+ pawn.GetBreastList().Any(hed => hed.Severity >= 0.02f);
+ }
+
+ protected override List GetHediffs(Pawn pawn)
+ {
+ throw new NotSupportedException();
+ }
+
+ protected void SurgeryCupX(Pawn pawn, int stage)
+ {
+ pawn.GetBreastList().ForEach(hed =>
+ {
+ float severity;
+ if (TryGetSeverityFromSize(hed, stage, out severity)) hed.Severity = severity;
+ });
+ }
+
+ private static bool TryGetSeverityFromSize(Hediff hediff, float cupSize, out float severity)
+ {
+ var list = (hediff.def as HediffDef_SexPart)?.sizeProfile.cupSizes;
+
+ if (list == null)
+ {
+ severity = 0f;
+ return false;
+ }
+
+ var curve = new SimpleCurve(hediff.def.stages.Zip(list,
+ (stage, s) => new CurvePoint(s, stage.minSeverity)));
+ severity = curve.Evaluate(cupSize);
+ return true;
+ }
+
+ protected override (HediffDef, float) GetLicentiaDamage() => throw new NotSupportedException();
+ }
+
+ public class Recipe_Surgery_Mammoplasty_A : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 1);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_B : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 2);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_C : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 3);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_D : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 4);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_E : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 6);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_F : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 7);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_G : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 9);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_H : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 11);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_J : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 13);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_K : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 15);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_L : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 17);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_M : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 19);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_N : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 21);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_O : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 23);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_P : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 25);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_Q : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 27);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_R : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 29);
+ }
+ }
+
+ public class Recipe_Surgery_Mammoplasty_Unknown : Recipe_Surgery_Mammoplasty
+ {
+ protected override void SurgeryResult(Pawn pawn)
+ {
+ SurgeryCupX(pawn, 31);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/RJW_PlasticSurgeries/About/Manifest.xml b/Source/RJW_PlasticSurgeries/About/Manifest.xml
index cb4e292..320abaa 100644
--- a/Source/RJW_PlasticSurgeries/About/Manifest.xml
+++ b/Source/RJW_PlasticSurgeries/About/Manifest.xml
@@ -2,5 +2,5 @@
RJW PlasticSurgeries
- 5400.0.1.8
-
\ No newline at end of file
+ 5603.0.1.8
+
diff --git a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.3.csproj b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.3.csproj
index 71b95a0..9497018 100644
--- a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.3.csproj
+++ b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.3.csproj
@@ -15,8 +15,8 @@
11
©2024 Stardust3D
Stardust3D
- 5400.0.1.8
- 5400.0.1.8
+ 5603.0.1.8
+ 5603.0.1.8
true
RJW_PlasticSurgeries.snk
Surgically alter pawn's genitals.
@@ -51,4 +51,4 @@
-
\ No newline at end of file
+
diff --git a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.4.csproj b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.4.csproj
index ea6ba56..33812dd 100644
--- a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.4.csproj
+++ b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.4.csproj
@@ -15,8 +15,8 @@
11
©2024 Stardust3D
Stardust3D
- 5400.0.1.8
- 5400.0.1.8
+ 5603.0.1.8
+ 5603.0.1.8
true
RJW_PlasticSurgeries.snk
Surgically alter pawn's genitals.
diff --git a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.5.csproj b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.5.csproj
index 8961655..cb606b2 100644
--- a/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.5.csproj
+++ b/Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.5.csproj
@@ -8,15 +8,15 @@
Properties
RJW_PlasticSurgeries
RJW_PlasticSurgeries
- net472
+ net48
512
11
©2024 Stardust3D
Stardust3D
- 5400.0.1.8
- 5400.0.1.8
+ 5603.0.1.8
+ 5603.0.1.8
true
RJW_PlasticSurgeries.snk
Surgically alter pawn's genitals.
@@ -32,7 +32,7 @@
-
+
@@ -48,6 +48,7 @@
+
diff --git a/Source/build.gradle.kts b/Source/build.gradle.kts
index 8e3c668..69624a0 100644
--- a/Source/build.gradle.kts
+++ b/Source/build.gradle.kts
@@ -3,7 +3,7 @@ plugins {
alias(libs.plugins.versions)
}
-version = "5400.0.1.8"
+version = "5603.0.1.8"
val friendlyName = "rjw-plasticsurgeries"
tasks.register("buildC#_1.3") {
@@ -12,7 +12,7 @@ tasks.register("buildC#_1.3") {
// or a project file (.csproj or .vbproj)
projectFile = file("${rootProject.name}/${rootProject.name}_1.3.csproj")
- targets = listOf("Clean", "Rebuild")
+ targets = listOf("Restore", "Clean", "Rebuild")
configuration = "Release"
// destinationDir = "build/msbuild/bin"
@@ -24,7 +24,7 @@ tasks.register("buildC#_1.4") {
// or a project file (.csproj or .vbproj)
projectFile = file("${rootProject.name}/${rootProject.name}_1.4.csproj")
- targets = listOf("Clean", "Rebuild")
+ targets = listOf("Restore", "Clean", "Rebuild")
configuration = "Release"
// destinationDir = "build/msbuild/bin"
@@ -36,7 +36,7 @@ tasks.register("buildC#_1.5") {
// or a project file (.csproj or .vbproj)
projectFile = file("${rootProject.name}/${rootProject.name}_1.5.csproj")
- targets = listOf("Clean", "Rebuild")
+ targets = listOf("Restore", "Clean", "Rebuild")
configuration = "Release"
// destinationDir = "build/msbuild/bin"
@@ -45,7 +45,7 @@ tasks.register("buildC#_1.5") {
tasks.register("sign_1.3") {
dependsOn("buildC#_1.3")
workingDir = project.projectDir.resolve("${rootProject.name}/bin/Release/1.3/net472")
- executable = "H:\\Windows Kits\\10\\bin\\10.0.22621.0\\x64\\signtool.exe"
+ executable = "H:\\Windows Kits\\10\\bin\\10.0.26100.0\\x64\\signtool.exe"
args = listOf(
"sign",
"/seal",
@@ -63,7 +63,7 @@ tasks.register("sign_1.3") {
tasks.register("sign_1.4") {
dependsOn("buildC#_1.4")
workingDir = project.projectDir.resolve("${rootProject.name}/bin/Release/1.4/net472")
- executable = "H:\\Windows Kits\\10\\bin\\10.0.22621.0\\x64\\signtool.exe"
+ executable = "H:\\Windows Kits\\10\\bin\\10.0.26100.0\\x64\\signtool.exe"
args = listOf(
"sign",
"/seal",
@@ -80,8 +80,8 @@ tasks.register("sign_1.4") {
tasks.register("sign_1.5") {
dependsOn("buildC#_1.5")
- workingDir = project.projectDir.resolve("${rootProject.name}/bin/Release/1.5/net472")
- executable = "H:\\Windows Kits\\10\\bin\\10.0.22621.0\\x64\\signtool.exe"
+ workingDir = project.projectDir.resolve("${rootProject.name}/bin/Release/1.5/net48")
+ executable = "H:\\Windows Kits\\10\\bin\\10.0.26100.0\\x64\\signtool.exe"
args = listOf(
"sign",
"/seal",
@@ -149,7 +149,7 @@ tasks.register("copyDll_1.4") {
tasks.register("copyDll_1.5") {
dependsOn("sign_1.5")
- from(project.projectDir.resolve("${rootProject.name}/bin/Release/1.5/net472/${rootProject.name}.dll"))
+ from(project.projectDir.resolve("${rootProject.name}/bin/Release/1.5/net48/${rootProject.name}.dll"))
into(project.projectDir.parentFile.resolve("1.5/Assemblies"))
}
diff --git a/Source/global.json b/Source/global.json
index 2ddda36..93681ff 100644
--- a/Source/global.json
+++ b/Source/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "8.0.0",
+ "version": "9.0.0",
"rollForward": "latestMinor",
"allowPrerelease": false
}
diff --git a/Source/gradle/libs.versions.toml b/Source/gradle/libs.versions.toml
index de22e81..a650f84 100644
--- a/Source/gradle/libs.versions.toml
+++ b/Source/gradle/libs.versions.toml
@@ -1,6 +1,6 @@
[versions]
versions = "0.51.0"
-msbuild = "4.6"
+msbuild = "4.7"
[libraries]
diff --git a/Source/gradle/wrapper/gradle-wrapper.jar b/Source/gradle/wrapper/gradle-wrapper.jar
index e644113..a4b76b9 100644
Binary files a/Source/gradle/wrapper/gradle-wrapper.jar and b/Source/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Source/gradle/wrapper/gradle-wrapper.properties b/Source/gradle/wrapper/gradle-wrapper.properties
index a441313..e2847c8 100644
--- a/Source/gradle/wrapper/gradle-wrapper.properties
+++ b/Source/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/Source/gradlew b/Source/gradlew
index b740cf1..f5feea6 100644
--- a/Source/gradlew
+++ b/Source/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -84,7 +86,8 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
diff --git a/Source/gradlew.bat b/Source/gradlew.bat
index 25da30d..9d21a21 100644
--- a/Source/gradlew.bat
+++ b/Source/gradlew.bat
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################