Merge branch 'release/5400.0.1.7'

# Conflicts:
#	1.3/Assemblies/RJW_PlasticSurgeries.dll
#	1.4/Assemblies/RJW_PlasticSurgeries.dll
#	About/Manifest.xml
#	Source/RJW_PlasticSurgeries/About/Manifest.xml
#	Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.3.csproj
#	Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.4.csproj
#	Source/RJW_PlasticSurgeries/RJW_PlasticSurgeries_1.5.csproj
#	Source/build.gradle.kts
This commit is contained in:
Stardust3D 2024-05-27 21:00:51 +02:00
commit 85ce36176a
18 changed files with 215 additions and 32 deletions

Binary file not shown.

View file

@ -6,6 +6,7 @@
<supportedVersions> <supportedVersions>
<li>1.3</li> <li>1.3</li>
<li>1.4</li> <li>1.4</li>
<li>1.5</li>
</supportedVersions> </supportedVersions>
<packageId>Stardust3D.RJW.PlasticSurgeries</packageId> <packageId>Stardust3D.RJW.PlasticSurgeries</packageId>
<description>Surgically alter pawn's genitals.</description> <description>Surgically alter pawn's genitals.</description>

View file

@ -2,5 +2,5 @@
<Manifest> <Manifest>
<identifier>RJW PlasticSurgeries</identifier> <identifier>RJW PlasticSurgeries</identifier>
<version>5390.0.1.6</version> <version>5400.0.1.7</version>
</Manifest> </Manifest>

View file

@ -0,0 +1,61 @@
using System.Collections.Generic;
using RimWorld;
using rjw;
using Verse;
namespace RJW_PlasticSurgeries
{
public abstract class Recipe_Plastic_Surgery : Recipe_Surgery
{
protected readonly bool HasDyspareunia = false; // ModLister.HasActiveModWithName("Dyspareunia");
protected readonly bool HasLicentia = ModLister.HasActiveModWithName("RimJobWorld - Licentia Labs");
public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
{
var part = GetPartCandidate(pawn);
if (part != null)
{
var hediffs = Genital_Helper.get_PartsHediffList(pawn, part);
if (HasPart(pawn, hediffs)) yield return part;
}
}
protected abstract BodyPartRecord GetPartCandidate(Pawn pawn);
protected abstract bool HasPart(Pawn pawn, List<Hediff> hediffs);
public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients,
Bill bill)
{
if (billDoer != null)
{
TaleRecorder.RecordTale(TaleDefOf.DidSurgery, billDoer, pawn);
SurgeryResult(pawn);
}
}
protected abstract void SurgeryResult(Pawn pawn);
/// <Compatibility />
private static void DamageHediff(Hediff hed)
{
}
protected void SurgeryX(Pawn pawn, float severity, bool damagePart = false)
{
GetHediffs(pawn).ForEach(hed =>
{
hed.Severity = severity;
if (damagePart && HasDyspareunia) DamageHediff(hed);
if (damagePart && HasLicentia)
{
var (type, damage) = GetLicentiaDamage();
LicentiaLabs.DamageHelper.ApplyDamage(pawn, hed.Part, type, damage);
}
});
}
protected abstract List<Hediff> GetHediffs(Pawn pawn);
protected abstract (HediffDef, float) GetLicentiaDamage();
}
}

View file

@ -0,0 +1,61 @@
using System.Collections.Generic;
using RimWorld;
using Verse;
using static rjw.VanillaTraitDefOf;
namespace RJW_PlasticSurgeries
{
/// <inheritdoc />
public abstract class Recipe_Surgery_Beautify : Recipe_Surgery
{
/// <inheritdoc />
public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
{
if (!pawn.story.traits.HasTrait(Beauty) ||
pawn.story.traits.HasTrait(Beauty) && pawn.story.traits.GetTrait(Beauty).Degree < 2)
yield return pawn.RaceProps.body.corePart;
}
/// <inheritdoc />
public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients,
Bill bill)
{
if (billDoer != null)
{
TaleRecorder.RecordTale(TaleDefOf.DidSurgery, billDoer, pawn);
SurgeryResult(pawn);
}
}
/// <summary>
///
/// </summary>
/// <param name="pawn"></param>
public abstract void SurgeryResult(Pawn pawn);
/// <summary>
/// Setts the severity of the Beautiful trait for the selected pawn.
/// If the trait doesn't exist in the pawns traits, it will be added.
/// </summary>
/// <param name="pawn">the pawn to modify</param>
/// <param name="severity">the new severity of the pawn's Beautiful trait</param>
protected void SurgeryX(Pawn pawn, int severity)
{
if (pawn.story.traits.HasTrait(Beauty))
{
pawn.story.traits.allTraits.FindAll(t => Beauty.ConflictsWith(t))
.ForEach(t => pawn.story.traits.RemoveTrait(t));
pawn.story.traits.RemoveTrait(pawn.story.traits.allTraits.Find(t => t.def == Beauty));
}
pawn.story.traits.GainTrait(new Trait(Beauty, severity));
}
}
/// <inheritdoc />
public class Recipe_Surgery_Beautify_Beautiful : Recipe_Surgery_Beautify
{
/// <inheritdoc />
public override void SurgeryResult(Pawn pawn) => SurgeryX(pawn, 2);
}
}

