code:
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 PawnRenderSubWorker_ChangeOffset : PawnRenderSubWorker
    {

        public override void TransformOffset(PawnRenderNode node, PawnDrawParms parms, ref Vector3 offset, ref Vector3 pivot)
        {
            if (parms.Portrait)
                return;

            if (node.AnimationWorker is AnimationWorker_KeyframesExtended
                && node.tree.pawn.TryGetComp<CompExtendedAnimator>(out CompExtendedAnimator extendedAnimator))
            {
                Vector3? pawnOffset = extendedAnimator.Offset;
                if (pawnOffset != null)
                {
                    offset += (Vector3)pawnOffset;
                }

            }
        }

        public override void TransformRotation(PawnRenderNode node, PawnDrawParms parms, ref Quaternion rotation)
        {
            if (node.AnimationWorker is AnimationWorker_KeyframesExtended
                && node.tree.pawn.TryGetComp<CompExtendedAnimator>(out CompExtendedAnimator extendedAnimator))
            {
                int? pawnRotation = extendedAnimator.Rotation;
                if (pawnRotation != null)
                {
                    Quaternion additionalRotation = Quaternion.AngleAxis((int)pawnRotation, Vector3.up);
                    rotation *= additionalRotation;
                }

            }

            base.TransformRotation(node, parms, ref rotation);
        }

    }
}


code:
using RimWorld;
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 PawnRenderSubWorker_HideWhenAnimating : PawnRenderSubWorker
    {

        public override void EditMaterial(PawnRenderNode node, PawnDrawParms parms, ref Material material)
        {
            if (node.tree.pawn.def != ThingDefOf.Human) return;

            if (node.tree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended
                || node.tree.rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended))
            {
                material.color = Color.clear;
                material.shader = ShaderTypeDefOf.Transparent.Shader;
            }
        }

        public override void TransformLayer(PawnRenderNode node, PawnDrawParms parms, ref float layer)
        {

            base.TransformLayer(node, parms, ref layer);

            if (node.tree.pawn.def != ThingDefOf.Human) return;
            layer -= 1000;
        }

    }

}

repo_name: BELLATOR/rimworld

license: unknown


code:
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 void StartAnimation(List<Pawn> participants)
        {
            participants[0].Drawer.renderer.SetAnimation(AnimationDefOf.TestAnimation1);
            participants[1].Drawer.renderer.SetAnimation(AnimationDefOf.TestAnimation2);
        }

        //startgroupanimator with anchor
        //don't anchor to self if anchor is self
        public static void StartGroupAnimation(List<Pawn> participants, GroupAnimationDef groupAnimationDef, int reorder, Thing anchor)
        {

            int seed = GenTicks.TicksGame;

            for (int i = 0; i < participants.Count; i++)
            {

                groupAnimationDef.GetOffset(i, participants[i], out Vector3? position, out int? rotation, reorder);

                if (anchor is Pawn pawn && pawn == participants[i])
                {

                    List<AnimationDef> allAnimationsForPawn = groupAnimationDef.GetAllAnimationsForActor(i, seed, reorder);
                    participants[i].TryGetComp<CompExtendedAnimator>().PlayGroupAnimation(allAnimationsForPawn, position, rotation);
                }
                else
                {
                    //each participant gets their own unique extendedanimatoranchor, important for scribe_deep saving
                    List<AnimationDef> allAnimationsForPawn = groupAnimationDef.GetAllAnimationsForActor(i, seed, reorder);
                    BaseExtendedAnimatorAnchor animatorAnchor = new ExtendedAnimatorAnchor_Thing(anchor);

                    if (RJWAnimationSettings.debugMode)
                    {
                        Log.Message("Now playing animation: " + groupAnimationDef.defName + " Actor Shift: " + reorder);
                    }

                    participants[i].TryGetComp<CompExtendedAnimator>().PlayGroupAnimation(allAnimationsForPawn, position, rotation, animatorAnchor);
                }
            }
        }

        //startgroupanimation without anchor; just play where standing
        public static void StartGroupAnimation(List<Pawn> participants, GroupAnimationDef groupAnimationDef, int reorder)
        {
            int seed = GenTicks.TicksGame;

            for (int i = 0; i < participants.Count; i++)
            {
                List<AnimationDef> allAnimationsForPawn = groupAnimationDef.GetAllAnimationsForActor(i, seed, reorder);
                groupAnimationDef.GetOffset(i, participants[i], out Vector3? position, out int? rotation, reorder);
                participants[i].TryGetComp<CompExtendedAnimator>().PlayGroupAnimation(allAnimationsForPawn, position, rotation);
            }
        }

        public static void StopGroupAnimation(List<Pawn> participants)
        {
            foreach(Pawn pawn in participants)
            {
                pawn.TryGetComp<CompExtendedAnimator>()?.StopAnimating();
            }
        }

        public static void StopGroupAnimation(Pawn participant)
        {
            participant.TryGetComp<CompExtendedAnimator>()?.StopAnimating();
        }

        public static GroupAnimationDef FindGroupAnimation(List<Pawn> participants, out int reorder)
        {
            // go through each context in each GroupAnimationDef
            // if you find one where it returns canAnimationBeUsed (and reorders),
            // return that animation

            //find all, reorder randomly, then find max priority context
            DefDatabase<GroupAnimationDef>.AllDefsListForReading
                .FindAll((GroupAnimationDef x) => x.canAnimationBeUsed(participants))
                .OrderBy(_ => Rand.Int)
                .TryMaxBy((GroupAnimationDef x) => x.Priority(participants), out GroupAnimationDef result);

            reorder = result != null ? result.Reorder(participants) : 0;
            return result;

        }

        public static int GetAnimationLength(Pawn pawn)
        {
            return pawn.TryGetComp<CompExtendedAnimator>().AnimationLength;
        }

    }
}


code:
using RimWorld;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;

namespace Rimworld_Animations
{
    public class VoiceDef : Def
    {

        public List<ThingDef> races = new List<ThingDef>();
        public Gender gender = Gender.None;
        public List<TraitDef> traits = new List<TraitDef>();
        public bool takesPriority = false;
        public float randomChanceFactor = 1;

        public Dictionary<VoiceTagDef, SoundDef> sounds = new Dictionary<VoiceTagDef, SoundDef>();

        public bool VoiceFitsPawn(Pawn pawn)
        {

            //doesn't match any of the races
            if (!races.Exists(x => x == pawn.def)) return false;

            //doesn't match gender
            if (gender != Gender.None && pawn.gender != gender) return false;

            //if traits list is not empty, and pawn doesn't have any of the designated traits, doesn't match
            if (!traits.Empty() && !traits.Any(trait => pawn.story.traits.HasTrait(trait))) return false;

            return true;

        }

    }
}


code:
using RimWorld;
using rjw;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rimworld_Animations
{
    [DefOf]
    public static class VoiceDefOf
    {
        static VoiceDefOf()
        {
            DefOfHelper.EnsureInitializedInCtor(typeof(VoiceDefOf));
        }

        public static VoiceDef Voice_HumanMale;
        public static VoiceDef Voice_HumanFemale;
    }
}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;

namespace Rimworld_Animations
{
    public class VoiceTagDef : Def
    {

        public float probability = 1;

    }
}


code:
<?xml version="1.0" encoding="utf-8"?>

<ModMetaData>
	<name>Rimworld Animations 2.0</name>
	<author>C0ffee</author>
  <url>https://gitgud.io/c0ffeeeeeeee/rimworld-animations</url>
	<supportedVersions>

1.5

	</supportedVersions>
	<packageId>c0ffee.rimworld.animations</packageId>
	<modDependencies>

			<packageId>brrainz.harmony</packageId>
			<displayName>Harmony</displayName>
			<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
			<downloadUrl>https://github.com/pardeike/HarmonyRimWorld/releases/latest</downloadUrl>

			<packageId>UnlimitedHugs.HugsLib</packageId>
			<displayName>HugsLib</displayName>
			<downloadUrl>https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest</downloadUrl>
			<steamWorkshopUrl>steam://url/CommunityFilePage/818773962</steamWorkshopUrl>

			<packageId>rim.job.world</packageId>
			<displayName>RimJobWorld</displayName>
			<downloadUrl>https://www.loverslab.com/topic/110270-mod-rimjobworld/</downloadUrl>

	</modDependencies>
	<loadAfter>

UnlimitedHugs.HugsLib

brrainz.harmony

erdelf.humanoidalienraces

nals.facialanimation

com.yayo.yayoAni

	</loadAfter>
	<loadBefore>
	</loadBefore>
	<incompatibleWith>
	</incompatibleWith>
	<description>
    Rimworld Animations 2.0! Hurray!

    Questions or bugs?
    Chat with me on the forums: https://www.loverslab.com/topic/140386-rjw-animations/
    Or on the rjw discord: https://discord.gg/CXwHhv8

  </description>
</ModMetaData>


code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
  <identifier>Rimworld-Animations</identifier>
  <version>2.0.0</version>
</Manifest>


code:
<?xml version="1.0" encoding="utf-8" ?>
<LanguageData>

	<!-- Mod menu -->
	<RimAnim_ModSettings>RJW Animation Settings</RimAnim_ModSettings>
	<RimAnim_SoundOverride>启用声音覆盖</RimAnim_SoundOverride>
	<RimAnim_GenitalRotation>控制生殖器旋转</RimAnim_GenitalRotation>
	<RimAnim_OrgasmQuiver>启用高潮颤抖</RimAnim_OrgasmQuiver>
	<RimAnim_RapeShiver>启用强奸颤动</RimAnim_RapeShiver>
	<RimAnim_HeartsDuringLovin>性爱时启用心形</RimAnim_HeartsDuringLovin>
	<RimAnim_PlayNonsexual>播放非性行为的动画 (牵手、亲热)</RimAnim_PlayNonsexual>
	<RimAnim_AnimManagerTab>启用动画管理器选项卡</RimAnim_AnimManagerTab>
	<RimAnim_ShiverIntensity>颤抖/颤动强度 (默认为 2): </RimAnim_ShiverIntensity>
	<RimAnim_Voices>在动画期间播放语音</RimAnim_Voices>
	<RimAnim_HumanlikeVoicesDefault>如果没有找到外星种族的声音，则默认播放人类的声音</RimAnim_HumanlikeVoicesDefault>
	<RimAnim_DebugMode>调试模式</RimAnim_DebugMode>
	<RimAnim_FloatRangeRenderTree>调整渲染树偏移表单的浮动范围:</RimAnim_FloatRangeRenderTree>

	<!-- Main Tab Window -->
	<RimAnims_AnimManager>Animation Manager</RimAnims_AnimManager>
	<RimAnims_Warning>警告--一般情况下，你不想更改人类偏移值，只想更改外星种族偏移值或动物偏移值</RimAnims_Warning>
	<RimAnims_CopyToClipboard>将偏移值复制到剪贴板</RimAnims_CopyToClipboard>
	<RimAnims_ShareSettings>将偏移值粘贴到 OffsetDef 中，或在 Discord 中共享</RimAnims_ShareSettings>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8" ?>
<LanguageData>

	<!-- Mod menu -->
	<RimAnim_ModSettings>RJW Animation Settings</RimAnim_ModSettings>
	<RimAnim_SoundOverride>啟用聲音覆蓋</RimAnim_SoundOverride>
	<RimAnim_GenitalRotation>控制生殖器旋轉</RimAnim_GenitalRotation>
	<RimAnim_OrgasmQuiver>啟用高潮顫抖</RimAnim_OrgasmQuiver>
	<RimAnim_RapeShiver>啟用強姦顫動</RimAnim_RapeShiver>
	<RimAnim_HeartsDuringLovin>性愛時啟用心形</RimAnim_HeartsDuringLovin>
	<RimAnim_PlayNonsexual>播放非性行為的動畫 (牽手、親熱)</RimAnim_PlayNonsexual>
	<RimAnim_AnimManagerTab>啟用動畫管理器選項卡</RimAnim_AnimManagerTab>
	<RimAnim_ShiverIntensity>顫抖/顫動強度 (預設為 2): </RimAnim_ShiverIntensity>
	<RimAnim_Voices>在動畫期間播放語音</RimAnim_Voices>
	<RimAnim_HumanlikeVoicesDefault>如果沒有找到外星種族的聲音，則默認播放人類的聲音</RimAnim_HumanlikeVoicesDefault>
	<RimAnim_DebugMode>除錯模式</RimAnim_DebugMode>
	<RimAnim_FloatRangeRenderTree>調整渲染樹偏移表單的浮動範圍:</RimAnim_FloatRangeRenderTree>

	<!-- Main Tab Window -->
	<RimAnims_AnimManager>Animation Manager</RimAnims_AnimManager>
	<RimAnims_Warning>警告--一般情況下，你不想更改人類偏移值，只想更改外星種族偏移值或動物偏移值</RimAnims_Warning>
	<RimAnims_CopyToClipboard>將偏移值複製到剪貼板</RimAnims_CopyToClipboard>
	<RimAnims_ShareSettings>將偏移值黏貼到 OffsetDef 中，或在 Discord 中共享</RimAnims_ShareSettings>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8" ?>
<LanguageData>

	<!-- Mod menu -->
	<RimAnim_ModSettings>RJW Animation Settings</RimAnim_ModSettings>
	<RimAnim_SoundOverride>Enable Sound Override</RimAnim_SoundOverride>
	<RimAnim_GenitalRotation>Control Genital Rotation</RimAnim_GenitalRotation>
	<RimAnim_OrgasmQuiver>Enable Orgasm Quiver</RimAnim_OrgasmQuiver>
	<RimAnim_RapeShiver>Enable Rape Shiver</RimAnim_RapeShiver>
	<RimAnim_HeartsDuringLovin>Enable hearts during lovin'</RimAnim_HeartsDuringLovin>
	<RimAnim_PlayNonsexual>Play animation for nonsexual acts (handholding, makeout)</RimAnim_PlayNonsexual>
	<RimAnim_AnimManagerTab>Enable Animation Manager Tab</RimAnim_AnimManagerTab>
	<RimAnim_ShiverIntensity>Shiver/Quiver Intensity (default 2): </RimAnim_ShiverIntensity>
	<RimAnim_Voices>Play voices during animations</RimAnim_Voices>
	<RimAnim_HumanlikeVoicesDefault>Play human voices by default, when none found for alien race</RimAnim_HumanlikeVoicesDefault>
	<RimAnim_DebugMode>Debug Mode</RimAnim_DebugMode>
	<RimAnim_FloatRangeRenderTree>Float range for Debug Render Tree offset menu: </RimAnim_FloatRangeRenderTree>

	<!-- Main Tab Window -->
	<RimAnims_AnimManager>Animation Manager</RimAnims_AnimManager>
	<RimAnims_Warning>Warning--You generally don't want to change human offsets, only alien offsets or animals</RimAnims_Warning>
	<RimAnims_CopyToClipboard>Copy Offset to Clipboard</RimAnims_CopyToClipboard>
	<RimAnims_ShareSettings>Paste offset values in OffsetDef, or share in Discord</RimAnims_ShareSettings>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>

  <OffsetManager.label>gerenciador de posições</OffsetManager.label>
  <OffsetManager.description>Controla as posições sexuais dos colonos.</OffsetManager.description>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>

  <Dog_Doggystyle.label>estilo cachorrinho</Dog_Doggystyle.label>
  <Horse_Cowgirl.label>vaqueira</Horse_Cowgirl.label>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>

  <Tribadism.label>tribadismo</Tribadism.label>
  <Cunnilingus.label>cunilíngua</Cunnilingus.label>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>

  <Double_Penetration.label>dupla penetração</Double_Penetration.label>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>

  <Doggystyle.label>estilo cachorrinho</Doggystyle.label>
  <Blowjob.label>boquete</Blowjob.label>
  <ReverseStandAndCarry.label>69</ReverseStandAndCarry.label>
  <Cowgirl.label>vaqueira</Cowgirl.label>

</LanguageData>


code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<loadFolders>
	<v1.1>

/

1.1

	</v1.1>
	<v1.2>

/

1.2

Patch_HatsDisplaySelection/1.2

	</v1.2>
	<v1.3>

/

1.3

Patch_HatsDisplaySelection/1.2

Patch_SexToysMasturbation

Patch_SexToysMasturbation/1.3

	</v1.3>
	<v1.4>

/

1.4

Patch_HumanoidAlienRaces/1.4

Patch_HatsDisplaySelection/1.2

Patch_SexToysMasturbation

Patch_SexToysMasturbation/1.4

	</v1.4>
	<v1.5>

/

1.5

Patch_HumanoidAlienRaces/1.5

Patch_SexToysMasturbation/1.5

Patch_FacialAnimation/1.5

Patch_NoRimNudeWorld/1.5

Patch_NoRimNudeWorldZoo/1.5

	</v1.5>

</loadFolders>


code:
<?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>{11DC70AF-FF23-4D4D-A4E5-6453664B1A12}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Milkable_Colonists_Animations</RootNamespace>
    <AssemblyName>Milkable-Colonists-Animations</AssemblyName>
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</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\839005762\1.5\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="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>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Source\Patches\Harmony_PatchAll.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


code:
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("Milkable-Colonists-Animations")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Milkable-Colonists-Animations")]
[assembly: AssemblyCopyright("Copyright ©  2024")]
[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("11dc70af-ff23-4d4d-a4e5-6453664b1a12")]

// 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")]


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using HarmonyLib;
using System.Reflection;

namespace MC_Animations {

    [StaticConstructorOnStartup]
    public static class Harmony_PatchAll {

        static Harmony_PatchAll() {

            Harmony val = new Harmony("mcanim");
            val.PatchAll(Assembly.GetExecutingAssembly());

        }
    }
}


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>/Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]/subworkerClasses</xpath>
				<success>Always</success>
				<nomatch Class="PatchOperationAdd">
					<xpath>/Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]</xpath>
					<value>
						<subworkerClasses />
					</value>
				</nomatch>

				<xpath>/Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]/subworkerClasses</xpath>
				<value>

Rimworld_Animations.PawnRenderSubWorker_HideWhenAnimating

				</value>

		</operations>
	</Operation>

</Patch>


code:
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;

		}
	}

	*/

}


code:
<?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>{C76F3790-9AC0-4827-ACD5-84174238954F}</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>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>false</DebugSymbols>
    <DebugType>none</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>1.5\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.5\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="Rimworld-Animations">
      <HintPath>..\1.4\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="1.5\Source\Patches\Harmony_PatchAll.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="1.5\Assemblies\Patch_HumanoidAlienRaces.dll" />
  </ItemGroup>
  <ItemGroup />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


code:
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("c76f3790-9ac0-4827-acd5-84174238954f")]

// 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")]


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<!-- placeholder for when RimNude isn't installed -->
	<PawnRenderNodeTagDef>
		<defName>RimNude_Penis</defName>
	</PawnRenderNodeTagDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<!-- placeholder for when RimNude isn't installed -->
	<PawnRenderNodeTagDef>
		<defName>AnimalPenis</defName>
	</PawnRenderNodeTagDef>
</Defs>


