Mirror of 1.4.22 from Lovers Lab

This commit is contained in:
ghostclinic3YTB 2023-04-03 21:48:55 -04:00
parent 5d0da3bc88
commit b501ddfb0f
1119 changed files with 12505 additions and 2543 deletions

1
1.3/AssembliesNotion.txt Normal file
View File

@ -0,0 +1 @@
latest source build: SizedApparel1.4WIP22

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>AOC</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Alien_Bori</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Alien_Miho</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Rabbie</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Ratkin</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Ratkin_Su</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Alien_SP</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,717 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.BodyDef>
<defName>Human</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<!-- Wip -->
<!-- <li> -->
<!-- <partName>Nipples</partName> -->
<!-- <boneName>Breasts</boneName> -->
<!-- <defaultHediffName>Breasts</defaultHediffName> -->
<!-- <bodyPartOf>Breasts</bodyPartOf> -->
<!-- <colorType>Nipple</colorType> -->
<!-- <isBreasts>true</isBreasts> -->
<!-- <mustHaveBone>false</mustHaveBone> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0114</south> -->
<!-- <north>0.0011</north> -->
<!-- <east>0.0114</east> -->
<!-- <west>0.0114</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Hulk</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Fat</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Child</bodyType>
<Addons>
<!-- <li> -->
<!-- <partName>Breasts</partName> -->
<!-- <boneName>Breasts</boneName> -->
<!-- <defaultHediffName>Breasts</defaultHediffName> -->
<!-- <bodyPartOf>Breasts</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>true</isBreasts> -->
<!-- <mustHaveBone>false</mustHaveBone> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0113</south> -->
<!-- <north>0.001</north> -->
<!-- <east>0.0113</east> -->
<!-- <west>0.0113</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Vagina</partName> -->
<!-- <boneName>Vagina</boneName> -->
<!-- <defaultHediffName>Vagina</defaultHediffName> -->
<!-- <bodyPartOf>Vagina</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <mustHaveBone>true</mustHaveBone> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0088</south> -->
<!-- <north>0.0100</north> -->
<!-- <east>0.0088</east> -->
<!-- <west>0.0088</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Anus</partName> -->
<!-- <boneName>Anus</boneName> -->
<!-- <defaultHediffName>Anus</defaultHediffName> -->
<!-- <bodyPartOf>Anus</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0093</south> -->
<!-- <north>0.0105</north> -->
<!-- <east>0.0093</east> -->
<!-- <west>0.0093</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Belly</partName> -->
<!-- <boneName>Belly</boneName> -->
<!-- <defaultHediffName>BellyBulge</defaultHediffName> -->
<!-- <bodyPartOf>Belly</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0098</south> -->
<!-- <north>0.0002</north> -->
<!-- <east>0.0098</east> -->
<!-- <west>0.0098</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Penis</partName> -->
<!-- <boneName>Penis</boneName> -->
<!-- <defaultHediffName>Penis</defaultHediffName> -->
<!-- <bodyPartOf>Penis</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0108</south> -->
<!-- <north>0.0025</north> -->
<!-- <east>0.0108</east> -->
<!-- <west>0.0108</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Balls</partName> -->
<!-- <boneName>Balls</boneName> -->
<!-- <defaultHediffName>Penis</defaultHediffName> -->
<!-- <bodyPartOf>Balls</bodyPartOf> -->
<!-- <customPath>Penis/Balls</customPath> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0096</south> -->
<!-- <north>0.0085</north> -->
<!-- <east>0.0096</east> -->
<!-- <west>0.0096</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Human</defName>
@ -26,6 +25,23 @@
<west>0.0113</west>
</depthOffset>
</li>
<!-- Wip -->
<!-- <li> -->
<!-- <partName>Nipples</partName> -->
<!-- <boneName>Breasts</boneName> -->
<!-- <defaultHediffName>Breasts</defaultHediffName> -->
<!-- <bodyPartOf>Breasts</bodyPartOf> -->
<!-- <colorType>Nipple</colorType> -->
<!-- <isBreasts>true</isBreasts> -->
<!-- <mustHaveBone>false</mustHaveBone> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0114</south> -->
<!-- <north>0.0011</north> -->
<!-- <east>0.0114</east> -->
<!-- <west>0.0114</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
@ -120,8 +136,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -238,8 +254,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -356,8 +372,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -474,8 +490,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -592,8 +608,106 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Child</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
</Addons>

Binary file not shown.

BIN
1.3/Defs/Defs(wip).zip Normal file

Binary file not shown.

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SizedApparel.PubicHairDef>
<!-- Sized Apparel will Use defName for TextureSearch -->
<defName>Default</defName>
<!-- texPath must be set for styling station! -->
<texPath>SizedApparel/BodyParts/Human/PubicHair/Default</texPath>
<!-- Actual Texture must have "_south" name. -->
<!-- for example of this: Default_south.png -->
</SizedApparel.PubicHairDef>
</Defs>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SizedApparel.PubicHairDef>
<!-- Sized Apparel will Use defName for TextureSearch -->
<defName>Line</defName>
<!-- texPath must be set for styling station! -->
<texPath>SizedApparel/BodyParts/Human/PubicHair/Line</texPath>
<!-- Actual Texture must have "_south" name. -->
<!-- for example of this: Default_south.png -->
</SizedApparel.PubicHairDef>
</Defs>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SizedApparel.PubicHairDef>
<!-- Sized Apparel will Use defName for TextureSearch -->
<defName>Wild</defName>
<!-- texPath must be set for styling station! -->
<texPath>SizedApparel/BodyParts/Human/PubicHair/Wild</texPath>
<!-- Actual Texture must have "_south" name. -->
<!-- for example of this: Default_south.png -->
</SizedApparel.PubicHairDef>
</Defs>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SizedApparel.PubicHairDef>
<defName>None</defName>
<noGraphic>true</noGraphic>
</SizedApparel.PubicHairDef>
</Defs>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SizedApparel.PubicHairDef>
<!-- Sized Apparel will Use defName for TextureSearch -->
<defName>Wild</defName>
<!-- texPath must be set for styling station! -->
<texPath>SizedApparel/BodyParts/Human/PubicHair/Wild</texPath>
<!-- Actual Texture must have "_south" name. -->
<!-- for example of this: Default_south.png -->
</SizedApparel.PubicHairDef>
</Defs>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>AOC</defName>
<skeletons>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Alien_Bori</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Alien_Miho</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.148)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.150)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.006, 0, -0.143)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.129)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.139</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.061, 0, -0.155)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141))</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.121)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.109)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.004, 0, -0.123)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.148)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.150)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.006, 0, -0.143)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.129)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.061, 0, -0.155)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.004, 0, -0.123))</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.121)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.109)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.004, 0, -0.123)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Rabbie</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Ratkin</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Ratkin_Su</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Alien_SP</defName>
<skeletons>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -556,7 +556,112 @@
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.002, 0, -0.209)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.205)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.043, 0, -0.174)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.164)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.084, 0, -0.127)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.166)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.164)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.057, 0, -0.145)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>

View File

@ -0,0 +1,668 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Human</defName>
<skeletons>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(-0.002, 0, -0.340)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.346)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.238)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.174, 0, 0.254)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.01, 0, -0.338)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.062, 0, -0.221)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.01, 0, -0.338)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.062, 0, -0.221)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.301)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.318)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.059, 0, -0.186)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.312)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.318)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.006, 0, -0.256)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.260)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.266)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.137, 0, -0.211)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.307)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.305)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.008, 0, -0.248)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.307)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.305)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.007, 0, -0.248)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.281)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.291)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.021, 0, -0.219)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.311)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.057, 0, -0.258)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.268)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.252)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.113, 0, -0.234)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.301)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.311)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.068, 0, -0.250)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0.0, 0, -0.301)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.0, 0, -0.311)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.066, 0, -0.250)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.275)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.277)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.066, 0, -0.219)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Hulk</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.004, 0, -0.434)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.453)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.020, 0, -0.395)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0.006, 0, -0.383)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.406)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.238, 0, -0.328)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.436)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.0, 0, -0.445)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.029, 0, -0.387)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.436)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.445)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.028, 0, -0.387)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.395)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.027, 0, -0.375)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, -0.424)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Fat</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.002, 0, -0.352)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.359)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.148, 0, -0.352)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.297)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.297)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.238, 0, -0.271)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.357)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.363)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.168, 0, -0.348)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.357)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.363)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.168, 0, -0.348)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.307)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.158, 0, -0.338)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.002, 0, -0.209)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.205)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.043, 0, -0.174)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.164)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.084, 0, -0.127)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<!-- <li> -->
<!-- <name>PubicHair</name> -->
<!-- <south> -->
<!-- <InitialPosition>(0, 0, -0.166)</InitialPosition> -->
<!-- <InitialAngle>0</InitialAngle> -->
<!-- </south> -->
<!-- <north> -->
<!-- <InitialPosition>(-0.002, 0, -0.164)</InitialPosition> -->
<!-- <InitialAngle>0</InitialAngle> -->
<!-- </north> -->
<!-- <east> -->
<!-- <InitialPosition>(0.057, 0, -0.145)</InitialPosition> -->
<!-- <InitialAngle>0</InitialAngle> -->
<!-- </east> -->
<!-- </li> -->
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

Binary file not shown.

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>Biotech</li>
</mods>
<match Class="PatchOperationSequence">
<success>Normal</success>
<operations>
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags</xpath>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel</xpath>
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags</xpath>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel</xpath>
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>
</operations>
</match>
</Operation>
</Patch>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>Biotech</li>
</mods>
<match Class="PatchOperationSequence">
<success>Normal</success>
<operations>
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags</xpath>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel</xpath>
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags</xpath>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel</xpath>
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_HeavyBandolier"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>
</operations>
</match>
</Operation>
</Patch>

View File

@ -11,10 +11,4 @@ namespace SizedApparel
class AlienRaceSupport
{
}
public class SizedApparelPawnDef : Def
{
public bool allowForceHumanlike = false;
}
}

View File

