1.5 support

This commit is contained in:
Ed86 2024-05-24 15:02:14 +03:00
parent c48d960619
commit dfed360143
8 changed files with 428 additions and 0 deletions

BIN
1.5/Assemblies/FH.dll Normal file

Binary file not shown.

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThoughtDef>
<defName>RJW_Holefucker</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>0.5</durationDays>
<stackLimit>1</stackLimit>
<stackedEffectMultiplier>1.0</stackedEffectMultiplier>
<stages>
<li>
<label>Fucked loose hole</label>
<description>Barelly felt anything 1/10, wouldn't recommend.</description>
<baseMoodEffect>-2</baseMoodEffect>
</li>
<li>
<label>Fucked tight hole</label>
<description>Felt great, should do this again!</description>
<baseMoodEffect>2</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>RJW_Holefucked</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>0.5</durationDays>
<stackLimit>1</stackLimit>
<stackedEffectMultiplier>1.0</stackedEffectMultiplier>
<stages>
<li>
<label>Fucked by small pp</label>
<description>Its cute but thats it.</description>
<baseMoodEffect>-2</baseMoodEffect>
</li>
<li>
<label>Fucked by big dick</label>
<description>Yes! Fill me more!</description>
<baseMoodEffect>2</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>

View file

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
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("RJWFB")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RJWFB")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("5b1a0ad6-cb29-4231-ae02-c352c6ac3500")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// 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("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

252
1.5/Source/Mod/fh.cs Normal file
View file

@ -0,0 +1,252 @@
using HarmonyLib;
using RimWorld;
using Verse;
using System;
using System.Collections.Generic;
using rjw;
using rjw.Modules.Interactions.Enums;
using System.Linq;
using System.Reflection;
namespace rjwfh
{
[StaticConstructorOnStartup]
internal static class InitHarmonyPatches
{
static InitHarmonyPatches()
{
var har = new Harmony("rjw.FH");
har.PatchAll(Assembly.GetExecutingAssembly());
}
}
[HarmonyPatch(typeof(AfterSexUtility), "think_about_sex", new Type[] { typeof(Pawn), typeof(Pawn), typeof(bool), typeof(SexProps), typeof(bool)})]
[StaticConstructorOnStartup]
static class Holefuck_AfterSexUtility_think_about_sex
{
public static readonly ThoughtDef RJW_fucker = DefDatabase<ThoughtDef>.GetNamed("RJW_Holefucker");
public static readonly ThoughtDef RJW_fucked = DefDatabase<ThoughtDef>.GetNamed("RJW_Holefucked");
[HarmonyPostfix]
private static void think_about_sex_Patch(Pawn pawn, Pawn partner, bool isReceiving, SexProps props, bool whoring = false)
{
try
{
if (pawn == null)
{
return;
}
if (partner == null)
{
return;
}
Pawn p1 = pawn;
Pawn p2 = partner;
List<Hediff> p1p = new List<Hediff>();
List<Hediff> p2p = new List<Hediff>();
List<Hediff> p1pf = new List<Hediff>();
List<Hediff> p2pf = new List<Hediff>();
Hediff pp = null;
Hediff hole = null;
ThoughtDef T = null;
int size = 0;
//Log.Message("p1 " + p1.Name);
//Log.Message("p2 " + p2.Name);
if (props.sexType == xxx.rjwSextype.Vaginal)
{
//Log.Message("Vaginal");
var interaction = rjw.Modules.Interactions.Helpers.InteractionHelper.GetWithExtension(props.dictionaryKey);
//pp fucks hole
if (interaction.DominantHasTag(GenitalTag.CanPenetrate) &&
interaction.SubmissiveHasFamily(GenitalFamily.Vagina))
{
//initiator fucks reciever
//Log.Message("straight");
if (!isReceiving)
{//p1(initiator) fucks p2(reciever)
p1pf.AddRange(p1.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
p2pf.AddRange(p2.GetGenitalsList().Where(x => Genital_Helper.is_vagina(x)));
T = RJW_fucker;
pp = p1pf.FirstOrDefault();
hole = p2pf.FirstOrDefault();
}
else
{//p1(reciever) fucked by p2(initiator)
p1pf.AddRange(p1.GetGenitalsList().Where(x => Genital_Helper.is_vagina(x)));
p2pf.AddRange(p2.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
T = RJW_fucked;
pp = p2pf.FirstOrDefault();
hole = p1pf.FirstOrDefault();
}
if (pp == null)
return;
if (hole == null)
return;
}
//hole "fucks" pp
else if (interaction.DominantHasFamily(GenitalFamily.Vagina) &&
interaction.SubmissiveHasTag(GenitalTag.CanPenetrate) &&
interaction.HasInteractionTag(InteractionTag.Reverse))
{
//initiator fucks (reverse fucked by/rides) reciever
//Log.Message("reverse");
if (!isReceiving)
{//p1(initiator) fucked by p2(reciever)
p1pf.AddRange(p1.GetGenitalsList().Where(x => Genital_Helper.is_vagina(x)));
p2pf.AddRange(p2.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
T = RJW_fucked;
pp = p2pf.FirstOrDefault();
hole = p1pf.FirstOrDefault();
}
else
{//p1(reciever) fucks p2(initiator)
p2pf.AddRange(p2.GetGenitalsList().Where(x => Genital_Helper.is_vagina(x)));
p1pf.AddRange(p1.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
T = RJW_fucker;
pp = p1pf.FirstOrDefault();
hole = p2pf.FirstOrDefault();
}
if (pp == null)
return;
if (hole == null)
return;
}
else
{
return;
}
}
else if (props.sexType == xxx.rjwSextype.Anal)
{
//Log.Message("Anal");
var interaction = rjw.Modules.Interactions.Helpers.InteractionHelper.GetWithExtension(props.dictionaryKey);
//pp fucks hole
if (interaction.DominantHasTag(GenitalTag.CanPenetrate) &&
interaction.SubmissiveHasFamily(GenitalFamily.Anus))
{
//initiator fucks reciever
//Log.Message("straight");
if (!isReceiving)
{//p1(initiator) fucks p2(reciever)
p1pf.AddRange(p1.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
p2pf.AddRange(p2.GetAnusList());
T = RJW_fucker;
pp = p1pf.FirstOrDefault();
hole = p2pf.FirstOrDefault();
}
else
{//p1(reciever) fucked by p2(initiator)
p1pf.AddRange(p1.GetAnusList());
p2pf.AddRange(p2.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
T = RJW_fucked;
pp = p2pf.FirstOrDefault();
hole = p1pf.FirstOrDefault();
}
if (pp == null)
return;
if (hole == null)
return;
}
//hole "fucks" pp
else if (interaction.DominantHasFamily(GenitalFamily.Anus) &&
interaction.SubmissiveHasTag(GenitalTag.CanPenetrate) &&
interaction.HasInteractionTag(InteractionTag.Reverse))
{
//initiator fucks (reverse fucked by/rides) reciever
//Log.Message("reverse");
if (!isReceiving)
{//p1(initiator) fucked by p2(reciever)
p1pf.AddRange(p1.GetAnusList());
p2pf.AddRange(p2.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
T = RJW_fucked;
pp = p2pf.FirstOrDefault();
hole = p1pf.FirstOrDefault();
}
else
{//p1(reciever) fucks p2(initiator)
p2pf.AddRange(p2.GetAnusList());
p1pf.AddRange(p1.GetGenitalsList().Where(x => Genital_Helper.is_penis(x)));
T = RJW_fucker;
pp = p1pf.FirstOrDefault();
hole = p2pf.FirstOrDefault();
}
if (pp == null)
return;
if (hole == null)
return;
}
else
{
return;
}
}
else if (props.sexType == xxx.rjwSextype.DoublePenetration)
{
//Log.Message("BP");
//todo, maybe
return;
}
else
{
return;
}
var stage = -1;
size = size_check(pp, hole);
if (size != 0)
{
if (size < 0)
stage = 0;
else
stage = 1;
if (stage != -1)
p1?.needs?.mood?.thoughts?.memories?.TryGainMemory(ThoughtMaker.MakeThought(T, stage), null);
}
return;
}
catch (Exception e)
{
Log.Error(e.ToString());
}
}
public static int size_check(Hediff pp, Hediff hole)
{
var i = 0;
//Log.Message("size_check:");
//Log.Message("pp " + pp.Severity);
//Log.Message("hole " + hole.Severity);
//Log.Message("dif " + (pp.Severity - hole.Severity));
if (pp.Severity - hole.Severity >= 0.2) // tight
{
//Log.Message("tight");
i++;
}
else if (pp.Severity - hole.Severity <= -0.2) // loose
{
//Log.Message("loose");
i--;
}
else // okayish
{
//Log.Message("okayish");
}
return i;
}
}
}

67
1.5/Source/Mod/fh.csproj Normal file
View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>FH</RootNamespace>
<AssemblyName>FH</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony, Version=2.3.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Lib.Harmony.2.3.3\lib\net472\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="HugsLib">
<HintPath>..\..\..\..\..\..\..\workshop\content\294100\818773962\v1.5\Assemblies\HugsLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJW">
<HintPath>..\..\..\..\rjw\1.5\Assemblies\RJW.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation" />
<Reference Include="UnityEngine.CoreModule">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
<Compile Include="fh.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Lib.Harmony" version="2.3.3" targetFramework="net472" />
</packages>

25
1.5/Source/mod.sln Normal file
View file

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FH", "Mod\fh.csproj", "{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3FC2D442-19B8-4CF9-9D35-CD13B6AC7B28}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5A0C2732-36A9-4ACA-807E-019E02C37E10}
EndGlobalSection
EndGlobal

View file

@ -7,6 +7,7 @@
<supportedVersions>
<li>1.3</li>
<li>1.4</li>
<li>1.5</li>
</supportedVersions>
<packageId>rjw.FH</packageId>
<modDependencies>