View file

@ -0,0 +1,26 @@
using Verse;
using RimWorld;
namespace rjw
{
[DefOf]
public static class VanillaTraitDefOf
{
public static TraitDef Tough;
public static TraitDef Nerves;
public static TraitDef Beauty;
public static TraitDef TooSmart;
public static TraitDef NaturalMood;
public static TraitDef Cannibal;
static VanillaTraitDefOf()
{
DefOfHelper.EnsureInitializedInCtor(typeof(VanillaTraitDefOf));
}
}
}

View file

@ -6,6 +6,7 @@
<supportedVersions> <supportedVersions>
<li>1.3</li> <li>1.3</li>
<li>1.4</li> <li>1.4</li>
<li>1.5</li>
</supportedVersions> </supportedVersions>
<packageId>Stardust3D.RJW.PlasticSurgeries</packageId> <packageId>Stardust3D.RJW.PlasticSurgeries</packageId>
<description>Surgically alter pawn's genitals.</description> <description>Surgically alter pawn's genitals.</description>

View file

@ -2,5 +2,5 @@
<Manifest> <Manifest>
<identifier>RJW PlasticSurgeries</identifier> <identifier>RJW PlasticSurgeries</identifier>
<version>5390.0.1.6</version> <version>5400.0.1.7</version>
</Manifest> </Manifest>

View file

@ -15,8 +15,8 @@
<LangVersion>11</LangVersion> <LangVersion>11</LangVersion>
<Copyright>©2024 Stardust3D</Copyright> <Copyright>©2024 Stardust3D</Copyright>
<Company>Stardust3D</Company> <Company>Stardust3D</Company>
<AssemblyVersion>5390.0.1.6</AssemblyVersion> <AssemblyVersion>5400.0.1.7</AssemblyVersion>
<FileVersion>5390.0.1.6</FileVersion> <FileVersion>5400.0.1.7</FileVersion>
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>RJW_PlasticSurgeries.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>RJW_PlasticSurgeries.snk</AssemblyOriginatorKeyFile>
<Description>Surgically alter pawn's genitals.</Description> <Description>Surgically alter pawn's genitals.</Description>
@ -31,7 +31,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Lib.Harmony" Version="2.3.3" /> <PackageReference Include="Lib.Harmony" Version="2.3.3" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.7.2" />
<PackageReference Include="Krafs.Rimworld.Ref" Version="1.3.3389" /> <PackageReference Include="Krafs.Rimworld.Ref" Version="1.3.3389" />
<PackageReference Include="UnlimitedHugs.Rimworld.HugsLib" Version="11.0.3" /> <PackageReference Include="UnlimitedHugs.Rimworld.HugsLib" Version="11.0.3" />
</ItemGroup> </ItemGroup>

View file

@ -15,8 +15,8 @@
<LangVersion>11</LangVersion> <LangVersion>11</LangVersion>
<Copyright>©2024 Stardust3D</Copyright> <Copyright>©2024 Stardust3D</Copyright>
<Company>Stardust3D</Company> <Company>Stardust3D</Company>
<AssemblyVersion>5390.0.1.6</AssemblyVersion> <AssemblyVersion>5400.0.1.7</AssemblyVersion>
<FileVersion>5390.0.1.6</FileVersion> <FileVersion>5400.0.1.7</FileVersion>
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>RJW_PlasticSurgeries.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>RJW_PlasticSurgeries.snk</AssemblyOriginatorKeyFile>
<Description>Surgically alter pawn's genitals.</Description> <Description>Surgically alter pawn's genitals.</Description>
@ -31,7 +31,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Lib.Harmony" Version="2.3.3" /> <PackageReference Include="Lib.Harmony" Version="2.3.3" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.7.2" />
<PackageReference Include="Krafs.Rimworld.Ref" Version="1.4.3901" /> <PackageReference Include="Krafs.Rimworld.Ref" Version="1.4.3901" />
<PackageReference Include="UnlimitedHugs.Rimworld.HugsLib" Version="11.0.3" /> <PackageReference Include="UnlimitedHugs.Rimworld.HugsLib" Version="11.0.3" />
</ItemGroup> </ItemGroup>