@ -6,6 +6,7 @@ using System.Threading.Tasks;
namespace SizedApparel
{
//Does it better to optimize?
public class Graphic_BodyParts : Verse.Graphic_Multi
{
public float serverity;

View File

@ -3,11 +3,17 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using RimWorld;
using Verse;
namespace SizedApparel
{
public class Graphic_SizedApparel : Verse.Graphic_Multi
//Does it better to optimize?
public class Graphic_SizedApparel : Graphic_Multi
{
public string TargetBodyParts = "Breats";
//Sized Graphics.
public List<Graphic_Multi> graphics;
}
}

View File

@ -1,15 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HarmonyLib;
using RimWorld;
using Verse;
using HarmonyLib;
//using Rimworld_Animations;
//using AlienRace;
using UnityEngine;
using rjw;
using RevealingApparel;
using System.Reflection;
using System;
using System.Linq;
using Verse;
namespace SizedApparel
{
@ -24,6 +20,9 @@ namespace SizedApparel
public static bool rimNudeWorldActive = false;
public static bool OTYNudeActive = false;
public static bool LicentiaActive = false;
public static bool RimworldAnimationActive = false; //rjw animation
public static bool MenstruationActive = false; //rjw_menstruation
public static bool StatueOfColonistActive = false;
static SizedApparelPatch()
{
@ -85,6 +84,40 @@ namespace SizedApparel
{
LicentiaActive = true;
}
if (!LicentiaActive)
{
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageId.ToLower() == "Euclidean.LustLicentia.RJWLabs".ToLower()))
{
LicentiaActive = true;
}
}
if (!LicentiaActive)
{
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageId.ToLower().Contains("LustLicentia.RJWLabs".ToLower())))
{
LicentiaActive = true;
}
}
//check rjw animation
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageId.ToLower() == "c0ffee.rimworld.animations".ToLower()))
{
RimworldAnimationActive = true;
}
//check rjw_menstruation
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageId.ToLower() == "rjw.menstruation".ToLower()))
{
MenstruationActive = true;
}
//check statue of Colonist
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageId.ToLower() == "tammybee.statueofcolonist".ToLower()))
{
StatueOfColonistActive = true;
}
Log.Message("[SizedApparel] start");
@ -137,7 +170,7 @@ namespace SizedApparel
}
else
{
Log.Message("[SizedApparel] RimJobWorld Paatch canceled");
Log.Message("[SizedApparel] RimJobWorld Patch canceled");
}
}))();
}
@ -170,6 +203,31 @@ namespace SizedApparel
catch (TypeLoadException ex) { }
*/
try
{
((Action)(() =>
{
if (RimworldAnimationActive)
{
Log.Message("[SizedApparel] RimworldAnimaion(rjw animation) Found");
harmony.Patch(AccessTools.Method(typeof(Rimworld_Animations.CompBodyAnimator), "tickClip"),
postfix: new HarmonyMethod(typeof(RimworldAnimationPatch), "TickClipPostfix"));
harmony.Patch(AccessTools.Method(typeof(JobDriver_SexBaseInitiator), "End"),
postfix: new HarmonyMethod(typeof(RimworldAnimationPatch), "EndClipPostfix"));
Log.Message("[SizedApparel] RimworldAnimaion(rjw animation) Patched");
}
else
{
Log.Message("[SizedApparel] RimworldAnimaion(rjw animation) Patch canceled");
}
}))();
}
catch (TypeLoadException ex) { }
//Rim Nude World Patch
try
{

View File

@ -0,0 +1,107 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
using HarmonyLib;
using UnityEngine;
//using Rimworld_Animations;
namespace SizedApparel
{
public class RimworldAnimationPatch
{
//since instance (CompBodyAnimator class) must be soft dependency, Get as System.Object.
public static void TickClipPostfix(System.Object __instance) //CompBodyAnimator __instance, AnimationDef ___anim, int ___curStage, int ___actor, int ___clipTicks, float ___clipPercent
{
Rimworld_Animations.CompBodyAnimator instance = __instance as Rimworld_Animations.CompBodyAnimator;
if (instance == null)
return;
if (!instance.controlGenitalAngle)
return;
var comp = instance.parent.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
comp.SetPenisAngle(instance.genitalAngle - instance.bodyAngle); //genitalAngle is global Angle value in rjwanimation... fix with body Angle;
if (!SizedApparelSettings.AnimationPatch)//Rotating Penis Setting(avobe) is set from RimworldAnimation Setting, not in SizedApparel.
return;
foreach (var actor in instance.actorsInCurrentAnimation)
{
//comp.ForceUpdateTickAnimation = true;
var actorcomp = actor.GetComp<ApparelRecorderComp>();
if (actorcomp == null)
continue;
//actorcomp.SetBreastJiggle(true);
actorcomp.ForceUpdateTickAnimation = true;
}
return;
bool isFuckTick = false;
/*
var soundEffects = ((PawnAnimationClip)___anim.animationStages[___curStage].animationClips[___actor]).SoundEffects;
if (soundEffects.ContainsKey(___clipTicks) && (soundEffects[___clipTicks].Contains("Fuck") || soundEffects[___clipTicks].Contains("Suck")))
{
isFuckTick = true;
}
else
{
const int jiggleTime = 3;
for(int i = 0; i < jiggleTime; i++)
{
if (soundEffects.ContainsKey(___clipTicks - i) && soundEffects[___clipTicks - i].Contains("Fuck"))
{
isFuckTick = true;
break;
}
}
}*/
//need to find partner's breasts.
/*
if (isFuckTick)
{
foreach (var actor in __instance.actorsInCurrentAnimation)
{
actor.GetComp<ApparelRecorderComp>().SetBreastJiggle(true);
}
}
else
{
foreach (var actor in __instance.actorsInCurrentAnimation)
{
actor.GetComp<ApparelRecorderComp>().SetBreastJiggle(false);
}
}*/
//may have some tick issue? too fast jiggle?
}
//rjw's JobDriver_SexBaseInitiator end patch
public static void EndClipPostfix(System.Object __instance)//CompBodyAnimator __instance
{
Rimworld_Animations.CompBodyAnimator instance = __instance as Rimworld_Animations.CompBodyAnimator;
if (instance == null)
return;
if (!instance.controlGenitalAngle)
return;
var comp = instance.parent.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
comp.SetBreastJiggle(false, -1);
comp.ForceUpdateTickAnimation = false;
comp.SetPenisAngle(0);
}
}
}

View File

@ -17,7 +17,7 @@ namespace SizedApparel
if (graphicSet == null)
return;
var comp = pawn.TryGetComp<ApparelRecorderComp>();
var comp = pawn.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
comp.needToCheckApparelGraphicRecords = true;

View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;
using RJW_Menstruation;
namespace SizedApparel
{
public class Patch_Menstruation
{
public static Color? GetNippleColor(Hediff breastHediff)
{
var breastcomp = breastHediff.TryGetComp<HediffComp_Breast>();
if (breastcomp == null)
return null;
return breastcomp.NippleColor;
}
public static float? GetNippleSize(Hediff breastHediff)
{
var breastcomp = breastHediff.TryGetComp<HediffComp_Breast>();
if (breastcomp == null)
return null;
return breastcomp.NippleSize;
}
public static float? GetAreolaSize(Hediff breastHediff)
{
var breastcomp = breastHediff.TryGetComp<HediffComp_Breast>();
if (breastcomp == null)
return null;
return breastcomp.AreolaSize;
}
}
}

View File

@ -18,10 +18,10 @@ namespace SizedApparel
{
if (!UnityData.IsInMainThread)
return;
ApparelRecorderComp comp = pawn?.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp comp = pawn?.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
comp.SetDirty();
comp.SetDirty(true,true,true);
/*
comp.ClearAll();
var graphicSet = pawn.Drawer?.renderer?.graphics;
@ -69,7 +69,7 @@ namespace SizedApparel
return;
//GetBreastSeverity(__instance.pawn, out breastSeverity, out breastHediff);
//bool flag = hasUnSupportedApparel(__instance.pawn, breastSeverity, breastHediff);
ApparelRecorderComp comp = pawn.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp comp = pawn.GetComp<ApparelRecorderComp>();
if (comp != null)
{
/*
@ -128,7 +128,7 @@ namespace SizedApparel
{
if (pawn == null)
return;
ApparelRecorderComp comp = pawn.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp comp = pawn.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
comp.SetDirty();
@ -146,7 +146,7 @@ namespace SizedApparel
ApparelRecorderComp pawnARC = __instance.pawn.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp pawnARC = __instance.pawn.GetComp<ApparelRecorderComp>();
if (pawnARC != null)
{
if (__instance.pawn.RaceProps.Humanlike)
@ -161,7 +161,7 @@ namespace SizedApparel
var partner = __instance.Partner as Pawn;
if (partner == null)
return;
ApparelRecorderComp partnerARC = partner.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp partnerARC = partner.GetComp<ApparelRecorderComp>();
if (partnerARC != null)
{
if (partner.RaceProps.Humanlike)
@ -182,7 +182,7 @@ namespace SizedApparel
{
ApparelRecorderComp pawnARC = __instance.pawn.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp pawnARC = __instance.pawn.GetComp<ApparelRecorderComp>();
if (pawnARC != null)
{
@ -209,7 +209,7 @@ namespace SizedApparel
var partner = __instance.Partner as Pawn;
if (partner == null)
return;
ApparelRecorderComp partnerARC = partner.TryGetComp<ApparelRecorderComp>();
ApparelRecorderComp partnerARC = partner.GetComp<ApparelRecorderComp>();
if (partnerARC != null)
{
partnerARC.havingSex = false;

View File

@ -36,7 +36,7 @@ namespace SizedApparel
{
if (__result == false)
return;
var comp = pawn.TryGetComp<ApparelRecorderComp>();
var comp = pawn.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
if (comp.hasUnsupportedApparel)

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SizedApparel
{
public class Patch_StatueOfColonist
{
}
}

View File

@ -1,33 +1,51 @@
using System;
using HarmonyLib;
using RimWorld;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RimWorld;
using Verse;
using HarmonyLib;
using System.Reflection;
//using AlienRace;
using UnityEngine;
using rjw;
using System.Reflection;
using Verse;
namespace SizedApparel
{
public struct Depth4Offsets
public class Depth4Offsets
{
float South;
float North;
float East;
float West;
public float south=0;
public float north=0;
public float east=0;
public float west=0;
public Depth4Offsets() { }
public Depth4Offsets(Vector4 arg)
{
south = arg.x;
north = arg.y;
east = arg.z;
west = arg.w;
}
public Depth4Offsets(float s, float n, float e, float w)
{
south = s;
north = n;
east = e;
west = w;
}
}
public struct Rot4Offsets
public class Rot4Offsets
{
//X: right and left
//Y: Frong or Back
//Z: Up and Down
Vector3 South;
Vector3 North;
Vector3 East;
Vector3 West;
public Rot4Offsets(Vector3 vector)
@ -68,11 +86,29 @@ namespace SizedApparel
public string bodyType;
}
public class BodyWithBodyType
{
public string bodyType;
public List<BodyPart> Addons = new List<BodyPart>();
}
public class BodyPart
{
public string partName;
public Depth4Offsets depthOffset;
public List<BodyTypeAndOffset> offsets;
public string partName = null;
public string customPath = null;
public string defaultHediffName = null; // for missing Hediff
public bool isBreasts = false;
public bool centeredTexture = true;
public bool mustMatchBodyType = false; // TODO
public string boneName = null;
public Bone bone = null; // For Graphic Positioning System
public bool mustHaveBone = true; // when bone is missing, don't draw
public SizedApparelBodyPartOf bodyPartOf = SizedApparelBodyPartOf.None;
public ColorType colorType = ColorType.Skin;
public Depth4Offsets depthOffset = new Depth4Offsets();
public BodyTypeAndOffset offsets = new BodyTypeAndOffset();
}
public class BodyTypeAndOffset
@ -81,11 +117,16 @@ namespace SizedApparel
public string bodyType;
public Rot4Offsets offsets = new Rot4Offsets(Vector3.zero);
public BodyTypeAndOffset()
{
}
public BodyTypeAndOffset(bool useCenter)
{
if (useCenter)
{
offsets = new Rot4Offsets(new Vector3(0.5f, 0, 0.5f));
offsets = new Rot4Offsets(Vector3.zero);
}
}
public BodyTypeAndOffset(Vector3 defaultOffset)
@ -94,15 +135,15 @@ namespace SizedApparel
}
}
public enum SizedApparelBodyPartColorOf
public enum ColorType
{
Skin, Hair, Custom, None
Skin, Hair, Nipple, Custom, None
}
public enum SizedApparelBodyPartOf
{
All, Torso, Breasts, Crotch, Penis, Vagina, Anus, Belly, Udder, Hips, Thighs, hands, feet, None
All, Torso, Breasts, Crotch, Penis, Balls, Vagina, Anus, Belly, PubicHair, Udder, Hips, Thighs, hands, feet, None
}
public static class SizedApparelBodyPartOfExtension
{
@ -124,13 +165,17 @@ namespace SizedApparel
return true;
return false;
case SizedApparelBodyPartOf.Crotch:
if (source == SizedApparelBodyPartOf.Penis || source == SizedApparelBodyPartOf.Vagina || source == SizedApparelBodyPartOf.Anus)
if (source == SizedApparelBodyPartOf.Crotch || source == SizedApparelBodyPartOf.Penis || source == SizedApparelBodyPartOf.Vagina || source == SizedApparelBodyPartOf.Anus || source == SizedApparelBodyPartOf.PubicHair || source == SizedApparelBodyPartOf.Balls)
return true;
return false;
case SizedApparelBodyPartOf.Penis:
if (source == SizedApparelBodyPartOf.Penis)
return true;
return false;
case SizedApparelBodyPartOf.Balls:
if (source == SizedApparelBodyPartOf.Balls)
return true;
return false;
case SizedApparelBodyPartOf.Vagina:
if (source == SizedApparelBodyPartOf.Vagina)
return true;
@ -163,10 +208,13 @@ namespace SizedApparel
if (source == SizedApparelBodyPartOf.feet)
return true;
return false;
case SizedApparelBodyPartOf.PubicHair:
if (source == SizedApparelBodyPartOf.PubicHair)
return true;
return false;
case SizedApparelBodyPartOf.None:
return false;
return false;
}
Log.Error("[SizedApparel] missing SizedApparelBodyPartOf!");
return false;
@ -188,7 +236,7 @@ namespace SizedApparel
public class GraphicPoint
{
public string pointName;
public Vector2 point = new Vector2(0.5f, 0.5f);
public Vector2 point = Vector2.zero;
}
public class GraphicPointsWithBodyType
{
@ -199,13 +247,13 @@ namespace SizedApparel
public class PointWithBodyType
{
public string bodyTypeName; //null can be used too
public Vector2 point = new Vector2(0.5f,0.5f);
public Vector2 point = Vector2.zero;
}
public struct BodyPartPoint
public class BodyPartPoint
{
string name;
Vector2 position;//Uv position. not pixel
Vector2 position = Vector2.zero;//Uv position. not pixel
}
[Obsolete]//todo
@ -213,11 +261,7 @@ namespace SizedApparel
{
}
public enum ColorMode
{
Skin, Hair
}
//Def for Hediff Graphic color options or else.
public class SizedApparelHeddifDef : Def
@ -228,6 +272,7 @@ namespace SizedApparel
}
//Def per graphic(texture)
[Obsolete]
public class SizedApparelBodyPartGraphicDef : Def
{
public string graphicPath;
@ -241,17 +286,32 @@ namespace SizedApparel
public class SizedApparelBodyPartDef : Def
{
SizedApparelBodyPartOf bodyPartOf = SizedApparelBodyPartOf.None;
public bool canPose = false;
public bool canAnimate = false;
public bool canPose = true;
public List<string> TexturePaths;
}
public class SizedApparelBodyPart
{
static MethodInfo overrideMatMethod = AccessTools.Method(typeof(PawnRenderer), "OverrideMaterialIfNeeded");
static Color defaultNippleColor = Color.white;//nipple texture is already colored with pink. so make it white as default to avoid double coloring pink //Strong Pink Color = new ColorInt(255, 121, 121).ToColor
public SizedApparelBodyPart(Pawn pawn, string bodyPartName, SizedApparelBodyPartOf bodyPartOf, string defaultHediffName, bool isBreast, bool isOverlay , string customPathName = null, SizedApparelBodyPartColorOf colorOf = SizedApparelBodyPartColorOf.Skin)
//this is for RGB Channel Edit
static string texturePath_White = "SizedApparel/Masks/White";
static string texturePath_Black = "SizedApparel/Masks/Black";
static string texturePath_Red = "SizedApparel/Masks/Red";
static string texturePath_Green = "SizedApparel/Masks/Green";
static string texturePath_Blue = "SizedApparel/Masks/Blue";
public bool AutoOffsetForFurCoveredBody = true;
public SizedApparelBodyPart(Pawn pawn, ApparelRecorderComp apparelRecorderComp, string bodyPartName, SizedApparelBodyPartOf bodyPartOf, string defaultHediffName, bool isBreast, bool isOverlay, string customPathName = null, ColorType colorOf = ColorType.Skin, bool needBoneToRender = true, Bone parentBone = null, bool isCenteredTexture = false )
{
this.pawn = pawn; //owner
this.apparelRecorderCompCache = apparelRecorderComp; //for reduce GetComp Call; if it is null, it will try to get pawn's comp.
this.bodyPartName = bodyPartName;
this.def = DefDatabase<SizedApparelBodyPartDef>.AllDefs.FirstOrDefault(b => b.defName == bodyPartName);
@ -262,6 +322,15 @@ namespace SizedApparel
this.isOverlay = isOverlay;
this.customPath = customPathName;
this.colorType = colorOf;
this.bone = parentBone;
this.mustHaveBone = needBoneToRender;
this.centeredTexture = isCenteredTexture;
}
public void SetCenteredTexture(bool isCentered)
{
this.centeredTexture = isCentered;
}
public Vector2 OffsetFromUVOffset(Vector2 vector, Mesh mesh , bool isFliped = false)
@ -269,10 +338,21 @@ namespace SizedApparel
//treat mesh as plane
//Vector3 width = mesh.vertices[2] - mesh.vertices[1];
//Vector3 height = mesh.vertices[1] - mesh.vertices[2];
Vector2 loc = new Vector2(0.5f, 0.5f) - vector;
if(!isFliped)
return new Vector2((mesh.vertices[2].x - mesh.vertices[0].x)*vector.x,(mesh.vertices[0].z - mesh.vertices[2].z)*vector.y);
return new Vector2((mesh.vertices[2].x - mesh.vertices[0].x)*vector.x, (mesh.vertices[2].z - mesh.vertices[0].z)*vector.y);
/*
* Vector2 loc = new Vector2(0.5f, 0.5f) - vector;
if(!isFliped)
return new Vector2(Mathf.Lerp(mesh.vertices[0].x, mesh.vertices[2].x, loc.x), Mathf.Lerp(mesh.vertices[0].z, mesh.vertices[2].z, loc.y));
return new Vector2(Mathf.Lerp(mesh.vertices[3].x, mesh.vertices[1].x, loc.x), Mathf.Lerp(mesh.vertices[3].z, mesh.vertices[1].z, loc.y));
*/
}
//public Vector2 OffestFromUVOffset(Vector2 vector, Vector2 drawSize, bool isFliped = false)
@ -280,19 +360,28 @@ namespace SizedApparel
public SizedApparelBodyPartDef def;
public Pawn pawn;
public ApparelRecorderComp apparelRecorderCompCache; // for reduce getComp call;
public Bone bone;
private bool mustHaveBone;
public bool centeredTexture = false; // false to keep original position from mesh. and consider this graphics pivot as bone position
public string bodyPartName; //breast, penis, belly, pubichair... etc. just name. not like architech something
public string customPath = null;
public SizedApparelBodyPartOf bodyPartOf = SizedApparelBodyPartOf.None;
public string defaultHediffName;
public bool isBreast = false;
public bool isOverlay = false; //write z cache?
public string currentHediffName;
public bool isVisible = true;
public SizedApparelBodyPartColorOf colorType = SizedApparelBodyPartColorOf.Skin;
public int lastPoseTick = -1;
public ColorType colorType = ColorType.Skin;
public Color? customColorOne;
public Color? customColorTwo;
@ -313,14 +402,24 @@ namespace SizedApparel
public int maxDrawAge = -1;
public void SetBone(Bone bone)
{
this.bone = bone;
}
public void SetCustomPose(string newPose, bool autoUpdate = true, bool autoSetPawnGraphicDirty = false)
{
if (customPose == newPose)
return;
if(SizedApparelSettings.Debug)
Log.Message("[SizedApparel] Setting Custom Pose : " + newPose);
customPose = newPose;
if (autoUpdate)
{
this.UpdateGraphic();
this.lastPoseTick = Find.TickManager.TicksGame;
}
if(autoSetPawnGraphicDirty)
{
if (pawn == null)
@ -330,39 +429,22 @@ namespace SizedApparel
}
}
public bool CheckCanPose(string targetPose, bool checkApparels, bool mustMatchSize)
public bool CheckCanPose(string targetPose, bool checkApparels, bool checkBodyParts, bool mustMatchSize, bool mustMatchBodytype, bool mustMatchRace)
{
if (checkApparels)
{
foreach(ApparelGraphicRecord agr in pawn.Drawer.renderer.graphics.apparelGraphics)
{
/*
if (!agr.sourceApparel.def.apparel.bodyPartGroups.Any(bpgd => bpgd.defName == "Torso" || bpgd.defName == "Chest"))
continue;
if (agr.sourceApparel.def.apparel.tags.Any(s => s.ToLower() == "SizedApparel_IgnorePose".ToLower()))
continue;
*/
string originalPath = SizedApparelsDatabase.GetSupportedApparelOriginalPath(agr.graphic.path);
if (originalPath == null)
return false;
int outInt = -1;
float outFloat = -1;
SizedApparelsDatabase.SizedApparelDatabaseKey key = new SizedApparelsDatabase.SizedApparelDatabaseKey(originalPath,pawn.def.defName,pawn.story?.bodyType?.defName, pawn.gender, currentHediffName, Math.Min(currentSeverityInt, cappedSeverityInt), false, targetPose);
if (SizedApparelSettings.useGenderSpecificTexture)
key.gender = Gender.None;
var result = SizedApparelsDatabase.GetSupportedApparelSizedPath(key, out outInt, out outFloat);
if (!result.isCustomPose)
return false;
}
if (!SizedApparelUtility.CanPoseApparels(pawn, targetPose, currentHediffName, currentSeverityInt, cappedSeverityInt))
return false;
}
Graphic graphic = GetBodyPartGraphics(false, mustMatchSize, targetPose);
Graphic graphicH = GetBodyPartGraphics(true, mustMatchSize, targetPose);
if (graphic != null || graphicH != null)
return true;
return false;
if (checkBodyParts)
{
Graphic graphic = GetBodyPartGraphics(false, mustMatchSize, mustMatchBodytype, mustMatchRace);
Graphic graphicH = GetBodyPartGraphics(true, mustMatchSize, mustMatchBodytype, mustMatchRace);
if (graphic != null || graphicH != null)
return true;
return false;
}
return true;
}
@ -370,20 +452,22 @@ namespace SizedApparel
public int currentSeverityInt = -1;
public int cappedSeverityInt = 1000; // supported severity from worn apparel graphics
public Vector2 pivot = new Vector2(0.5f, 0.5f);
public Vector2 pivot = Vector2.zero;
public Vector2 position = Vector2.zero;//offset from pivot //UV. not pixel
public Dictionary<string, BodyPartPoint> points;
public Dictionary<string, BodyPartPoint> pointsHorny;
public SizedApparelTexturePointDef points;
public SizedApparelTexturePointDef pointsHorny;
public float rotation = 0; // +: rotate right, -: rotate left
public Vector2 scale = Vector2.one;
public float scale = 1f;
public Graphic bodyPartGraphic;
public Graphic bodyPartGraphicHorny;
public Vector2 positionOffset = Vector2.zero; //offset from position //UV. not pixel
public Vector2 positionOffsetSouth = Vector2.zero;
public Vector2 positionOffsetNorth = Vector2.zero;
@ -392,11 +476,13 @@ namespace SizedApparel
public float depthOffset = 0f;
//0.008f
public float depthOffsetEast = 0.008f;
public float depthOffsetWest = 0.008f;
public float depthOffsetSouth = 0.008f;
public float depthOffsetNorth = 0.008f;
//bigger = in front
public void SetDepthOffsets(float south, float north, float east, float west)
{
@ -405,6 +491,13 @@ namespace SizedApparel
depthOffsetEast = east;
depthOffsetWest = west;
}
public void SetDepthOffsets(Depth4Offsets oppsets)
{
depthOffsetSouth = oppsets.south;
depthOffsetNorth = oppsets.north;
depthOffsetEast = oppsets.east;
depthOffsetWest = oppsets.west;
}
public void SetPositionOffsets(Vector2 south, Vector2 north, Vector2 east, Vector2 west)
{
positionOffsetSouth = south;
@ -412,38 +505,58 @@ namespace SizedApparel
positionOffsetEast = east;
positionOffsetWest = west;
}
public Graphic GetBodyPartGraphics(bool isHorny, bool mustMatchSize = false, string poseOverride = null)
public Graphic GetBodyPartGraphics(bool isHorny, bool mustMatchSize = false, bool mustMatchBodytype = false, bool mustMatchRace = false, string poseOverride = null)
{
Dictionary<string, BodyPartPoint> var;
return GetBodyPartGraphics(isHorny, out var, mustMatchSize, poseOverride);
SizedApparelTexturePointDef var;
return GetBodyPartGraphics(isHorny, out var, mustMatchBodytype, mustMatchSize, mustMatchRace, poseOverride);
}
public Graphic GetBodyPartGraphics(bool isHorny, out Dictionary<string, BodyPartPoint> outPoints, bool mustMatchSize = false ,string poseOverride = null, string variationOverride = null)
public Graphic GetBodyPartGraphics(bool isHorny, out SizedApparelTexturePointDef outPoints, bool mustMatchSize = false, bool mustMatchBodyType = false , bool mustMatchRace = false ,string poseOverride = null, string variationOverride = null)
{
if (pawn == null)
{
outPoints = null;
return null;
}
var comp = pawn.TryGetComp<ApparelRecorderComp>();
var comp = apparelRecorderCompCache;
if (comp == null)
comp = pawn.GetComp<ApparelRecorderComp>();
if (comp == null)
{
outPoints = null;
return null;
}
var key = new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType?.defName, currentHediffName, customPath==null?bodyPartName: customPath, pawn.gender, Math.Min(currentSeverityInt, cappedSeverityInt), isHorny, poseOverride==null?customPose:poseOverride, variationOverride==null?variation: variationOverride);
string bodyTypeString = pawn.story?.bodyType?.defName;
var key = new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeString, currentHediffName, customPath==null?bodyPartName: customPath, pawn.gender, Math.Min(currentSeverityInt, cappedSeverityInt), isHorny, poseOverride==null?customPose:poseOverride, variationOverride==null?variation: variationOverride);
var result = SizedApparelsDatabase.GetSupportedBodyPartPath(key, isBreast, customPath == null ? bodyPartName : customPath, defaultHediffName);
if (mustMatchSize)
if (Math.Min(currentSeverityInt, cappedSeverityInt) != result.size)
{
outPoints = null;
return null;
}
if (mustMatchBodyType)
{
if(result.bodyType != pawn.story?.bodyType?.defName)
{
outPoints = null;
return null;
}
}
if (mustMatchRace)
{
if (result.raceName != pawn.def.defName)
{
outPoints = null;
return null;
}
}
if (result.pathWithSizeIndex == null)
{
@ -471,7 +584,7 @@ namespace SizedApparel
public void ResetTransform()
{
this.position = Vector2.zero;
this.scale = Vector2.one;
this.scale = 1f;
this.rotation = 0;
}
@ -512,48 +625,125 @@ namespace SizedApparel
{
if (!isVisible)
return;
if (scale == Vector2.zero)
if (scale == 0f)
return; //Don't draw if scale is zero
if (pawn == null)
return;
if (mustHaveBone && bone == null)
return;
if (bodyMesh == null)
{
if (SizedApparelSettings.Debug)
Log.Warning("[SizedApparel] DrawBodyParts But Null Body Mesh! : " + pawn.Name);
return;
}
PawnRenderer pawnRenderer = pawn.Drawer.renderer;
Shader shader = ShaderDatabase.CutoutComplex;
Shader shader = shader = ShaderDatabase.CutoutSkinOverlay;
Color drawColor1 = Color.white;
Color drawColor2 = Color.white;
bool forceWriteZ = true;
if(colorType == SizedApparelBodyPartColorOf.Skin)
bool HasFurSkin = false;
//Furskin Check
/*
if (pawn.Drawer.renderer.graphics.furCoveredGraphic != null)
{
HasFurSkin = true;
}*/
if (colorType == ColorType.Skin)
{
forceWriteZ = true;
if (bodyDrawType == RotDrawMode.Fresh)
{
if (HasFurSkin)
{
}
else
{
shader = pawn.Drawer.renderer.graphics.nakedGraphic.Shader;
if (!ShaderUtility.SupportsMaskTex(shader))
shader = shader = ShaderDatabase.CutoutSkinOverlay;
drawColor1 = pawnRenderer.graphics.nakedGraphic.Color;
drawColor2 = pawnRenderer.graphics.nakedGraphic.ColorTwo;
}
shader = pawn.Drawer.renderer.graphics.nakedGraphic.Shader;
if (!ShaderUtility.SupportsMaskTex(shader))
shader = ShaderDatabase.CutoutSkinOverlay;
drawColor1 = pawn.Drawer.renderer.graphics.nakedGraphic.Color;
drawColor2 = pawn.Drawer.renderer.graphics.nakedGraphic.ColorTwo;
}
else if (bodyDrawType == RotDrawMode.Rotting)
{
shader = pawn.Drawer.renderer.graphics.rottingGraphic.Shader;
if (!ShaderUtility.SupportsMaskTex(shader))
shader = ShaderDatabase.CutoutSkinOverlay;
drawColor1 = pawn.Drawer.renderer.graphics.rottingGraphic.Color;
drawColor2 = pawn.Drawer.renderer.graphics.nakedGraphic.ColorTwo;
shader = shader = ShaderDatabase.CutoutSkinOverlay;
drawColor1 = pawnRenderer.graphics.rottingGraphic.Color;
drawColor2 = pawnRenderer.graphics.nakedGraphic.ColorTwo;
}
}
else if (colorType == SizedApparelBodyPartColorOf.Hair)
else if (colorType == ColorType.Nipple)
{
forceWriteZ = true;
//Get SkinColor first.
if (bodyDrawType == RotDrawMode.Fresh)
{
if (HasFurSkin)
{
}
else
{
shader = pawn.Drawer.renderer.graphics.nakedGraphic.Shader;
if (!ShaderUtility.SupportsMaskTex(shader))
shader = shader = ShaderDatabase.CutoutSkinOverlay;
drawColor1 = pawnRenderer.graphics.nakedGraphic.Color;
drawColor2 = pawnRenderer.graphics.nakedGraphic.ColorTwo;
}
}
else if (bodyDrawType == RotDrawMode.Rotting)
{
shader = pawn.Drawer.renderer.graphics.rottingGraphic.Shader;
if (!ShaderUtility.SupportsMaskTex(shader))
shader = shader = ShaderDatabase.CutoutSkinOverlay;
drawColor1 = pawnRenderer.graphics.rottingGraphic.Color;
drawColor2 = pawnRenderer.graphics.nakedGraphic.ColorTwo;
}
if(apparelRecorderCompCache != null)
{
if(apparelRecorderCompCache.nippleColor != null)
{
drawColor1 = apparelRecorderCompCache.nippleColor.Value; //* drawColor1;
drawColor2 = apparelRecorderCompCache.nippleColor.Value; //* drawColor2; //maybe can be issue
}
else
{
//nipple Color is null
//Ust Default Color for Nipple with SkinColor
drawColor1 = defaultNippleColor * drawColor1;
drawColor2 = defaultNippleColor * drawColor2;
}
}
}
else if (colorType == ColorType.Hair)
{
forceWriteZ = false;
shader = ShaderDatabase.Transparent;
if(pawn.story != null)
drawColor1 = pawn.story.hairColor;
}
else if (colorType == SizedApparelBodyPartColorOf.Custom)
else if (colorType == ColorType.Custom)
{
forceWriteZ = true;
shader = ShaderDatabase.Transparent;
@ -562,52 +752,183 @@ namespace SizedApparel
if (customColorTwo != null)
drawColor2 = customColorTwo.Value;
}
else if (colorType == SizedApparelBodyPartColorOf.None)
else if (colorType == ColorType.None)
{
forceWriteZ = false;
shader = ShaderDatabase.Cutout;
}
if (isOverlay)
{
if (shader == ShaderDatabase.Cutout)
shader = ShaderDatabase.Transparent;
else if (shader == ShaderDatabase.CutoutSkin || shader == ShaderDatabase.CutoutSkinColorOverride)
shader = ShaderDatabase.CutoutSkinOverlay;
else
shader = ShaderDatabase.Transparent;
}
Mesh scaledBodyMesh;
BoneTransform boneTransform = null;
if(bone != null)
{
if (facing == Rot4.South)
{
boneTransform = bone.south;
}
else if (facing == Rot4.North)
{
boneTransform = bone.north;
}
else if (facing == Rot4.East)
{
boneTransform = bone.east;
}
else if (facing == Rot4.West)
{
boneTransform = bone.west;
if (boneTransform == null)
boneTransform = bone.east;
}
}
float drawScale = scale;
float drawRotation = angle;
Vector3 drawPosition = rootLoc;
/*
if (this.pawn.ageTracker.CurLifeStage.bodyDrawOffset != null)
{
drawPosition += this.pawn.ageTracker.CurLifeStage.bodyDrawOffset.Value;
}*/
if (boneTransform != null)
{
//TODO fixed angle for IK?
float width = (bodyMesh.vertices[2].x - bodyMesh.vertices[0].x);
if (centeredTexture)
{
bool westUsingEast = false;
if (facing == Rot4.West && bone.west == null)
westUsingEast = true;
drawRotation = boneTransform.InitialAngle + boneTransform.angleOffset;
//not sure it work correct
Vector3 v = (boneTransform.InitialPosition + boneTransform.positionOffset) * width;
var q = Quaternion.AngleAxis (westUsingEast? -angle : angle, Vector3.up);
v = q * v;
drawPosition = (v) ; // calculate rotated point
//Log.Message(boneTransform.angleOffset.ToString());
if (westUsingEast)
{
//already scaled with "width"?
//its using east as west. so flip position
drawPosition.Scale(new Vector3(-1f,0f,1f));
//drawRotation = boneTransform.InitialAngle - boneTransform.angleOffset;
}
drawPosition += rootLoc;
drawRotation += angle ;
}
else
{
//NotCentered Texture not yet support Rotation System.
//wip
Vector3 v = Vector3.zero;
bool westUsingEast = false;
if (facing == Rot4.West && bone.west == null)
westUsingEast = true;
drawRotation = boneTransform.InitialAngle; // + boneTransform.angleOffset
//not sure it work correct
//Vector3 v = (boneTransform.InitialPosition); //initialpos as custom pivot
//var q = Quaternion.AngleAxis(westUsingEast ? -drawRotation : drawRotation, Vector3.up);
//var q2 = Quaternion.AngleAxis(westUsingEast ? -angle : angle, Vector3.up);
//v = q * v; // calculate final draw position with torso angle
//v = v + boneTransform.InitialPosition + boneTransform.positionOffset;
//v = q2 * v; //NotCentered Texture not yet support Rotation System.
drawPosition = (v) * width;
if (westUsingEast)
{
//already scaled with "width"?
//its using east as west. so flip position
drawPosition.Scale(new Vector3(-1f, 0f, 1f));
//drawRotation = boneTransform.InitialAngle - boneTransform.angleOffset;
}
drawPosition += rootLoc ; // adjust with result
//Log.Message(boneTransform.angleOffset.ToString());
drawRotation += angle;
}
}
/*
if (drawScale != 1f)
{
// scale Only Rimworld Plane Mesh
if(bodyMesh.vertexCount == 4)
{
float width = (bodyMesh.vertices[2].x - bodyMesh.vertices[0].x);
//var meshSet = MeshPool.GetMeshSetForWidth(scale * width);
var meshSet = MeshPool.GetMeshSetForWidth(scale * width);
scaledBodyMesh = meshSet.MeshAt(facing);
}
else
scaledBodyMesh = bodyMesh;
}
else
{
scaledBodyMesh = bodyMesh;
}*/
scaledBodyMesh = bodyMesh;
Quaternion quaternion = Quaternion.AngleAxis(drawRotation, Vector3.up);
Quaternion quaternion = Quaternion.AngleAxis(angle + rotation, Vector3.up);
Vector3 vector = rootLoc;
Rot4 targetRot = facing;
if (rotOverride != null)
targetRot = rotOverride.Value;
if (targetRot == Rot4.South)
{
var loc = OffsetFromUVOffset(positionOffsetSouth, bodyMesh);
vector.x += loc.x;
vector.z += loc.y;
vector.y += depthOffsetSouth;
var loc = OffsetFromUVOffset(positionOffsetSouth, scaledBodyMesh);
drawPosition.x += loc.x;
drawPosition.z += loc.y;
drawPosition.y += depthOffsetSouth;
}
else if(targetRot == Rot4.North)
{
var loc = OffsetFromUVOffset(positionOffsetNorth, bodyMesh);
vector.x += loc.x;
vector.z += loc.y;
vector.y += depthOffsetNorth;
var loc = OffsetFromUVOffset(positionOffsetNorth, scaledBodyMesh);
drawPosition.x += loc.x;
drawPosition.z += loc.y;
drawPosition.y += depthOffsetNorth;
}
else if (targetRot == Rot4.East)
{
var loc = OffsetFromUVOffset(positionOffsetEast, bodyMesh);
vector.x += loc.x;
vector.z += loc.y;
vector.y += depthOffsetEast;
var loc = OffsetFromUVOffset(positionOffsetEast, scaledBodyMesh);
drawPosition.x += loc.x;
drawPosition.z += loc.y;
drawPosition.y += depthOffsetEast;
}
else if (targetRot == Rot4.West)
{
var loc = OffsetFromUVOffset(positionOffsetWest, bodyMesh);
vector.x += loc.x;
vector.z += loc.y;
vector.y += depthOffsetWest;
var loc = OffsetFromUVOffset(positionOffsetWest, scaledBodyMesh);
drawPosition.x += loc.x;
drawPosition.z += loc.y;
drawPosition.y += depthOffsetWest;
}
Graphic graphic = null;
if (SizedApparelUtility.IsHorny(pawn))
graphic = bodyPartGraphicHorny;
@ -617,18 +938,44 @@ namespace SizedApparel
if (graphic == null)
return;
Material mat;
if (!flags.FlagSet(PawnRenderFlags.Cache)&&!isOverlay&& forceWriteZ)
//ForFurskinOffset
if(bodyDrawType == RotDrawMode.Fresh && HasFurSkin && AutoOffsetForFurCoveredBody)
{
graphic = graphic.GetColoredVersion(ShaderDatabase.Cutout, drawColor1, drawColor2);
mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(targetRot) : (Material)overrideMatMethod.Invoke(pawnRenderer, new object[] { graphic.MatAt(facing), pawn, flags.FlagSet(PawnRenderFlags.Portrait) });
GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); // draw for writeZ data to solve shadow issue
}
graphic = graphic.GetColoredVersion(shader, drawColor1, drawColor2);
vector.y += 0.00001f;
mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(targetRot) : (Material)overrideMatMethod.Invoke(pawnRenderer, new object[] { graphic.MatAt(facing), pawn, flags.FlagSet(PawnRenderFlags.Portrait) });
GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow));
//vector.y += 0.009187258f; //in PawnRenderer, it adds 0.009187258f.
//graphic.maskPath does error? need to check
// worn fur body and naked fur body has different offsets... wtf
//TODO Need to Fix
}
Material mat;
//If ForceWriteDepth, draw Cutout mesh for write depth. this is for avoid problem of body addons drawing under other meshes. such as breasts front of body but behind tail.
if (forceWriteZ || (!flags.FlagSet(PawnRenderFlags.Cache) && !isOverlay))// //(!flags.FlagSet(PawnRenderFlags.Cache) && !isOverlay)
{
Graphic Zgraphic = graphic.GetColoredVersion(ShaderDatabase.CutoutComplex, drawColor1, drawColor2); // ShaderDatabase.Cutout
Vector3 drawPositionZ = drawPosition;
drawPositionZ.y = drawPositionZ.y - 0.00001f; //Send Back of body, but it can still write depth. 1.4: send to 0
mat = flags.FlagSet(PawnRenderFlags.Cache) ? Zgraphic.MatAt(targetRot) : (Material)overrideMatMethod.Invoke(pawnRenderer, new object[] { Zgraphic.MatAt(facing), pawn, flags.FlagSet(PawnRenderFlags.Portrait) });
GenDraw.DrawMeshNowOrLater(scaledBodyMesh, drawPositionZ, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); // draw for writeZ data to solve shadow issue
}
//shader must be mask
graphic = graphic.GetColoredVersion(shader, drawColor1, drawColor2);
if (graphic.maskPath == null)
{
//Test
//graphic.maskPath = texturePath_Red;
}
//drawPosition.y += 0.00001f;
mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(targetRot) : (Material)overrideMatMethod.Invoke(pawnRenderer, new object[] { graphic.MatAt(facing), pawn, flags.FlagSet(PawnRenderFlags.Portrait) });
GenDraw.DrawMeshNowOrLater(scaledBodyMesh, drawPosition, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow));
}
}
@ -637,23 +984,24 @@ namespace SizedApparel
//TODO: Torso Pose?
public class SizedApparelBodyDef : Def
public class BodyDef : Def
{
//public List<SizedApparelBodyPartDef> BodyParts;
//defName = raceName ?? could it work?
public List<BodyPart> bodyParts;
public List<BodyWithBodyType> bodies = new List<BodyWithBodyType>();
/*
public List<BodyTypeAndOffset> penisOffset;
public List<BodyTypeAndOffset> vaginaOffset; //TODO
public List<BodyTypeAndOffset> udderOffset; //TODO
public List<BodyTypeAndOffset> bellyOffset; //TODO
public List<BodyTypeAndOffset> breastsOffset; //TODO
public List<BodyTypeAndOffset> anusOffset; //TODO
*/
//public List<BodyTypeAndOffset> penisOffset;
//public List<BodyTypeAndOffset> vaginaOffset;
//public List<BodyTypeAndOffset> pubicHairOffset;
//public List<BodyTypeAndOffset> udderOffset;
//public List<BodyTypeAndOffset> bellyOffset;
//public List<BodyTypeAndOffset> breastsOffset;
//public List<BodyTypeAndOffset> anusOffset;
}
public class SizedApparelBody
@ -667,4 +1015,10 @@ namespace SizedApparel
}
}
public class SizedApparelBodyPartOfssetDef : Def
{
//defName IsRaceName
}
}

View File

@ -0,0 +1,163 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;
namespace SizedApparel
{
//This Class is Use for Def BodyParts' Custom Pivot, or Some Special Common Vector Points Per Serverity.
//Not Consider Acture Graphic Textures.
public class SkeletonDef : Def
{
//defName = Pawn's race name (such as "Human")
//public List<BodyPartGraphicBone> graphicBones = new List<BodyPartGraphicBone>();
//Do Not Directly Use it
public List<Skeleton> skeletons = new List<Skeleton>();
public Skeleton CreateSkeleton(string bodyType)
{
for(int i = 0; i< skeletons.Count; i++)
{
if(skeletons[i].bodyType == bodyType)
{
return new Skeleton(skeletons[i]);
}
}
return null;
}
}
public class Skeleton
{
public string bodyType = null; // can be null for animal or etc
public List<Bone> Bones;
//only runtime. Do not Set in Def
public Rot4 BodyFacing; // for flip east-west bones
public Rot4 HeadFacing; //TODO
public Skeleton()
{
}
public Skeleton(Skeleton skeletonToCopy)
{
this.Bones = new List<Bone>();
foreach (var s in skeletonToCopy.Bones)
{
this.Bones.Add(new Bone(s, this));
}
}
public Bone FindBone(string boneName)
{
foreach (var b in this.Bones)
{
if (b.name == boneName)
return b;
}
return null;
}
}
//for deafault bone support?
public class BodyPartBoneDef : Def
{
//DefName is Bone Name To Use.
public Vector3 customPivot = new Vector3(0.5f, 0, 0.5f);
public Vector3 Position = new Vector3(0.5f, 0, 0.5f); // Local Position(UV) from Body
public float Length = 1;
public float Rotation = 0;
public float Scale = 1f; // Default Render Scale.
}
//Body Parts Graphic can be attached to bone position and rotation
public class Bone
{
public string name = null;
public Skeleton parentSkeleton = null;
//public string parentBoneName = null; // ToDo
public bool isHeadBone = false; // TODO
public BoneTransform south;
public BoneTransform north;
public BoneTransform east;
public BoneTransform west; // can be null. then use east
//hiding Graphic parameter will be in that bodygraphic class
public Bone()
{
}
public Bone(Bone boneToCopy, Skeleton parent)
{
this.name = boneToCopy.name;
this.parentSkeleton = parent;
this.isHeadBone = boneToCopy.isHeadBone;
if(boneToCopy.south != null)
this.south = new BoneTransform(boneToCopy.south);
if (boneToCopy.north != null)
this.north = new BoneTransform(boneToCopy.north);
if (boneToCopy.east != null)
this.east = new BoneTransform(boneToCopy.east);
if (boneToCopy.west != null)
this.west = new BoneTransform(boneToCopy.west); // null for use east
}
public void SetAngle(float angle)
{
if(south != null)
south.angleOffset = angle;
if (north != null)
north.angleOffset = angle;
if (east != null)
east.angleOffset = angle;
if (west != null)
west.angleOffset = angle;
}
}
public class BoneTransform
{
//public Vector3 customPivot = new Vector3(0.5f, 0, 0.5f); // used to calculation rotation. the rotating center will be customPivot.
//Custom Pivot Doesn't affect to Draw Position on zero Rotated.
public Vector3 InitialPosition = Vector3.zero; // Local Position(UV) from Body
public float InitialLength = 1;
public float InitialAngle = 0;
public float InitialScale = 1f;
public bool isHeadBone = false; // TODO
//public BodyPartGraphicBone parentBone; //TODO
public Vector3 positionOffset = Vector3.zero;
public float lengthOffset = 0;
public float angleOffset = 0;
public float scaleOffset = 0;
public BoneTransform() { }
public BoneTransform(BoneTransform boneToCopy)
{
//this.parentBoneName = boneToCopy.parentBoneName;
//this.customPivot = boneToCopy.customPivot;
this.InitialPosition = boneToCopy.InitialPosition;
this.InitialLength = boneToCopy.InitialLength;
this.InitialAngle = boneToCopy.InitialAngle;
this.InitialScale = boneToCopy.InitialScale;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
using HarmonyLib;
//using AlienRace;
using UnityEngine;
using rjw;
namespace SizedApparel
{
//for avoid first hitch. some day it might need make pre def for fast cache...
public class ApparelTexture
{
public BodyTypeDef bodytype;
public List<string> textures;
public string GetTexturePath(int level, out int result)
{
result = -1;
if (level < 0)
return null;
if (textures.Count > level)
{
result = level;
return textures[level];
}
if (!textures.NullOrEmpty())
{
result = textures.Count - 1;
return textures[result]; //return biggest as supported
}
return null;
}
}
public class SizedApparelDef : Def
{
//def name must be match with apparels DefName
public bool hidingGenitals = false; // pants must be true
public List<ApparelTexture> SizedTextures;
public ApparelTexture GetApparelTexture(BodyTypeDef bodytype)
{
if(SizedTextures != null)
{
return SizedTextures.FirstOrDefault(a => a.bodytype == bodytype);
}
return null;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,7 @@ namespace SizedApparel
return;
/*
var comp = ___pawn.TryGetComp<ApparelRecorderComp>();
var comp = ___pawn.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
@ -72,12 +72,17 @@ namespace SizedApparel
}
public class PoseDef : Def
{
}
public class SizedApparelPose
{
//public string poseName; use defName as PoseName
public SizedApparelBodyPartOf targetBodyPart = SizedApparelBodyPartOf.Torso;
public List<BodyTypeAndOffset> headOffset;
//public List<BodyTypeAndOffset> headOffset;
}

View File

@ -14,10 +14,13 @@ namespace SizedApparel
[HarmonyPatch(typeof(PawnGraphicSet), "CalculateHairMats")]
public static class CalculateHairMatsPatch
{
public static void Postfix()
{
}
}
public abstract class PubicHairDef : StyleItemDef
public class PubicHairDef : StyleItemDef
{
}

View File

@ -16,7 +16,7 @@ namespace SizedApparel
{
public string raceName = null;
public bool overrideDef = false;
public bool asHumanlike = true;
public bool asHuman = false;
public float drawMinAge = -1; //pawn's Biological age. -1 to ignore.
public AlienRaceSetting(string raceName)
@ -32,7 +32,7 @@ namespace SizedApparel
{
Scribe_Values.Look(ref raceName, "raceName", null);
Scribe_Values.Look(ref overrideDef, "overrideDef", false);
Scribe_Values.Look(ref asHumanlike, "asHumanlike", true);
Scribe_Values.Look(ref asHuman, "asHuman", false);
Scribe_Values.Look(ref drawMinAge, "drawMinAge", -1);
}
@ -43,10 +43,14 @@ namespace SizedApparel
public class SizedApparelSettings : ModSettings
{
public static bool Debug = false;
public static bool DetailLog = false;
public static bool autoClearCacheOnWriteSetting = true;
public static bool PreCacheOnLoad = true;
public static float PreCacheRandomFactor = 0.5f;
public static bool useBodyTexture = true;//for user who not use rimnudeworld
public static bool useGenderSpecificTexture = true;
@ -60,6 +64,23 @@ namespace SizedApparel
//Apply Target Pawn Category
public static bool ApplyHumanlikes = true; //Always true.
public static bool ApplyAnimals = true;
public static bool ApplyAnimalsPlayerFactionOnly = true; //TODO
public static bool ApplyMechanoid = true;
public static bool ApplyApparelPatchForMale = false; //only ApparelServerityWork.
public static bool ApplyColonists = true;
public static bool ApplySlaves = true;
public static bool ApplyPrisoner = true;
public static bool ApplyNeutralAndAlly = true;
public static bool ApplyHostile = false;
public static bool AnimationPatch = true;
//TODO: Standalone render bodyparts.
public static bool drawBodyParts = true;//for user who not use rimnudeworld
public static bool drawBreasts = true;
@ -70,6 +91,7 @@ namespace SizedApparel
public static bool drawAnus = true;
public static bool drawBelly = false;//TODO
public static bool drawUdder = false;//TODO
public static bool drawPubicHair = true;
public static bool hideBallOfFuta = false;
public static bool hidePenisOfMale = false;
public static bool matchBreastToSupportedApparelSize = true;//for avoiding breasts cliping
@ -77,7 +99,7 @@ namespace SizedApparel
public static bool useBodyPartsVariation = true;
public static bool showBodyPartsVariation = true;
public static bool autoJiggleBreasts = true;
public static bool breastsPhysics = false;
//RimNudeWorld
public static bool drawSizedApparelBreastsOnlyWorn = false;
@ -171,6 +193,13 @@ namespace SizedApparel
//force to use it. this is important thing.
//Scribe_Values.Look(ref useBreastSizeCapForApparels, "useBreastSizeCapForApparels", true);
//Apply Categories.
Scribe_Values.Look(ref ApplyAnimals, "ApplyAnimals", true);
Scribe_Values.Look(ref ApplyHumanlikes, "ApplyHumanlikes", true);
Scribe_Values.Look(ref ApplyMechanoid, "ApplyMechanoid", true);
Scribe_Values.Look(ref AnimationPatch, "AnimationPatch", true);
Scribe_Values.Look(ref useBodyTexture, "useBodyTexture", true);
Scribe_Values.Look(ref useGenderSpecificTexture, "useGenderSpecificTexture", true);
@ -189,6 +218,32 @@ namespace SizedApparel
{
alienRaceSettings = new List<AlienRaceSetting>();
}
SizedApparelMod.CheckAndLoadAlienRaces();
//Initialize Setting for missing Race
foreach (var raceName in SizedApparelMod.alienDefList)
{
AlienRaceSetting raceSetting = null;
foreach (var r in SizedApparelSettings.alienRaceSettings)
{
if (r.raceName == null)
continue;
if (raceName == r.raceName)
{
raceSetting = r;
break;
}
}
if (raceSetting == null)
{
raceSetting = new AlienRaceSetting(raceName);
SizedApparelSettings.alienRaceSettings.Add(raceSetting);
}
}
}
if (Scribe.mode == LoadSaveMode.ResolvingCrossRefs)
{
@ -218,6 +273,7 @@ namespace SizedApparel
Scribe_Values.Look(ref drawAnus, "drawAnus", true);
Scribe_Values.Look(ref drawUdder, "drawUdder", true);
Scribe_Values.Look(ref drawBelly, "drawBelly", true);
Scribe_Values.Look(ref drawPubicHair, "drawPubicHair", true);
//force to draw all size type
@ -241,6 +297,10 @@ namespace SizedApparel
//TODO: Humanlike Setting Per Race
//Scribe_Values.Look(ref alienRacesAllowHumanlikTextures, "alienRacesAllowHumanlikTextures");
//BreastsPhysics
Scribe_Values.Look(ref breastsPhysics, "breastsPhysics", false);
base.ExposeData();
}
@ -250,8 +310,9 @@ namespace SizedApparel
{
SizedApparelSettings settings;
private static Vector2 ScrollPos = Vector2.zero;
private static List<string> alienDefList = new List<string>(); // to load aliens and compare with modsetting
private static Vector2 ScrollPosL = Vector2.zero;
private static Vector2 ScrollPosR = Vector2.zero;
public static List<string> alienDefList = new List<string>(); // to load aliens and compare with modsetting
public override void WriteSettings()
{
@ -264,7 +325,7 @@ namespace SizedApparel
{
if(alienDefList == null)
alienDefList = new List<string>();
if (alienDefList.Count == 0)
if (true)//alienDefList.Count == 0
{
IEnumerable<ThingDef> HumanlikeRaces;
HumanlikeRaces = DefDatabase<ThingDef>.AllDefs.Where(b => b.race?.Humanlike == true);
@ -280,19 +341,27 @@ namespace SizedApparel
public static void ClearCache(bool clearPawnGraphicSet = true)
{
SizedApparelsDatabase.ClearAll();
if (Find.CurrentMap != null)
{
foreach (Pawn pawn in Find.CurrentMap.mapPawns.AllPawns)
{
if (pawn == null)
continue;
var comp = pawn.TryGetComp<ApparelRecorderComp>();
var comp = pawn.GetComp<ApparelRecorderComp>();
if (comp != null)
comp.SetDirty(clearPawnGraphicSet);
{
comp.UpdateRaceSettingData();
comp.SetDirty(clearPawnGraphicSet,true,true,true);
}
}
}
}
public SizedApparelMod(ModContentPack content) : base(content)
{
this.settings = GetSettings<SizedApparelSettings>();
@ -303,7 +372,7 @@ namespace SizedApparel
const float alienRaceSettingHeight = 120;
CheckAndLoadAlienRaces();
//CheckAndLoadAlienRaces();
Listing_Standard listingStandard = new Listing_Standard();
//Rect rect = new Rect(0f, 0f, inRect.width, 950);
//Rect rect = inRect.ExpandedBy(0.9f);
@ -313,8 +382,8 @@ namespace SizedApparel
//leftRect = leftRect.ContractedBy(10f);
rightRect = rightRect.ContractedBy(10f);
Rect scrollRect = new Rect(0, 0, leftRect.width - 30f, Math.Max(leftRect.height + (float)alienDefList.Count* alienRaceSettingHeight, 1f));
Widgets.BeginScrollView(leftRect, ref ScrollPos, scrollRect, true);
leftRect = new Rect(leftRect.x, leftRect.x, leftRect.width - 30f, leftRect.height + Math.Max((float)alienDefList.Count * alienRaceSettingHeight, 1f));
Widgets.BeginScrollView(leftRect, ref ScrollPosL, scrollRect, true);
leftRect = new Rect(leftRect.x, leftRect.y, leftRect.width - 30f, leftRect.height + Math.Max((float)alienDefList.Count * alienRaceSettingHeight, 1f) + 250f);
listingStandard.Begin(leftRect);
listingStandard.maxOneColumn = true;
@ -333,13 +402,21 @@ namespace SizedApparel
{
ClearCache();
}
if (listingStandard.ButtonTextLabeled("RandomPreCache", "15 sec ~ 2 min"))
{
SizedApparelsDatabase.RandomPreCacheForApparels();
SizedApparelsDatabase.RandomPreCacheForBodyParts();
}
}
listingStandard.Gap();
listingStandard.Gap(8);
listingStandard.GapLine(5f);
listingStandard.Gap();
listingStandard.GapLine();
/*
listingStandard.Label("Optimization",-1,"");
//listingStandard.CheckboxLabeled("Debug Log", ref SizedApparelSettings.Debug, "Debug logs.\nDefault: false");
@ -361,10 +438,8 @@ namespace SizedApparel
//}
listingStandard.Gap(8);
listingStandard.Label("Other Mod Compatibility");
listingStandard.Gap(8);
listingStandard.GapLine(5f);
listingStandard.CheckboxLabeled(" Forced compatibility of unsupported apparel", ref SizedApparelSettings.ForcedSupportApparel, "It may have clipping issue.\nDefault: false");
listingStandard.CheckboxLabeled(" Force ignore unsupported apparel", ref SizedApparelSettings.ForcedSupportApparel, "It may have clipping issue from unsupported parts.\nDefault: false");
/*
@ -403,9 +478,21 @@ namespace SizedApparel
}
else
{
//RimJobWorld is Actived
listingStandard.Label(" RimJobWorld is Actived ", -1, "");
if (SizedApparelPatch.MenstruationActive)
{
listingStandard.Label(" RJW Menstuation is Active ", -1, "");
}
else
{
listingStandard.Label(" RJW Menstuation is Not Active", -1, "");
}
}
listingStandard.GapLine(1);
listingStandard.Gap(12);
listingStandard.Label("AlienRace Compatibility (wip)", -1, "");
@ -446,26 +533,9 @@ namespace SizedApparel
listingStandard.Label(" AlienRace is not Actived ", -1, "");
}
//Rect outRect = new Rect(0f, 35f, rect.width, rect.height - 35f);
/*
const float alienSettingHeight = 80;
Rect outRect = listingStandard.GetRect(listingStandard.CurHeight);
outRect = new Rect(outRect.x, outRect.y, outRect.width, alienSettingHeight);
Rect viewRect = new Rect(0, 0, outRect.width - 16f, 100 );//alienDefList.Count * 30f
Widgets.BeginScrollView(outRect, ref ScrollPos, viewRect, true);
Widgets.Label(new Rect(0f, 0f, 30f, 10f), "hello");
Widgets.Label(new Rect(0f, 0f, 30f, 10f), "world");
*/
//Log.Message(alienDefList.Count.ToString());
//float h = alienDefList.Count <= 1 ? alienRaceSettingHeight : alienRaceSettingHeight * 1.8f;
//Rect rect = Race_ListingStandard.GetRect(h);
//rect.x = 0;
//rect.y = 0;
//Rect ScrollViewRect = new Rect(0, 0, rect.width - 16f, alienDefList.Count * alienRaceSettingHeight);
//Widgets.BeginScrollView(rect, ref ScrollPos, ScrollViewRect, true);
if (alienDefList.NullOrEmpty())
CheckAndLoadAlienRaces();
float h = alienDefList.Count * alienRaceSettingHeight;
Listing_Standard Race_ListingStandard = listingStandard.BeginSection(h);
foreach (var raceName in alienDefList)
@ -488,20 +558,22 @@ namespace SizedApparel
raceSetting = new AlienRaceSetting(raceName);
SizedApparelSettings.alienRaceSettings.Add(raceSetting);
}
Race_ListingStandard.CheckboxLabeled("If Unsupported, Use Humanlike", ref raceSetting.asHumanlike, "This Race will use Humanlike if it doesn't have own textures. useful for race that Unsupported but simillar to human");
}
if(raceName != "Human")
Race_ListingStandard.CheckboxLabeled("If Unsupported, As Human race", ref raceSetting.asHuman, "This Race will use Human race if it doesn't have own textures. useful for race that Unsupported but simillar to human");
Race_ListingStandard.Label((raceSetting.drawMinAge <= 100 ? "" : "[overdrive]") + "SA BodyPart Draw Min Age: " + raceSetting.drawMinAge.ToString(), -1, "Lower than this age will not use Sized Apparel. Useful for BnC. -1 for disable");
raceSetting.drawMinAge = Race_ListingStandard.Slider(raceSetting.drawMinAge, raceSetting.drawMinAge <= 100 ? -1: 100, raceSetting.drawMinAge >= 100 ? 1000 : 100);
raceSetting.drawMinAge = Mathf.Round(Race_ListingStandard.Slider(raceSetting.drawMinAge, raceSetting.drawMinAge <= 100 ? -1: 100, raceSetting.drawMinAge >= 100 ? 1000 : 100));
Race_ListingStandard.Gap();
}
listingStandard.EndSection(Race_ListingStandard);
Widgets.EndScrollView();
//listingStandard.Gap(alienSettingHeight);
listingStandard.Gap(8);
listingStandard.GapLine(4f);
listingStandard.Gap(16);
listingStandard.Gap(8);
listingStandard.Gap(8);
listingStandard.Label("RimNudeWorld Compatibility (WIP)", -1, "");
//listingStandard.CheckboxLabeled(" Don't Replace Body Texture On Nude", ref SizedApparelSettings.DontReplaceBodyTextureOnNude, "Only Replace BodyTexture On Not Nude. Trigers are Torso And Chests.\nDefault: False");
@ -520,6 +592,7 @@ namespace SizedApparel
SizedApparelSettings.drawVagina = false;
SizedApparelSettings.drawAnus = false;
SizedApparelSettings.drawBelly = false;
SizedApparelSettings.drawPubicHair = false;
}
@ -548,40 +621,79 @@ namespace SizedApparel
SizedApparelSettings.drawVagina = true;
SizedApparelSettings.drawAnus = true;
SizedApparelSettings.drawBelly = true;
SizedApparelSettings.drawPubicHair = true;
}
}
listingStandard.Gap(8);
listingStandard.GapLine(5f);
if (SizedApparelPatch.RimworldAnimationActive)
{
listingStandard.Label("RimworldAnimation (rjwAnimation) is Actived ", -1, "");
listingStandard.CheckboxLabeled(" Animated SizedApparel BodyParts (wip)", ref SizedApparelSettings.AnimationPatch, "this option may animated breasts jiggle during animation.\n but not copatable with rimnudeworld.\ndefault: true");
}
else
{
listingStandard.Label("RimworldAnimation (rjwAnimation) is not Actived ", -1, "");
}
listingStandard.End();
////RightRect
scrollRect = new Rect(0, 0, rightRect.width - 30f, Math.Max(rightRect.height + 100f, 1f));
Widgets.BeginScrollView(rightRect, ref ScrollPosR, scrollRect, true);
rightRect = new Rect(0, 0, rightRect.width - 30f, rightRect.height + 100f + 250f);
listingStandard.maxOneColumn = true;
listingStandard.Begin(rightRect);
listingStandard.Label("SizedApparel System Apply (apparel and body parts)");
listingStandard.CheckboxLabeled(" Apply Humanlikes", ref SizedApparelSettings.ApplyHumanlikes, "Try to Apply SizedApparel to Humanlikes if The textures are valid.\nDefault: true");
listingStandard.CheckboxLabeled(" Apply Animals", ref SizedApparelSettings.ApplyAnimals, "Try to Apply SizedApparel to Animals if The textures are valid.\nDefault: false");
//TODO
/*
if (SizedApparelSettings.ApplyAnimals)
listingStandard.CheckboxLabeled(" Apply Player Faction Animals Only", ref SizedApparelSettings.ApplyAnimalsPlayerFactionOnly, "Default: true");
*/
listingStandard.CheckboxLabeled(" Apply Mechanoid", ref SizedApparelSettings.ApplyMechanoid, "Try to Apply SizedApparel to Mech if The textures are valid.\nDefault: true");
listingStandard.GapLine(5f);
listingStandard.Label("Apparel Patch (Breasts Sized Apparel)");
listingStandard.CheckboxLabeled(" Apply Apparel Patch for Male", ref SizedApparelSettings.ApplyApparelPatchForMale, "It Skips breasts size test for male. Do you need man with breasts...? may be not.\nDefault: false");
listingStandard.GapLine(5f);
listingStandard.Label("If you changed the option, try change apparels or reload save", -1);
listingStandard.Label("Body Part Render Option (wip)",-1,"standalone BodyPart Render System from this mod. It's for user who don't use RimNudeWorld\nIf you use RimNudeWorld, you should turn off this.");
listingStandard.CheckboxLabeled("Use Gender Specific Textures.", ref SizedApparelSettings.useGenderSpecificTexture,"Use Gender Specific texture for body and apparel if it's valid. \nDefault: true");
listingStandard.GapLine(1);
listingStandard.GapLine(5);
listingStandard.CheckboxLabeled("Draw Body Parts", ref SizedApparelSettings.drawBodyParts, "Draw Breasts..etc. when the pawn is wearing supported apparels. \nDefault: true");
if (SizedApparelSettings.drawBodyParts)
{
listingStandard.CheckboxLabeled(" Use (Sized Apparel) Body Texture", ref SizedApparelSettings.useBodyTexture, "change pawn's body texture when the pawn is wearing supported apparels. Recommanded\nDefault: true");
listingStandard.CheckboxLabeled(" Use (Sized Apparel) Base Body Texture", ref SizedApparelSettings.useBodyTexture, "change pawn's body texture when the pawn is wearing supported apparels. Recommanded\nDefault: true");
//listingStandard.CheckboxLabeled(" Draw Muscle Overlay (wip)", ref SizedApparelSettings.drawMuscleOverlay, "\nDisable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Muscle Overlay (wip)", ref SizedApparelSettings.drawMuscleOverlay, "\nDisable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Breasts", ref SizedApparelSettings.drawBreasts, "this option is why this mod exist.\nDefault: true");
listingStandard.CheckboxLabeled(" Draw Breasts", ref SizedApparelSettings.drawBreasts, "this option is why this mod exist.\nDefault: true");
if (SizedApparelSettings.drawBreasts)
{
listingStandard.CheckboxLabeled(" Match Breasts size to supported apparels",ref SizedApparelSettings.matchBreastToSupportedApparelSize, "to avoid breasts clipping(when breasts are bigger), you need this option.\nDefault: true");
listingStandard.CheckboxLabeled(" draw Breasts on worn pawn only (RimNudeWorld)", ref SizedApparelSettings.drawSizedApparelBreastsOnlyWorn, "when the pawn is nude, the breasts graphic for sized apparel will be hidden. \nDefault: false" );
listingStandard.CheckboxLabeled(" Match Breasts size to supported apparels",ref SizedApparelSettings.matchBreastToSupportedApparelSize, "to avoid breasts clipping(when breasts are bigger), you need this option.\nDefault: true");
listingStandard.CheckboxLabeled(" draw Breasts on worn pawn only (RimNudeWorld)", ref SizedApparelSettings.drawSizedApparelBreastsOnlyWorn, "when the pawn is nude, the breasts graphic for sized apparel will be hidden. \nDefault: false" );
listingStandard.CheckboxLabeled(" (Wip) Breasts Physics", ref SizedApparelSettings.breastsPhysics, "Breasts can be jiggled (for now. it works when nude only). It may be heavy for performance. \n Won't work with RimNudeWorld Breasts Rendering. \ndefault = false");
}
listingStandard.CheckboxLabeled(" Draw Penis", ref SizedApparelSettings.drawPenis,"Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Vagina", ref SizedApparelSettings.drawVagina, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Anus", ref SizedApparelSettings.drawAnus, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Belly Buldge", ref SizedApparelSettings.drawBelly, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Penis", ref SizedApparelSettings.drawPenis,"Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Vagina", ref SizedApparelSettings.drawVagina, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Anus", ref SizedApparelSettings.drawAnus, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Draw Belly Buldge", ref SizedApparelSettings.drawBelly, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Hide Balls of Futa", ref SizedApparelSettings.hideBallOfFuta, "Hide Balls from penis of Futa.\nDefault: false");
listingStandard.CheckboxLabeled(" Hide Penis of Man(Not Work yet)", ref SizedApparelSettings.hidePenisOfMale, "this option is for someone who really hate to see male's dick around.\nDefault: false");
listingStandard.CheckboxLabeled(" Draw Pubic Hair", ref SizedApparelSettings.drawPubicHair, "Disable this option when you use RimNudeWorld");
listingStandard.CheckboxLabeled(" Hide Balls of Futa", ref SizedApparelSettings.hideBallOfFuta, "Hide Balls from penis of Futa.\nDefault: false");
listingStandard.CheckboxLabeled(" Hide Penis of Man(Not Work yet)", ref SizedApparelSettings.hidePenisOfMale, "this option is for someone who really hate to see male's dick around.\nDefault: false");
//listingStandard.Gap();
//listingStandard.CheckboxLabeled(" Use Body Part Variation", ref SizedApparelSettings.useBodyPartsVariation, "Use graphic variation such as inverted nipple.\nDefault: true");
@ -614,6 +726,7 @@ namespace SizedApparel
listingStandard.CheckboxLabeled(" use Colossal", ref SizedApparelSettings.useColossal, "use Colossal breasts Sized Apparel.\nDefault: true");
listingStandard.CheckboxLabeled(" use Titanic", ref SizedApparelSettings.useTitanic, "use Titanic breasts Sized Apparel.\nDefault: true");
*/
Widgets.EndScrollView();
listingStandard.End();
//listingStandard.EndScrollView(ref rect);

View File

@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
using Verse.Sound;
using HarmonyLib;
using UnityEngine;
using rjw;
@ -13,18 +14,37 @@ using System.Reflection.Emit;
namespace SizedApparel
{
//TODO...?
//[HarmonyPatch(typeof(Dialog_StylingStation), "DrawTabs")]
[HarmonyPatch(typeof(Dialog_StylingStation), "DrawTabs")]
public class SizedApparelStyleStationDrawTabsPatch
{
public static void Postfix(Rect rect, ref Vector2 ___hairScrollPosition, Dialog_StylingStation __instance, List<TabRecord> ___tabs, Dialog_StylingStation.StylingTab ___curTab, float ___viewRectHeight, List<StyleItemDef> ___tmpStyleItems, bool ___devEditMode, Pawn ___pawn)
public static void Postfix(Rect rect, ref Vector2 ___hairScrollPosition, Dialog_StylingStation __instance, List<TabRecord> ___tabs, Dialog_StylingStation.StylingTab ___curTab, float ___viewRectHeight, ref List<StyleItemDef> ___tmpStyleItems, bool ___devEditMode, Pawn ___pawn, Color ___desiredHairColor)
{
if (!SizedApparelSettings.drawPubicHair)
return;
//Widgets.DrawMenuSection(rect);
//TabDrawer.DrawTabs<TabRecord>(rect, ___tabs, 200f);
//rect = rect.ContractedBy(18f);
switch (___curTab)
{
case (Dialog_StylingStation.StylingTab)24:
//Draw PubicHair Tab Code here!
//rect.yMax -= ___colorsHeight;
DrawStylingTypePubicHair(ref __instance, ref ___viewRectHeight, ref ___tmpStyleItems, ___devEditMode, ___pawn, ___desiredHairColor, rect, ref ___hairScrollPosition, delegate (Rect r, PubicHairDef h)
{
GUI.color = ___desiredHairColor;
Widgets.DefIcon(r, h, null, 1.25f, null, false, null);
//Widgets.DrawTextureFitted(r, h.Icon, 1.25f, null);
GUI.color = Color.white;
}, delegate (PubicHairDef h)
{
___pawn.GetComp<ApparelRecorderComp>().pubicHairDef = h;
//___pawn.story.hairDef = h;
}, (StyleItemDef h) => ___pawn.GetComp<ApparelRecorderComp>().pubicHairDef == h, (StyleItemDef h) => ___pawn.GetComp<ApparelRecorderComp>().initialPubicHairDef == h, null, false);
return;
default:
@ -32,13 +52,162 @@ namespace SizedApparel
}
}
static void DrawStylingTypePubicHair(Dialog_StylingStation dialog_StylingStation, Rect rect)
//Some Copy Code from Rimnudeworld
//maybe Some Var has to be ref
static void DrawStylingTypePubicHair(ref Dialog_StylingStation dialog_StylingStation, ref float viewRectHeight, ref List<StyleItemDef> tmpStyleItems, bool devEditMode, Pawn pawn, Color desiredHairColor, Rect rect, ref Vector2 scrollPosition, Action<Rect, PubicHairDef> drawAction, Action<PubicHairDef> selectAction, Func<StyleItemDef, bool> hasStyleItem, Func<StyleItemDef, bool> hadStyleItem, Func<StyleItemDef, bool> extraValidator = null, bool doColors = false)
{
//Color desiredHairColor = AccessTools.FieldRefAccess<Dialog_StylingStation, Color>(dialog_StylingStation, "desiredHairColor");
int total_pubes_count = 0;
total_pubes_count = DefDatabase<PubicHairDef>.AllDefs.Count();
//need child patch?
if (total_pubes_count <= 0)
{
Widgets.NoneLabelCenteredVertically(rect, "(" + "NoneUsableForPawn".Translate(pawn.Named("PAWN")) + ")");
return;
}
ApparelRecorderComp comp = pawn.GetComp<ApparelRecorderComp>();
Rect viewRect = new Rect(rect.x, rect.y, rect.width - 16f, viewRectHeight);
int num = Mathf.FloorToInt(viewRect.width / 60f) - 1;
float num2 = (viewRect.width - (float)num * 60f - (float)(num - 1) * 10f) / 2f;
int num3 = 0;
int num4 = 0;
int num5 = 0;
tmpStyleItems.Clear();
/*
tmpStyleItems.AddRange(from x in DefDatabase<PubicHairDef>.AllDefs
where (devEditMode || PawnStyleItemChooser.WantsToUseStyle(pawn, x, null) || hadStyleItem(x)) && (extraValidator == null || extraValidator(x))
select x);*/
tmpStyleItems.AddRange(DefDatabase<PubicHairDef>.AllDefs);// just add All Pubic Hair def.
tmpStyleItems.SortBy((StyleItemDef x) => -PawnStyleItemChooser.StyleItemChoiceLikelihoodFor(x, pawn));
if (tmpStyleItems.NullOrEmpty<StyleItemDef>())
{
Widgets.NoneLabelCenteredVertically(rect, "(" + "NoneUsableForPawn".Translate(pawn.Named("PAWN")) + ")");
}
else
{
Widgets.BeginScrollView(rect, ref scrollPosition, viewRect, true);
foreach (StyleItemDef styleItemDef in tmpStyleItems)
{
if (num5 >= num - 1)
{
num5 = 0;
num4++;
}
else if (num3 > 0)
{
num5++;
}
Rect rect2 = new Rect(rect.x + num2 + (float)num5 * 60f + (float)num5 * 10f, rect.y + (float)num4 * 60f + (float)num4 * 10f, 60f, 60f);
Widgets.DrawHighlight(rect2);
if (Mouse.IsOver(rect2))
{
Widgets.DrawHighlight(rect2);
TooltipHandler.TipRegion(rect2, styleItemDef.LabelCap);
}
if (drawAction != null)
{
drawAction(rect2, styleItemDef as PubicHairDef);
}
if (hasStyleItem(styleItemDef))
{
Widgets.DrawBox(rect2, 2, null);
}
if (Widgets.ButtonInvisible(rect2, true))
{
if (selectAction != null)
{
selectAction(styleItemDef as PubicHairDef);
}
SoundDefOf.Tick_High.PlayOneShotOnCamera(null);
pawn.Drawer.renderer.graphics.SetAllGraphicsDirty();
PortraitsCache.SetDirty(pawn);
}
num3++;
}
if (Event.current.type == EventType.Layout)
{
viewRectHeight = (float)(num4 + 1) * 60f + (float)num4 * 10f + 10f;
}
Widgets.EndScrollView();
}
if (doColors)
{
//dialog_StylingStation.DrawHairColors(new Rect(rect.x, rect.yMax + 10f, rect.width, dialog_StylingStation.colorsHeight));
//Copy From RimnudeWorld
/*
Rect newrect = new Rect(rect.x, rect.yMax - 10f, rect.width, colorsHeight);
Color _desiredHairColor = desiredHairColor;
float numC = newrect.y;
float height;
Widgets.ColorSelector(new Rect(newrect.x, numC, newrect.width, 92f), ref _desiredHairColor, AllHairColors, null, 22, 2);
if (_desiredHairColor != desiredHairColor)
{
var desiredHairColor_ = dialog_StylingStation.GetType().GetField("desiredHairColor", System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.Instance);
desiredHairColor_.SetValue(dialog_StylingStation, _desiredHairColor);
}
numC += 60f;
if (desiredHairColor != pawn.story.hairColor && desiredHairColor != pawn.style.nextHairColor)
{
Widgets.ThingIcon(new Rect(newrect.x, numC, Text.LineHeight, Text.LineHeight), ThingDefOf.Dye, null, null, 1.1f, null);
string text = "Required".Translate() + ": 1 " + ThingDefOf.Dye.label;
float x = Text.CalcSize(text).x;
Widgets.Label(new Rect(newrect.x + Text.LineHeight + 4f, numC, x, Text.LineHeight), text);
Rect rect2 = new Rect(newrect.x, numC, x + Text.LineHeight + 8f, Text.LineHeight);
if (Mouse.IsOver(rect2))
{
Widgets.DrawHighlight(rect2);
TooltipHandler.TipRegionByKey(rect2, "TooltipDyeExplanation");
}
numC += Text.LineHeight;
if (pawn.Map.resourceCounter.GetCount(ThingDefOf.Dye) < 1)
{
rect2 = new Rect(newrect.x, numC, newrect.width, Text.LineHeight);
Color color = GUI.color;
GUI.color = ColorLibrary.RedReadable;
Widgets.Label(rect2, "NotEnoughDye".Translate() + " " + "NotEnoughDyeWillRecolorHair".Translate());
GUI.color = color;
numC += rect2.height;
}
}*/
}
}
private static List<Color> allHairColors;
private static List<Color> AllHairColors
{
get
{
if (allHairColors == null)
{
allHairColors = (from ic in DefDatabase<ColorDef>.AllDefsListForReading
select ic.color).ToList<Color>();
allHairColors.SortByColor((Color x) => x);
}
return allHairColors;
}
}
static void AddPubicHairTab(Dialog_StylingStation stylingStation, List<TabRecord> tabs)
{
if (!SizedApparelSettings.drawPubicHair)
return;
var curTabField = AccessTools.Field(typeof(Dialog_StylingStation), "curTab");
tabs.Add(new TabRecord("PubicHair".Translate().CapitalizeFirst(), delegate ()
{
@ -98,5 +267,32 @@ namespace SizedApparel
yield break;
}
}
[HarmonyPatch(typeof(Dialog_StylingStation), "Reset")]
public class SizedApparelStyleStationResetPatch
{
public static void Prefix(Pawn ___pawn)
{
ApparelRecorderComp comp = ___pawn.GetComp<ApparelRecorderComp>();
//this.pawn.story.hairDef = this.initialHairDef;
comp.pubicHairDef = comp.initialPubicHairDef;
comp.initialPubicHairDef = null;
}
}
//Patching Constructors
[HarmonyPatch(typeof(Dialog_StylingStation), MethodType.Constructor, new Type[] { typeof(Pawn), typeof(Thing) })]
public class SizedApparelDialogStylingStationPatch
{
public static void Postfix(Pawn pawn)
{
var comp = pawn.GetComp<ApparelRecorderComp>();
if (comp == null)
return;
comp.initialPubicHairDef = comp.pubicHairDef;
}
}
}

View File

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace SizedApparel
{
//Consider Graphic and Graphic_Multi(Graphic with Facing such as south)
public class SizedApparelTexturePointDef : Def
{
//Path must be texture file name with path
//Path example: "Things/Pawn/Humanlike/Bodies/Naked_Female_BaseBody"
//Facing Text such as "_south" must not be included.
//Use "/" instead of "\"
public string Path;
public List<BodyPartPoint> SouthBodyPartPoints = new List<BodyPartPoint>();
public List<BodyPartPoint> NorthBodyPartPoints = new List<BodyPartPoint>();
public List<BodyPartPoint> EastBodyPartPoints = new List<BodyPartPoint>();
//can be null. then use EastBodyPartPoints
public List<BodyPartPoint> WestBodyPartPoints = new List<BodyPartPoint>();
}
}

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SizedApparel</RootNamespace>
<AssemblyName>SizedApparelforRJW</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
@ -18,7 +18,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\1.3\Assemblies\</OutputPath>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -28,7 +28,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\1.3\Assemblies\</OutputPath>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -37,23 +37,31 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll</HintPath>
<HintPath>..\..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="HugsLib">
<HintPath>..\..\..\..\..\..\workshop\content\294100\818773962\v1.1\Assemblies\HugsLib.dll</HintPath>
<HintPath>..\..\..\..\..\..\..\workshop\content\294100\818773962\v1.3\Assemblies\HugsLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RimNudeWorld">
<HintPath>..\..\..\rimnude-unofficial\1.3 Assembly\Assemblies\RimNudeWorld.dll</HintPath>
<HintPath>..\..\..\..\rimnude-unofficial\Assembly Folders\1.3 Assembly\Assemblies\RimNudeWorld.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Rimworld-Animations">
<HintPath>..\..\..\..\rimworld-animations\1.3\Assemblies\Rimworld-Animations.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJW">
<HintPath>..\..\..\RJW\1.3\Assemblies\RJW.dll</HintPath>
<HintPath>..\..\..\..\rjw\1.3\Assemblies\RJW.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJW_Menstruation">
<HintPath>..\..\..\..\rjw_menstruation\1.3\Assemblies\RJW_Menstruation.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
@ -62,16 +70,16 @@
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.CoreModule">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.IMGUIModule">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.TextRenderingModule">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
@ -79,23 +87,29 @@
<Compile Include="AlienRaceSupport.cs" />
<Compile Include="Graphic_BodyParts.cs" />
<Compile Include="Graphic_SizedApparel.cs" />
<Compile Include="Patch-Animation.cs" />
<Compile Include="Patch-Menstruation.cs" />
<Compile Include="Patch-StatueOfColonist.cs" />
<Compile Include="SizedAppareIdeoPatch.cs" />
<Compile Include="SizedApparelApparelBuilder.cs" />
<Compile Include="SizedApparelBodyPart.cs" />
<Compile Include="SizedApparelBodyPartDef.cs" />
<Compile Include="SizedApparelBodyPartDetail.cs" />
<Compile Include="SizedApparelBodyPartEditor.cs" />
<Compile Include="SizedApparelComp.cs" />
<Compile Include="HarmonyPatches.cs" />
<Compile Include="SizedApparelDubsApparelPatch.cs" />
<Compile Include="SizedApparelDef.cs" />
<Compile Include="Patch-DubsApparelPatch.cs" />
<Compile Include="SizedApparelMain.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SizedApparelPoseSet.cs" />
<Compile Include="SizedApparelPubicHair.cs" />
<Compile Include="SizedApparelRJWPatch.cs" />
<Compile Include="SizedApparelRNWPatch.cs" />
<Compile Include="Patch-RimJobWorld.cs" />
<Compile Include="Patch-RimNudeWorld.cs" />
<Compile Include="SizedApparelsDatabase.cs" />
<Compile Include="SizedApparelSettingcs.cs" />
<Compile Include="SizedApparelStyleStationPatch.cs" />
<Compile Include="SizedApparelTexturePointDef.cs" />
<Compile Include="SizedApparelUtility.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View File

@ -11,6 +11,27 @@ using rjw;
namespace SizedApparel
{
public class BodyTypeAndPath
{
public string BodyType;
public string Path;
}
public class ApparelData
{
public string WornPath;
public List<BodyTypeAndPath> Data;
}
public class PreDefinedApparelDate : Def
{
public string HediffName;
public bool IsBreasts = false;
public List<BodyTypeAndPath> Data;
}
public class PreDefinedBodyPartGraphicDate : Def
{
}
public static class SizedApparelsDatabase
{
@ -20,6 +41,12 @@ namespace SizedApparel
}
public static void LoadPreDefinedData()
{
}
public struct SizedApparelDatabaseKey
{
@ -107,18 +134,23 @@ namespace SizedApparel
public bool isUnsupportedHumanlikePath;
public bool isCustomPose;
public string hediffName;
public Dictionary<string, BodyPartPoint> points;
public string bodyType; // useful for bodypart Graphic (body addons).
public string raceName; // for check is Human or Alien or Alien as Human.
public SizedApparelTexturePointDef points;
public PathAndSize(string path, int index, bool unsupportedHumanlike = false, bool customPose = false, string hediff = null ,Dictionary<string, BodyPartPoint> pointsInput = null)
public PathAndSize(string path, int index, bool unsupportedHumanlike = false, bool customPose = false, string hediff = null, string bodytype = null, string raceName = null, SizedApparelTexturePointDef pointsInput = null)
{
this.pathWithSizeIndex = path;
this.size = index;
this.isUnsupportedHumanlikePath = unsupportedHumanlike;
this.isCustomPose = customPose;
this.hediffName = hediff;
this.bodyType = bodytype;
this.points = pointsInput;
this.raceName = raceName;
}
}
private static Dictionary<Pawn, ApparelRecorderComp> ApparelRecordersCache = new Dictionary<Pawn, ApparelRecorderComp>();
private static Dictionary<BodyGraphicKey, Graphic> SizedApparelBodyGraphic = new Dictionary<BodyGraphicKey, Graphic>(); // TODO
private static Dictionary<SizedApparelDatabaseKey, PathAndSize> SupportedApparelResultPath = new Dictionary<SizedApparelDatabaseKey, PathAndSize>(new SizedApparelDatabaseKeyComparer());
@ -128,6 +160,14 @@ namespace SizedApparel
//AlienRace AllowHumanlike. Need to Restart or Clear cache to change options
public static ApparelRecorderComp GetApparelCompFast(Pawn pawn)
{
if (ApparelRecordersCache.ContainsKey(pawn))
return ApparelRecordersCache[pawn];
ApparelRecorderComp comp = pawn.GetComp<ApparelRecorderComp>(); // comp can be null
ApparelRecordersCache.Add(pawn, comp);
return comp;
}
public static Dictionary<string, bool> AlienRaceUseHumanlike = new Dictionary<string, bool>();
private static void ResetAlienRaceUseHumanlike()
@ -142,7 +182,8 @@ namespace SizedApparel
AlienRaceUseHumanlike.Add(raceDef.defName, true);
}
}
[Obsolete]
public static bool GetAlienRaceUseHumanlike(string raceDef)
{
if (AlienRaceUseHumanlike.NullOrEmpty())
@ -255,7 +296,7 @@ namespace SizedApparel
//Try Find Different Target Size
if (flag == true)
{
result = new PathAndSize(graphic.path, indexOut, false, customPose, hediffResult);
result = new PathAndSize(graphic.path, indexOut, false, customPose, hediffResult, key.bodyTypeName, key.raceName);
SupportedApparelResultPath.SetOrAdd(key, result);
SupportedApparelOriginalPath.SetOrAdd(result.pathWithSizeIndex, key.pathWithoutSizeIndex);
}
@ -270,27 +311,43 @@ namespace SizedApparel
public static PathAndSize GetSupportedBodyPartPath(BodyPartDatabaseKey key, bool isBreast, string folderName, string defaultHediffName)
{
PathAndSize result;
if (SupportedBodyPartResultPath.ContainsKey(key))
return SupportedBodyPartResultPath.TryGetValue(key);
int currentSize = -1;
string hediffResult;
Graphic graphic = null;
//Find Points from result's path
//TODO: Build SizedApparel DataBase separate?
if (key.customPose != null)
{
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, key.bodyTypeName, key.hediffName, isBreast, key.targetSize, folderName+"/CustomPose/"+key.customPose, defaultHediffName, out currentSize, out hediffResult, key.isHorny, null, key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, false, true, hediffResult);
result = new PathAndSize(graphic.path, currentSize, false, true, hediffResult, key.bodyTypeName, key.raceName);
SupportedBodyPartResultPath.SetOrAdd(key, result);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
return result;
}
if (key.bodyTypeName != null)
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, null, key.hediffName, isBreast, key.targetSize, folderName + "/CustomPose/" + key.customPose, defaultHediffName, out currentSize, out hediffResult, key.isHorny, null, key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, false, true, hediffResult);
result = new PathAndSize(graphic.path, currentSize, false, true, hediffResult , null, key.raceName);
SupportedBodyPartResultPath.SetOrAdd(key, result);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
return result;
}
@ -298,8 +355,14 @@ namespace SizedApparel
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, key.bodyTypeName, key.hediffName, isBreast, key.targetSize, folderName, defaultHediffName, out currentSize, out hediffResult, key.isHorny, null, key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult , key.bodyTypeName, key.raceName);
SupportedBodyPartResultPath.SetOrAdd(key, result);
return result;
}
@ -307,7 +370,12 @@ namespace SizedApparel
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, null, key.hediffName, isBreast, key.targetSize, folderName, defaultHediffName, out currentSize, out hediffResult, key.isHorny, null, key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult, null, key.raceName);
SupportedBodyPartResultPath.SetOrAdd(key, result);
return result;
}
@ -315,8 +383,9 @@ namespace SizedApparel
//SizedApparelMod.CheckAndLoadAlienRaces();
//HumanLike Search
var raceSetting = SizedApparelSettings.alienRaceSettings.FirstOrDefault((AlienRaceSetting s) => s.raceName == key.raceName);
if (raceSetting !=null && !raceSetting.asHumanlike) //old: !SizedApparelSettings.UnsupportedRaceToUseHumanlike
AlienRaceSetting raceSetting;
raceSetting = SizedApparelSettings.alienRaceSettings.FirstOrDefault((AlienRaceSetting s) => s.raceName == key.raceName);
if (raceSetting !=null && key.raceName == "Human" || !raceSetting.asHuman) //old: !SizedApparelSettings.UnsupportedRaceToUseHumanlike
{
//Cannot find Any result
result = new PathAndSize(null, -1);
@ -326,36 +395,56 @@ namespace SizedApparel
if (key.customPose != null)
{
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, key.bodyTypeName, key.hediffName, isBreast, key.targetSize, folderName + "/CustomPose/" + key.customPose, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Humanlike", key.variation, key.gender);
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, key.bodyTypeName, key.hediffName, isBreast, key.targetSize, folderName + "/CustomPose/" + key.customPose, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Human", key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, true, true, hediffResult);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
result = new PathAndSize(graphic.path, currentSize, true, true, hediffResult, key.bodyTypeName);
SupportedBodyPartResultPath.SetOrAdd(key, result);
return result;
}
if (key.bodyTypeName != null)
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, null, key.hediffName, isBreast, key.targetSize, folderName + "/CustomPose/" + key.customPose, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Humanlike", key.variation, key.gender);
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, null, key.hediffName, isBreast, key.targetSize, folderName + "/CustomPose/" + key.customPose, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Human", key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, true, true, hediffResult);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
result = new PathAndSize(graphic.path, currentSize, true, true, hediffResult, null);
SupportedBodyPartResultPath.SetOrAdd(key, result);
return result;
}
}
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, key.bodyTypeName, key.hediffName, isBreast, key.targetSize, folderName, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Humanlike", key.variation, key.gender);
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, key.bodyTypeName, key.hediffName, isBreast, key.targetSize, folderName, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Human", key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult, key.bodyTypeName, "Human");
SupportedBodyPartResultPath.SetOrAdd(key, result);
return result;
}
if (key.bodyTypeName != null)
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, null, key.hediffName, isBreast, key.targetSize, folderName, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Humanlike", key.variation, key.gender);
graphic = SizedApparelUtility.GetBodyPartGraphic(key.raceName, null, key.hediffName, isBreast, key.targetSize, folderName, defaultHediffName, out currentSize, out hediffResult, key.isHorny, "Human", key.variation, key.gender);
if (graphic != null)
{
result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult);
//SizedApparelTexturePointDef PointsDef = DefDatabase<SizedApparelTexturePointDef>.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path);
//if (SizedApparelSettings.Debug && PointsDef != null)
//{
// Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName);
//}
result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult, null, "Human");
SupportedBodyPartResultPath.SetOrAdd(key, result);
return result;
}
@ -368,5 +457,95 @@ namespace SizedApparel
return result;
}
public static void RandomPreCacheForBodyParts()
{
//variationDef = DefDatabase<SizedApparelBodyPartVariationDef>.AllDefsListForReading;
BodyPartDatabaseKey key;
for (int i = 0; i<11; i++)
{
key = new BodyPartDatabaseKey("Human", "Female", "Breasts", "Breasts", Gender.Female, i);
GetSupportedBodyPartPath(key, true, "Breasts", "Breasts");
key = new BodyPartDatabaseKey("Human", "Thin", "Breasts", "Breasts", Gender.Female, i);
GetSupportedBodyPartPath(key, true, "Breasts", "Breasts");
}
for (int i = 0; i < 6; i++)
{
key = new BodyPartDatabaseKey("Human", "Female", "Vagina", "Vagina", Gender.Female, i);
GetSupportedBodyPartPath(key, false, "Vagina", "Vagina");
key = new BodyPartDatabaseKey("Human", "Thin", "Vagina", "Vagina", Gender.Female, i);
GetSupportedBodyPartPath(key, false, "Vagina", "Vagina");
}
for (int i = 0; i < 6; i++)
{
key = new BodyPartDatabaseKey("Human", "Female", "Anus", "Anus", Gender.Female, i);
GetSupportedBodyPartPath(key, false, "Anus", "Anus");
key = new BodyPartDatabaseKey("Human", "Thin", "Anus", "Anus", Gender.Female, i);
GetSupportedBodyPartPath(key, false, "Anus", "Anus");
key = new BodyPartDatabaseKey("Human", "Male", "Anus", "Anus", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Anus", "Anus");
key = new BodyPartDatabaseKey("Human", "Thin", "Anus", "Anus", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Anus", "Anus");
}
for (int i = 0; i < 6; i++)
{
key = new BodyPartDatabaseKey("Human", "Male", "Penis", "Penis", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Male", "Penis", "Penis/Balls", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Thin", "Penis", "Penis", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Thin", "Penis", "Penis/Balls", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Fat", "Penis", "Penis", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Fat", "Penis", "Penis/Balls", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Hulk", "Penis", "Penis", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
key = new BodyPartDatabaseKey("Human", "Hulk", "Penis", "Penis/Balls", Gender.Male, i);
GetSupportedBodyPartPath(key, false, "Penis", "Penis");
}
}
public static void RandomPreCacheForApparels()
{
//random precache should be useful. so it target female and thin body only.
//don't target male because the male doesn't need breasts textures usually.
List<string> bodyTypes = new List<string>();
bodyTypes.Add("Female");
bodyTypes.Add("Thin");
// DefDatabase<BodyTypeDef>.AllDefsListForReading
foreach (ThingDef thingDef in DefDatabase<ThingDef>.AllDefsListForReading)
{
if (thingDef.IsApparel && !thingDef.apparel.wornGraphicPath.NullOrEmpty())
{
for(int i = 0; i<11; i++)
{
var key = new SizedApparelDatabaseKey(thingDef.apparel.wornGraphicPath, "Human", "Female", Gender.Female, "Breasts", i);
GetSupportedApparelSizedPath(key);
key = new SizedApparelDatabaseKey(thingDef.apparel.wornGraphicPath, "Human", "Thin", Gender.Female, "Breasts", i);
GetSupportedApparelSizedPath(key);
//need Humanlike Cache?
}
}
}
}
}
}

View File

@ -1,4 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>AOC</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Alien_Bori</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Alien_Miho</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Rabbie</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Ratkin</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Ratkin_Su</defName>
<bodies>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Alien_SP</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -0,0 +1,717 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.BodyDef>
<defName>Human</defName>
<bodies>
<li>
<bodyType>Female</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<!-- "isBreasts" is used for step count -->
<!-- rjw private parts and breasts has different step method with serverity. -->
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<!-- Wip -->
<!-- <li> -->
<!-- <partName>Nipples</partName> -->
<!-- <boneName>Breasts</boneName> -->
<!-- <defaultHediffName>Breasts</defaultHediffName> -->
<!-- <bodyPartOf>Breasts</bodyPartOf> -->
<!-- <colorType>Nipple</colorType> -->
<!-- <isBreasts>true</isBreasts> -->
<!-- <mustHaveBone>false</mustHaveBone> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0114</south> -->
<!-- <north>0.0011</north> -->
<!-- <east>0.0114</east> -->
<!-- <west>0.0114</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Thin</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Male</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Hulk</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Fat</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
<li>
<partName>PubicHair</partName>
<boneName>PubicHair</boneName>
<defaultHediffName>Default</defaultHediffName>
<bodyPartOf>PubicHair</bodyPartOf>
<colorType>Hair</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Child</bodyType>
<Addons>
<!-- <li> -->
<!-- <partName>Breasts</partName> -->
<!-- <boneName>Breasts</boneName> -->
<!-- <defaultHediffName>Breasts</defaultHediffName> -->
<!-- <bodyPartOf>Breasts</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>true</isBreasts> -->
<!-- <mustHaveBone>false</mustHaveBone> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0113</south> -->
<!-- <north>0.001</north> -->
<!-- <east>0.0113</east> -->
<!-- <west>0.0113</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Vagina</partName> -->
<!-- <boneName>Vagina</boneName> -->
<!-- <defaultHediffName>Vagina</defaultHediffName> -->
<!-- <bodyPartOf>Vagina</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <mustHaveBone>true</mustHaveBone> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0088</south> -->
<!-- <north>0.0100</north> -->
<!-- <east>0.0088</east> -->
<!-- <west>0.0088</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Anus</partName> -->
<!-- <boneName>Anus</boneName> -->
<!-- <defaultHediffName>Anus</defaultHediffName> -->
<!-- <bodyPartOf>Anus</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0093</south> -->
<!-- <north>0.0105</north> -->
<!-- <east>0.0093</east> -->
<!-- <west>0.0093</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Belly</partName> -->
<!-- <boneName>Belly</boneName> -->
<!-- <defaultHediffName>BellyBulge</defaultHediffName> -->
<!-- <bodyPartOf>Belly</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0098</south> -->
<!-- <north>0.0002</north> -->
<!-- <east>0.0098</east> -->
<!-- <west>0.0098</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Penis</partName> -->
<!-- <boneName>Penis</boneName> -->
<!-- <defaultHediffName>Penis</defaultHediffName> -->
<!-- <bodyPartOf>Penis</bodyPartOf> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0108</south> -->
<!-- <north>0.0025</north> -->
<!-- <east>0.0108</east> -->
<!-- <west>0.0108</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<!-- <li> -->
<!-- <partName>Balls</partName> -->
<!-- <boneName>Balls</boneName> -->
<!-- <defaultHediffName>Penis</defaultHediffName> -->
<!-- <bodyPartOf>Balls</bodyPartOf> -->
<!-- <customPath>Penis/Balls</customPath> -->
<!-- <colorType>Skin</colorType> -->
<!-- <isBreasts>false</isBreasts> -->
<!-- <centeredTexture>true</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0096</south> -->
<!-- <north>0.0085</north> -->
<!-- <east>0.0096</east> -->
<!-- <west>0.0096</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
</Addons>
</li>
</bodies>
</SizedApparel.BodyDef>
</Defs>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- this is Wip Def. Not work yet. -->
<Defs>
<SizedApparel.BodyDef>
<defName>Human</defName>
@ -26,6 +25,23 @@
<west>0.0113</west>
</depthOffset>
</li>
<!-- Wip -->
<!-- <li> -->
<!-- <partName>Nipples</partName> -->
<!-- <boneName>Breasts</boneName> -->
<!-- <defaultHediffName>Breasts</defaultHediffName> -->
<!-- <bodyPartOf>Breasts</bodyPartOf> -->
<!-- <colorType>Nipple</colorType> -->
<!-- <isBreasts>true</isBreasts> -->
<!-- <mustHaveBone>false</mustHaveBone> -->
<!-- <centeredTexture>false</centeredTexture> -->
<!-- <depthOffset> -->
<!-- <south>0.0114</south> -->
<!-- <north>0.0011</north> -->
<!-- <east>0.0114</east> -->
<!-- <west>0.0114</west> -->
<!-- </depthOffset> -->
<!-- </li> -->
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
@ -33,6 +49,7 @@
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>true</centeredTexture>
<!-- TODO? <TexturePaths/> -->
<depthOffset>
@ -119,8 +136,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -237,8 +254,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -355,8 +372,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -473,8 +490,8 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
@ -591,8 +608,106 @@
<depthOffset>
<south>0.0099</south>
<north>0.0099</north>
<east>0.0089</east>
<west>0.0089</west>
<east>0.0099</east>
<west>0.0099</west>
</depthOffset>
</li>
</Addons>
</li>
<li>
<bodyType>Child</bodyType>
<Addons>
<li>
<partName>Breasts</partName>
<boneName>Breasts</boneName>
<defaultHediffName>Breasts</defaultHediffName>
<bodyPartOf>Breasts</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>true</isBreasts>
<mustHaveBone>false</mustHaveBone>
<centeredTexture>false</centeredTexture>
<depthOffset>
<south>0.0113</south>
<north>0.001</north>
<east>0.0113</east>
<west>0.0113</west>
</depthOffset>
</li>
<li>
<partName>Vagina</partName>
<boneName>Vagina</boneName>
<defaultHediffName>Vagina</defaultHediffName>
<bodyPartOf>Vagina</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<mustHaveBone>true</mustHaveBone>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0088</south>
<north>0.0100</north>
<east>0.0088</east>
<west>0.0088</west>
</depthOffset>
</li>
<li>
<partName>Anus</partName>
<boneName>Anus</boneName>
<defaultHediffName>Anus</defaultHediffName>
<bodyPartOf>Anus</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0093</south>
<north>0.0105</north>
<east>0.0093</east>
<west>0.0093</west>
</depthOffset>
</li>
<li>
<partName>Belly</partName>
<boneName>Belly</boneName>
<defaultHediffName>BellyBulge</defaultHediffName>
<bodyPartOf>Belly</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>false</centeredTexture>
<depthOffset>
<south>0.0098</south>
<north>0.0002</north>
<east>0.0098</east>
<west>0.0098</west>
</depthOffset>
</li>
<li>
<partName>Penis</partName>
<boneName>Penis</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Penis</bodyPartOf>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0108</south>
<north>0.0025</north>
<east>0.0108</east>
<west>0.0108</west>
</depthOffset>
</li>
<li>
<partName>Balls</partName>
<boneName>Balls</boneName>
<defaultHediffName>Penis</defaultHediffName>
<bodyPartOf>Balls</bodyPartOf>
<customPath>Penis/Balls</customPath>
<colorType>Skin</colorType>
<isBreasts>false</isBreasts>
<centeredTexture>true</centeredTexture>
<depthOffset>
<south>0.0096</south>
<north>0.0085</north>
<east>0.0096</east>
<west>0.0096</west>
</depthOffset>
</li>
</Addons>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>AOC</defName>
<skeletons>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Alien_Bori</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Alien_Miho</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.148)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.150)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.006, 0, -0.143)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.129)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.139</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.061, 0, -0.155)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141))</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.121)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.109)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.004, 0, -0.123)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.148)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.150)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.006, 0, -0.143)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.129)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.061, 0, -0.155)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.141)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.004, 0, -0.139)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.004, 0, -0.123))</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.121)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.109)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.004, 0, -0.123)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Rabbie</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Ratkin</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Ratkin_Su</defName>
<skeletons>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Alien_SP</defName>
<skeletons>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -9,11 +9,11 @@
<li>
<name>Vagina</name>
<south>
<InitialPosition>(-0.004, 0, -0.340)</InitialPosition>
<InitialPosition>(-0.002, 0, -0.340)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.008, 0, -0.346)</InitialPosition>
<InitialPosition>(-0.006, 0, -0.346)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
@ -556,7 +556,112 @@
<li>
<bodyType>Child</bodyType>
<Bones>
</Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.002, 0, -0.209)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.205)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.043, 0, -0.174)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.164)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.084, 0, -0.127)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.166)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.164)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.057, 0, -0.145)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>

