mirror of
				https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
				synced 2024-08-15 00:43:45 +00:00 
			
		
		
		
	1.5 initial build
This commit is contained in:
		
							parent
							
								
									3fb106e8f3
								
							
						
					
					
						commit
						a9d4eed71a
					
				
					 71 changed files with 2107 additions and 109 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								1.5/Assemblies/0MultiplayerAPI.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Assemblies/0MultiplayerAPI.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Assemblies/RJW.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Assemblies/RJW.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Assemblies/Rimworld-Animations.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Assemblies/Rimworld-Animations.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										15
									
								
								1.5/Defs/MainTabDefs/MainButtonDef.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								1.5/Defs/MainTabDefs/MainButtonDef.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
					  <MainButtonDef>
 | 
				
			||||||
 | 
					    <defName>OffsetManager</defName>
 | 
				
			||||||
 | 
					    <label>offset manager</label>
 | 
				
			||||||
 | 
					    <description>Control pawn offsets</description>
 | 
				
			||||||
 | 
					    <tabWindowClass>Rimworld_Animations.MainTabWindow_OffsetConfigure</tabWindowClass>
 | 
				
			||||||
 | 
					    <order>54</order>
 | 
				
			||||||
 | 
					    <buttonVisible>false</buttonVisible>
 | 
				
			||||||
 | 
					    <iconPath>UI/MainTab</iconPath>
 | 
				
			||||||
 | 
					    <minimized>true</minimized>
 | 
				
			||||||
 | 
					  </MainButtonDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
							
								
								
									
										212
									
								
								1.5/Defs/SoundDefs/Sounds_Sex.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								1.5/Defs/SoundDefs/Sounds_Sex.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,212 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
						<SoundDef>
 | 
				
			||||||
 | 
							<defName>Cum</defName>
 | 
				
			||||||
 | 
							<context>MapOnly</context>
 | 
				
			||||||
 | 
							<eventNames />
 | 
				
			||||||
 | 
							<maxSimultaneous>1</maxSimultaneous>
 | 
				
			||||||
 | 
							<maxVoices>1</maxVoices>
 | 
				
			||||||
 | 
							<subSounds>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<grains>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/cum</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
									</grains>
 | 
				
			||||||
 | 
									<volumeRange>
 | 
				
			||||||
 | 
										<min>30</min>
 | 
				
			||||||
 | 
										<max>40</max>
 | 
				
			||||||
 | 
									</volumeRange>
 | 
				
			||||||
 | 
									<pitchRange>
 | 
				
			||||||
 | 
										<min>0.8</min>
 | 
				
			||||||
 | 
										<max>1.2</max>
 | 
				
			||||||
 | 
									</pitchRange>
 | 
				
			||||||
 | 
									<distRange>
 | 
				
			||||||
 | 
										<min>0</min>
 | 
				
			||||||
 | 
										<max>51.86047</max>
 | 
				
			||||||
 | 
									</distRange>
 | 
				
			||||||
 | 
									<sustainLoop>False</sustainLoop>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</subSounds>
 | 
				
			||||||
 | 
						</SoundDef>
 | 
				
			||||||
 | 
					  <SoundDef>
 | 
				
			||||||
 | 
							<defName>Sex</defName>
 | 
				
			||||||
 | 
							<context>MapOnly</context>
 | 
				
			||||||
 | 
							<eventNames />
 | 
				
			||||||
 | 
							<maxSimultaneous>1</maxSimultaneous>
 | 
				
			||||||
 | 
							<maxVoices>1</maxVoices>
 | 
				
			||||||
 | 
							<subSounds>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<grains>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/kucyu04</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
									</grains>
 | 
				
			||||||
 | 
									<volumeRange>
 | 
				
			||||||
 | 
										<min>16</min>
 | 
				
			||||||
 | 
										<max>16</max>
 | 
				
			||||||
 | 
									</volumeRange>
 | 
				
			||||||
 | 
									<pitchRange>
 | 
				
			||||||
 | 
										<min>0.8</min>
 | 
				
			||||||
 | 
										<max>1.2</max>
 | 
				
			||||||
 | 
									</pitchRange>
 | 
				
			||||||
 | 
									<distRange>
 | 
				
			||||||
 | 
										<min>0</min>
 | 
				
			||||||
 | 
										<max>51.86047</max>
 | 
				
			||||||
 | 
									</distRange>
 | 
				
			||||||
 | 
									<sustainLoop>False</sustainLoop>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</subSounds>
 | 
				
			||||||
 | 
						</SoundDef>
 | 
				
			||||||
 | 
						<SoundDef>
 | 
				
			||||||
 | 
							<defName>Suck</defName>
 | 
				
			||||||
 | 
							<context>MapOnly</context>
 | 
				
			||||||
 | 
							<eventNames />
 | 
				
			||||||
 | 
							<maxSimultaneous>1</maxSimultaneous>
 | 
				
			||||||
 | 
							<maxVoices>1</maxVoices>
 | 
				
			||||||
 | 
							<subSounds>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<grains>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/Suck/Suck_1</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/Suck/Suck_2</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/Suck/Suck_3</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/Suck/Suck_4</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
										<li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
											<clipPath>Sex/Suck/Suck_5</clipPath>
 | 
				
			||||||
 | 
										</li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Suck/Suck_6</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Suck/Suck_7</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Suck/Suck_8</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Suck/Suck_9</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Suck/Suck_10</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
									</grains>
 | 
				
			||||||
 | 
									<volumeRange>
 | 
				
			||||||
 | 
					          <min>20</min>
 | 
				
			||||||
 | 
					          <max>35</max>
 | 
				
			||||||
 | 
									</volumeRange>
 | 
				
			||||||
 | 
									<pitchRange>
 | 
				
			||||||
 | 
										<min>1.0</min>
 | 
				
			||||||
 | 
										<max>1.0</max>
 | 
				
			||||||
 | 
									</pitchRange>
 | 
				
			||||||
 | 
									<distRange>
 | 
				
			||||||
 | 
										<min>0</min>
 | 
				
			||||||
 | 
										<max>51.86047</max>
 | 
				
			||||||
 | 
									</distRange>
 | 
				
			||||||
 | 
									<repeatMode>NeverTwice</repeatMode> 
 | 
				
			||||||
 | 
									<sustainLoop>false</sustainLoop>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</subSounds>
 | 
				
			||||||
 | 
						</SoundDef>
 | 
				
			||||||
 | 
					  <SoundDef>
 | 
				
			||||||
 | 
					    <defName>Fuck</defName>
 | 
				
			||||||
 | 
					    <context>MapOnly</context>
 | 
				
			||||||
 | 
					    <eventNames />
 | 
				
			||||||
 | 
					    <maxSimultaneous>1</maxSimultaneous>
 | 
				
			||||||
 | 
					    <maxVoices>1</maxVoices>
 | 
				
			||||||
 | 
					    <subSounds>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <grains>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_1</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_2</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_3</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_4</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_5</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_6</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_7</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Clap_8</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					        </grains>
 | 
				
			||||||
 | 
					        <volumeRange>
 | 
				
			||||||
 | 
					          <min>45</min>
 | 
				
			||||||
 | 
					          <max>70</max>
 | 
				
			||||||
 | 
					        </volumeRange>
 | 
				
			||||||
 | 
					        <pitchRange>
 | 
				
			||||||
 | 
					          <min>1.0</min>
 | 
				
			||||||
 | 
					          <max>1.0</max>
 | 
				
			||||||
 | 
					        </pitchRange>
 | 
				
			||||||
 | 
					        <distRange>
 | 
				
			||||||
 | 
					          <min>0</min>
 | 
				
			||||||
 | 
					          <max>51.86047</max>
 | 
				
			||||||
 | 
					        </distRange>
 | 
				
			||||||
 | 
					        <repeatMode>NeverTwice</repeatMode>
 | 
				
			||||||
 | 
					        <sustainLoop>false</sustainLoop>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </subSounds>
 | 
				
			||||||
 | 
					  </SoundDef>
 | 
				
			||||||
 | 
					  <SoundDef>
 | 
				
			||||||
 | 
					    <defName>Slimy</defName>
 | 
				
			||||||
 | 
					    <context>MapOnly</context>
 | 
				
			||||||
 | 
					    <eventNames />
 | 
				
			||||||
 | 
					    <maxSimultaneous>1</maxSimultaneous>
 | 
				
			||||||
 | 
					    <maxVoices>1</maxVoices>
 | 
				
			||||||
 | 
					    <subSounds>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <grains>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Slime/Slimy1</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Slime/Slimy2</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Slime/Slimy3</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Slime/Slimy4</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li Class="AudioGrain_Clip">
 | 
				
			||||||
 | 
					            <clipPath>Sex/Slime/Slimy5</clipPath>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					        </grains>
 | 
				
			||||||
 | 
					        <volumeRange>
 | 
				
			||||||
 | 
					          <min>45</min>
 | 
				
			||||||
 | 
					          <max>75</max>
 | 
				
			||||||
 | 
					        </volumeRange>
 | 
				
			||||||
 | 
					        <pitchRange>
 | 
				
			||||||
 | 
					          <min>1.4</min>
 | 
				
			||||||
 | 
					          <max>1.8</max>
 | 
				
			||||||
 | 
					        </pitchRange>
 | 
				
			||||||
 | 
					        <distRange>
 | 
				
			||||||
 | 
					          <min>0</min>
 | 
				
			||||||
 | 
					          <max>100</max>
 | 
				
			||||||
 | 
					        </distRange>
 | 
				
			||||||
 | 
					        <repeatMode>NeverTwice</repeatMode>
 | 
				
			||||||
 | 
					        <sustainLoop>false</sustainLoop>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </subSounds>
 | 
				
			||||||
 | 
					  </SoundDef>
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					<?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>{BA766964-1716-422D-A09E-29426F8EB9D5}</ProjectGuid>
 | 
				
			||||||
 | 
					    <OutputType>Library</OutputType>
 | 
				
			||||||
 | 
					    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
				
			||||||
 | 
					    <RootNamespace>Patch_HatsDisplaySelection</RootNamespace>
 | 
				
			||||||
 | 
					    <AssemblyName>Patch_HatsDisplaySelection</AssemblyName>
 | 
				
			||||||
 | 
					    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
 | 
				
			||||||
 | 
					    <FileAlignment>512</FileAlignment>
 | 
				
			||||||
 | 
					    <Deterministic>true</Deterministic>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
				
			||||||
 | 
					    <DebugSymbols>false</DebugSymbols>
 | 
				
			||||||
 | 
					    <DebugType>none</DebugType>
 | 
				
			||||||
 | 
					    <Optimize>false</Optimize>
 | 
				
			||||||
 | 
					    <OutputPath>1.2\Assemblies\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <OutputPath>bin\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE</DefineConstants>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Reference Include="0Harmony">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\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="HatDisplaySelection">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\..\workshop\content\294100\1542291825\1.2\Assemblies\HatDisplaySelection.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="Rimworld-Animations">
 | 
				
			||||||
 | 
					      <HintPath>..\1.2\Assemblies\Rimworld-Animations.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="System" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Core" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Xml.Linq" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Data.DataSetExtensions" />
 | 
				
			||||||
 | 
					    <Reference Include="Microsoft.CSharp" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Data" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Net.Http" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Xml" />
 | 
				
			||||||
 | 
					    <Reference Include="UnityEngine">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="UnityEngine.CoreModule">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Source\Patches\Patch_HatsDisplaySelection.cs" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Folder Include="1.2\Assemblies\" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										82
									
								
								1.5/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								1.5/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,82 @@
 | 
				
			||||||
 | 
					<?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>{0AD4F9B2-AE28-4E42-86D6-611FB93B7FF0}</ProjectGuid>
 | 
				
			||||||
 | 
					    <OutputType>Library</OutputType>
 | 
				
			||||||
 | 
					    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
				
			||||||
 | 
					    <RootNamespace>Patch_HumanoidAlienRaces</RootNamespace>
 | 
				
			||||||
 | 
					    <AssemblyName>Patch_HumanoidAlienRaces</AssemblyName>
 | 
				
			||||||
 | 
					    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
 | 
				
			||||||
 | 
					    <FileAlignment>512</FileAlignment>
 | 
				
			||||||
 | 
					    <Deterministic>true</Deterministic>
 | 
				
			||||||
 | 
					    <TargetFrameworkProfile />
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
				
			||||||
 | 
					    <DebugSymbols>false</DebugSymbols>
 | 
				
			||||||
 | 
					    <DebugType>none</DebugType>
 | 
				
			||||||
 | 
					    <Optimize>false</Optimize>
 | 
				
			||||||
 | 
					    <OutputPath>Assemblies\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
 | 
					    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <OutputPath>bin\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE</DefineConstants>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Reference Include="0Harmony">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="AlienRace">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\AlienRace.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.4\Assemblies\HugsLib.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="Rimworld-Animations">
 | 
				
			||||||
 | 
					      <HintPath>..\Assemblies\Rimworld-Animations.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="RJW">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="System" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Core" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Xml.Linq" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Data.DataSetExtensions" />
 | 
				
			||||||
 | 
					    <Reference Include="Microsoft.CSharp" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Data" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Net.Http" />
 | 
				
			||||||
 | 
					    <Reference Include="System.Xml" />
 | 
				
			||||||
 | 
					    <Reference Include="UnityEngine">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="UnityEngine.CoreModule">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="HarmonyPatch_AlienRace.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
							
								
								
									
										36
									
								
								1.5/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								1.5/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs
									
										
									
									
									
										Normal 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("Patch_HumanoidAlienRaces")]
 | 
				
			||||||
 | 
					[assembly: AssemblyDescription("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyConfiguration("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyCompany("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyProduct("Patch_HumanoidAlienRaces")]
 | 
				
			||||||
 | 
					[assembly: AssemblyCopyright("Copyright ©  2022")]
 | 
				
			||||||
 | 
					[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("0ad4f9b2-ae28-4e42-86d6-611fb93b7ff0")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 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")]
 | 
				
			||||||
							
								
								
									
										130
									
								
								1.5/Patches/CompatibilityPatch_FacialAnimation.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								1.5/Patches/CompatibilityPatch_FacialAnimation.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,130 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<Patch>
 | 
				
			||||||
 | 
					  <Operation Class="PatchOperationFindMod">
 | 
				
			||||||
 | 
					    <mods>
 | 
				
			||||||
 | 
					      <li>[NL] Facial Animation - WIP</li>
 | 
				
			||||||
 | 
					    </mods>
 | 
				
			||||||
 | 
					    <match Class="PatchOperationSequence">
 | 
				
			||||||
 | 
					      <success>Always</success>
 | 
				
			||||||
 | 
					      <operations>
 | 
				
			||||||
 | 
					        <li Class="PatchOperationAdd">
 | 
				
			||||||
 | 
					          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs</xpath>
 | 
				
			||||||
 | 
					          <success>Always</success>
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <li>RJW_Masturbate</li>
 | 
				
			||||||
 | 
					            <li>GettinBred</li>
 | 
				
			||||||
 | 
					            <li>Bestiality</li>
 | 
				
			||||||
 | 
					            <li>BestialityForFemale</li>
 | 
				
			||||||
 | 
					            <li>ViolateCorpse</li>
 | 
				
			||||||
 | 
					            <li>Quickie</li>
 | 
				
			||||||
 | 
					            <li>GettingQuickie</li>
 | 
				
			||||||
 | 
					            <li>GettinRaped</li>
 | 
				
			||||||
 | 
					            <li>JoinInBed</li>
 | 
				
			||||||
 | 
					            <li>GettinLoved</li>
 | 
				
			||||||
 | 
					            <li>GettinLicked</li>
 | 
				
			||||||
 | 
					            <li>GettinSucked</li>
 | 
				
			||||||
 | 
					            <li>WhoreIsServingVisitors</li>
 | 
				
			||||||
 | 
					            <li>JoinInBedAnimation</li>
 | 
				
			||||||
 | 
					            <li>GettinLovedAnimation</li>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        <li Class="PatchOperationAdd">
 | 
				
			||||||
 | 
					          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs</xpath>
 | 
				
			||||||
 | 
					          <success>Always</success>
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <li>RapeComfortPawn</li>
 | 
				
			||||||
 | 
					            <li>RandomRape</li>
 | 
				
			||||||
 | 
					            <li>RapeEnemy</li>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        <li Class="PatchOperationAdd">
 | 
				
			||||||
 | 
					          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="StandAndBeSociallyActive"]/targetJobs</xpath>
 | 
				
			||||||
 | 
					          <success>Always</success>
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <li>WhoreInvitingVisitors</li>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        <li Class="PatchOperationAdd">
 | 
				
			||||||
 | 
					          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Wear" or defName="Wear2" or defName="Wear3"]/targetJobs</xpath>
 | 
				
			||||||
 | 
					          <success>Always</success>
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <li>CleanSelf</li>
 | 
				
			||||||
 | 
					            <li>StruggleInBondageGear</li>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        <li Class="PatchOperationFindMod">
 | 
				
			||||||
 | 
					          <mods>
 | 
				
			||||||
 | 
					            <li>Rimworld-Animations</li>
 | 
				
			||||||
 | 
					          </mods>
 | 
				
			||||||
 | 
					          <match Class="PatchOperationSequence">
 | 
				
			||||||
 | 
					            <success>Always</success>
 | 
				
			||||||
 | 
					            <operations>
 | 
				
			||||||
 | 
					              <li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
					                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset</xpath>
 | 
				
			||||||
 | 
					                <success>Always</success>
 | 
				
			||||||
 | 
					              </li>
 | 
				
			||||||
 | 
					              <li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
					                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset</xpath>
 | 
				
			||||||
 | 
					                <success>Always</success>
 | 
				
			||||||
 | 
					              </li>
 | 
				
			||||||
 | 
					              <li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
					                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset</xpath>
 | 
				
			||||||
 | 
					                <success>Always</success>
 | 
				
			||||||
 | 
					              </li>
 | 
				
			||||||
 | 
					            </operations>
 | 
				
			||||||
 | 
					          </match>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					      </operations>
 | 
				
			||||||
 | 
					    </match>
 | 
				
			||||||
 | 
					  </Operation>
 | 
				
			||||||
 | 
					</Patch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!--
 | 
				
			||||||
 | 
					OLD PATCH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<Patch>
 | 
				
			||||||
 | 
						<Operation Class="PatchOperationFindMod">
 | 
				
			||||||
 | 
							<mods>
 | 
				
			||||||
 | 
								<li>[NL] Facial Animation - WIP</li>
 | 
				
			||||||
 | 
							</mods>
 | 
				
			||||||
 | 
							<match Class="PatchOperationSequence">
 | 
				
			||||||
 | 
								<success>Always</success>
 | 
				
			||||||
 | 
								<operations>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[2]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[3]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[4]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[5]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[6]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[7]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
									<li Class="PatchOperationRemove">
 | 
				
			||||||
 | 
										<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[8]/headOffset</xpath>
 | 
				
			||||||
 | 
										<success>Always</success>
 | 
				
			||||||
 | 
									</li>
 | 
				
			||||||
 | 
								</operations>
 | 
				
			||||||
 | 
							</match>
 | 
				
			||||||
 | 
						</Operation>
 | 
				
			||||||
 | 
					</Patch>
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_1.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_1.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_2.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_2.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_3.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_3.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_4.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_4.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_5.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_5.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_6.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_6.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_7.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_7.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_8.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Clap_8.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy1.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy1.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy2.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy2.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy3.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy3.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy4.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy4.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy5.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Slime/Slimy5.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_1.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_1.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_10.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_10.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_2.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_2.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_3.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_3.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_4.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_4.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_5.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_5.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_6.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_6.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_7.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_7.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_8.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_8.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_9.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Suck_9.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Swallow_1.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Swallow_1.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Swallow_2.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Swallow_2.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Swallow_3.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/Suck/Swallow_3.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/cum.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/cum.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/kucyu04.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Sounds/Sex/kucyu04.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										26
									
								
								1.5/Source/Actors/Actor.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								1.5/Source/Actors/Actor.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public class Actor {
 | 
				
			||||||
 | 
					        public List<string> defNames;
 | 
				
			||||||
 | 
					        public List<string> requiredGenitals;
 | 
				
			||||||
 | 
					        public List<AlienRaceOffset> raceOffsets;
 | 
				
			||||||
 | 
					        public List<string> blacklistedRaces;
 | 
				
			||||||
 | 
					        public bool initiator = false;
 | 
				
			||||||
 | 
					        public string gender;
 | 
				
			||||||
 | 
					        public bool isFucking = false;
 | 
				
			||||||
 | 
					        public bool isFucked = false;
 | 
				
			||||||
 | 
					        public bool controlGenitalAngle = false;
 | 
				
			||||||
 | 
					        public List<BodyDef> bodyDefTypes = new List<BodyDef>();
 | 
				
			||||||
 | 
					        public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
 | 
				
			||||||
 | 
					        public Vector3 offset = new Vector2(0, 0);
 | 
				
			||||||
 | 
							public List<string> requiredGender;
 | 
				
			||||||
 | 
					        public List<string> tags = new List<string>();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								1.5/Source/Actors/AlienRaceOffset.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								1.5/Source/Actors/AlienRaceOffset.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public class AlienRaceOffset {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string defName;
 | 
				
			||||||
 | 
					        public Vector2 offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								1.5/Source/Actors/BodyTypeOffset.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								1.5/Source/Actors/BodyTypeOffset.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public class BodyTypeOffset {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Vector2? Male;
 | 
				
			||||||
 | 
					        public Vector2? Female;
 | 
				
			||||||
 | 
					        public Vector2? Thin;
 | 
				
			||||||
 | 
					        public Vector2? Hulk;
 | 
				
			||||||
 | 
					        public Vector2? Fat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								1.5/Source/Comps/CompProperties_ThingAnimator.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								1.5/Source/Comps/CompProperties_ThingAnimator.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public class CompProperties_ThingAnimator : CompProperties
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public CompProperties_ThingAnimator()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            base.compClass = typeof(CompThingAnimator);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										23
									
								
								1.5/Source/Comps/CompThingAnimator.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								1.5/Source/Comps/CompThingAnimator.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public class CompThingAnimator : ThingComp
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void CompTick()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //todo: If item is held by pawn, and pawn is doing thingcomp animation,
 | 
				
			||||||
 | 
					            //animate thingcomp; see CompPowerPlantWind for how thingcomps are animated
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										136
									
								
								1.5/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								1.5/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,136 @@
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    class MainTabWindow_OffsetConfigure : MainTabWindow
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override Vector2 RequestedTabSize => new Vector2(505, 380);
 | 
				
			||||||
 | 
					        public override void DoWindowContents(Rect inRect) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Rect position = new Rect(inRect.x, inRect.y, inRect.width, inRect.height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Listing_Standard listingStandard = new Listing_Standard();
 | 
				
			||||||
 | 
					            listingStandard.Begin(position);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            listingStandard.Label("Animation Manager");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            listingStandard.GapLine();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /*
 | 
				
			||||||
 | 
					            if (Find.Selector.SingleSelectedThing is Pawn curPawn) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (CompBodyAnimator.IsAnimating(curPawn)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    CompBodyAnimator compBodyAnimator = curPawn.TryGetComp<CompBodyAnimator>();
 | 
				
			||||||
 | 
					                    AnimationDef def = compBodyAnimator.CurrentAnimation;
 | 
				
			||||||
 | 
					                    int ActorIndex = compBodyAnimator.ActorIndex;
 | 
				
			||||||
 | 
					                    float offsetX = 0, offsetZ = 0, rotation = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    string bodyTypeDef = (curPawn.story?.bodyType != null) ? curPawn.story.bodyType.ToString() : "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (AnimationSettings.offsets.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) {
 | 
				
			||||||
 | 
					                        offsetX = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x;
 | 
				
			||||||
 | 
					                        offsetZ = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y;
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        AnimationSettings.offsets.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, new Vector2(0, 0));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (AnimationSettings.rotation.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) {
 | 
				
			||||||
 | 
					                        rotation = AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex];
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        AnimationSettings.rotation.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, 0);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    listingStandard.Label("Name: " + curPawn.Name + " Race: " + curPawn.def.defName + " Actor Index: " + curPawn.TryGetComp<CompBodyAnimator>().ActorIndex + " Body Type (if any): " + bodyTypeDef + " Animation: " + def.label + (curPawn.TryGetComp<CompBodyAnimator>().Mirror ? " mirrored" : ""));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if(curPawn.def.defName == "Human") {
 | 
				
			||||||
 | 
					                        listingStandard.Label("Warning--You generally don't want to change human offsets, only alien offsets");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    float.TryParse(listingStandard.TextEntryLabeled("X Offset: ", offsetX.ToString()), out offsetX);
 | 
				
			||||||
 | 
					                    offsetX = listingStandard.Slider(offsetX, -2, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    float.TryParse(listingStandard.TextEntryLabeled("Z Offset: ", offsetZ.ToString()), out offsetZ);
 | 
				
			||||||
 | 
					                    offsetZ = listingStandard.Slider(offsetZ, -2, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    float.TryParse(listingStandard.TextEntryLabeled("Rotation: ", rotation.ToString()), out rotation);
 | 
				
			||||||
 | 
					                    rotation = listingStandard.Slider(rotation, -180, 180);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if(listingStandard.ButtonText("Reset All")) {
 | 
				
			||||||
 | 
					                        offsetX = 0;
 | 
				
			||||||
 | 
					                        offsetZ = 0;
 | 
				
			||||||
 | 
					                        rotation = 0;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    listingStandard.GapLine();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if(listingStandard.ButtonText("Shift Actors")) {
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					                        if(AnimationSettings.debugMode) {
 | 
				
			||||||
 | 
					                            Log.Message("Shifting actors in animation...");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        for(int i = 0; i < curPawn.TryGetComp<CompBodyAnimator>().actorsInCurrentAnimation.Count; i++) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            Pawn actor = curPawn.TryGetComp<CompBodyAnimator>().actorsInCurrentAnimation[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            actor.TryGetComp<CompBodyAnimator>()?.shiftActorPositionAndRestartAnimation();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            //reset the clock time of every pawn in animation
 | 
				
			||||||
 | 
					                            if(actor.jobs.curDriver is rjw.JobDriver_Sex) {
 | 
				
			||||||
 | 
					                                (actor.jobs.curDriver as rjw.JobDriver_Sex).ticks_left = def.animationTimeTicks;
 | 
				
			||||||
 | 
					                                (actor.jobs.curDriver as rjw.JobDriver_Sex).ticksLeftThisToil = def.animationTimeTicks;
 | 
				
			||||||
 | 
					                                (actor.jobs.curDriver as rjw.JobDriver_Sex).duration = def.animationTimeTicks;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (offsetX != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x || offsetZ != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y) {
 | 
				
			||||||
 | 
					                        AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = new Vector2(offsetX, offsetZ);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if(rotation != AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]) {
 | 
				
			||||||
 | 
					                        AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = rotation;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                listingStandard.Label("Select a pawn currently in an animation to change their offsets");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            */
 | 
				
			||||||
 | 
					            listingStandard.End();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void PreOpen() {
 | 
				
			||||||
 | 
					            base.PreOpen();
 | 
				
			||||||
 | 
					            if(AnimationSettings.offsets == null) {
 | 
				
			||||||
 | 
					                if (AnimationSettings.debugMode)
 | 
				
			||||||
 | 
					                    Log.Message("New offsets");
 | 
				
			||||||
 | 
					                AnimationSettings.offsets = new Dictionary<string, Vector2>();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(AnimationSettings.rotation == null) {
 | 
				
			||||||
 | 
					                if (AnimationSettings.debugMode)
 | 
				
			||||||
 | 
					                    Log.Message("New rotation");
 | 
				
			||||||
 | 
					                AnimationSettings.rotation = new Dictionary<string, float>();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void PostClose() {
 | 
				
			||||||
 | 
					            base.PostClose();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            LoadedModManager.GetMod<RJW_Animations>().WriteSettings();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								1.5/Source/MainTabWindows/OffsetMainButtonDefOf.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								1.5/Source/MainTabWindows/OffsetMainButtonDefOf.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [DefOf]
 | 
				
			||||||
 | 
					    public static class OffsetMainButtonDefOf {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static MainButtonDef OffsetManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static OffsetMainButtonDefOf() {
 | 
				
			||||||
 | 
					            DefOfHelper.EnsureInitializedInCtor(typeof(OffsetMainButtonDefOf));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								1.5/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								1.5/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using RimWorld.Planet;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public class WorldComponent_UpdateMainTab : WorldComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public WorldComponent_UpdateMainTab(World world) : base(world) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void FinalizeInit() {
 | 
				
			||||||
 | 
					            base.FinalizeInit();
 | 
				
			||||||
 | 
					            OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								1.5/Source/Patches/Harmony_PatchAll.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								1.5/Source/Patches/Harmony_PatchAll.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [StaticConstructorOnStartup]
 | 
				
			||||||
 | 
					    public static class Harmony_PatchAll {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static Harmony_PatchAll() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Harmony val = new Harmony("rjwanim");
 | 
				
			||||||
 | 
					            val.PatchAll(Assembly.GetExecutingAssembly());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								1.5/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								1.5/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_Sex), "PlaySexSound")]
 | 
				
			||||||
 | 
					    class HarmonyPatch_PlaySexSounds
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static bool Prefix(JobDriver_Sex __instance)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										61
									
								
								1.5/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								1.5/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_Sex), "SexTick")]
 | 
				
			||||||
 | 
					    public class HarmonyPatch_SexTick
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static bool Prefix(JobDriver_Sex __instance, Pawn pawn, Thing target)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ((target is Pawn) && 
 | 
				
			||||||
 | 
									!(
 | 
				
			||||||
 | 
									(target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever 
 | 
				
			||||||
 | 
									&& 
 | 
				
			||||||
 | 
									((target as Pawn).jobs.curDriver as JobDriver_SexBaseReciever).parteners.Any() 
 | 
				
			||||||
 | 
									&& 
 | 
				
			||||||
 | 
									((target as Pawn).jobs.curDriver as JobDriver_SexBaseReciever).parteners[0] == pawn))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									__instance.ticks_left--;
 | 
				
			||||||
 | 
					                __instance.sex_ticks--;
 | 
				
			||||||
 | 
					                __instance.Orgasm();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (pawn.IsHashIntervalTick(__instance.ticks_between_thrusts))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										__instance.ChangePsyfocus(pawn, target);
 | 
				
			||||||
 | 
										__instance.Animate(pawn, target);
 | 
				
			||||||
 | 
										__instance.PlaySexSound();
 | 
				
			||||||
 | 
										if (!__instance.Sexprops.isRape)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											pawn.GainComfortFromCellIfPossible(false);
 | 
				
			||||||
 | 
											if (target is Pawn)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												(target as Pawn).GainComfortFromCellIfPossible(false);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										if(!__instance.isEndytophile)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
											SexUtility.DrawNude(pawn, false);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								1.5/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								1.5/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(WorkGiver_Sex), "JobOnThing")]
 | 
				
			||||||
 | 
					    public static class HarmonyPatch_WorkGiverSex {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static bool Prefix(ref Job __result, ref Thing t) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Building_Bed bed = RestUtility.CurrentBed(t as Pawn);
 | 
				
			||||||
 | 
					            if (bed == null) {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            __result = JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("JoinInBedAnimation", true), t as Pawn, bed);
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(Bed_Utility), "in_same_bed")]
 | 
				
			||||||
 | 
					    public static class HarmonyPatch_JobDriver_InSameBedPatch
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static bool Prefix(Pawn partner, ref bool __result)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(partner != null && partner.CurJobDef == xxx.casual_sex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                __result = true;
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_JoinInBed), "MakeNewToils")]
 | 
				
			||||||
 | 
					    public static class HarmonyPatch_JobDriver_JoinInBed
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void Postfix(JobDriver_JoinInBed __instance, ref IEnumerable<Toil> __result)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var toils = __result.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Toil goToPawnInBed = Toils_Goto.GotoThing(__instance.iTarget, PathEndMode.OnCell);
 | 
				
			||||||
 | 
					            goToPawnInBed.FailOn(() => !RestUtility.InBed(__instance.Partner) && __instance.Partner.CurJobDef != xxx.gettin_loved && !Bed_Utility.in_same_bed(__instance.Partner, __instance.pawn));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            toils[1] = goToPawnInBed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Toil startPartnerSex = new Toil();
 | 
				
			||||||
 | 
					            startPartnerSex.initAction = delegate {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!(__instance.Partner.jobs.curDriver is JobDriver_SexBaseReciever)) // allows threesomes
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Job gettinLovedJob = JobMaker.MakeJob(xxx.gettin_loved, __instance.pawn, __instance.Bed); // new gettin loved toil that wakes up the pawn goes here
 | 
				
			||||||
 | 
					                    __instance.Partner.jobs.jobQueue.EnqueueFirst(gettinLovedJob);
 | 
				
			||||||
 | 
					                    __instance.Partner.jobs.EndCurrentJob(JobCondition.InterruptForced);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            toils[2] = startPartnerSex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            __result = toils.AsEnumerable();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,89 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")]
 | 
				
			||||||
 | 
					    static class HarmonyPatch_JobDriver_SexBaseInitiator_Start {
 | 
				
			||||||
 | 
					        public static void Postfix(ref JobDriver_SexBaseInitiator __instance) {
 | 
				
			||||||
 | 
								/*
 | 
				
			||||||
 | 
								 These particular jobs need special code
 | 
				
			||||||
 | 
								 don't play anim for now
 | 
				
			||||||
 | 
								 */
 | 
				
			||||||
 | 
								if(__instance is JobDriver_Masturbate || __instance is JobDriver_ViolateCorpse) {
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!AnimationSettings.PlayAnimForNonsexualActs && NonSexualAct(__instance))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								Pawn pawn = __instance.pawn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								Building_Bed bed = __instance.Bed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ((__instance.Target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Pawn Target = __instance.Target as Pawn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									int preAnimDuration = __instance.duration;
 | 
				
			||||||
 | 
									int AnimationTimeTicks = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (bed != null) {
 | 
				
			||||||
 | 
					                    RerollAnimations(bed as Thing);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
									else {
 | 
				
			||||||
 | 
										RerollAnimations();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//Modify Orgasm ticks to only orgasm as many times as RJW stock orgasm allows
 | 
				
			||||||
 | 
									if(AnimationTimeTicks != 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										__instance.orgasmstick = preAnimDuration * __instance.orgasmstick / AnimationTimeTicks;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static void RerollAnimations(Thing bed = null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							static IEnumerable<String> NonSexActRulePackDefNames = new String[]
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								"MutualHandholdingRP",
 | 
				
			||||||
 | 
								"MutualMakeoutRP",
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static bool NonSexualAct(JobDriver_SexBaseInitiator sexBaseInitiator)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
								if(NonSexActRulePackDefNames.Contains(sexBaseInitiator.Sexprops.rulePack))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						[HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "End")]
 | 
				
			||||||
 | 
						static class HarmonyPatch_JobDriver_SexBaseInitiator_End {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static void Postfix(ref JobDriver_SexBaseInitiator __instance)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								//stop animation
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using System.Reflection.Emit;
 | 
				
			||||||
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_SexBaseRecieverLoved), "MakeSexToil")]
 | 
				
			||||||
 | 
					    public static class HarmonyPatch_JobDriver_SexBaseReceiverLoved
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> codeInstructions)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var ins = codeInstructions.ToList();
 | 
				
			||||||
 | 
					            for(int i = 0; i < ins.Count; i++)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if(i < ins.Count && ins[i].opcode == OpCodes.Call && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(Toils_LayDown), "LayDown"))) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    ins[i].operand = AccessTools.DeclaredMethod(typeof(HarmonyPatch_JobDriver_SexBaseReceiverLoved), "DoNotLayDown");
 | 
				
			||||||
 | 
					                    yield return ins[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    yield return ins[i];
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Toil DoNotLayDown(TargetIndex bedOrRestSpotIndex, bool hasBed, bool lookForOtherJobs, bool canSleep = true, bool gainRestAndHealth = true, PawnPosture noBedLayingPosture = PawnPosture.LayingMask, bool deathrest = false)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return new Toil();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										33
									
								
								1.5/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								1.5/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(Thing), "DrawAt")]
 | 
				
			||||||
 | 
					    public static class HarmonyPatch_Thing
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /*
 | 
				
			||||||
 | 
					        public static bool Prefix(Thing __instance)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CompThingAnimator thingAnimator = __instance.TryGetComp<CompThingAnimator>();
 | 
				
			||||||
 | 
					            if (thingAnimator != null && thingAnimator.isAnimating)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                thingAnimator.AnimateThing(__instance);
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        */
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										98
									
								
								1.5/Source/Settings/AnimationSettings.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								1.5/Source/Settings/AnimationSettings.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,98 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class AnimationSettings : ModSettings {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static bool orgasmQuiver, rapeShiver, soundOverride = true, hearts = true, controlGenitalRotation = false, applySemenOnAnimationOrgasm = false, fastAnimForQuickie = false,
 | 
				
			||||||
 | 
					            PlayAnimForNonsexualActs = true;
 | 
				
			||||||
 | 
					        public static bool offsetTab = false, debugMode = false;
 | 
				
			||||||
 | 
					        public static float shiverIntensity = 2f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Dictionary<string, Vector2> offsets = new Dictionary<string, Vector2>();
 | 
				
			||||||
 | 
					        public static Dictionary<string, float> rotation = new Dictionary<string, float>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void ExposeData() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            base.ExposeData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref debugMode, "RJWAnimations-AnimsDebugMode", false);
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref offsetTab, "RJWAnimations-EnableOffsetTab", false);
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref controlGenitalRotation, "RJWAnimations-controlGenitalRotation", false);
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref orgasmQuiver, "RJWAnimations-orgasmQuiver");
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref fastAnimForQuickie, "RJWAnimations-fastAnimForQuickie");
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref rapeShiver, "RJWAnimations-rapeShiver");
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref hearts, "RJWAnimation-sheartsOnLovin");
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref PlayAnimForNonsexualActs, "RJWAnims-PlayAnimForNonsexualActs");
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref applySemenOnAnimationOrgasm, "RJWAnimations-applySemenOnOrgasm", false);
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref soundOverride, "RJWAnimations-rjwAnimSoundOverride", true);
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref shiverIntensity, "RJWAnimations-shiverIntensity", 2f);
 | 
				
			||||||
 | 
					            //todo: save offsetsByDefName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Scribe_Collections.Look(ref offsets, "RJWAnimations-animationOffsets");
 | 
				
			||||||
 | 
					            Scribe_Collections.Look(ref rotation, "RJWAnimations-rotationOffsets");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //needs to be rewritten
 | 
				
			||||||
 | 
					            //probably somewhere in options?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class RJW_Animations : Mod {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public RJW_Animations(ModContentPack content) : base(content) {
 | 
				
			||||||
 | 
					            GetSettings<AnimationSettings>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void DoSettingsWindowContents(Rect inRect) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Listing_Standard listingStandard = new Listing_Standard();
 | 
				
			||||||
 | 
					            listingStandard.Begin(inRect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Enable Sound Override", ref AnimationSettings.soundOverride);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Control Genital Rotation", ref AnimationSettings.controlGenitalRotation);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Play Fast Animation for Quickie", ref AnimationSettings.fastAnimForQuickie);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Apply Semen on Animation Orgasm", ref AnimationSettings.applySemenOnAnimationOrgasm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(AnimationSettings.applySemenOnAnimationOrgasm) {
 | 
				
			||||||
 | 
					                listingStandard.Label("Recommended--turn down \"Cum on body percent\" in RJW settings to about 33%");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Enable Orgasm Quiver", ref AnimationSettings.orgasmQuiver);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Enable Rape Shiver", ref AnimationSettings.rapeShiver);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Enable hearts during lovin'", ref AnimationSettings.hearts);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Play animation for nonsexual acts (handholding, makeout)", ref AnimationSettings.PlayAnimForNonsexualActs);
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Enable Animation Manager Tab", ref AnimationSettings.offsetTab);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            listingStandard.Label("Shiver/Quiver Intensity (default 2): " + AnimationSettings.shiverIntensity);
 | 
				
			||||||
 | 
					            AnimationSettings.shiverIntensity = listingStandard.Slider(AnimationSettings.shiverIntensity, 0.0f, 12f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            listingStandard.CheckboxLabeled("Debug Mode", ref AnimationSettings.debugMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					            listingStandard.End();
 | 
				
			||||||
 | 
					            base.DoSettingsWindowContents(inRect);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void WriteSettings() {
 | 
				
			||||||
 | 
					            base.WriteSettings();
 | 
				
			||||||
 | 
					            OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string SettingsCategory() {
 | 
				
			||||||
 | 
					            return "RJW Animation Settings";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										135
									
								
								1.5/Source/Utilities/AnimationUtility.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								1.5/Source/Utilities/AnimationUtility.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,135 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using rjw.Modules.Interactions.Helpers;
 | 
				
			||||||
 | 
					using rjw.Modules.Interactions.Objects;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					using rjw.Modules.Interactions.Enums;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					    public static class AnimationUtility {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static bool GenitalCheckForPawn(List<string> requiredGenitals, Pawn pawn, out string failReason)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            failReason = null;
 | 
				
			||||||
 | 
					            if (requiredGenitals != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("Vagina"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (!rjw.Genital_Helper.has_vagina(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "missing vagina";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("Penis"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (!(rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn) || rjw.Genital_Helper.has_ovipositorM(pawn) || rjw.Genital_Helper.has_ovipositorF(pawn)))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "missing penis";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("Mouth"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (!rjw.Genital_Helper.has_mouth(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "missing mouth";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("Anus"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (!rjw.Genital_Helper.has_anus(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "missing anus";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("Breasts"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (!rjw.Genital_Helper.can_do_breastjob(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "missing breasts";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("NoVagina"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (rjw.Genital_Helper.has_vagina(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "has vagina";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("NoPenis"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if ((rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn)))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "has penis";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("NoMouth"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (rjw.Genital_Helper.has_mouth(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "has mouth";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("NoAnus"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (rjw.Genital_Helper.has_anus(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "has anus";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (requiredGenitals.Contains("NoBreasts"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (rjw.Genital_Helper.can_do_breastjob(pawn))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        failReason = "has breasts";
 | 
				
			||||||
 | 
					                        return false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								1.5/Textures/UI/MainTab.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								1.5/Textures/UI/MainTab.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 8.4 KiB  | 
							
								
								
									
										354
									
								
								Patch_HumanoidAlienRaces/1.4/Source/HarmonyPatch_AlienRace.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										354
									
								
								Patch_HumanoidAlienRaces/1.4/Source/HarmonyPatch_AlienRace.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,354 @@
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
 | 
					using System.Reflection.Emit;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using AlienRace;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Rimworld_Animations {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						[StaticConstructorOnStartup]
 | 
				
			||||||
 | 
						public static class HarmonyPatch_AlienRace
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							static HarmonyPatch_AlienRace()
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								(new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("AlienRace.HarmonyPatches"), "DrawAddons"),
 | 
				
			||||||
 | 
												prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_AlienRace), "Prefix_AnimateHeadAddons")));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* todo: replace jank prefix with this
 | 
				
			||||||
 | 
							public static void Prefix_DrawAddonsFinalHook(ref Pawn pawn, ref AlienPartGenerator.BodyAddon addon, ref Rot4 rot, ref Graphic graphic, ref Vector3 offsetVector, ref float angle, ref Material mat)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
								CompBodyAnimator animator = pawn.TryGetComp<CompBodyAnimator>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (animator == null || !animator.isAnimating)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(addon.alignWithHead || addon.drawnInBed)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									rot = animator.headFacing;
 | 
				
			||||||
 | 
									angle = animator.headAngle;
 | 
				
			||||||
 | 
									offsetVector += animator.deltaPos + animator.bodyAngle * animator.headBob;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									rot = animator.bodyFacing;
 | 
				
			||||||
 | 
									angle = animator.bodyAngle;
 | 
				
			||||||
 | 
									offsetVector += animator.deltaPos;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
							*/
 | 
				
			||||||
 | 
							public static bool Prefix_AnimateHeadAddons(PawnRenderFlags renderFlags, Vector3 vector, Vector3 headOffset, Pawn pawn, Quaternion quat, Rot4 rotation)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (renderFlags.FlagSet(PawnRenderFlags.Portrait) || !CompBodyAnimator.IsAnimating(pawn)) return true;
 | 
				
			||||||
 | 
								if (!(pawn.def is ThingDef_AlienRace alienProps) || renderFlags.FlagSet(PawnRenderFlags.Invisible)) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								List<AlienPartGenerator.BodyAddon> addons = alienProps.alienRace.generalSettings.alienPartGenerator.bodyAddons;
 | 
				
			||||||
 | 
								AlienPartGenerator.AlienComp comp = pawn.GetComp<AlienPartGenerator.AlienComp>();
 | 
				
			||||||
 | 
								CompBodyAnimator pawnAnimator = pawn.TryGetComp<CompBodyAnimator>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								bool flag = renderFlags.FlagSet(PawnRenderFlags.Portrait);
 | 
				
			||||||
 | 
								bool flag2 = renderFlags.FlagSet(PawnRenderFlags.Invisible);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								for (int i = 0; i < addons.Count; i++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									AlienPartGenerator.BodyAddon ba = addons[index: i];
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									if (!ba.CanDrawAddon(pawn: pawn)) continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									bool forceDrawForBody = false;
 | 
				
			||||||
 | 
									if (alienProps.defName.Contains("Orassan") && ba.path.ToLower().Contains("tail"))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										forceDrawForBody = true;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
									AlienPartGenerator.RotationOffset offset = ba.defaultOffsets.GetOffset((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing);
 | 
				
			||||||
 | 
									Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, pawn.story.headType) : Vector3.zero;
 | 
				
			||||||
 | 
									AlienPartGenerator.RotationOffset offset2 = ba.offsets.GetOffset((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing);
 | 
				
			||||||
 | 
									Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, pawn.story.headType) : Vector3.zero);
 | 
				
			||||||
 | 
									vector2.y = (ba.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y));
 | 
				
			||||||
 | 
									float num = ba.angle;
 | 
				
			||||||
 | 
									if (((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing) == Rot4.North)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if (ba.layerInvert)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											vector2.y = 0f - vector2.y;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										num = 0f;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if (((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing) == Rot4.East)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										num = 0f - num;
 | 
				
			||||||
 | 
										vector2.x = 0f - vector2.x;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									Graphic addonGraphic = comp.addonGraphics[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									addonGraphic.drawSize = ((flag && ba.drawSizePortrait != Vector2.zero) ? ba.drawSizePortrait : ba.drawSize) * (ba.scaleWithPawnDrawsize ? (ba.alignWithHead ? ((flag ? comp.customPortraitHeadDrawSize : comp.customHeadDrawSize) * (ModsConfig.BiotechActive ? (pawn.ageTracker.CurLifeStage.headSizeFactor ?? 1.5f) : 1.5f)) : ((flag ? comp.customPortraitDrawSize : comp.customDrawSize) * (ModsConfig.BiotechActive ? pawn.ageTracker.CurLifeStage.bodySizeFactor : 1f) * 1.5f)) : (Vector2.one * 1.5f));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
										Quaternion addonRotation = Quaternion.AngleAxis(pawnAnimator.headAngle < 0 ? 360 - (360 % pawnAnimator.headAngle) : pawnAnimator.headAngle, Vector3.up);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										GenDraw.DrawMeshNowOrLater(mesh: addonGraphic.MeshAt(rot: pawnAnimator.headFacing), loc: vector + (ba.alignWithHead ? headOffset : headOffset - addonRotation * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.headFacing)) + vector2.RotatedBy(angle: Mathf.Acos(f: Quaternion.Dot(a: Quaternion.identity, b: addonRotation)) * 2f * 57.29578f),
 | 
				
			||||||
 | 
										quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * addonRotation, mat: addonGraphic.MatAt(rot: pawnAnimator.headFacing), renderFlags.FlagSet(PawnRenderFlags.DrawNow));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										Quaternion addonRotation;
 | 
				
			||||||
 | 
										if (AnimationSettings.controlGenitalRotation && ba.path.ToLower().Contains("penis"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
											addonRotation = Quaternion.AngleAxis(pawnAnimator.genitalAngle, Vector3.up);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
											addonRotation = Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
										if (AnimationSettings.controlGenitalRotation && pawnAnimator.controlGenitalAngle && ba?.hediffGraphics != null && ba.hediffGraphics.Count != 0 && ba.hediffGraphics[0]?.path != null && (ba.hediffGraphics[0].path.Contains("Penis") || ba.hediffGraphics[0].path.Contains("penis")))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											GenDraw.DrawMeshNowOrLater(mesh: addonGraphic.MeshAt(rot: rotation), loc: vector + (ba.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(angle: Mathf.Acos(f: Quaternion.Dot(a: Quaternion.identity, b: addonRotation)) * 2f * 57.29578f),
 | 
				
			||||||
 | 
											quat: Quaternion.AngleAxis(angle: pawnAnimator.genitalAngle, axis: Vector3.up), mat: addonGraphic.MatAt(rot: rotation), renderFlags.FlagSet(PawnRenderFlags.DrawNow));
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
											GenDraw.DrawMeshNowOrLater(mesh: addonGraphic.MeshAt(rot: rotation), loc: vector + (ba.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(angle: Mathf.Acos(f: Quaternion.Dot(a: Quaternion.identity, b: addonRotation)) * 2f * 57.29578f),
 | 
				
			||||||
 | 
											quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * addonRotation, mat: addonGraphic.MatAt(rot: rotation), renderFlags.FlagSet(PawnRenderFlags.DrawNow));
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(AlienRace.HarmonyPatches), "DrawAddons")]
 | 
				
			||||||
 | 
					    public static class HarmonyPatch_AlienRace {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static void RenderHeadAddonInAnimation(Mesh mesh, Vector3 loc, Quaternion quat, Material mat, bool drawNow, Graphic graphic, AlienPartGenerator.BodyAddon bodyAddon, Vector3 v, Vector3 headOffset, Pawn pawn, PawnRenderFlags renderFlags, Vector3 vector, Rot4 rotation)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								CompBodyAnimator pawnAnimator = pawn.TryGetComp<CompBodyAnimator>();
 | 
				
			||||||
 | 
								AlienPartGenerator.AlienComp comp = pawn.GetComp<AlienPartGenerator.AlienComp>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (pawnAnimator != null && pawnAnimator.isAnimating)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if((bodyAddon.drawnInBed || bodyAddon.alignWithHead))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
										AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation);
 | 
				
			||||||
 | 
										Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero;
 | 
				
			||||||
 | 
										AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation);
 | 
				
			||||||
 | 
										Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero);
 | 
				
			||||||
 | 
										vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y));
 | 
				
			||||||
 | 
										float num = bodyAddon.angle;
 | 
				
			||||||
 | 
										if (rotation == Rot4.North)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											if (bodyAddon.layerInvert)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												vector2.y = -vector2.y;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											num = 0f;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										if (rotation == Rot4.East)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											num = -num;
 | 
				
			||||||
 | 
											vector2.x = -vector2.x;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										vector = vector + Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up) * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.bodyFacing) - pawnAnimator.getPawnHeadOffset(); //convert vector into pseudo body pos for head
 | 
				
			||||||
 | 
										quat = Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up);
 | 
				
			||||||
 | 
										loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f);
 | 
				
			||||||
 | 
										mat = graphic.MatAt(rot: pawnAnimator.headFacing);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation);
 | 
				
			||||||
 | 
										Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero;
 | 
				
			||||||
 | 
										AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation);
 | 
				
			||||||
 | 
										Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero);
 | 
				
			||||||
 | 
										vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y));
 | 
				
			||||||
 | 
										float num = bodyAddon.angle;
 | 
				
			||||||
 | 
										if (rotation == Rot4.North)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											if (bodyAddon.layerInvert)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												vector2.y = -vector2.y;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											num = 0f;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										if (rotation == Rot4.East)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											num = -num;
 | 
				
			||||||
 | 
											vector2.x = -vector2.x;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										quat = Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up);
 | 
				
			||||||
 | 
										loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f);
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								GenDraw.DrawMeshNowOrLater(mesh, loc, quat, mat, drawNow);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								/*
 | 
				
			||||||
 | 
								if (pawnAnimator != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && pawnAnimator.isAnimating && (bodyAddon.drawnInBed || bodyAddon.alignWithHead))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									if ((pawn.def as ThingDef_AlienRace).defName == "Alien_Orassan")
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										orassan = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										if(bodyAddon.path.Contains("closed"))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
											return;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										if (bodyAddon.bodyPart.Contains("ear"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											orassan = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											orassanv = new Vector3(0, 0, 0.23f);
 | 
				
			||||||
 | 
											if (pawnAnimator.headFacing == Rot4.North)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												orassanv.z -= 0.1f;
 | 
				
			||||||
 | 
												orassanv.y += 1f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												if(bodyAddon.bodyPart.Contains("left"))
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
													orassanv.x += 0.03f;
 | 
				
			||||||
 | 
					                            } else
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
													orassanv.x -= 0.03f;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											else if (pawnAnimator.headFacing == Rot4.East)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												orassanv.x -= 0.1f;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											else if (pawnAnimator.headFacing == Rot4.West)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												orassanv.x = 0.1f;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											else
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
												orassanv.z -= 0.1f;
 | 
				
			||||||
 | 
												orassanv.y += 1f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												if (bodyAddon.bodyPart.Contains("right"))
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													orassanv.x += 0.05f;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												else
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													orassanv.x -= 0.05f;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											orassanv = orassanv.RotatedBy(pawnAnimator.headAngle);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								GenDraw.DrawMeshNowOrLater(mesh: graphic.MeshAt(rot: headRotInAnimation), loc: loc + orassanv + (bodyAddon.alignWithHead ? headOffset : Vector3.zero),// + v.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f),
 | 
				
			||||||
 | 
										quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * headQuatInAnimation, mat: graphic.MatAt(rot: pawnAnimator.headFacing), drawNow: drawNow);;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
								List<CodeInstruction> ins = instructions.ToList();
 | 
				
			||||||
 | 
								for (int i = 0; i < ins.Count; i++)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Type[] type = new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (ins[i].OperandIs(AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater", type)))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldloc, (object)7); //graphic
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldloc, (object)4); //bodyAddon
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldloc, (object)5); //offsetVector/AddonOffset (v)
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldarg, (object)2); //headOffset
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldarg, (object)3); //pawn
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldarg, (object)0); //renderflags
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldarg, (object)1); //vector
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Ldarg, (object)5); //rotation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(HarmonyPatch_AlienRace), "RenderHeadAddonInAnimation"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										yield return ins[i];
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static bool Prefix(PawnRenderFlags renderFlags, ref Vector3 vector, ref Vector3 headOffset, Pawn pawn, ref Quaternion quat, ref Rot4 rotation)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if(pawn == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
								CompBodyAnimator anim = pawn.TryGetComp<CompBodyAnimator>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(anim == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (anim != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && anim.isAnimating)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									//quat = Quaternion.AngleAxis(anim.bodyAngle, Vector3.up);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
    <DebugSymbols>false</DebugSymbols>
 | 
					    <DebugSymbols>false</DebugSymbols>
 | 
				
			||||||
    <DebugType>none</DebugType>
 | 
					    <DebugType>none</DebugType>
 | 
				
			||||||
    <Optimize>false</Optimize>
 | 
					    <Optimize>false</Optimize>
 | 
				
			||||||
    <OutputPath>1.4\Assemblies\</OutputPath>
 | 
					    <OutputPath>1.5\Assemblies\</OutputPath>
 | 
				
			||||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
					    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
				
			||||||
    <ErrorReport>prompt</ErrorReport>
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
    <WarningLevel>4</WarningLevel>
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
| 
						 | 
					@ -71,7 +71,7 @@
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
    <Compile Include="Source\HarmonyPatch_AlienRace.cs" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup />
 | 
				
			||||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
					  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					using Rimworld_Animations;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class SexToyAnimationDef : AnimationDef
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public String requiredBodyPart = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [StaticConstructorOnStartup]
 | 
				
			||||||
 | 
					    public static class Harmony_PatchAll {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static Harmony_PatchAll() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Harmony val = new Harmony("animtoyspatch");
 | 
				
			||||||
 | 
					            val.PatchAll(Assembly.GetExecutingAssembly());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,76 @@
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using Rimworld_Animations;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using RJW_ToysAndMasturbation;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")]
 | 
				
			||||||
 | 
					    public class HarmonyPatch_JobDriver_SexBaseInitiator
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void Postfix(ref JobDriver_SexBaseInitiator __instance)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(__instance is JobDriver_MasturbateWithToy masturbateJobDriver)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Log.Message("Rerolling animations...");
 | 
				
			||||||
 | 
					                Pawn pawn = masturbateJobDriver.pawn;
 | 
				
			||||||
 | 
					                Thing sexToy = masturbateJobDriver.dildo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RerollAnimationsForSexToy(pawn, sexToy, masturbateJobDriver.Bed);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void RerollAnimationsForSexToy(Pawn pawn, Thing thing, Thing bed)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CompSexToy sextoy = thing.TryGetComp<CompSexToy>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            SexToyAnimationDef anim = AnimSexToyUtility.tryFindAnimation(sextoy, pawn);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (anim != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Log.Message("Playing anim " + anim.defName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(bed != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    pawn.TryGetComp<CompBodyAnimator>().setAnchor(bed);
 | 
				
			||||||
 | 
					                    thing.TryGetComp<CompThingAnimator>().setAnchor(bed);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    pawn.TryGetComp<CompBodyAnimator>().setAnchor(pawn.Position);
 | 
				
			||||||
 | 
					                    thing.TryGetComp<CompThingAnimator>().setAnchor(pawn.Position);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                bool mirror = GenTicks.TicksGame % 2 == 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                pawn.TryGetComp<CompBodyAnimator>().StartAnimation(anim, new List<Pawn> { pawn }, 0, mirror);
 | 
				
			||||||
 | 
					                thing.TryGetComp<CompThingAnimator>().StartAnimation(anim, pawn, mirror);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                (pawn.jobs.curDriver as JobDriver_Sex).ticks_left = anim.animationTimeTicks;
 | 
				
			||||||
 | 
					                (pawn.jobs.curDriver as JobDriver_Sex).sex_ticks = anim.animationTimeTicks;
 | 
				
			||||||
 | 
					                (pawn.jobs.curDriver as JobDriver_Sex).orgasmStartTick = anim.animationTimeTicks;
 | 
				
			||||||
 | 
					                (pawn.jobs.curDriver as JobDriver_Sex).duration = anim.animationTimeTicks;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Log.Message("No animation found");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using RJW_ToysAndMasturbation;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class AnimSexToyUtility
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static SexToyAnimationDef tryFindAnimation(CompSexToy sexToy, Pawn pawn)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            IEnumerable<SexToyAnimationDef> options = DefDatabase<SexToyAnimationDef>.AllDefs.Where((SexToyAnimationDef x) =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(!sexToy.Props.requiredBodyParts.Contains(x.requiredBodyPart))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(x.requiredBodyPart == "vagina" && !Genital_Helper.has_vagina(pawn))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(options != null && options.Any())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return options.RandomElement();
 | 
				
			||||||
 | 
					            } 
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					using Rimworld_Animations;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class SexToyAnimationDef : AnimationDef
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public String requiredBodyPart = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [StaticConstructorOnStartup]
 | 
				
			||||||
 | 
					    public static class Harmony_PatchAll {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static Harmony_PatchAll() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Harmony val = new Harmony("animtoyspatch");
 | 
				
			||||||
 | 
					            val.PatchAll(Assembly.GetExecutingAssembly());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using Rimworld_Animations;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using RJW_ToysAndMasturbation;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")]
 | 
				
			||||||
 | 
					    public class HarmonyPatch_JobDriver_SexBaseInitiator
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void Postfix(ref JobDriver_SexBaseInitiator __instance)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(__instance is JobDriver_MasturbateWithToy masturbateJobDriver)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Log.Message("Rerolling animations...");
 | 
				
			||||||
 | 
					                Pawn pawn = masturbateJobDriver.pawn;
 | 
				
			||||||
 | 
					                Thing sexToy = masturbateJobDriver.dildo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RerollAnimationsForSexToy(pawn, sexToy, masturbateJobDriver.Bed);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void RerollAnimationsForSexToy(Pawn pawn, Thing thing, Thing bed)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //play anim for sex toy
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using RJW_ToysAndMasturbation;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Patch_SexToysMasturbation
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class AnimSexToyUtility
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static SexToyAnimationDef tryFindAnimation(CompSexToy sexToy, Pawn pawn)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					            //todo
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
    <DebugSymbols>false</DebugSymbols>
 | 
					    <DebugSymbols>false</DebugSymbols>
 | 
				
			||||||
    <DebugType>none</DebugType>
 | 
					    <DebugType>none</DebugType>
 | 
				
			||||||
    <Optimize>false</Optimize>
 | 
					    <Optimize>false</Optimize>
 | 
				
			||||||
    <OutputPath>1.4\Assemblies\</OutputPath>
 | 
					    <OutputPath>1.5\Assemblies\</OutputPath>
 | 
				
			||||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
					    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
				
			||||||
    <ErrorReport>prompt</ErrorReport>
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
    <WarningLevel>4</WarningLevel>
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
| 
						 | 
					@ -72,18 +72,15 @@
 | 
				
			||||||
    </Reference>
 | 
					    </Reference>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="1.5\Source\Defs\SexToyAnimationDef.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="1.5\Source\Harmony\Harmony_PatchAll.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="1.5\Source\Patches\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="1.5\Source\Utilities\AnimSexToyUtility.cs" />
 | 
				
			||||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
    <Compile Include="Source\Defs\SexToyAnimationDef.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="Source\Harmony\Harmony_PatchAll.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="Source\Patches\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="Source\Utilities\AnimSexToyUtility.cs" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Folder Include="1.3\Assemblies\" />
 | 
					    <Folder Include="1.5\Assemblies\" />
 | 
				
			||||||
  </ItemGroup>
 | 
					    <Folder Include="1.5\Defs\AnimationDefs\" />
 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <Content Include="1.3\Defs\AnimationDefs\Animations_Dildo.xml" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_Dildo.xml" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
					  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
    <DebugSymbols>false</DebugSymbols>
 | 
					    <DebugSymbols>false</DebugSymbols>
 | 
				
			||||||
    <DebugType>none</DebugType>
 | 
					    <DebugType>none</DebugType>
 | 
				
			||||||
    <Optimize>false</Optimize>
 | 
					    <Optimize>false</Optimize>
 | 
				
			||||||
    <OutputPath>1.4\Assemblies\</OutputPath>
 | 
					    <OutputPath>1.5\Assemblies\</OutputPath>
 | 
				
			||||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
					    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
				
			||||||
    <ErrorReport>prompt</ErrorReport>
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
    <WarningLevel>4</WarningLevel>
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
| 
						 | 
					@ -45,8 +45,7 @@
 | 
				
			||||||
      <Private>False</Private>
 | 
					      <Private>False</Private>
 | 
				
			||||||
    </Reference>
 | 
					    </Reference>
 | 
				
			||||||
    <Reference Include="RJW">
 | 
					    <Reference Include="RJW">
 | 
				
			||||||
      <HintPath>..\rjw\1.4\Assemblies\RJW.dll</HintPath>
 | 
					      <HintPath>..\rjw\1.5\Assemblies\RJW.dll</HintPath>
 | 
				
			||||||
      <Private>False</Private>
 | 
					 | 
				
			||||||
    </Reference>
 | 
					    </Reference>
 | 
				
			||||||
    <Reference Include="RJW-ToysAndMasturbation">
 | 
					    <Reference Include="RJW-ToysAndMasturbation">
 | 
				
			||||||
      <HintPath>..\rjw-toys-and-masturbation\Assemblies\RJW-ToysAndMasturbation.dll</HintPath>
 | 
					      <HintPath>..\rjw-toys-and-masturbation\Assemblies\RJW-ToysAndMasturbation.dll</HintPath>
 | 
				
			||||||
| 
						 | 
					@ -70,100 +69,60 @@
 | 
				
			||||||
    </Reference>
 | 
					    </Reference>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Compile Include="1.4\Source\Actors\Actor.cs" />
 | 
					    <Compile Include="1.5\Source\Actors\Actor.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Actors\AlienRaceOffset.cs" />
 | 
					    <Compile Include="1.5\Source\Actors\AlienRaceOffset.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Actors\BodyTypeOffset.cs" />
 | 
					    <Compile Include="1.5\Source\Actors\BodyTypeOffset.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\AnimationStage.cs" />
 | 
					    <Compile Include="1.5\Source\Comps\CompProperties_ThingAnimator.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\Clips\BaseAnimationClip.cs" />
 | 
					    <Compile Include="1.5\Source\Comps\CompThingAnimator.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\Clips\PawnAnimationClip.cs" />
 | 
					    <Compile Include="1.5\Source\MainTabWindows\MainTabWindow_OffsetConfigure.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\Clips\ThingAnimationClip.cs" />
 | 
					    <Compile Include="1.5\Source\MainTabWindows\OffsetMainButtonDefOf.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\Keyframes\Keyframe.cs" />
 | 
					    <Compile Include="1.5\Source\MainTabWindows\WorldComponent_UpdateMainTab.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\Keyframes\PawnKeyframe.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\Harmony_PatchAll.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Animations\Keyframes\ThingKeyframe.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_Thing.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Comps\CompBodyAnimator.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RJWPatches\HarmonyPatch_PlaySexSounds.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Comps\CompProperties_BodyAnimator.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RJWPatches\HarmonyPatch_SexTick.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Comps\CompProperties_ThingAnimator.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RJWPatches\HarmonyPatch_WorkGiverSex.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Comps\CompThingAnimator.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_JoinInBed.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Defs\AnimationDef.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\Extensions\PawnWoundDrawerExtension.cs" />
 | 
					    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\MainTabWindows\MainTabWindow_OffsetConfigure.cs" />
 | 
					    <Compile Include="1.5\Source\Settings\AnimationSettings.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\MainTabWindows\OffsetMainButtonDefOf.cs" />
 | 
					    <Compile Include="1.5\Source\Utilities\AnimationUtility.cs" />
 | 
				
			||||||
    <Compile Include="1.4\Source\MainTabWindows\WorldComponent_UpdateMainTab.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\Harmony_PatchAll.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\OtherModPatches\HarmonyPatch_CSL.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\OtherModPatches\HarmonyPatch_DontShaveYourHead.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\OtherModPatches\HarmonyPatch_FacialAnimation.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\OtherModPatches\HarmonyPatch_HatsDisplaySelection.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\OtherModPatches\HarmonyPatch_ShowHairWithHats.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_HeadHair.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_PawnRenderer.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_PawnRotation.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_Pawn_DrawTracker.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_ResolveApparelGraphics.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_SetPawnAnimatable.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RimworldPatches\HarmonyPatch_Thing.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RJWPatches\HarmonyPatch_PlaySexSounds.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RJWPatches\HarmonyPatch_SexTick.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RJWPatches\HarmonyPatch_WorkGiverSex.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_JoinInBed.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Settings\AnimationSettings.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Utilities\AnimationUtility.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="1.4\Source\Utilities\PatchOperationAddOrReplace.cs" />
 | 
					 | 
				
			||||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Content Include="1.1\Assemblies\Rimworld-Animations.dll" />
 | 
					    <Content Include="1.1\Assemblies\Rimworld-Animations.dll" />
 | 
				
			||||||
    <Content Include="1.4\Assemblies\Rimworld-Animations.dll" />
 | 
					    <Content Include="1.5\Defs\MainTabDefs\MainButtonDef.xml" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_Beast.xml" />
 | 
					    <Content Include="1.5\Defs\SoundDefs\Sounds_Sex.xml" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_Lesbian.xml" />
 | 
					    <Content Include="1.5\Patches\CompatibilityPatch_FacialAnimation.xml" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_Masturbate.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_1.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_Multi.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_2.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_SexToys.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_3.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_vanilla.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_4.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\Animations_Vanilla2.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_5.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\AnimationDefs\TemplateAnimation.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_6.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\MainTabDefs\MainButtonDef.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_7.wav" />
 | 
				
			||||||
    <Content Include="1.4\Defs\SoundDefs\Sounds_Sex.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Clap_8.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\AnimationPatchHSK.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\cum.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\AnimationPatch_CompBodyAnimator.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\kucyu04.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\CompatibilityPatch_FacialAnimation.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Slime\Slimy1.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\CompatibilityPatch_HCSK.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Slime\Slimy2.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\CompPatches\AutoCleaner.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Slime\Slimy3.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\CompPatches\CombatExtended.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Slime\Slimy4.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\CompPatches\ZombieLand.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Slime\Slimy5.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\RacePatches\Epona race Renaissance.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_1.wav" />
 | 
				
			||||||
    <Content Include="1.4\Patches\RacePatches\Nyaron.xml" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_10.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_1.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_2.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_2.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_3.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_3.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_4.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_4.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_5.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_5.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_6.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_6.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_7.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_7.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_8.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Clap_8.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Suck_9.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\cum.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Swallow_1.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\kucyu04.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Swallow_2.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Slime\Slimy1.wav" />
 | 
					    <Content Include="1.5\Sounds\Sex\Suck\Swallow_3.wav" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Slime\Slimy2.wav" />
 | 
					    <Content Include="1.5\Textures\UI\MainTab.png" />
 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Slime\Slimy3.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Slime\Slimy4.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Slime\Slimy5.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_1.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_10.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\suck_2.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_3.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_4.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_5.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_6.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_7.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_8.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Suck_9.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Swallow_1.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Swallow_2.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Sounds\Sex\Suck\Swallow_3.wav" />
 | 
					 | 
				
			||||||
    <Content Include="1.4\Textures\UI\MainTab.png" />
 | 
					 | 
				
			||||||
    <Content Include="About\About.xml" />
 | 
					    <Content Include="About\About.xml" />
 | 
				
			||||||
    <Content Include="About\Manifest.xml" />
 | 
					    <Content Include="About\Manifest.xml" />
 | 
				
			||||||
    <Content Include="Languages\PortugueseBrazilian\DefInjected\MainButtonDef\MainButtonDef.xml" />
 | 
					    <Content Include="Languages\PortugueseBrazilian\DefInjected\MainButtonDef\MainButtonDef.xml" />
 | 
				
			||||||
| 
						 | 
					@ -175,10 +134,11 @@
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Folder Include="1.2\" />
 | 
					    <Folder Include="1.2\" />
 | 
				
			||||||
  </ItemGroup>
 | 
					    <Folder Include="1.5\Assemblies\" />
 | 
				
			||||||
  <ItemGroup>
 | 
					    <Folder Include="1.5\Defs\AnimationDefs\" />
 | 
				
			||||||
    <None Include="1.4\Defs\AnimationDefs\AnimationDefs.rar" />
 | 
					    <Folder Include="1.5\Source\Defs\" />
 | 
				
			||||||
    <None Include="1.4\Patch_HatsDisplaySelection\Patch_HatsDisplaySelection.csproj" />
 | 
					    <Folder Include="1.5\Source\Extensions\" />
 | 
				
			||||||
 | 
					    <Folder Include="1.5\Source\Patches\OtherModPatches\" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
					  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue