code:
#!/bin/bash
if [ ! -d ".git" ]; then
	#not running in git repo, so can't use git commands :-)
	echo "No .git repo found - skipping sanity checks"
	exit 0
fi

WARNING='\033[93m'
WARNING='\033[93m'
ENDC='\033[0m'

myprint() {
	while read data; do
		echo -n -e "[$1]$WARNING"
		echo "$data"
	done
}

GREP="git grep -n --color"
# Check for missing right angle bracket: <</if>
$GREP "<</[^>]*>[^>]" -- 'game/*'  | myprint "MissingClosingAngleBracket"
$GREP "<<[^>()]*>[^()<>"$'\r]*\r'"\?$" -- 'game/*' | myprint "MissingClosingAngleBracket"
# Check for missing left angle bracket: </if>>
$GREP "\([^<]\|^\)</\?\(if\|else\|case\|set\|print\|elseif\)" -- 'game/*' | myprint "MissingOpeningAngleBracket2"
# Check for accidental assignment.  e.g.:   <<if $foo = "hello">>
$GREP "<<[ ]*if[^>=]*[^><\!=]=[^=][^>]*>>" -- 'game/*' | myprint "AccidentalAssignmentInIf"
# Check for accidental assignment.  e.g.:   <<elseif $foo = "hello">>
$GREP "<<[ ]*elseif[^>=]*[^><\!=]=[^=][^>]*>>" -- 'game/*' | myprint "AccidentalAssignmentInElseIf"
# Check for missing ".  e.g.:   <<if $foo == "hello>>
# $GREP -e "<<[^\"<>]*\"[^\"<>]*>>" -- 'game/*' | myprint "MissingSpeechMark"
# Check for missing ".  e.g.:   <<if $foo = "hello)
# $GREP -e "<<[^\"<>]*\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\"\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\([^\"<>]\| [<>] \)*>>" --and --not -e "*[^']*" -- 'game/*' | myprint "MissingSpeechMark2"
# Check for colours like: @@color:red   - should be @@.red
$GREP -e "@@color:" --and --not -e  "@@color:rgb([0-9 ]\+,[0-9 ]\+,[0-9 ]\+)" -- "game/*" | myprint "UseCssColors"
# Check for missing $ in activeSlave or PC
$GREP "<<[ ]*[^\$><_\[]*\(activeSlave\|PC\)[.]"  -- "game/*" | myprint "MissingDollar"
# Check for closing bracket without opening bracket.  e.g.:  <<if foo)>>	  (but  <<case "foo")>>   is valid, so ignore those
$GREP -e "<<[ a-zA-Z]\+\([^()<>]\|[^()<>][<>][^()<>]\)*)" --and --not -e "<< *case"  -- "game/*" | myprint "MissingOpeningBracket"
# Check for opening bracket without closing bracket.  e.g.:  <<if (foo>>
$GREP -e "<<[ a-zA-Z]\([^<>]\|[^<>][<>][^<>]\)\+(\([^()<>]\|[^<>()][<>][^<>()]\|([^<>()]*])\)*>>" -- "game/*" | myprint "MissingClosingBracket"
# Check for two closing brackets but one opening bracket.  e.g.:  <<if (foo))>>
$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*)[^()]*)[^()<>]*>>"  -- "game/*" | myprint "MissingOpeningBracket2"
# Check for one closing bracket but two opening brackets.  e.g.:  <<if ((foo)>>
$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*([^()]*)[^()<>]*>>"  -- "game/*" | myprint "MissingClosingBracket2"
$GREP -e "<<.*[(][^<>)]*[(][^<>)]*)\?[^<>)]*>>" -- "game/*" | myprint "MissingClosingBracket3"
# Check for missing >>.  e.g.:   <<if $foo
$GREP "<<[^<>]*[^,\"\[{"$'\r]\r'"\?$" -- 'game/*' | myprint "MissingClosingAngleBrackets"
# Check for too many >>>.  e.g.: <</if>>>
$GREP "<<[^<>\"]*[<>]\?[^<>\"]*>>>" -- "game/*" | myprint "TooManyAngleBrackets"
# Check for too many <<<.  e.g.: <<</if>>
$GREP "<<<[^<>\"]*[<>]\?[^<>\"]*>>" -- "game/*" | myprint "TooManyAngleBrackets2"
# Check for wrong capitalisation on 'activeslave' and other common typos
$GREP  "\(csae\|[a-z] She \|attepmts\|youreslf\|advnaces\|canAcheive\|setBellySize\|SetbellySize\|setbellySize\|bellypreg\|pregBelly\|bellyimplant\|bellyfluid\|pronounCaps\|carress\)" -- 'game/*' | myprint "SpellCheck"
$GREP  "\(recieve\|recieves\)" -- 'game/*' | myprint "PregmodderCannotSpellReceive"
$GREP "\$slave\[" -- 'game/*' | myprint "ShouldBeSlaves"
# Check for strange spaces e.g.  $slaves[$i]. lips
$GREP "\$slaves\[\$i\]\. " -- 'game/*' | myprint "MissingPropertyAfterSlaves"
# Check, e.g., <<//if>>
$GREP "<</[a-zA-Z]*[^a-zA-Z<>]\+[a-zA-Z]*>>" -- 'game/*' | myprint "DoubleSlash"
# Check, e.g.  <<else $foo==4
$GREP "<<else >\?[^>]" -- 'game/*' | myprint "ShouldBeElseIf"
# Check, e.g., =to
$GREP "=to" -- 'game/*' | myprint "EqualAndTo"
# Check, e.g.  <<set foo == 4>>
$GREP "<<set[^{>=]*==" -- 'game/*' | myprint "DoubleEqualsInSet"
# Check for, e.g   <<if slaves[foo]>>
$GREP "<<\([^>]\|[^>]>[^>]\)*[^$]slaves\[" -- 'game/*' | myprint "MissingDollar"
# Check for missing $ or _ in variable name:
$GREP -e "<<[a-zA-Z]\([^>\"]\|[^>]>[^>]\|\"[^\"]*\"\)* [a-zA-Z]\+ * =" -- game/* | myprint "MissingDollar2"
# Check for missing command, e.g.  <<foo =
$GREP -e "<<[a-zA-Z]* = *" -- game/* | myprint "BadCommand"
# Check for duplicate words, e.g. with with
$GREP -e  " \(\b[a-zA-Z][a-zA-Z]\+\) \1\b " --and --not -e " her her " --and --not -e " you you " --and --not -e " New New " --and --not -e "Slave Slave " --and --not -e " that that " --and --not -e " in in " --and --not -e " is is " -- 'game/*' | myprint "Duplicate words"
# Check for obsolete SugarCube macros
$GREP -E "<<display |<<click|<<.*\.contains" -- game/* | myprint "ObsoleteMacro"
# Check for double articles
$GREP -E "\Wa an\W" -- game/* | myprint "DoubleArticle"
# Check for incorrect articles
$GREP -i -E "\Wa (a|e|i|o|u)." -- game/* | grep -a -i -vE "\Wa (un|eu|us|ut|on|ur|in)." | grep -a -i -vE "(&|<<s>>|UM)." | myprint "IncorrectArticle"
$GREP -i -E "\Wan (b|c|d|f|g|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z)\w." -- game/* | grep -a -i -vE "[A-Z]{3}" | myprint "IncorrectArticle"
# Check for $ sign mid-word
$GREP -i "\w$\w" -- game/* | myprint "VarSignMidWord"
# check for $ sign at beginning of macro
$GREP '<<\s*\$' -- 'game/*'  | myprint "VarSignAtMacroStart"
# check for missing ; before statement
$GREP 'if $ ' -- 'game/*'  | myprint "missing ; before statement"
$GREP 'elseif $ ' -- 'game/*'  | myprint "missing ; before statement"
# Check that we do not have any variables that we use only once.   e.g.	 $onlyUsedOnce
# Ignore  *Nationalities
(
cd game/
find . -name "*.twee" -exec cat '{}' ';' | tr -c '$a-zA-Z' '\n'  | sed -n '/^[$]/p' | sort | uniq -u | sed 's/^[$]/-e[$]/' | sed 's/$/\\\\W/' | xargs -r  git grep -n --color | myprint "OnlyUsedOnce"
find . -name "*.twee" -exec cat '{}' ';' | tr -c '.$a-zA-Z[]_' '\n' | sed 's/SugarCube\.State\.variables\./$/g' | sed -n -e 's/^[$]\(PC\|activeSlave\|\(slaves\|tanks\)\[[^]]*\]*\)[.]\([a-zA-Z]\+\).*$/[.]\3/p' | sort | uniq -u |sed 's/^\(.*\)$/-e\1\\\\\b/'  | xargs -r git grep -n --color | myprint "SlaveAttributeUsedOnce"
$GREP "\$\(PC\|activeSlave\|slaves\|tanks\)[.][^a-zA-Z]" | myprint "UnexpectedCharAfterDot"

#Find all the variables listed in init.twee
VARIABLELIST=$(cat base-system/init.twee | tr -c '$a-zA-Z' '\n'  | sed -n '/^[$]/p' | sort | uniq)
# Find all variables anywhere.  Commented out because the output is too noisy currently
#VARIABLELIST=$(find . -name "*.twee" -exec cat '{}' ';' | tr -c '$a-zA-Z' '\n'  | sed -n '/^[$]/p' | sort | uniq)
MISSINGFROMVERSIONUPDATE=$(for variable in $VARIABLELIST; do grep -q "$variable" base-system/version-update.twee || echo "$variable"; done)
echo -e "base-system/version-update.twee$ENDC: $(echo $MISSINGFROMVERSIONUPDATE)" | myprint "MissingFromVersionUpdate"
)

git ls-files "game/*.twee" | xargs -d '\n'  ./devTools/check.py

path: sanityCheck


code:
/*CSS override*/
/*Remove comments to apply*/
/*#stats {
	top: 256px;
}

body.has-images #story-caption {
	margin-top: calc(278px - 2.5em);
}*/

license: mit


code:
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain

path: .gitattributes

license: unknown


code:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb
/Source/Patches/PawnAnimationPatches/HarmonyPatch_Pawn_DrawTracker.cs
/Source/Patches/PawnAnimationPatches/HarmonyPatch_PawnRotation.cs
/Source/Patches/PawnAnimationPatches/HarmonyPatch_PawnRenderer.cs
/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs
/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs
/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs
/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs
/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs
/Source/Patches/ThingAnimationPatches/HarmonyPatch_ThingDrawAt.cs
/Defs/AnimationDefs/Animations_SexToys.xml
/1.5/Defs/AnimationDefs/BasicBestiality/HumanRotatedOffset.xml
/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality4v1.xml
/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality3v1.xml
/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality2v1.xml
/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality1v1.xml
/1.5/Defs/AnimationDefs/BasicBestiality/!BasicBestiality.xml
/1.5/Defs/TestDoNotPush
/1.5/Textures/AnimationProps/BEV

path: .gitignore


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<PawnRenderNodeTagDef>
		<defName>RenderNodeTag_Banana</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimationProp_Banana</defName>
		<animPropProperties>
			<debugLabel>Banana</debugLabel>
			<tagDef>RenderNodeTag_Banana</tagDef>
			<parentTagDef>Body</parentTagDef>
			<texPath>AnimationProps/Banana/Banana</texPath>
			<overlayLayer>Head</overlayLayer>
			<baseLayer>95</baseLayer>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<PawnRenderNodeTagDef>
		<defName>RenderNodeTag_Hand</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimationProp_Hand</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_GraphicVariants">
			<debugLabel>Hand</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_GraphicVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants</workerClass>
			<tagDef>RenderNodeTag_Hand</tagDef>
			<absoluteTransform>True</absoluteTransform>
			<parentTagDef>Root</parentTagDef>
			<texPath>AnimationProps/Hand/Hand</texPath>
			<!-- for height -->
			<overlayLayer>Head</overlayLayer>
			<useSkinShader>True</useSkinShader>
			<linkedBodyPartsGroup>LeftHand</linkedBodyPartsGroup>
			<colorType>Skin</colorType>
			<baseLayer>95</baseLayer>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<PawnRenderNodeTagDef>
		<defName>RenderNodeTag_Knees</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimationProp_Knees</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_BodyTypeVariants">
			<debugLabel>Knees</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_BodyTypeVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_BodyTypeVariants</workerClass>
			<tagDef>RenderNodeTag_Knees</tagDef>
			<absoluteTransform>False</absoluteTransform>
			<parentTagDef>Root</parentTagDef>

			<overlayLayer>Head</overlayLayer>
			<useSkinShader>True</useSkinShader>
			<colorType>Skin</colorType>
			<baseLayer>95</baseLayer>
			<bodyTypeVariantsDef>

					<bodyType>Female</bodyType>
					<texPathVariantsDef>TexPathVariants_Knees</texPathVariantsDef>

			</bodyTypeVariantsDef>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>

	<PawnRenderNodeTagDef>
		<defName>RenderNodeTag_Arms</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimationProp_Arms</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_BodyTypeVariants">
			<debugLabel>Arms</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_BodyTypeVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_BodyTypeVariants</workerClass>
			<tagDef>RenderNodeTag_Knees</tagDef>
			<absoluteTransform>False</absoluteTransform>
			<parentTagDef>Root</parentTagDef>
			<useSkinShader>True</useSkinShader>
			<colorType>Skin</colorType>

			<overlayLayer>Body</overlayLayer>
			<baseLayer>-1</baseLayer>
			<bodyTypeVariantsDef>

					<bodyType>Female</bodyType>
					<texPathVariantsDef>TexPathVariants_Arms</texPathVariantsDef>

			</bodyTypeVariantsDef>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>
</Defs>


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

	<PawnRenderNodeTagDef>
		<defName>RenderNodeTag_Xray_Inside</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimationProp_Xray_Inside</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_GraphicVariants">
			<debugLabel>Xray Inside</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_GraphicVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants</workerClass>
			<tagDef>RenderNodeTag_Xray_Inside</tagDef>
			<absoluteTransform>True</absoluteTransform>
			<parentTagDef>Body</parentTagDef>
			<!-- for height -->
			<overlayLayer>Head</overlayLayer>
			<baseLayer>95</baseLayer>
			<texPathVariantsDef>TexPathVariants_Xray_Inside</texPathVariantsDef>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<PawnRenderNodeTagDef>
		<defName>RenderNodeTag_Xray_Penis</defName>
	</PawnRenderNodeTagDef>
	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimationProp_Penis</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_GraphicHediffVariants">
			<debugLabel>Xray Penis</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_GraphicHediffVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_GraphicHediffVariants</workerClass>
			<tagDef>RenderNodeTag_Xray_Penis</tagDef>
			<parentTagDef>Body</parentTagDef>
			<texPath>AnimationProps/Banana/Banana</texPath>

			<overlayLayer>Head</overlayLayer>
			<baseLayer>95</baseLayer>
			<absoluteTransform>True</absoluteTransform>

			<texPathVariantsDef>TexPathVariants_XrayPenis_Human</texPathVariantsDef>

			<hediffVariants>

					<hediffs>

HorsePenis

RaccoonPenis

					</hediffs>
					<texPathVariantsDef>TexPathVariants_XrayPenis_Horse</texPathVariantsDef>

			</hediffVariants>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.GroupAnimationDef>
		<defName>GroupAnimation_DogBeast</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human1

DogBeast_Dog1

						</animationDefs>

				</loopOptions>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human2

DogBeast_Dog2

						</animationDefs>

				</loopOptions>

				<loops>60</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human3_1

DogBeast_Dog3_1

						</animationDefs>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human3_2

DogBeast_Dog3_2

						</animationDefs>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human3_3

DogBeast_Dog3_3

						</animationDefs>

				</loopOptions>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human4

DogBeast_Dog4

						</animationDefs>

				</loopOptions>

				<loops>30</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human5_1

DogBeast_Dog5_1

						</animationDefs>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human5_2

DogBeast_Dog5_2

						</animationDefs>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human5_3

DogBeast_Dog5_3

						</animationDefs>

				</loopOptions>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

DogBeast_Human6

DogBeast_Dog6

						</animationDefs>

				</loopOptions>

		</animationStages>

		<contexts>

				<priority>1</priority>
				<actorShift>1</actorShift>
				<whitelist>

						<tests>

								<races>

Wolf_Timber

Wolf_Arctic

Warg

Husky

LabradorRetriever

								</races>

						</tests>

				</whitelist>
				<interactionDefs>

Bestiality_Vaginal

Bestiality_Anal

Bestiality_Double_Penetration_M

				</interactionDefs>

				<priority>1</priority>
				<whitelist>

						<tests>

								<races>

Wolf_Timber

Wolf_Arctic

Warg

Husky

LabradorRetriever

								</races>

						</tests>

				</whitelist>
				<interactionDefs>

Bestiality_Reverse_Vaginal

Bestiality_Reverse_Anal

Bestiality_Reverse_Double_Penetration_M

				</interactionDefs>

		</contexts>

		<offsetDefs>

Offset_Placeholder

Offset_Placeholder

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human1</defName>
    <durationTicks>85</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>4</angle>
              <visible>true</visible>
              <offset>(-0.3716815, 0, 0.2713863)</offset>
              <rotation>East</rotation>

              <tick>15</tick>
              <angle>8</angle>
              <visible>true</visible>
              <offset>(-0.3539823, 0, 0.2654868)</offset>
              <rotation>East</rotation>

              <tick>25</tick>
              <angle>-14</angle>
              <visible>true</visible>
              <offset>(-0.4011799, 0, 0.2241887)</offset>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>-7</angle>
              <visible>true</visible>
              <offset>(-0.3834807, 0, 0.2359883)</offset>
              <rotation>East</rotation>

              <tick>55</tick>
              <angle>-9</angle>
              <visible>true</visible>
              <offset>(-0.4011799, 0, 0.2359883)</offset>
              <rotation>East</rotation>

              <tick>85</tick>
              <angle>-7</angle>
              <visible>true</visible>
              <offset>(-0.3893807, 0, 0.2359883)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>25</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>South</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.1946907, 1, 0.4483777)</offset>
              <rotation>North</rotation>

              <tick>5</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.235988, 1, 0.4365782)</offset>
              <rotation>North</rotation>

              <tick>10</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.1238946, 1, 0.377581)</offset>
              <rotation>North</rotation>

              <tick>13</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.1710922, 1, 0.3952804)</offset>
              <rotation>North</rotation>

              <tick>17</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.05899817, 1, 0.4660767)</offset>
              <rotation>North</rotation>

              <tick>25</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.1828904, 1, 0.4896755)</offset>
              <rotation>North</rotation>

              <tick>35</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.1356928, 1, 0.4778759)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog1</defName>
    <durationTicks>85</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.6666666, 1, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>15</tick>
              <angle>-5</angle>
              <visible>true</visible>
              <offset>(0.5722714, 1, 0.06489658)</offset>
              <scale>(1, 1, 0.9351034)</scale>
              <rotation>West</rotation>

              <tick>25</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <scale>(0.9999999, 1, 1.053097)</scale>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>31</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>45</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>55</tick>
              <angle>31</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>65</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>75</tick>
              <angle>31</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>85</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -2, 0)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human2</defName>
    <durationTicks>105</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-7</angle>
              <visible>true</visible>
              <offset>(-0.3893807, 0, 0.2359883)</offset>
              <rotation>East</rotation>

              <tick>19</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.5073746, 0, 0.2300885)</offset>
              <rotation>South</rotation>

              <tick>25</tick>
              <angle>-13</angle>
              <visible>true</visible>
              <offset>(-0.5899706, 0, 0.2005899)</offset>
              <rotation>West</rotation>

              <tick>45</tick>
              <angle>-65</angle>
              <visible>true</visible>
              <offset>(-0.737463, 0, 0.02359879)</offset>
              <scale>(0.9764012, 1, 1)</scale>
              <rotation>West</rotation>

              <tick>55</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.6843658, 0, 0.08849573)</offset>
              <rotation>West</rotation>

              <tick>75</tick>
              <angle>-56</angle>
              <visible>true</visible>
              <offset>(-0.702065, 0, 0.07079637)</offset>
              <rotation>West</rotation>

              <tick>85</tick>
              <angle>-56</angle>
              <visible>true</visible>
              <offset>(-0.702065, 0, 0.07079637)</offset>
              <rotation>West</rotation>

              <tick>90</tick>
              <angle>-46</angle>
              <visible>true</visible>
              <offset>(-0.743363, 0, 0.1474925)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>95</tick>
              <angle>-48</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1415931)</offset>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>-45</angle>
              <visible>true</visible>
              <offset>(-0.737463, 0, 0.1533923)</offset>
              <rotation>West</rotation>

              <tick>105</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>20</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>90</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.1356928, 1, 0.4778759)</offset>
              <rotation>North</rotation>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog2</defName>
    <durationTicks>105</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>10</tick>
              <angle>39</angle>
              <visible>true</visible>
              <offset>(0.1651919, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(0.1356932, 1, 0.2477875)</offset>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>29</angle>
              <visible>true</visible>
              <offset>(-0.01769918, 1, 0.259587)</offset>
              <rotation>West</rotation>

              <tick>40</tick>
              <angle>24</angle>
              <visible>true</visible>
              <offset>(-0.07079639, 1, 0.2300885)</offset>
              <scale>(1, 1, 0.9528024)</scale>
              <rotation>West</rotation>

              <tick>50</tick>
              <angle>33</angle>
              <visible>true</visible>
              <offset>(-0.117994, 1, 0.3008848)</offset>
              <rotation>West</rotation>

              <tick>55</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(-0.06489678, 1, 0.2713863)</offset>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>33</angle>
              <visible>true</visible>
              <offset>(-0.1238939, 1, 0.2772861)</offset>
              <rotation>West</rotation>

              <tick>65</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(-0.06489678, 1, 0.259587)</offset>
              <rotation>West</rotation>

              <tick>70</tick>
              <angle>36</angle>
              <visible>true</visible>
              <offset>(-0.1769911, 1, 0.3008848)</offset>
              <rotation>West</rotation>

              <tick>75</tick>
              <angle>33</angle>
              <visible>true</visible>
              <offset>(-0.1651916, 1, 0.3008848)</offset>
              <rotation>West</rotation>

              <tick>80</tick>
              <angle>33</angle>
              <visible>true</visible>
              <offset>(-0.1415928, 1, 0.2890856)</offset>
              <rotation>West</rotation>

              <tick>83</tick>
              <angle>31</angle>
              <visible>true</visible>
              <offset>(-0.1356932, 1, 0.2772861)</offset>
              <rotation>West</rotation>

              <tick>90</tick>
              <angle>37</angle>
              <visible>true</visible>
              <offset>(-0.2595871, 1, 0.342183)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>95</tick>
              <angle>31</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3303834)</offset>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>37</angle>
              <visible>true</visible>
              <offset>(-0.2654867, 1, 0.342183)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>105</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -2, 0)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human3_1</defName>
    <durationTicks>24</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>
              <voice>Moan</voice>

              <tick>4</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>8</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>12</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>16</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>24</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>8</tick>
              <angle>5</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>16</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog3_1</defName>
    <durationTicks>24</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>4</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>8</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>12</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>16</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>24</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -2, 0)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human3_2</defName>
    <durationTicks>32</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>4</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>8</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>12</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>
              <voice>MoanShort</voice>

              <tick>16</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>24</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>28</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>32</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>16</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <offset>(-0.01769918, 0, -0.01769918)</offset>
              <rotation>West</rotation>

              <tick>32</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog3_2</defName>
    <durationTicks>32</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>4</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>8</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>12</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>16</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>24</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>28</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>32</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -2, 0)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human3_3</defName>
    <durationTicks>16</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>
              <voice>Moan</voice>

              <tick>4</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>8</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>12</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.7315634, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>16</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <rotation>South</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog3_3</defName>
    <durationTicks>16</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>4</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>8</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

              <tick>12</tick>
              <angle>38</angle>
              <visible>true</visible>
              <offset>(-0.2713863, 1, 0.3185842)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>16</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -2, 0)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human4</defName>
    <durationTicks>100</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-52</angle>
              <visible>true</visible>
              <offset>(-0.7197642, 0, 0.1120945)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>4</tick>
              <angle>-45</angle>
              <visible>true</visible>
              <offset>(-0.6902654, 0, 0.1474925)</offset>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>-50</angle>
              <visible>true</visible>
              <offset>(-0.6784662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>-55</angle>
              <visible>true</visible>
              <offset>(-0.6784662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>70</tick>
              <angle>-55</angle>
              <visible>true</visible>
              <offset>(-0.6784662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>80</tick>
              <angle>-51</angle>
              <visible>true</visible>
              <offset>(-0.6666666, 0, 0.1474925)</offset>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>8</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>25</angle>
              <visible>true</visible>
              <rotation>South</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog4</defName>
    <durationTicks>100</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.2123895, 1, 0.3126844)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>4</tick>
              <angle>36</angle>
              <visible>true</visible>
              <offset>(-0.3067847, 1, 0.342183)</offset>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>35</angle>
              <visible>true</visible>
              <offset>(-0.2772863, 1, 0.3067846)</offset>
              <rotation>West</rotation>

              <tick>45</tick>
              <angle>3</angle>
              <visible>true</visible>
              <offset>(-0.2064896, 1, 0.2005899)</offset>
              <rotation>South</rotation>

              <tick>60</tick>
              <angle>19</angle>
              <visible>true</visible>
              <offset>(0.2123888, 1, 0.1297935)</offset>
              <rotation>East</rotation>

              <tick>70</tick>
              <angle>12</angle>
              <visible>true</visible>
              <offset>(0.1769905, 1, 0.1946901)</offset>
              <rotation>East</rotation>

              <tick>80</tick>
              <angle>17</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1474925)</offset>
              <rotation>East</rotation>

              <tick>100</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.1002951, -2, 0)</offset>
              <rotation>West</rotation>

              <tick>45</tick>
              <angle>34</angle>
              <visible>true</visible>
              <offset>(-0.01769918, -2, 0.1592921)</offset>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>5</angle>
              <visible>true</visible>
              <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human5_1</defName>
    <durationTicks>80</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>-60</angle>
              <visible>true</visible>
              <offset>(-0.6843658, 0, 0.08849573)</offset>
              <rotation>West</rotation>

              <tick>40</tick>
              <angle>-58</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.09439516)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>80</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>10</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>50</tick>
              <angle>25</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>80</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog5_1</defName>
    <durationTicks>80</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>10</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>30</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>40</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>50</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>70</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>80</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>60</tick>
              <angle>5</angle>
              <visible>true</visible>
              <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human5_2</defName>
    <durationTicks>80</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>40</tick>
              <angle>-58</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.09439516)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>80</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>50</tick>
              <angle>25</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>80</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog5_2</defName>
    <durationTicks>80</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>10</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>30</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>40</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>50</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>70</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>80</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>60</tick>
              <angle>5</angle>
              <visible>true</visible>
			  <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human5_3</defName>
    <durationTicks>80</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>

              <tick>40</tick>
              <angle>-58</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.09439516)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>80</tick>
              <angle>-54</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1120945)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>50</tick>
              <angle>25</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>80</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>South</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog5_3</defName>
    <durationTicks>80</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>10</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>30</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>40</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>50</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>70</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(0.2005889, 1, 0.1710913)</offset>
              <rotation>East</rotation>

              <tick>80</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>60</tick>
              <angle>5</angle>
              <visible>true</visible>
			  <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>DogBeast_Human6</defName>
    <durationTicks>200</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-48</angle>
              <visible>true</visible>
              <offset>(-0.6725662, 0, 0.1356933)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>120</tick>
              <angle>-62</angle>
              <visible>true</visible>
              <offset>(-0.6666666, 0, 0.1238937)</offset>
              <rotation>West</rotation>

              <tick>160</tick>
              <angle>-65</angle>
              <visible>true</visible>
              <offset>(-0.660767, 0, 0.117994)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>170</tick>
              <angle>-43</angle>
              <visible>true</visible>
              <offset>(-0.6312686, 0, 0.2536873)</offset>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>-46</angle>
              <visible>true</visible>
              <offset>(-0.6430678, 0, 0.2359883)</offset>
              <rotation>West</rotation>

              <tick>200</tick>
              <angle>-42</angle>
              <visible>true</visible>
              <offset>(-0.619469, 0, 0.2536873)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>120</tick>
              <angle>55</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>165</tick>
              <angle>54</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>25</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>200</tick>
              <angle>22</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>20</tick>
              <angle>0</angle>
              <visible>false</visible>
              <offset>(-0.5309731, -2, -0.06489676)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>DogBeast_Dog6</defName>
    <durationTicks>200</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>13</angle>
              <visible>true</visible>
              <offset>(0.1946893, 1, 0.1828909)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.2595864, 1, 0.2123895)</offset>
              <rotation>East</rotation>

              <tick>140</tick>
              <angle>23</angle>
              <visible>true</visible>
              <offset>(0.3008844, 1, 0.2241887)</offset>
              <rotation>East</rotation>

              <tick>160</tick>
              <angle>26</angle>
              <visible>true</visible>
              <offset>(0.3775801, 1, 0.2241887)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>180</tick>
              <angle>11</angle>
              <visible>true</visible>
              <offset>(0.5958685, 1, 0.1474925)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

        <key>AnimalPenis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>60</tick>
              <angle>5</angle>
              <visible>true</visible>
              <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>

              <tick>160</tick>
              <angle>5</angle>
              <visible>true</visible>
              <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>
              <sound>Slimy</sound>

              <tick>165</tick>
              <angle>-39</angle>
              <visible>true</visible>
              <offset>(-0.5722714, -2, -0.0294984)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Saliva</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-55</angle>
              <visible>true</visible>
              <offset>(-0.4837759, -2, -0.2949852)</offset>
              <scale>(0.2153394, 1, 0.6342184)</scale>
              <rotation>North</rotation>

              <tick>160</tick>
              <angle>-55</angle>
              <visible>false</visible>
              <offset>(-0.4601771, -2, -0.3067846)</offset>
              <scale>(0.2153394, 1, 0.6342184)</scale>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


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

	<PawnRenderNodeTagDef>
		<defName>Cum</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimProp_Cum</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_GraphicVariants">
			<debugLabel>Cum</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_GraphicVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants</workerClass>
			<tagDef>Cum</tagDef>
			<parentTagDef>Head</parentTagDef>
			<!-- for height -->
			<texPath>AnimationProps/Cum/Cum</texPath>
			<overlayLayer>Head</overlayLayer>
			<baseLayer>95</baseLayer>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>

	<PawnRenderNodeTagDef>
		<defName>Cumshot</defName>
	</PawnRenderNodeTagDef>

	<Rimworld_Animations.AnimationPropDef>
		<defName>AnimProp_Cumshot</defName>
		<animPropProperties Class="Rimworld_Animations.PawnRenderNodeProperties_GraphicVariants">
			<debugLabel>Cumshot</debugLabel>
			<nodeClass>Rimworld_Animations.PawnRenderNode_GraphicVariants</nodeClass>
			<workerClass>Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants</workerClass>
			<tagDef>Cumshot</tagDef>
			<parentTagDef>Root</parentTagDef>
			<!-- for height -->
			<texPath>AnimationProps/Saliva/Saliva</texPath>
			<overlayLayer>Head</overlayLayer>
			<baseLayer>95</baseLayer>
		</animPropProperties>
	</Rimworld_Animations.AnimationPropDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.GroupAnimationDef>
		<defName>GroupAnimation_Blowjob</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator1

Blowjob_Receiver1

						</animationDefs>

				</loopOptions>

				<loops>10</loops>
				<paths>

Blowjob_Stage2_Branch1

Blowjob_Stage2_Branch2

Blowjob_Stage2_Branch3

				</paths>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator3

Blowjob_Receiver3

						</animationDefs>

				</loopOptions>

				<loops>20</loops>
				<paths>

Blowjob_Stage4_Branch1

Blowjob_Stage4_Branch2

				</paths>

				<loops>20</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator5

Blowjob_Receiver5

						</animationDefs>

				</loopOptions>

				<loops>1</loops>
				<paths>

Blowjob_Stage6_Branch1

Blowjob_Stage6_Branch2

				</paths>

		</animationStages>

		<contexts>

				<priority>1</priority>
				<interactionDefs>

Sex_Fellatio

Sex_Beakjob

Sex_Handjob

				</interactionDefs>

				<priority>1</priority>
				<actorShift>1</actorShift>
				<interactionDefs>

Sex_Reverse_Fellatio

Sex_Reverse_Beakjob

Sex_Reverse_Handjob

				</interactionDefs>

				<priority>0</priority>
				<interactionDefs>

Sex_Breastjob

Sex_Footjob

Sex_Handjob

Sex_MutualMasturbation

Rape_Breastjob

Rape_Fellatio

Rape_Footjob

Rape_Handjob

Rape_Oral

				</interactionDefs>

				<priority>0</priority>
				<actorShift>1</actorShift>
				<interactionDefs>

Sex_Reverse_Breastjob

Sex_Reverse_Footjob

Sex_Reverse_Handjob

Rape_Reverse_Breastjob

Rape_Reverse_Fellatio

Rape_Reverse_Footjob

Rape_Reverse_Handjob

				</interactionDefs>

		</contexts>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage2_Branch1</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>2</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator2a

Blowjob_Receiver2a

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage2_Branch2</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>2</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator2b

Blowjob_Receiver2b

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage2_Branch3</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>2</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator2c

Blowjob_Receiver2c

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage4_Branch1</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator4a

Blowjob_Receiver4a

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage4_Branch2</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator4b

Blowjob_Receiver4b

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage4_Branch3</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator4a

Blowjob_Receiver4a

						</animationDefs>

				</loopOptions>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator4c

Blowjob_Receiver4c

						</animationDefs>

				</loopOptions>

				<loops>2</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator4a

Blowjob_Receiver4a

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage6_Branch1</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator6a

Blowjob_Receiver6a

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Blowjob_Stage6_Branch2</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

Blowjob_Initiator6b

Blowjob_Receiver6b

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Blowjob_Initiator

Offset_Blowjob_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.AnimationOffsetDef>
		<defName>Offset_Blowjob_Receiver</defName>
		<offsets>

				<races>

Human

				</races>
				<offsets>
				</offsets>

		</offsets>
	</Rimworld_Animations.AnimationOffsetDef>

	<Rimworld_Animations.AnimationOffsetDef>
		<defName>Offset_Blowjob_Initiator</defName>
		<offsets>

				<races>

Human

				</races>
				<offsets>

<bodyType>Hulk</bodyType><offset>(0, 0, 0.223)</offset>

				</offsets>

		</offsets>
	</Rimworld_Animations.AnimationOffsetDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>Blowjob_Initiator1</defName>
    <durationTicks>60</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-7</angle>
              <visible>true</visible>
              <offset>(-0.5309734, 0, 0.4778759)</offset>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>-17</angle>
              <visible>true</visible>
              <offset>(-0.5309734, 0, 0.4778759)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>-19</angle>
              <visible>true</visible>
              <offset>(-0.5309734, 0, 0.4778759)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>31</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>2</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>6</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>10</tick>
              <angle>2</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>15</tick>
              <angle>6</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>40</tick>
              <angle>14</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>Blowjob_Receiver1</defName>
    <durationTicks>60</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.3421831, 0, 0.3303834)</offset>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>-13</angle>
              <visible>true</visible>
              <offset>(0.2536875, 0, 0.2713863)</offset>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>-23</angle>
              <visible>true</visible>
              <offset>(0.1828908, 0, 0.2123895)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>9</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>29</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>45</tick>
              <angle>7</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>9</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>RenderNodeTag_Hand</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0.0471976, 1, 0.1533923)</offset>
              <rotation>North</rotation>

              <tick>20</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.2890855, 1, 0.1002949)</offset>
              <rotation>North</rotation>

              <tick>40</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.2595871, 1, 0.08849573)</offset>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>