View File

@ -0,0 +1,668 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SizedApparel.SkeletonDef>
<defName>Human</defName>
<skeletons>
<li>
<bodyType>Female</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(-0.002, 0, -0.340)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.346)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.238)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.174, 0, 0.254)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.01, 0, -0.338)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.062, 0, -0.221)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.01, 0, -0.338)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.062, 0, -0.221)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.301)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.318)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.059, 0, -0.186)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Thin</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.312)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.006, 0, -0.318)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.006, 0, -0.256)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.260)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.266)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.137, 0, -0.211)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.307)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.305)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.008, 0, -0.248)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.307)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.305)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.007, 0, -0.248)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.281)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.291)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.021, 0, -0.219)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Male</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.311)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.057, 0, -0.258)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.268)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.252)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.113, 0, -0.234)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.301)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.311)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.068, 0, -0.250)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0.0, 0, -0.301)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.0, 0, -0.311)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.066, 0, -0.250)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.275)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.277)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.066, 0, -0.219)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Hulk</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.004, 0, -0.434)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.453)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.020, 0, -0.395)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0.006, 0, -0.383)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.406)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.238, 0, -0.328)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.436)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.0, 0, -0.445)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.029, 0, -0.387)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.436)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.445)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.028, 0, -0.387)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.395)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.027, 0, -0.375)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, -0.424)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Fat</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.002, 0, -0.352)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.359)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.148, 0, -0.352)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.297)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.297)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.238, 0, -0.271)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(0, 0, -0.357)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.363)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.168, 0, -0.348)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(0, 0, -0.357)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.363)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.168, 0, -0.348)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>PubicHair</name>
<south>
<InitialPosition>(0, 0, -0.307)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.320)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.158, 0, -0.338)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
</Bones>
</li>
<li>
<bodyType>Child</bodyType>
<Bones>
<li>
<name>Vagina</name>
<south>
<InitialPosition>(0.002, 0, -0.209)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, -0.205)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.043, 0, -0.174)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Breasts</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Anus</name>
<south>
<InitialPosition>(0, 0, -0.289)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0.002, 0, -0.164)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(-0.084, 0, -0.127)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Penis</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Balls</name>
<south>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(-0.002, 0, -0.195)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0.047, 0, -0.170)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<li>
<name>Belly</name>
<south>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</south>
<north>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</north>
<east>
<InitialPosition>(0, 0, 0)</InitialPosition>
<InitialAngle>0</InitialAngle>
</east>
</li>
<!-- <li> -->
<!-- <name>PubicHair</name> -->
<!-- <south> -->
<!-- <InitialPosition>(0, 0, -0.166)</InitialPosition> -->
<!-- <InitialAngle>0</InitialAngle> -->
<!-- </south> -->
<!-- <north> -->
<!-- <InitialPosition>(-0.002, 0, -0.164)</InitialPosition> -->
<!-- <InitialAngle>0</InitialAngle> -->
<!-- </north> -->
<!-- <east> -->
<!-- <InitialPosition>(0.057, 0, -0.145)</InitialPosition> -->
<!-- <InitialAngle>0</InitialAngle> -->
<!-- </east> -->
<!-- </li> -->
</Bones>
</li>
</skeletons>
</SizedApparel.SkeletonDef>
</Defs>

View File

@ -27,6 +27,25 @@
</value>
</match>
</li>
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags</xpath>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel</xpath>
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>
</operations>
</match>
</Operation>

View File

@ -15,6 +15,7 @@
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
@ -22,6 +23,26 @@
<xpath>Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags</xpath>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel</xpath>
<value>
<tags>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</tags>
</value>
</nomatch>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[defName = "Apparel_HeavyBandolier"]/apparel/tags</xpath>
<value>
<li>SizedApparel_IgnorBreastSize</li>
<li>SizedApparel_ShowPrivateCrotch</li>
</value>
</match>
</li>

View File

@ -32,6 +32,7 @@ zero112
<li>rim.job.world</li>
<li>shauaputa.rimnudeworld</li>
<li>c0ffee.rimworld.animations</li>
<li>tammybee.statueofcolonist</li>
</loadAfter>
<incompatibleWith>

View File

@ -16,6 +16,7 @@ I'm planning to at least all vanilla apparels will be supported.
[special thanks]
leoinc
zero112
</description>
<modDependencies>
<li>

Some files were not shown because too many files have changed in this diff Show More