View file

@ -15,14 +15,14 @@
<LangVersion>11</LangVersion> <LangVersion>11</LangVersion>
<Copyright>©2024 Stardust3D</Copyright> <Copyright>©2024 Stardust3D</Copyright>
<Company>Stardust3D</Company> <Company>Stardust3D</Company>
<AssemblyVersion>5390.0.1.6</AssemblyVersion> <AssemblyVersion>5400.0.1.7</AssemblyVersion>
<FileVersion>5390.0.1.6</FileVersion> <FileVersion>5400.0.1.7</FileVersion>
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>RJW_PlasticSurgeries.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>RJW_PlasticSurgeries.snk</AssemblyOriginatorKeyFile>
<Description>Surgically alter pawn's genitals.</Description> <Description>Surgically alter pawn's genitals.</Description>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\1.4\</OutputPath> <OutputPath>bin\Release\1.5\</OutputPath>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<None Include="RJW_PlasticSurgeries.snk" /> <None Include="RJW_PlasticSurgeries.snk" />
@ -31,14 +31,14 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Lib.Harmony" Version="2.3.3" /> <PackageReference Include="Lib.Harmony" Version="2.3.3" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.7.2" />
<PackageReference Include="Krafs.Rimworld.Ref" Version="1.5.4055-beta" /> <PackageReference Include="Krafs.Rimworld.Ref" Version="1.5.4104" />
<PackageReference Include="UnlimitedHugs.Rimworld.HugsLib" Version="11.0.3" /> <PackageReference Include="UnlimitedHugs.Rimworld.HugsLib" Version="11.0.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Dyspareunia"> <!--<Reference Include="Dyspareunia">
<HintPath>..\..\..\dyspareunia\1.5\Assemblies\Dyspareunia.dll</HintPath> <HintPath>..\..\..\dyspareunia\1.5\Assemblies\Dyspareunia.dll</HintPath>
</Reference> </Reference>-->
<Reference Include="LicentiaLabs"> <Reference Include="LicentiaLabs">
<HintPath>..\..\..\licentia-labs\Assemblies\LicentiaLabs.dll</HintPath> <HintPath>..\..\..\licentia-labs\Assemblies\LicentiaLabs.dll</HintPath>
</Reference> </Reference>
@ -49,6 +49,8 @@
<ItemGroup> <ItemGroup>
<Compile Remove="1.3\**" /> <Compile Remove="1.3\**" />
<Compile Remove="1.4\**" /> <Compile Remove="1.4\**" />
<Compile Remove="Recipe_Plastic_Surgery.cs" />
<Compile Remove="Recipe_Surgery_Beautify.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Remove="1.3\**" /> <EmbeddedResource Remove="1.3\**" />

View file

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using LicentiaLabs; using LicentiaLabs;
using rjw; using rjw;
using Verse; using Verse;
@ -23,8 +24,15 @@ namespace RJW_PlasticSurgeries
return pawn.GetGenitalsList().FindAll(Genital_Helper.is_penis); return pawn.GetGenitalsList().FindAll(Genital_Helper.is_penis);
} }
protected override (HediffDef, float) GetLicentiaDamage() => protected override (HediffDef, float) GetLicentiaDamage()
(Licentia.HediffDefs.StretchTear, 0.2f); {
if (HasLicentia)
{
return (Licentia.HediffDefs.StretchTear, 0.2f);
}
throw new NotSupportedException();
}
} }
public class Recipe_Surgery_Penoplasty_Micro : Recipe_Surgery_Penoplasty public class Recipe_Surgery_Penoplasty_Micro : Recipe_Surgery_Penoplasty