code:
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("Rimworld-Animations")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Rimworld-Animations")]
[assembly: AssemblyCopyright("Copyright ©  2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("71b05d71-67b2-4014-82cd-18c20ac0882f")]

// 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")]


code:
<?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>{71B05D71-67B2-4014-82CD-18C20AC0882F}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Rimworld_Animations</RootNamespace>
    <AssemblyName>Rimworld-Animations</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>1.5\Assemblies\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>none</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="RJW">
      <HintPath>..\rjw\1.5\Assemblies\RJW.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="RJW-ToysAndMasturbation">
      <HintPath>..\rjw-toys-and-masturbation\Assemblies\RJW-ToysAndMasturbation.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>
    <Reference Include="UnityEngine.IMGUIModule">
      <HintPath>..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="1.5\Source\Actors\Actor.cs" />
    <Compile Include="1.5\Source\Actors\AlienRaceOffset.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\AnimationOffsetDef.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\Offsets\AnimationOffset_AgeRange.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\Offsets\AnimationOffset_BodyType.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\Offsets\AnimationOffset_BodyTypeGendered.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\Offsets\AnimationOffset_Single.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\Offsets\BaseAnimationOffset.cs" />
    <Compile Include="1.5\Source\Animations\AnimationOffsets\Offsets\BodyTypeOffset.cs" />
    <Compile Include="1.5\Source\Animations\AnimationProps\AnimationPropDef.cs" />
    <Compile Include="1.5\Source\Animations\AnimationWorkers\AnimationWorker_KeyframesExtended.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\BasePawnTest.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_Never.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_Humanlike.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_PrisonerOfColony.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_SlaveOfColony.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_Always.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_JobDef.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_Multi.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_Race.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_RJWCanBeFucked.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_RJWCanFuck.cs" />
    <Compile Include="1.5\Source\Animations\PawnTests\PawnTest_Trait.cs" />
    <Compile Include="1.5\Source\Comps\CompExtendedAnimator.cs" />
    <Compile Include="1.5\Source\Comps\CompProperties_ExtendedAnimator.cs" />
    <Compile Include="1.5\Source\Comps\CompProperties_ThingAnimator.cs" />
    <Compile Include="1.5\Source\Comps\CompThingAnimator.cs" />
    <Compile Include="1.5\Source\Comps\ExtendedAnimatorAnchor\BaseExtendedAnimatorAnchor.cs" />
    <Compile Include="1.5\Source\Comps\ExtendedAnimatorAnchor\ExtendedAnimatorAnchor_Thing.cs" />
    <Compile Include="1.5\Source\Comps\ExtendedAnimatorAnchor\ExtendedAnimatorAnchor_Vector3.cs" />
    <Compile Include="1.5\Source\Defs\AnimationDefOf.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationContexts\BaseGroupAnimationContext.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationContexts\GroupAnimationContext_RJWSex.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationDef.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationStages\AnimationStage.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationStages\AnimationStage_Branch.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationStages\AnimationStage_LoopRandomSelectChance.cs" />
    <Compile Include="1.5\Source\Animations\GroupAnimations\GroupAnimationStages\AnimationStage_TicksDuration.cs" />
    <Compile Include="1.5\Source\Animations\Keyframes\ExtendedKeyframe.cs" />
    <Compile Include="1.5\Source\MainTabWindows\MainTabWindow_OffsetConfigure.cs" />
    <Compile Include="1.5\Source\MainTabWindows\OffsetMainButtonDefOf.cs" />
    <Compile Include="1.5\Source\MainTabWindows\WorldComponent_UpdateMainTab.cs" />
    <Compile Include="1.5\Source\Patches\Harmony_PatchAll.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_Dialog_DebugRenderTree.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_PawnRenderer.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_PawnRenderNode.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_PawnRenderNodeWorker.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_PawnRenderTree.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_Pawn_DrawTracker.cs" />
    <Compile Include="1.5\Source\Patches\RimworldPatches\HarmonyPatch_Thing.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\JobDriver_Sex\HarmonyPatch_Animate.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\JobDriver_Sex\HarmonyPatch_PlaySexSounds.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\JobDriver_Sex\HarmonyPatch_SexTick.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\HarmonyPatch_WorkGiverSex.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_JoinInBed.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_Sex.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\SexBaseReceivers\HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\SexBaseReceivers\HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicBodyTypeVariants\PawnRenderNodeProperties_GraphicBodyTypeVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicBodyTypeVariants\PawnRenderNodeWorker_GraphicBodyTypeVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicBodyTypeVariants\PawnRenderNode_GraphicBodyTypeVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicHediffSeverityVariants\PawnRenderNodeProperties_GraphicHediffSeverityVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicHediffSeverityVariants\PawnRenderNodeWorker_GraphicHediffSeverityVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicHediffSeverityVariants\PawnRenderNode_GraphicHediffSeverityVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicHediffVariants\PawnRenderNodeProperties_GraphicHediffVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicHediffVariants\PawnRenderNodeWorker_GraphicHediffVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicHediffVariants\PawnRenderNode_GraphicHediffVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicVariants\PawnRenderNodeProperties_GraphicVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicVariants\PawnRenderNodeWorker_GraphicVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\GraphicVariants\PawnRenderNode_GraphicVariants.cs" />
    <Compile Include="1.5\Source\PawnRenderNode\TexPathVariants.cs" />
    <Compile Include="1.5\Source\RenderSubWorkers\PawnRenderSubWorker_ChangeOffset.cs" />
    <Compile Include="1.5\Source\Patches\RJWPatches\RJWAnimationSettings.cs" />
    <Compile Include="1.5\Source\RenderSubWorkers\PawnRenderSubWorker_HideWhenAnimating.cs" />
    <Compile Include="1.5\Source\Utilities\AnimationUtility.cs" />
    <Compile Include="1.5\Source\Voices\VoiceDef.cs" />
    <Compile Include="1.5\Source\Voices\VoiceDefOf.cs" />
    <Compile Include="1.5\Source\Voices\VoiceTagDef.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="1.5\Assemblies\0MultiplayerAPI.dll" />
    <Content Include="1.5\Assemblies\Rimworld-Animations.dll" />
    <Content Include="1.5\Assemblies\RJW.dll" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\GroupAnimation_DogBeast.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage2.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage3_Variant1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage3_Variant2_FollowupWithVariant1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage3_Variant3.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage4.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage5_Variant1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage5_Variant2.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage5_Variant3.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Beast\DogBeast\Stage6.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\AnimationPropDef_Cum.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\GroupAnimation_Blowjob.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\OffsetDef_Blowjob.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage2a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage2b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage2c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage3.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage4a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage4b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage4c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage5.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage6a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Blowjob\Stage6b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\AnimationPropDef_Cowgirl_Xray.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage2_1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage2_2.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage2_3.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage3_XRay.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage4.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\Cowgirl_Stage_1_5.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\GroupAnimation_Cowgirl.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\OffsetDef_Cowgirl.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\AnimationPropDef_Saliva.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\GroupAnimation_Cunnilingus.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\OffsetDef_Cunnilingus.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage2a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage2b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage2c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage3_LoopOnce.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage4a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage4b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage4c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage5.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cunnilingus\Stage6.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\GroupAnimation_DP.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\OffsetDef_DP.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage2a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage2b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage2c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage2d.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage3.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage4.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage5a.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage5b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage5c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\DoublePenetration\Stage5_Base.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\GroupAnimation_Missionary.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\OffsetDef_Missionary.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage2.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage2b.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage2c.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage3_DontLoop.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage4.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage5.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Missionary\Stage6.xml" />
    <Content Include="1.5\Defs\AnimationPropDefs\AnimationPropDef_Hand.xml" />
    <Content Include="1.5\Defs\OffsetDefs\OffsetDef_Placeholder.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\1 Intro\Doggystyle Intro1.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\1 Intro\Doggystyle Intro2.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\1 Intro\Doggystyle Intro3.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\1 Intro\Doggystyle1a.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle1b.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle2.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle3.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle4.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle5.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle6.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\2 Main\Doggystyle7.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\3 Ending\Doggystyle8.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\3 Ending\Doggystyle8a.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\3 Ending\Doggystyle8b.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\3 Ending\Doggystyle8c.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\3 Ending\Doggystyle8d.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\3 Ending\Doggystyle8e.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\Misc\AnimationPropDef_BEV.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\Misc\GroupAnimation_Doggystyle_Condom_BEV.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\Misc\OffsetDef_Doggystyle_BEV.xml" />
    <Content Include="1.5\Defs\TestDoNotPush\Experimental\Misc\TexPathVariants_Doggystyle_BEV.xml" />
    <Content Include="1.5\Defs\TexPathVariantsDefs\TexPathVariants_XrayPenis_Human.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\TestAnimation\TestAnimation1.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\TestAnimation\TestAnimation2.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\TestAnimation\TestAnimation3.xml" />
    <Content Include="1.5\Defs\AnimationPropDefs\AnimationPropDef_Knees.xml" />
    <Content Include="1.5\Defs\AnimationPropDefs\AnimationPropDef_Xray_Inside.xml" />
    <Content Include="1.5\Defs\AnimationPropDefs\AnimationPropDef_Banana.xml" />
    <Content Include="1.5\Defs\AnimationPropDefs\AnimationPropDef_Xray_Penis.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\TestAnimation\TestGroupAnimation1.xml" />
    <Content Include="1.5\Defs\MainTabDefs\MainButtonDef.xml" />
    <Content Include="1.5\Defs\OffsetDefs\OffsetDef_GroinToAppropriateHeight.xml" />
    <Content Include="1.5\Defs\SoundDefs\Sounds_Sex.xml" />
    <Content Include="1.5\Defs\TexPathVariantsDefs\TexPathVariants_Cat.xml" />
    <Content Include="1.5\Defs\TexPathVariantsDefs\TexPathVariants_Arms.xml" />
    <Content Include="1.5\Defs\TexPathVariantsDefs\TexPathVariants_Knees.xml" />
    <Content Include="1.5\Defs\TexPathVariantsDefs\TexPathVariants_Xray_Inside.xml" />
    <Content Include="1.5\Defs\TexPathVariantsDefs\TexPathVariants_XrayPenis_Horse.xml" />
    <Content Include="1.5\Defs\GroupAnimationDefs\Cowgirl\TexPathVariants_Cowgirl.xml" />
    <Content Include="1.5\Defs\VoiceDefs\VoiceDef_Human\SoundDef_HumanFemale.xml" />
    <Content Include="1.5\Defs\VoiceDefs\VoiceDef_Human\SoundDef_HumanMale.xml" />
    <Content Include="1.5\Defs\VoiceDefs\VoiceDef_Human\VoiceDef_Human.xml" />
    <Content Include="1.5\Defs\VoiceDefs\VoiceDef_Orassan.xml" />
    <Content Include="1.5\Defs\VoiceDefs\VoiceTagDef.xml" />
    <Content Include="1.5\Patches\AnimationPatchHSK.xml" />
    <Content Include="1.5\Patches\AnimationPatch_CompExtendedAnimator.xml" />
    <Content Include="1.5\Patches\AnimationPatch_PawnRenderTree_OffsetSubWorker.xml" />
    <Content Include="1.5\Patches\CompatibilityPatch_FacialAnimation.xml" />
    <Content Include="1.5\Patches\CompatibilityPatch_HCSK.xml" />
    <Content Include="1.5\Patches\CompPatches\AutoCleaner.xml" />
    <Content Include="1.5\Patches\CompPatches\CombatExtended.xml" />
    <Content Include="1.5\Patches\CompPatches\ZombieLand.xml" />
    <Content Include="1.5\Patches\Patch_GenitaliaRenderNode.xml" />
    <Content Include="1.5\Sounds\Sex\Clap_1.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_2.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_3.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_4.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_5.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_6.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_7.wav" />
    <Content Include="1.5\Sounds\Sex\Clap_8.wav" />
    <Content Include="1.5\Sounds\Sex\cum.wav" />
    <Content Include="1.5\Sounds\Sex\kucyu04.wav" />
    <Content Include="1.5\Sounds\Sex\Slap\Slap_1.wav" />
    <Content Include="1.5\Sounds\Sex\Slap\Slap_2.wav" />
    <Content Include="1.5\Sounds\Sex\Slap\Slap_3.wav" />
    <Content Include="1.5\Sounds\Sex\Slap\Slap_4.wav" />
    <Content Include="1.5\Sounds\Sex\Slap\Slap_5.wav" />
    <Content Include="1.5\Sounds\Sex\Slime\Slimy1.wav" />
    <Content Include="1.5\Sounds\Sex\Slime\Slimy2.wav" />
    <Content Include="1.5\Sounds\Sex\Slime\Slimy3.wav" />
    <Content Include="1.5\Sounds\Sex\Slime\Slimy4.wav" />
    <Content Include="1.5\Sounds\Sex\Slime\Slimy5.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_1.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_10.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_2.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_3.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_4.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_5.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_6.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_7.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_8.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Suck_9.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Swallow_1.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Swallow_2.wav" />
    <Content Include="1.5\Sounds\Sex\Suck\Swallow_3.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Grunt1.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Grunt2.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Grunt3.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Grunt4.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Grunt5.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Grunt6.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Moan1.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Moan2.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Moan3.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Moan4.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\MoanShort1.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\MoanShort2.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\MoanShort3.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Scream1.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Scream2.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Scream3.wav" />
    <Content Include="1.5\Sounds\Voices\FVoice\Scream4.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Grunt1.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Grunt2.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Grunt3.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Grunt4.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Moan1.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Moan2.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Moan3.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Moan4.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\MoanShort1.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\MoanShort2.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\MoanShort3.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Scream1.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Scream2.wav" />
    <Content Include="1.5\Sounds\Voices\MVoice\Scream3.wav" />
    <Content Include="1.5\Textures\AnimationProps\Banana\Banana_east.png" />
    <Content Include="1.5\Textures\AnimationProps\Banana\Banana_north.png" />
    <Content Include="1.5\Textures\AnimationProps\Banana\Banana_south.png" />
    <Content Include="1.5\Textures\AnimationProps\Banana\Banana_west.png" />
    <Content Include="1.5\Textures\AnimationProps\Cat\Cat1_north.png" />
    <Content Include="1.5\Textures\AnimationProps\Cat\Cat2_north.png" />
    <Content Include="1.5\Textures\AnimationProps\Cum\Cum.png" />
    <Content Include="1.5\Textures\AnimationProps\Doggystyle\Doggy_Arms_north.png" />
    <Content Include="1.5\Textures\AnimationProps\Doggystyle\Doggy_Legs_north.png" />
    <Content Include="1.5\Textures\AnimationProps\Hand\Hand_north.png" />
    <Content Include="1.5\Textures\AnimationProps\MissingTexture\MissingTexture_east.png" />
    <Content Include="1.5\Textures\AnimationProps\MissingTexture\MissingTexture_north.png" />
    <Content Include="1.5\Textures\AnimationProps\MissingTexture\MissingTexture_south.png" />
    <Content Include="1.5\Textures\AnimationProps\MissingTexture\MissingTexture_west.png" />
    <Content Include="1.5\Textures\AnimationProps\CowgirlXray\XRay2-1.png" />
    <Content Include="1.5\Textures\AnimationProps\CowgirlXray\XRay2-2.png" />
    <Content Include="1.5\Textures\AnimationProps\CowgirlXray\XRay2-3.png" />
    <Content Include="1.5\Textures\AnimationProps\CowgirlXray\XRay2-4.png" />
    <Content Include="1.5\Textures\AnimationProps\CowgirlXray\XRay2-5.png" />
    <Content Include="1.5\Textures\AnimationProps\CowgirlXray\XRay2-6.png" />
    <Content Include="1.5\Textures\AnimationProps\Saliva\Saliva_north.png" />
    <Content Include="1.5\Textures\UI\MainTab.png" />
    <Content Include="About\About.xml" />
    <Content Include="About\Manifest.xml" />
    <Content Include="Languages\English\Keyed\RJWAnimations-LanguageData.xml" />
    <Content Include="Languages\PortugueseBrazilian\DefInjected\MainButtonDef\MainButtonDef.xml" />
    <Content Include="Languages\PortugueseBrazilian\DefInjected\Rimworld_Animations.AnimationDef\Animations_Beast.xml" />
    <Content Include="Languages\PortugueseBrazilian\DefInjected\Rimworld_Animations.AnimationDef\Animations_Lesbian.xml" />
    <Content Include="Languages\PortugueseBrazilian\DefInjected\Rimworld_Animations.AnimationDef\Animations_Multi.xml" />
    <Content Include="Languages\PortugueseBrazilian\DefInjected\Rimworld_Animations.AnimationDef\Animations_vanilla.xml" />
    <Content Include="LoadFolders.xml" />
    <Content Include="Patch_FacialAnimation\1.5\Patches\AnimationPatch_HideHeadWhenAnimating.xml" />
    <Content Include="Patch_NoRimNudeWorldZoo\1.5\Defs\PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml" />
    <Content Include="Patch_NoRimNudeWorld\1.5\Defs\PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="1.5\Source\Extensions\" />
    <Folder Include="1.5\Source\Patches\OtherModPatches\" />
    <Folder Include="1.5\Source\Settings\" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


code:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29905.134
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rimworld-Animations", "Rimworld-Animations.csproj", "{71B05D71-67B2-4014-82CD-18C20AC0882F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Milkable-Colonists-Animations", "Milkable-Colonists-Animations\Milkable-Colonists-Animations.csproj", "{11DC70AF-FF23-4D4D-A4E5-6453664B1A12}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{71B05D71-67B2-4014-82CD-18C20AC0882F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{71B05D71-67B2-4014-82CD-18C20AC0882F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|Any CPU.Build.0 = Release|Any CPU
		{11DC70AF-FF23-4D4D-A4E5-6453664B1A12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{11DC70AF-FF23-4D4D-A4E5-6453664B1A12}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{11DC70AF-FF23-4D4D-A4E5-6453664B1A12}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{11DC70AF-FF23-4D4D-A4E5-6453664B1A12}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {7E01292A-D76F-4CA3-AA64-085B84ECD905}
	EndGlobalSection
EndGlobal


code:
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<name>RJW Sexpanded Core</name>
	<author>Kira-Bad-Artist</author>
	<supportedVersions>

1.5

	</supportedVersions>
	<packageId>RJW.Sexpanded.Core</packageId>
	<modDependencies>

			<packageId>Ludeon.RimWorld.Biotech</packageId>
			<displayName>Biotech</displayName>

			<packageId>rim.job.world</packageId>
			<displayName>RJW</displayName>
			<downloadUrl>https://gitgud.io/Ed86/rjw</downloadUrl>

			<packageId>brrainz.harmony</packageId>
			<displayName>Harmony</displayName>
			<downloadUrl>https://github.com/pardeike/HarmonyRimWorld/releases/latest</downloadUrl>
			<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>

			<packageId>UnlimitedHugs.HugsLib</packageId>
			<displayName>HugsLib</displayName>
			<downloadUrl>https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest</downloadUrl>
			<steamWorkshopUrl>steam://url/CommunityFilePage/818773962</steamWorkshopUrl>

	</modDependencies>
	<loadAfter>

brrainz.harmony

UnlimitedHugs.HugsLib

rim.job.world

	</loadAfter>
	<description>New RJW-themed plants and products made out of them</description>
</ModMetaData>


code:
UPDATE from 24.06.2024:
*Add new Toxicle-derived drug - Toxaway! Clears toxic buildup from the body at the cost of having a day-long "purge" period;
*Changed udderfruit's yield from 10 to 8 and increased its cultivated version's growth time to 10;
*Increased udderfruit's harvestWork from 310 to 400 ticks, changed plant's description to match;
*Reduced Udderfruit Milk's rotting time from 14 to 4 days;
*Changed Udderfruit Milk's description;
*Fixed typos in cocktus cream and wild udderfruit plant's descriptions;

EMERGENCY UPDATE from 25.06.2024:
*Added the .dll that makes tox-away function. It should work now.

UPDATE from 27.06.2024
*Fixed the Raw Frigina increasing sex drive instead of reducing it;
*Udderfruit Milk now gives a tiny immunity gain speed bonus.

path: Changelog


code:
<Defs>

  <ThingDef ParentName="PlantBase" Name="CocktusBase" Abstract="True">
    <statBases>
      <MaxHitPoints>130</MaxHitPoints>
      <Nutrition>0.2</Nutrition>
    </statBases>
    <graphicData>
      <texPath>RJWReProduce/Plants/Cocktus</texPath>
      <graphicClass>Graphic_Random</graphicClass>
       <shadowData>
          <volume>(0.15, 0.3, 0.15)</volume>
          <offset>(0,0,-0.38)</offset>
        </shadowData>
    </graphicData>
    <selectable>true</selectable>
    <pathCost>14</pathCost>
    <ingestible />
    <plant>
      <growDays>10</growDays>
      <dieIfLeafless>false</dieIfLeafless>
      <harvestWork>310</harvestWork>
      <harvestTag>Standard</harvestTag>
      <harvestedThingDef>RJWReProduce_RawCocktus</harvestedThingDef>
      <harvestYield>16</harvestYield>
      <topWindExposure>0.15</topWindExposure>
      <immatureGraphicPath>RJWReProduce/Plants/Cocktus_Immature</immatureGraphicPath>
      <visualSizeRange>1~2</visualSizeRange>
      <fertilityMin>0.3</fertilityMin>
      <fertilitySensitivity>0.5</fertilitySensitivity>
      <wildOrder>2</wildOrder>
      <humanFoodPlant>true</humanFoodPlant>
    </plant>
  </ThingDef>
  <ThingDef ParentName="CocktusBase">
    <defName>RJWReProduce_Cocktus</defName>
    cocktus
     <description>A species of cactus which fruits have a rather peculiar shape. It's edible, although rather bland, but its thick creamy juice can be used to make sunscreen.</description>
  <plant>
  <growDays>8</growDays>
  <sowWork>250</sowWork>
  <sowMinSkill>5</sowMinSkill>
  <sowTags>

Ground

  </sowTags>
  <purpose>Food</purpose>
</plant>
  </ThingDef>

  <ThingDef ParentName="CocktusBase">
  <defName>RJWReProduce_CocktusWild</defName>
    wild cocktus
     <description>A species of cactus which fruits have a rather peculiar shape. It's edible, although rather bland, but its thick creamy juice can be used to make sunscreen.</description>
  <neverMultiSelect>false</neverMultiSelect>
  <plant>
  <wildClusterRadius>6</wildClusterRadius>
  <wildClusterWeight>3</wildClusterWeight>
   <wildBiomes>
    <AridShrubland>0.16</AridShrubland>
    <ExtremeDesert>0.16</ExtremeDesert>
    <Desert>0.16</Desert>
    </wildBiomes>
  </plant>
  </ThingDef>

   <ThingDef ParentName="PlantBase" Name="UdderfruitBase" Abstract="True">
    <statBases>
      <MaxHitPoints>200</MaxHitPoints>
      <Nutrition>0.2</Nutrition>
    </statBases>
    <graphicData>
      <texPath>RJWReProduce/Plants/Udderfruit</texPath>
      <graphicClass>Graphic_Random</graphicClass>
       <shadowData>
          <volume>(0.15, 0.3, 0.15)</volume>
          <offset>(0,0,-0.38)</offset>
        </shadowData>
    </graphicData>
    <selectable>true</selectable>
    <pathCost>14</pathCost>
    <ingestible />
    <plant>
      <growDays>10</growDays>
      <dieIfLeafless>false</dieIfLeafless>
      <harvestWork>400</harvestWork>
      <harvestTag>Standard</harvestTag>
      <harvestedThingDef>RJWReProduce_RawUdderfruit</harvestedThingDef>
      <harvestYield>8</harvestYield>
      <topWindExposure>0.15</topWindExposure>
      <leaflessGraphicPath>RJWReProduce/Plants/Udderfruit_Leafless</leaflessGraphicPath>
      <immatureGraphicPath>RJWReProduce/Plants/Udderfruit_Immature</immatureGraphicPath>
      <visualSizeRange>1~2</visualSizeRange>
      <wildOrder>2</wildOrder>
      <humanFoodPlant>true</humanFoodPlant>
    </plant>
  </ThingDef>
  <ThingDef ParentName="UdderfruitBase">
    <defName>RJWReProduce_Udderfruit</defName>
    udderfruit
     <description>A genetically modified edible strain of nipplefruit that can be milked. Was seemingly created only for the sake of a pun. Prefers wet, warm and temperate climates. Milking it is a labor-intensive process.</description>
  <plant>
  <growDays>10</growDays>
  <sowWork>250</sowWork>
  <sowMinSkill>5</sowMinSkill>
  <harvestAfterGrowth>0.3</harvestAfterGrowth>
  <sowTags>

Ground

  </sowTags>
  <purpose>Food</purpose>
</plant>
  </ThingDef>

  <ThingDef ParentName="UdderfruitBase">
  <defName>RJWReProduce_UdderfruitWild</defName>
    udderfruit
     <description>A genetically modified edible strain of nipplefruit that can be milked. Was seemingly created only for the sake of a pun. Prefers wet, warm and temperate climates. Milking it is labor-intensive process.</description>
  <neverMultiSelect>false</neverMultiSelect>
  <plant>
  <wildClusterRadius>6</wildClusterRadius>
  <wildClusterWeight>3</wildClusterWeight>
   <wildBiomes>
    <TropicalRainforest>0.16</TropicalRainforest>
    <TropicalSwamp>0.12</TropicalSwamp>
    <TemperateForest>0.12</TemperateForest>
    <TemperateSwamp>0.12</TemperateSwamp>
    </wildBiomes>
  </plant>
  </ThingDef>

  <ThingDef ParentName="PlantBase" Name="ToxicleBase" Abstract="True">
    <statBases>
      <MaxHitPoints>60</MaxHitPoints>
      <Nutrition>0.2</Nutrition>
    </statBases>
    <graphicData>
      <texPath>RJWReProduce/Plants/Toxicle</texPath>
      <graphicClass>Graphic_Random</graphicClass>
    </graphicData>
    <selectable>true</selectable>
    <pathCost>14</pathCost>
    <ingestible />
    <plant>
      <immatureGraphicPath>RJWReProduce/Plants/Toxicle_Immature</immatureGraphicPath>
      <growDays>10</growDays>
      <dieIfLeafless>false</dieIfLeafless>
      <harvestWork>400</harvestWork>
      <harvestTag>Standard</harvestTag>
      <harvestedThingDef>RJWReProduce_RawToxicle</harvestedThingDef>
      <harvestYield>4</harvestYield>
      <topWindExposure>0.1</topWindExposure>
      <visualSizeRange>0.5~1.0</visualSizeRange>
      <wildOrder>2</wildOrder>
      <allowAutoCut>false</allowAutoCut>
      <pollution>PollutedOnly</pollution>
      <fertilityMin>0.30</fertilityMin>
      <fertilitySensitivity>0.4</fertilitySensitivity>
    </plant>
  </ThingDef>
  <ThingDef ParentName="ToxicleBase">
    <defName>RJWReProduce_Toxicle</defName>
    toxicle
    <description>A small glowing plant resembling writhing tentacles. It is capable of absorbing pollution and requires it to grow. Technically edible, but extremely bitter stalks are widely used in pollution-purging medicines.</description>
    <plant>
      <growDays>9</growDays>
      <sowWork>800</sowWork>
      <sowMinSkill>8</sowMinSkill>
      <sowTags>

Ground

Hydroponic

      </sowTags>
      <purpose>Food</purpose>
    </plant>
    <comps>

				<glowRadius>1</glowRadius>
				<glowColor>(255,255,0,0)</glowColor>

      </comps>
  </ThingDef>

  <ThingDef ParentName="ToxicleBase">
    <defName>RJWReProduce_ToxicleWild</defName>
    wild toxicle
    <description>A small glowing plant resembling writhing tentacles. It is capable of absorbing pollution and requires it to grow. Technically edible, but extremely bitter stalks are widely used in pollution-purging medicines.</description>
    <neverMultiSelect>false</neverMultiSelect>
    <plant>
      <wildClusterRadius>4</wildClusterRadius>
      <wildClusterWeight>80</wildClusterWeight>
    </plant>
  </ThingDef>

   <ThingDef ParentName="PlantBase" Name="FriginaBase" Abstract="True">
    <statBases>
      <MaxHitPoints>250</MaxHitPoints>
      <Nutrition>0.2</Nutrition>
    </statBases>
    <graphicData>
      <texPath>RJWReProduce/Plants/Frigina</texPath>
    </graphicData>
    <selectable>true</selectable>
    <pathCost>14</pathCost>
    <ingestible />
    <plant>
      <growDays>12</growDays>
      <dieIfLeafless>false</dieIfLeafless>
      <harvestWork>310</harvestWork>
      <harvestTag>Standard</harvestTag>
      <harvestedThingDef>RJWReProduce_RawFrigina</harvestedThingDef>
      <harvestYield>16</harvestYield>
      <topWindExposure>0.15</topWindExposure>
      <immatureGraphicPath>RJWReProduce/Plants/Frigina_Immature</immatureGraphicPath>
      <visualSizeRange>1~2</visualSizeRange>
      <fertilityMin>0.7</fertilityMin>
      <fertilitySensitivity>0.5</fertilitySensitivity>
      <wildOrder>2</wildOrder>
      <humanFoodPlant>true</humanFoodPlant>
    </plant>
  </ThingDef>
  <ThingDef ParentName="FriginaBase">
    <defName>RJWReProduce_Frigina</defName>
    frigina
     <description>A sturdy slow-growing plant that prefers colder climates. Its nut-like fruits are versatile cooking ingridients; they can be processed into a milk substitute or used as is. It has anaphrodisiac properties, cooling body and mind.</description>
  <plant>
  <growDays>10</growDays>
  <sowWork>250</sowWork>
  <sowMinSkill>5</sowMinSkill>
  <sowTags>

Ground

  </sowTags>
  <purpose>Food</purpose>
</plant>
  </ThingDef>

  <ThingDef ParentName="FriginaBase">
  <defName>RJWReProduce_FriginaWild</defName>
    wild frigina
     <description>A sturdy slow-growing plant that prefers colder climates. Its nut-like fruits are versatile cooking ingridients; they can be processed into a milk substitute or used as is. It has anaphrodisiac properties, cooling body and mind.</description>
  <neverMultiSelect>false</neverMultiSelect>
  <plant>
  <wildClusterRadius>6</wildClusterRadius>
  <wildClusterWeight>3</wildClusterWeight>
   <wildBiomes>
    <BorealForest>0.1</BorealForest>
    <Tundra>0.1</Tundra>
    <ColdBog>0.1</ColdBog>
    </wildBiomes>
  </plant>
  </ThingDef>
  </Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>

  <ThingDef ParentName="PlantFoodRawBase">
<defName>RJWReProduce_RawCocktus</defName>
    cocktus
    <description>Raw cocktus fruits. Tastes fine, if a bit bland if eaten raw. Increases blood pumping, somewhat improves smell of BO and makes hot temperatures somewhat more bearable.</description>
    <possessionCount>10</possessionCount>
    <graphicData>
      <texPath>RJWReProduce/Resources/CocktusRaw</texPath>
    </graphicData>
    <statBases>
      <MarketValue>1.2</MarketValue>
      <Mass>0.027</Mass>
    </statBases>
    <comps>

        <daysToRotStart>14</daysToRotStart>
        <rotDestroys>true</rotDestroys>

    </comps>
    <ingestible>
    <outcomeDoers>

					<hediffDef>CocktusEffect</hediffDef>
					<severity>0.125</severity>

        </outcomeDoers>
      <preferability>RawTasty</preferability>
      <tasteThought></tasteThought>
      <foodType>VegetableOrFruit</foodType>
    </ingestible>
  </ThingDef>

  <HediffDef>
		<defName>CocktusEffect</defName>
		<hediffClass>HediffWithComps</hediffClass>
		cocktus libido
		<description>Cocktus-induced increase in libido.</description>
		<defaultLabelColor>(1,0,0.5)</defaultLabelColor>
		<scenarioCanAdd>true</scenarioCanAdd>
		<maxSeverity>1.0</maxSeverity>
		<comps>

				<severityPerDay>-0.9</severityPerDay>

		</comps>
		<stages>

           <capMods>

            <capacity>BloodPumping</capacity>
            <offset>0.05</offset>

            </capMods>
				<statOffsets>
         <ComfyTemperatureMax>+10.0</ComfyTemperatureMax>
					<SexFrequency>1.2</SexFrequency>
          <SexSatisfaction>0.2</SexSatisfaction>
				</statOffsets>

		</stages>
	</HediffDef>

  <ThoughtDef>
		<defName>CocktusThought</defName>
		<workerClass>ThoughtWorker_Hediff</workerClass>
		<hediff>CocktusEffect</hediff>
		<validWhileDespawned>true</validWhileDespawned>
		<stages>

				Cocktus stimulation
				<description>I'm stimulated and I smell good.</description>
				<baseMoodEffect>2</baseMoodEffect>

		</stages>
	</ThoughtDef>

    <ThingDef ParentName="PlantFoodRawBase">
<defName>RJWReProduce_RawUdderfruit</defName>
    udderfruit milk
    <description>Milk from the udderfruit plant. Highly prized for its versatiliy in cooking and mild pleasant taste. Spoils quickly.</description>
    <possessionCount>10</possessionCount>
    <graphicData>
      <texPath>RJWReProduce/Resources/UdderfruitMilk</texPath>
       <graphicClass>Graphic_StackCount</graphicClass>
    </graphicData>
    <statBases>
      <MarketValue>1.2</MarketValue>
    </statBases>
    <comps>

        <daysToRotStart>4</daysToRotStart>
        <rotDestroys>true</rotDestroys>

    </comps>
     <thingCategories>

AnimalProductRaw

    </thingCategories>
    <ingestible>
    <outcomeDoers>

					<hediffDef>UdderfruitEffect</hediffDef>
					<severity>0.125</severity>

        </outcomeDoers>
      <preferability>RawTasty</preferability>
      <tasteThought></tasteThought>
      <foodType>VegetableOrFruit, AnimalProduct, Fluid</foodType>
      <babiesCanIngest>true</babiesCanIngest>
    </ingestible>
  </ThingDef>

  <HediffDef>
		<defName>UdderfruitEffect</defName>
		<hediffClass>HediffWithComps</hediffClass>
		udderfruit milk
		<description>udderfruit milk's vitality-boosting properties.</description>
		<defaultLabelColor>(1,0,0.5)</defaultLabelColor>
		<scenarioCanAdd>true</scenarioCanAdd>
		<maxSeverity>1.0</maxSeverity>
		<comps>

				<severityPerDay>-0.9</severityPerDay>

		</comps>
		<stages>

				<statFactors>
      <ImmunityGainSpeed>1.05</ImmunityGainSpeed>
       </statFactors>

		</stages>
	</HediffDef>

  <ThingDef ParentName="PlantFoodRawBase">
    <defName>RJWReProduce_RawToxicle</defName>
    toxicle stems
    <description>Slimy glowing stalks of a toxicle plant. Technically edible and doesn't cause food poisoning, but tastes extremely bitter.</description>
    <possessionCount>10</possessionCount>
    <graphicData>
      <texPath>RJWReProduce/Resources/ToxicleRaw</texPath>
    </graphicData>
    <statBases>
      <MarketValue>1.5</MarketValue>
      <FoodPoisonChanceFixedHuman>0</FoodPoisonChanceFixedHuman>
    </statBases>
    <ingestible>
      <preferability>RawBad</preferability>
      <tasteThought>AteToxicle</tasteThought>
      <foodType>VegetableOrFruit</foodType>
    </ingestible>
    <comps>

        <daysToRotStart>60</daysToRotStart>
        <rotDestroys>true</rotDestroys>

    </comps>
  </ThingDef>

  <ThoughtDef>
    <defName>AteToxicle</defName>
    <showBubble>true</showBubble>
    <icon>Things/Mote/ThoughtSymbol/Food</icon>
    <durationDays>1</durationDays>
    <stages>

        ate raw toxicle
        <description>I had to eat raw toxicle stems. Tastes like medicine with the texture of slime, yuck!</description>
        <baseMoodEffect>-8</baseMoodEffect>

    </stages>
  </ThoughtDef>

   <ThingDef ParentName="PlantFoodRawBase">
<defName>RJWReProduce_RawFrigina</defName>
    frigina
    <description>Raw frigina nut with mildly sweet flesh inside of a hard shell, from which milk-like liquid can be extracted. Has mild anaphrodisiac properties, dulling libido and focusing the mind.</description>
    <possessionCount>10</possessionCount>
    <graphicData>
      <texPath>RJWReProduce/Resources/FriginaRaw</texPath>
    </graphicData>
    <statBases>
      <MarketValue>1.2</MarketValue>
      <Mass>0.027</Mass>
    </statBases>
    <comps>

        <daysToRotStart>30</daysToRotStart>
        <rotDestroys>true</rotDestroys>

    </comps>
    <ingestible>
    <outcomeDoers>

					<hediffDef>FriginaEffect</hediffDef>
					<severity>0.125</severity>

        </outcomeDoers>
      <preferability>RawTasty</preferability>
      <tasteThought></tasteThought>
      <foodType>VegetableOrFruit</foodType>
    </ingestible>
  </ThingDef>

  <HediffDef>
		<defName>FriginaEffect</defName>
		<hediffClass>HediffWithComps</hediffClass>
		frigina sublimation
		<description>Frigina-induced sexual frigidity and clarity of mind.</description>
		<defaultLabelColor>(1,0,0.5)</defaultLabelColor>
		<scenarioCanAdd>true</scenarioCanAdd>
		<maxSeverity>1.0</maxSeverity>
		<comps>

				<severityPerDay>-0.9</severityPerDay>

		</comps>
		<stages>

				<statOffsets>
          <WorkSpeedGlobal>0.01</WorkSpeedGlobal>
          <MeditationFocusGain MayRequire="Ludeon.RimWorld.Royalty">0.05</MeditationFocusGain>
					<SexFrequency>-0.7</SexFrequency>
          <ComfyTemperatureMin>-10.0</ComfyTemperatureMin>
				</statOffsets>

		</stages>
	</HediffDef>

  <ThoughtDef>
		<defName>FriginaThought</defName>
		<workerClass>ThoughtWorker_Hediff</workerClass>
		<hediff>FriginaEffect</hediff>
		<validWhileDespawned>true</validWhileDespawned>
		<stages>

				Frigina focus
				<description>Fire in my loins is gone and my mind is cleared of impure desire.</description>
				<baseMoodEffect>0</baseMoodEffect>

		</stages>
	</ThoughtDef>
</Defs>


code:
## 过滤 era(确切地说是 Emuera) 产生的, 不需要加入版本控制(记录在案)的文件

# 玩家自定义(客制化)配置文件
emuera.config

# 玩家自定义宏命令
macro.txt

# 玩家存档
sav/
*.sav

# 游戏中产生的角色数据
*.dat

# 运行日志
*.log

# 调试模式相关文件
debug/
debug.bat
debug.config
watchlist.csv

# 编辑器配置文件
.vscode/

# Windows 快捷方式
*.lnk

# 无关的压缩包
*.zip
*.7z
*.rar

変数資料(eratohoT).ERB

repo_name: mcstone/syokushuhenth

path: .gitignore


code:
0,探索技能
1,異變發覺
2,話術
3,戦闘技能
4,抵抗能力
5,逃脱能力
6,Ａ感覚
7,Ｂ感覚
8,Ｃ感覚
9,Ｖ感覚
10,Ｍ感覚
11,自慰中毒
12,触手中毒
13,射精中毒
14,レズ中毒
15,精液中毒
16,噴乳中毒

97,速度
98,戦闘素質


code:
;詳しい説明や欠番はフラグ変数割り当てに記載
;使用できない番号もあり

0,侵食人数,
1,支配人数,
2,キャラ人数,
3,周回プレイカウンタ,
4,難易度,
5,初期宿主,
6,残り成長点,
7,成長点の元,
8,成長点,
9,デバッグモード,

10,侵食力,
11,支配力,
12,成長力,
13,戦闘力,
14,異変隠蔽力,
15,元凶隠蔽力,
16,肉体支配力,
17,精神支配力,

20,探索度,
21,イベント可,
22,進行速度,
23,初期ボーナス,
24,逃走ボーナス,
25,逃走ペナルティ,
26,ドレイン,
27,全体支配済,
28,NPCイベント可,
29,身代わり回数,
30,最後の一人,
31,出産繁殖数
32,寄生繁殖数
33,全体屈服済,
34,反乱度,
35,屈服人数,
36,首謀者,

95,傀儡数
96,監視者数
97,家畜数
98,戦闘員数
99,スパイ数
100,悪堕ち数

;101-200	傀儡の種類用

;400-600	コンフィグ用
;どう考えても名付けが複雑になるのでフラグ変数割当に記載しcsvでは使用しない


code:
コード,919
バージョン,1000
タイトル,東方触手変
作者,偽酒
製作年,2018-2020
バージョン違い認める,0040
追加情報,※幻想郷を触手でいっぱいにしよう


code:
0,処女,

10,臆病,
11,反抗的,
12,気丈,;侵食によるMPダメージを1割軽減
13,素直,;侵食によるMPダメージを1割増加
14,大人しい,;他のキャラクターと交流しにくい
15,プライド高い,
16,生意気,;敵に出会った際に逃走しにくい
17,プライド低い,
18,ツンデレ,;
19,真面目,;

20,自制心,;自慰が発生しづらくなる
21,無関心,;他のキャラクターの侵食を察知しにくい
22,感情乏しい,;他のキャラクターに侵食を察知されにくい
23,好奇心,;侵食されやすく、異変に気づきやすい
24,保守的,;SPダメージが減りやすい
25,楽観的,;
26,悲観的,;
27,一線越えない,;各種感覚と自慰中毒のレベル２・３への上昇が遅くなる
28,目立ちたがり,

30,貞操観念,;
31,貞操無頓着,;
32,抑圧,;絶頂時のPPダメージ軽減
33,解放,;拘束から抜け出しやすい
34,抵抗,;侵食が進みにくい
35,恥じらい,
36,恥薄い,
;37,弱味,;実装しない

40,痛みに弱い,;HPダメージが1割増加
41,痛みに強い,;HPダメージを1割軽減
42,濡れやすい,;A系・V系の開発による
43,濡れにくい,;A系・V系の性攻撃によるEPダメージを2割軽減

50,習得早い,;
51,習得遅い,;
52,舌使い,;
53,針さばき,;
54,猫舌,;
55,調合知識,;
56,薬毒耐性,;
57,おもらし癖,;

60,自慰しやすい,;自慰が発生する条件が緩和される
61,汚臭鈍感,;
62,汚臭敏感,;
63,献身的,;
;64,汚れ無視,;実装しない

70,快感に素直,;
71,快感の否定,;各種感覚の成長が遅くなる
72,中毒しやすい,;射精中毒を除く各種中毒が成長しやすい
73,悪堕ち,;
74,淫乱,;
75,尻穴狂い,;
76,淫乳,;
77,淫核,;
78,淫壷,;
79,キス魔,;

;80,倒錯的,;実装しない 攻撃命中時にTP+1とか…？
81,両刀,;
82,男嫌い,;実装しない
;83,サド,;敵撃破時にTP+10?
;84,嫉妬,;実装しない
;85,恋慕,;実装しない
;86,妄信,;実装しない
;87,小悪魔,;実際しない
;88,親愛,;実装しない
;89,相愛,;実装しない

;90,妖狐,;実装しない
;91,魅惑,;魅惑・魅力・謎の魅力・人気の差別化が難しかったので実装しない
;92,謎の魅力,;魅惑・魅力・謎の魅力・人気の差別化が難しかったので実装しない
;93,狐,;実装しない
94,覚,;
95,犠牲者,
96,傀儡,

100,小柄体型,; →小人体型 回避率+10 MPダメージ3割増化
101,Ａ感度,;対応属性のダメージが 4割軽減・等倍・3割増加・6割増加・2倍 になる
102,Ｂ感度,;対応属性のダメージが 4割軽減・等倍・3割増加・6割増加・2倍 になる
103,Ｃ感度,;対応属性のダメージが 4割軽減・等倍・3割増加・6割増加・2倍 になる
104,Ｖ感度,;対応属性のダメージが 4割軽減・等倍・3割増加・6割増加・2倍 になる
105,Ｍ感度,;対応属性のダメージが 4割軽減・等倍・3割増加・6割増加・2倍 になる　元はＡ鈍感でＪの名残
106,肌感度,;対応属性のダメージが 4割軽減・等倍・3割増加・6割増加・2倍 になる　元はＡ敏感でＪの名残
107,絶壁,;B系の性攻撃によるダメージが2割増加
108,爆乳,;B系の性攻撃によるダメージを3割軽減
109,貧乳,;B系の性攻撃によるダメージが1割増加し、TP+3
110,巨乳,;B系の性攻撃によるダメージを2割軽減
111,回復早い,;時間経過による自動回復量1.5倍
112,回復遅い,;時間経過による自動回復量0.8倍
;113,魅力,;魅惑・魅力・謎の魅力・人気の差別化が難しかったので実装しない
114,吸血鬼,;昼の自動回復量0.5倍　夜の自動回復量3倍
115,日光浴,;朝と昼の自動回復量2倍
116,月光浴,;夕と夜の自動回復量2倍
117,治療,;
118,鼓舞,;
;119,半人半妖,;実装しない

120,不思議な根,;
121,ふたなり,;状態異常「ふたなり」が解除できなくなる
122,男の娘,;常に男性器あり、V系ダメージ無効、レズ中毒増えない
123,狂気,;
124,動物耳,; 1で先天的、2で後天的
125,禁断の知識,;イベントに使用予定。これ自体には何の効果もない
;126,人気,;魅惑・魅力・謎の魅力・人気の差別化が難しかったので実装しない
127,具現,;射精時HPダメージ減少。不思議な根と違ってペナルティはないが不思議な根ほどはダメージが減らない
128,蓬莱人,;
;129,狂気の目,;実装しない

130,母乳体質,;
;131,幼児／幼児退行,;実装しない
132,幼稚,;寄生される確率が減る
;133,早漏,;実装しない
;134,妊娠,;実装しない 寄生はCFLAGによって状態異常として表現
135,卵生,;本来【育児中】だったがYMの番号に合わせてここに　産卵時の絶頂ダメージ減少
136,産卵体質,;本来【母性】だったがYMの番号に合わせてここに　産卵時の絶頂ダメージ減少+産卵攻撃を受けやすく
137,排卵異常,;危険日と排卵日を延長し、妊娠しやすくなる
138,隠遁,;外になかなかでなくなります
139,変幻自在,;YMより輸入　体格と胸の大きさを変更できる

140,ペット,;ペットに犯されすぎると取得 1でペット　2で花嫁　3でしもべに
;イメージの差異　ペットは帰ってこれる　花嫁はご主人様が幸せにしてくれ帰ってこれない
;しもべはご主人様が幸せにするんじゃなくてしもべが勝手に幸せになり帰ってこれない

141,扇動,;反乱を増長させる

149,触手使役術,;YMより輸入

;以下、独自素質
150,妖精,;敗北時、数日後に蘇生。
151,炎熱変換,;炎属性の弾幕が撃てる　通常属性の弾幕も撃てるため、とても便利
152,綺麗好き,;拠点の自動浄化量アップ
153,裁縫上手,;戦闘終了時に全裸でなければCP10%回復
154,哨戒,;侵食に気づきやすい
155,異形耐性,;性攻撃・寄生攻撃によるTP減少を防ぐ
156,淫魔,;淫乱系素質によるMP回復率増加。ただし【悪堕ち】の習得条件
157,エネミー,;元敵を示す素質。
158,超乳,;爆乳を超越した胸
159,陥没乳首,;母乳を出さない→Bダメージが増加し母乳も出る　戦闘中に絶頂することで変化
160,浄化知識,;拠点の浄化量アップ　上位素質化で結界強化
161,体術習熟,;非消耗武器に補正　上位素質化で剣術習熟、剣系武器に補正　;連撃パッチ、急所狙いでひるませると、二刀流で追撃（弱）
162,拡張乳腺,;NFされやすくなる　まだ触手服のみ
163,鷲の目,;消耗武器に補正　急所狙いでひるませると弾幕、または消耗武器で追撃（弱）
164,術式知識,;魔法陣の罠回避率上昇、うどんげのみ効果劣化で波動感知
165,性別変更,;迷宮内で性別が変更された　1：男→女、2：女→男
166,無銘,;性格・戦闘素質・速度・一部素質がランダム決定
167,露出癖,;全裸だとMP回復
168,神気,;EPCPダメージ減少、感覚レベルが上がると逆にペナルティ

;ふたなり細分化　特殊効果はなし
;竿
170,竿の長さ,;短小(-1)→なし→巨根→爆根→超巨根
171,極太,　;大きさに見合わぬ太さを有しています
172,精力,;精力薄弱(-1)→なし→絶倫→超絶倫
173,包茎,;剥けかけ→仮性包茎→真性包茎
174,恥垢体質,
175,悪臭,
176,先天的,;先天的ふたなり→後天的ふたなり
177,黒竿,
178,早漏,;遅漏(-1)→なし→早漏

;玉
180,玉,;玉あり→巨玉→爆玉→超巨玉
181,毛,;産毛→剛毛

;液
185,液量,;少量射精(-1)→なし→大量射精→超大量射精
186,濃度,;精液薄め(-1)→なし→精液濃厚→精液特濃
187,熱い精液,;　火傷しそうなくらいに熱いほかほか湯気立つ精液
188,精液黄濁,;　ちょっと黄ばんでいます。なぜか不潔な印象

;Jから輸入
200,東方触手宮まで支配する程度の能力,

213,羽,;1で羽、2で翼 探索補正
214,角,;
215,尻尾,;1で尻尾、2でもふ尻尾 肌感度が低いほどAV性攻撃のEPダメージ減少　肌過敏以上だと気持よくて力が抜けマイナス、もふ尻尾は追加で睡眠時の回復力アップ　後天的は数値に+10

220,母乳粘度,;母乳の粘度や濃さ1～6

222,超々乳,;超乳を越えて歩行限界の胸
223,接地乳房,;地面に付く程の胸

250,機械,;他の種族系素質ができても共有可能、る～こと以外は後天的なため【ふたなり】とだいたい同じ扱い
251,付喪神,;
252,非生物,

300,


code:
;これはEmueraの変数サイズ指定用ファイルです。
;このファイルをcsvフォルダ内に置くことで配列変数の要素の数を変えることが出来ます。
;VariableSize.CSV中でサイズを指定していない変数については標準の値が使われます。

;ABLNAMEなどのcsvから読む変数のサイズも変更できるようになりました。
;ABLとABLNAMEなど対応関係にある変数でも同期はしていませんのでそれぞれを変更する必要があります。
;ただしITEMNAME-ITEMPRICEだけは片方を変更すると他方も変更されます。

;RAND、CHARANUMなどのその都度計算される値については要素数を変更できません。
;NO、NAMEのような配列でない変数もサイズを指定することはできません。

;変数のサイズを変更してもセーブデータはそのまま使えますが、セーブされているサイズより変更後のサイズの方が小さい場合、はみ出たデータは失われます。
;また、セーブされているサイズがeramakerの標準の配列サイズより大きい場合、eramakerでデータをロードすると正常に動作しません。

;ITEMNAMEとITEMPRICEは片方を変更すると他方も同じ値に変更されます
ITEMNAME,1000
;ITEMPRICE,1000
ABLNAME,1000
TALENTNAME,1000
EXPNAME,100
MARKNAME,100
PALAMNAME,100
TRAINNAME,100
BASENAME,100
SOURCENAME,100
EXNAME,100
EQUIPNAME,100
TEQUIPNAME,100
FLAGNAME,10000
CFLAGNAME,1000
TFLAGNAME,1000
STR,20000

DAY,10000
MONEY,1000
ITEM,2000
FLAG,10000
TFLAG,1000
UP,100
PALAMLV,100
EXPLV,1000
EJAC,100
DOWN,100
RESULT,1000
COUNT,1000
TARGET,1000
ASSI,100
MASTER,100
NOITEM,1000
LOSEBASE,100
SELECTCOM,100
ASSIPLAY,100
PREVCOM,100

TIME,1000
ITEMSALES,100
PLAYER,1000
NEXTCOM,100
PBAND,100
BOUGHT,100

A,-1
B,-1
C,-1
D,-1
E,-1
F,-1
G,-1
H,-1
I,-1
J,-1
K,-1
L,-1
M,-1
N,-1
O,-1
P,-1
Q,-1
R,-1
S,-1
T,-1
U,-1
V,-1
W,-1
X,-1
Y,-1
Z,-1

SAVESTR,1000
RESULTS,100

BASE,100
MAXBASE,100
ABL,1000
TALENT,1000
EXP,100
MARK,100
PALAM,100
SOURCE,100
EX,100
CFLAG,1000
JUEL,100
RELATION,1000
EQUIP,100
TEQUIP,100
STAIN,100
GOTJUEL,200
NOWEX,100

CSTR,100

LOCAL,1000
LOCALS,100
ARG,1000
ARGS,100
GLOBAL,1000
GLOBALS,100

;変更不可。乱数システムが使用するため。
;RANDDATA,625

;二次元配列
DITEMTYPE,100,100
DA,1000,1000
DB,100,100
DC,100,100
DD,100,100
DE,100,100


code:
大文字小文字の違いを無視する:YES
_Rename.csvを利用する:NO
_Replace.csvを利用する:YES
FORM中の三連記号を展開しない:YES
マウスを使用する:YES
メニューを使用する:YES
デバッグコマンドを使用する:YES
多重起動を許可する:YES
オートセーブを行なう:YES
キーボードマクロを使用する:YES
ウィンドウの高さを可変にする:YES
描画インターフェース:WINAPI
イメージバッファを使用する:YES
ウィンドウ幅:800
ウィンドウ高さ:820
ウィンドウ位置X:200
ウィンドウ位置Y:0
起動時のウィンドウ位置を指定する:YES
履歴ログの行数:5000
PRINTCを並べる数:3
PRINTCの文字数:32
フォント名:ＭＳ ゴシック
フォントサイズ:15
一行の高さ:17
文字色:192,192,192
背景色:0,0,0
選択中文字色:255,255,0
履歴文字色:192,192,192
フレーム毎秒:20
最大スキップフレーム数:3
スクロール行数:5
無限ループ警告までのミリ秒数:5000
表示する最低警告レベル:0
ロード時にレポートを表示する:NO
ロード時に引数を解析する:NO
ロード時にFORM文字列を解析する:YES
呼び出されなかった関数を無視する:YES
関数が見つからない警告の扱い:IGNORE
関数が呼び出されなかった警告の扱い:IGNORE
ボタンの途中で行を折りかえさない:NO
サブディレクトリを検索する:YES
読み込み順をファイル名順にソートする:NO
表示するセーブデータ数:20
eramaker互換性に関する警告を表示する:NO
システム関数の上書きを許可する:YES
システム関数が上書きされたとき警告を表示する:YES


code:
サブディレクトリを検索する:YES
描画インターフェース:TEXTRENDERER
FORM中の三連記号を展開しない:YES


code:
0,HP
1,MP
2,EP
3,PP
4,SP
5,TP


code:
番号,141
名前,留琴
呼び名,留琴
基礎,0,5000;HP頑丈
基礎,1,1700;MP自体は低いので耐性突破できればもろい
基礎,2,15000;EP不感症にも程がある
基礎,3,800;PPプライドは低いぞ
素質,14;大人しいTW基準
素質,17;プライド低いTW
素質,36;恥薄いTW
素質,41;痛みに強いロボだし
素質,43;濡れにくいロボ
素質,56;薬毒耐性ロボ
素質,63;献身的メイドロボだし
素質,71;快感の否定ロボ
素質,101,-1;Ａ鈍感
素質,102,-1;Ｂ鈍感
素質,103,-1;Ｃ鈍感
素質,104,-1;Ｖ鈍感
素質,105,-1;Ｍ鈍感
素質,106,-1;肌鈍感怒涛のマグロ、これはひどい……
素質,112;回復遅い自己修復機能なんてなかった
素質,250;種族素質【機械】
能力,4,2;抵抗非生物なので高い
相性,1,120;灵梦
相性,2,90;魔理沙
相性,51,90;魅魔さま
相性,70,120;北白河
相性,71,150;教授好き
CFLAG,5,1;博麗神社
CFLAG,7,360;機械侵食に弱い
能力,97,20;速度は低め、ポンコツロボ
能力,98,20;戦闘素質は低めなので面倒なら殴り倒そう
フラグ,12,0;性格基準値
フラグ,100,6;性格苦労人


code:
0,探索技能,
1,異變發覺,
2,話術,
3,戦闘技能,
4,抵抗能力,
5,逃脱能力,
6,Ａ感覚,
7,Ｂ感覚,
8,Ｃ感覚,
9,Ｖ感覚,
10,Ｍ感覚,
11,自慰経験,
12,触手経験,
13,射精経験,
14,レズ経験,
15,精液経験,
16,噴乳経験,

20,絶頂経験,
21,お漏らし経験,
22,出産回数,
23,産卵回数,
24,キス経験,
25,自慰回数,

30,戦闘回数,
31,敗北回数,
32,逃走回数,


code:
;探索技能

;指定されたレベルに必要な経験取得
;ARG:0	調べたいレベル（要するに１～３を指定することになる）
@GET_NEED_EXP_0(ARG:0)
LOCAL:0 = 0

IF ARG:0 == 1
	LOCAL:0 = 3000
ELSEIF ARG:0 == 2
	LOCAL:0 = 15000
ELSEIF ARG:0 == 3
	LOCAL:0 = 50000
ELSEIF ARG:0 > 3
	LOCAL:0 = -1
ENDIF

IF LOCAL:0 > 0
	;素質などによる補正
ENDIF

RETURN LOCAL:0

;経験値獲得
;ARG:0	獲得したキャラ（IDを指定　つまり1～10）
;ARG:1	獲得量
@ADD_ABL_EXP_0(ARG:0, ARG:1)
LOCAL:0 = ARG:1
;ソースコード変更量を抑えるために、ABLNOを入れておく
LOCAL:1 = 0

;素質などによる補正

IF ABL:(ARG:0):98 < 50
	LOCAL:0 = LOCAL:0 * (175 - ABL:(ARG:0):98 * 3 / 2) / 100
ENDIF

EXP:(ARG:0):(LOCAL:1) += LOCAL:0

CALLFORM GET_NEED_EXP_{LOCAL:1}(ABL:(ARG:0):(LOCAL:1) + 1)
LOCAL:2 = RESULT
IF (RESULT > 0) && (EXP:(ARG:0):(LOCAL:1) >= RESULT)
	ABL:(ARG:0):(LOCAL:1) += 1
	IF FLAG:503 == 0
		PRINTFORML %CALLNAME:(ARG:0)%的%ABLNAME:(LOCAL:1)%變為了Lv{ABL:(ARG:0):(LOCAL:1)}！
		;TranslatedMark %CALLNAME:(ARG:0)%の%ABLNAME:(LOCAL:1)%がLv{ABL:(ARG:0):(LOCAL:1)}になった！
		;ログに改行挟む用のフラグ、@END_PHASE内で使用
		MESSAGE_DISPLAY_FLAG = 1
	ENDIF
ENDIF