View file

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using LicentiaLabs; using LicentiaLabs;
using rjw; using rjw;
using Verse; using Verse;
@ -21,9 +22,16 @@ namespace RJW_PlasticSurgeries
{ {
return pawn.GetAnusList(); return pawn.GetAnusList();
} }
protected override (HediffDef, float) GetLicentiaDamage() => protected override (HediffDef, float) GetLicentiaDamage()
(Licentia.HediffDefs.StretchTear, 0.2f); {
if (HasLicentia)
{
return (Licentia.HediffDefs.StretchTear, 0.2f);
}
throw new NotSupportedException();
}
} }
public class Recipe_Surgery_Sphinctoplasty_Micro : Recipe_Surgery_Sphinctoplasty public class Recipe_Surgery_Sphinctoplasty_Micro : Recipe_Surgery_Sphinctoplasty

View file

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using LicentiaLabs; using LicentiaLabs;
using rjw; using rjw;
using Verse; using Verse;
@ -21,9 +22,16 @@ namespace RJW_PlasticSurgeries
{ {
return pawn.GetGenitalsList().FindAll(Genital_Helper.is_vagina); return pawn.GetGenitalsList().FindAll(Genital_Helper.is_vagina);
} }
protected override (HediffDef, float) GetLicentiaDamage() => protected override (HediffDef, float) GetLicentiaDamage()
(Licentia.HediffDefs.StretchTear, 0.2f); {
if (HasLicentia)
{
return (Licentia.HediffDefs.StretchTear, 0.2f);
}
throw new NotSupportedException();
}
} }
public class Recipe_Surgery_Vaginoplasty_Micro : Recipe_Surgery_Vaginoplasty public class Recipe_Surgery_Vaginoplasty_Micro : Recipe_Surgery_Vaginoplasty

View file

@ -11,7 +11,7 @@ plugins {
alias(libs.plugins.versions) alias(libs.plugins.versions)
} }
version = "5390.0.1.6" version = "5400.0.1.7"
val friendlyName = "rjw-plasticsurgeries" val friendlyName = "rjw-plasticsurgeries"
tasks.register<com.ullink.Msbuild>("buildC#_1.3") { tasks.register<com.ullink.Msbuild>("buildC#_1.3") {
@ -105,7 +105,7 @@ tasks.register<Exec>("sign_1.5") {
} }
tasks.register("copy") { tasks.register("copy") {
dependsOn("copy_1.3", "copy_1.4", "copy_about") dependsOn("copy_1.3", "copy_1.4", "copy_1.5", "copy_about")
} }
tasks.register<Copy>("copy_about") { tasks.register<Copy>("copy_about") {
@ -115,19 +115,25 @@ tasks.register<Copy>("copy_about") {
tasks.register<Copy>("copy_1.3") { tasks.register<Copy>("copy_1.3") {
dependsOn("copyDll_1.3") dependsOn("copyDll_1.3")
from(project.projectDir.resolve("${rootProject.name}/1.3")) from(project.projectDir.resolve("${rootProject.name}/1.3")){
exclude("**/*.cs")
}
into(project.projectDir.parentFile.resolve("1.3")) into(project.projectDir.parentFile.resolve("1.3"))
} }
tasks.register<Copy>("copy_1.4") { tasks.register<Copy>("copy_1.4") {
dependsOn("copyDll_1.4") dependsOn("copyDll_1.4")
from(project.projectDir.resolve("${rootProject.name}/1.4")) from(project.projectDir.resolve("${rootProject.name}/1.4")){
exclude("**/*.cs")
}
into(project.projectDir.parentFile.resolve("1.4")) into(project.projectDir.parentFile.resolve("1.4"))
} }
tasks.register<Copy>("copy_1.5") { tasks.register<Copy>("copy_1.5") {
dependsOn("copyDll_1.5") dependsOn("copyDll_1.5")
from(project.projectDir.resolve("${rootProject.name}/1.5")) from(project.projectDir.resolve("${rootProject.name}/1.5")){
exclude("**/*.cs")
}
into(project.projectDir.parentFile.resolve("1.5")) into(project.projectDir.parentFile.resolve("1.5"))
} }
@ -169,6 +175,7 @@ tasks.register<Zip>("buildZip") {
into("$friendlyName/Source/${rootProject.name}") { into("$friendlyName/Source/${rootProject.name}") {
from(project.projectDir.parentFile.resolve("Source/${rootProject.name}")) from(project.projectDir.parentFile.resolve("Source/${rootProject.name}"))
excludes.add("**/obj/**") excludes.add("**/obj/**")
excludes.add("**/bin/**")
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"sdk": { "sdk": {
"version": "6.0.0", "version": "8.0.0",
"rollForward": "latestMinor", "rollForward": "latestMinor",
"allowPrerelease": false "allowPrerelease": false
} }