diff --git a/1.3/Assemblies/SizedApparelforRJW.dll b/1.3/Assemblies/SizedApparelforRJW.dll index eb895d7..45fd0ce 100644 Binary files a/1.3/Assemblies/SizedApparelforRJW.dll and b/1.3/Assemblies/SizedApparelforRJW.dll differ diff --git a/1.3/AssembliesNotion.txt b/1.3/AssembliesNotion.txt new file mode 100644 index 0000000..a3e6977 --- /dev/null +++ b/1.3/AssembliesNotion.txt @@ -0,0 +1 @@ +latest source build: SizedApparel1.4WIP22 \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/AOCBody.xml b/1.3/Defs/BodyAddonDefs/AOCBody.xml new file mode 100644 index 0000000..e46e302 --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/AOCBody.xml @@ -0,0 +1,131 @@ + + + + + AOC + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/BoriBody.xml b/1.3/Defs/BodyAddonDefs/BoriBody.xml new file mode 100644 index 0000000..e219291 --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/BoriBody.xml @@ -0,0 +1,127 @@ + + + + + Alien_Bori + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/MihoBody.xml b/1.3/Defs/BodyAddonDefs/MihoBody.xml new file mode 100644 index 0000000..f059a1f --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/MihoBody.xml @@ -0,0 +1,249 @@ + + + + + Alien_Miho + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/RabbieBody.xml b/1.3/Defs/BodyAddonDefs/RabbieBody.xml new file mode 100644 index 0000000..58682b0 --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/RabbieBody.xml @@ -0,0 +1,249 @@ + + + + + Rabbie + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/RatkinBody.xml b/1.3/Defs/BodyAddonDefs/RatkinBody.xml new file mode 100644 index 0000000..67ec55d --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/RatkinBody.xml @@ -0,0 +1,249 @@ + + + + + Ratkin + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/Ratkin_SuBody.xml b/1.3/Defs/BodyAddonDefs/Ratkin_SuBody.xml new file mode 100644 index 0000000..be80c0c --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/Ratkin_SuBody.xml @@ -0,0 +1,249 @@ + + + + + Ratkin_Su + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/SPBody.xml b/1.3/Defs/BodyAddonDefs/SPBody.xml new file mode 100644 index 0000000..89abc6b --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/SPBody.xml @@ -0,0 +1,131 @@ + + + + + Alien_SP + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/BodyAddonDefs/_HumanBody.xml b/1.3/Defs/BodyAddonDefs/_HumanBody.xml new file mode 100644 index 0000000..7e7a0a1 --- /dev/null +++ b/1.3/Defs/BodyAddonDefs/_HumanBody.xml @@ -0,0 +1,717 @@ + + + + Human + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • + + + + + + + + + + + + + + + + + +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Hulk + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Fat + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Child + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/HumanBody.xml b/1.3/Defs/BodyAddonDefs/_HumanBody.xml.bak similarity index 79% rename from 1.4/Defs/BodyAddonDefs/HumanBody.xml rename to 1.3/Defs/BodyAddonDefs/_HumanBody.xml.bak index 229c6f6..3a6a487 100644 --- a/1.4/Defs/BodyAddonDefs/HumanBody.xml +++ b/1.3/Defs/BodyAddonDefs/_HumanBody.xml.bak @@ -1,5 +1,4 @@ - Human @@ -26,6 +25,23 @@ 0.0113 + + + + + + + + + + + + + + + + +
  • Vagina Vagina @@ -120,8 +136,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099
  • @@ -238,8 +254,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 @@ -356,8 +372,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 @@ -474,8 +490,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 @@ -592,8 +608,106 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 + + + + +
  • + Child + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + false + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + true + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + 0.0096 + 0.0085 + 0.0096 + 0.0096
  • diff --git a/1.3/Defs/Defs(BodyDefsWip).zip b/1.3/Defs/Defs(BodyDefsWip).zip new file mode 100644 index 0000000..979768c Binary files /dev/null and b/1.3/Defs/Defs(BodyDefsWip).zip differ diff --git a/1.3/Defs/Defs(wip).zip b/1.3/Defs/Defs(wip).zip new file mode 100644 index 0000000..0dde8d5 Binary files /dev/null and b/1.3/Defs/Defs(wip).zip differ diff --git a/1.3/Defs/PubicHairDefs/PubicHairDefault.xml b/1.3/Defs/PubicHairDefs/PubicHairDefault.xml new file mode 100644 index 0000000..e0e0b0c --- /dev/null +++ b/1.3/Defs/PubicHairDefs/PubicHairDefault.xml @@ -0,0 +1,11 @@ + + + + + Default + + SizedApparel/BodyParts/Human/PubicHair/Default + + + + diff --git a/1.3/Defs/PubicHairDefs/PubicHairLine.xml b/1.3/Defs/PubicHairDefs/PubicHairLine.xml new file mode 100644 index 0000000..f2b027e --- /dev/null +++ b/1.3/Defs/PubicHairDefs/PubicHairLine.xml @@ -0,0 +1,11 @@ + + + + + Line + + SizedApparel/BodyParts/Human/PubicHair/Line + + + + diff --git a/1.3/Defs/PubicHairDefs/PubicHairLine.xml.bak b/1.3/Defs/PubicHairDefs/PubicHairLine.xml.bak new file mode 100644 index 0000000..4bf42a4 --- /dev/null +++ b/1.3/Defs/PubicHairDefs/PubicHairLine.xml.bak @@ -0,0 +1,11 @@ + + + + + Wild + + SizedApparel/BodyParts/Human/PubicHair/Wild + + + + diff --git a/1.3/Defs/PubicHairDefs/PubicHairNone.xml b/1.3/Defs/PubicHairDefs/PubicHairNone.xml new file mode 100644 index 0000000..a49bf4e --- /dev/null +++ b/1.3/Defs/PubicHairDefs/PubicHairNone.xml @@ -0,0 +1,7 @@ + + + + None + true + + diff --git a/1.3/Defs/PubicHairDefs/PubicHairWild.xml b/1.3/Defs/PubicHairDefs/PubicHairWild.xml new file mode 100644 index 0000000..4bf42a4 --- /dev/null +++ b/1.3/Defs/PubicHairDefs/PubicHairWild.xml @@ -0,0 +1,11 @@ + + + + + Wild + + SizedApparel/BodyParts/Human/PubicHair/Wild + + + + diff --git a/1.3/Defs/SkeletonDef/AOCSkeletonDef.xml b/1.3/Defs/SkeletonDef/AOCSkeletonDef.xml new file mode 100644 index 0000000..d927691 --- /dev/null +++ b/1.3/Defs/SkeletonDef/AOCSkeletonDef.xml @@ -0,0 +1,123 @@ + + + + AOC + +
  • + Female + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/SkeletonDef/BoriSkeletonDef.xml b/1.3/Defs/SkeletonDef/BoriSkeletonDef.xml new file mode 100644 index 0000000..11e2645 --- /dev/null +++ b/1.3/Defs/SkeletonDef/BoriSkeletonDef.xml @@ -0,0 +1,123 @@ + + + + Alien_Bori + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/SkeletonDef/MihoSkeletonDef.xml b/1.3/Defs/SkeletonDef/MihoSkeletonDef.xml new file mode 100644 index 0000000..d13758e --- /dev/null +++ b/1.3/Defs/SkeletonDef/MihoSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Alien_Miho + +
  • + Thin + +
  • + Vagina + + (0, 0, -0.148) + 0 + + + (-0.006, 0, -0.150) + 0 + + + (-0.006, 0, -0.143) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.129) + 0 + + + (-0.006, 0, -0.139 + 0 + + + (-0.061, 0, -0.155) + 0 + +
  • +
  • + Penis + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Balls + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141)) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.121) + 0 + + + (-0.006, 0, -0.109) + 0 + + + (0.004, 0, -0.123) + 0 + +
  • + + +
  • + Female + +
  • + Vagina + + (0, 0, -0.148) + 0 + + + (-0.006, 0, -0.150) + 0 + + + (-0.006, 0, -0.143) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.129) + 0 + + + (-0.006, 0, -0.139) + 0 + + + (-0.061, 0, -0.155) + 0 + +
  • +
  • + Penis + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Balls + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0.004, 0, -0.123)) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.121) + 0 + + + (-0.006, 0, -0.109) + 0 + + + (0.004, 0, -0.123) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/SkeletonDef/RabbieSkeletonDef.xml b/1.3/Defs/SkeletonDef/RabbieSkeletonDef.xml new file mode 100644 index 0000000..ebb6a16 --- /dev/null +++ b/1.3/Defs/SkeletonDef/RabbieSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Rabbie + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/SkeletonDef/RatkinSkeletonDef.xml b/1.3/Defs/SkeletonDef/RatkinSkeletonDef.xml new file mode 100644 index 0000000..850f0dd --- /dev/null +++ b/1.3/Defs/SkeletonDef/RatkinSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Ratkin + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/SkeletonDef/RatkinSuSkeletonDef.xml b/1.3/Defs/SkeletonDef/RatkinSuSkeletonDef.xml new file mode 100644 index 0000000..73bf8f7 --- /dev/null +++ b/1.3/Defs/SkeletonDef/RatkinSuSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Ratkin_Su + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/SkeletonDef/SPSkeletonDef.xml b/1.3/Defs/SkeletonDef/SPSkeletonDef.xml new file mode 100644 index 0000000..5dec2cf --- /dev/null +++ b/1.3/Defs/SkeletonDef/SPSkeletonDef.xml @@ -0,0 +1,123 @@ + + + + Alien_SP + +
  • + Female + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/HumanSkeletonDef.xml b/1.3/Defs/SkeletonDef/_HumanSkeletonDef.xml similarity index 80% rename from 1.4/Defs/SkeletonDef/HumanSkeletonDef.xml rename to 1.3/Defs/SkeletonDef/_HumanSkeletonDef.xml index 65815f2..cc1a6c7 100644 --- a/1.4/Defs/SkeletonDef/HumanSkeletonDef.xml +++ b/1.3/Defs/SkeletonDef/_HumanSkeletonDef.xml @@ -556,7 +556,112 @@
  • Child - +
  • + Vagina + + (0.002, 0, -0.209) + 0 + + + (0, 0, -0.205) + 0 + + + (0.043, 0, -0.174) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.289) + 0 + + + (0.002, 0, -0.164) + 0 + + + (-0.084, 0, -0.127) + 0 + +
  • +
  • + Penis + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Balls + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.166) + 0 + + + (-0.002, 0, -0.164) + 0 + + + (0.057, 0, -0.145) + 0 + +
  • + diff --git a/1.3/Defs/SkeletonDef/_HumanSkeletonDef.xml.bak b/1.3/Defs/SkeletonDef/_HumanSkeletonDef.xml.bak new file mode 100644 index 0000000..47e66f0 --- /dev/null +++ b/1.3/Defs/SkeletonDef/_HumanSkeletonDef.xml.bak @@ -0,0 +1,668 @@ + + + + Human + +
  • + Female + +
  • + Vagina + + (-0.002, 0, -0.340) + 0 + + + (-0.006, 0, -0.346) + 0 + + + (0.047, 0, -0.238) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.289) + 0 + + + (-0.006, 0, -0.289) + 0 + + + (-0.174, 0, 0.254) + 0 + +
  • +
  • + Penis + + (0, 0, -0.320) + 0 + + + (-0.01, 0, -0.338) + 0 + + + (0.062, 0, -0.221) + 0 + +
  • +
  • + Balls + + (0, 0, -0.320) + 0 + + + (-0.01, 0, -0.338) + 0 + + + (0.062, 0, -0.221) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.301) + 0 + + + (0, 0, -0.318) + 0 + + + (0.059, 0, -0.186) + 0 + +
  • + + +
  • + Thin + +
  • + Vagina + + (0, 0, -0.312) + 0 + + + (-0.006, 0, -0.318) + 0 + + + (0.006, 0, -0.256) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.260) + 0 + + + (-0.002, 0, -0.266) + 0 + + + (-0.137, 0, -0.211) + 0 + +
  • +
  • + Penis + + (0, 0, -0.307) + 0 + + + (0, 0, -0.305) + 0 + + + (0.008, 0, -0.248) + 0 + +
  • +
  • + Balls + + (0, 0, -0.307) + 0 + + + (0, 0, -0.305) + 0 + + + (0.007, 0, -0.248) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.281) + 0 + + + (0, 0, -0.291) + 0 + + + (0.021, 0, -0.219) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, -0.320) + 0 + + + (0.002, 0, -0.311) + 0 + + + (0.057, 0, -0.258) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.268) + 0 + + + (0, 0, -0.252) + 0 + + + (-0.113, 0, -0.234) + 0 + +
  • +
  • + Penis + + (0, 0, -0.301) + 0 + + + (0, 0, -0.311) + 0 + + + (0.068, 0, -0.250) + 0 + +
  • +
  • + Balls + + (0.0, 0, -0.301) + 0 + + + (0.0, 0, -0.311) + 0 + + + (0.066, 0, -0.250) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.275) + 0 + + + (0, 0, -0.277) + 0 + + + (0.066, 0, -0.219) + 0 + +
  • + + +
  • + Hulk + +
  • + Vagina + + (0.004, 0, -0.434) + 0 + + + (0, 0, -0.453) + 0 + + + (0.020, 0, -0.395) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0.006, 0, -0.383) + 0 + + + (0, 0, -0.406) + 0 + + + (-0.238, 0, -0.328) + 0 + +
  • +
  • + Penis + + (0, 0, -0.436) + 0 + + + (0.0, 0, -0.445) + 0 + + + (0.029, 0, -0.387) + 0 + +
  • +
  • + Balls + + (0, 0, -0.436) + 0 + + + (0, 0, -0.445) + 0 + + + (0.028, 0, -0.387) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.395) + 0 + + + (0.027, 0, -0.375) + 0 + + + (0, 0, -0.424) + 0 + +
  • + + +
  • + Fat + +
  • + Vagina + + (0.002, 0, -0.352) + 0 + + + (0.002, 0, -0.359) + 0 + + + (0.148, 0, -0.352) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.297) + 0 + + + (0, 0, -0.297) + 0 + + + (-0.238, 0, -0.271) + 0 + +
  • +
  • + Penis + + (0, 0, -0.357) + 0 + + + (0, 0, -0.363) + 0 + + + (0.168, 0, -0.348) + 0 + +
  • +
  • + Balls + + (0, 0, -0.357) + 0 + + + (0, 0, -0.363) + 0 + + + (0.168, 0, -0.348) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.307) + 0 + + + (0, 0, -0.320) + 0 + + + (0.158, 0, -0.338) + 0 + +
  • + + +
  • + Child + +
  • + Vagina + + (0.002, 0, -0.209) + 0 + + + (0, 0, -0.205) + 0 + + + (0.043, 0, -0.174) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.289) + 0 + + + (0.002, 0, -0.164) + 0 + + + (-0.084, 0, -0.127) + 0 + +
  • +
  • + Penis + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Balls + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + + + + + + + + + + + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/1.3/Defs/TexturePointsDefs/Test.zip b/1.3/Defs/TexturePointsDefs/Test.zip new file mode 100644 index 0000000..d6a1cce Binary files /dev/null and b/1.3/Defs/TexturePointsDefs/Test.zip differ diff --git a/1.3/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml b/1.3/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml new file mode 100644 index 0000000..f8e424c --- /dev/null +++ b/1.3/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml @@ -0,0 +1,52 @@ + + + + + +
  • Biotech
  • +
    + + Normal + +
  • + Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags + + Defs/ThingDef[defName = "Apparel_Sash"]/apparel + + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • + + + + + Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • +
    +
    + +
  • + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags + + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel + + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • + + + + + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • +
    +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.3/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak b/1.3/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak new file mode 100644 index 0000000..08e7f34 --- /dev/null +++ b/1.3/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak @@ -0,0 +1,52 @@ + + + + + +
  • Biotech
  • +
    + + Normal + +
  • + Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags + + Defs/ThingDef[defName = "Apparel_Sash"]/apparel + + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • + + + + + Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • +
    +
    + +
  • + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags + + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel + + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • + + + + + Defs/ThingDef[defName = "Apparel_HeavyBandolier"]/apparel/tags + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • +
    +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.3/source/SizedApparel/AlienRaceSupport.cs b/1.3/source/SizedApparel/AlienRaceSupport.cs index ebfcdd3..a8f1dba 100644 --- a/1.3/source/SizedApparel/AlienRaceSupport.cs +++ b/1.3/source/SizedApparel/AlienRaceSupport.cs @@ -11,10 +11,4 @@ namespace SizedApparel class AlienRaceSupport { } - - public class SizedApparelPawnDef : Def - { - public bool allowForceHumanlike = false; - - } } diff --git a/1.3/source/SizedApparel/Graphic_BodyParts.cs b/1.3/source/SizedApparel/Graphic_BodyParts.cs index 50be733..f221eda 100644 --- a/1.3/source/SizedApparel/Graphic_BodyParts.cs +++ b/1.3/source/SizedApparel/Graphic_BodyParts.cs @@ -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; diff --git a/1.3/source/SizedApparel/Graphic_SizedApparel.cs b/1.3/source/SizedApparel/Graphic_SizedApparel.cs index a0a879c..f84fa77 100644 --- a/1.3/source/SizedApparel/Graphic_SizedApparel.cs +++ b/1.3/source/SizedApparel/Graphic_SizedApparel.cs @@ -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 graphics; } } diff --git a/1.3/source/SizedApparel/HarmonyPatches.cs b/1.3/source/SizedApparel/HarmonyPatches.cs index b723dd3..9b8d881 100644 --- a/1.3/source/SizedApparel/HarmonyPatches.cs +++ b/1.3/source/SizedApparel/HarmonyPatches.cs @@ -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 { diff --git a/1.3/source/SizedApparel/Patch-Animation.cs b/1.3/source/SizedApparel/Patch-Animation.cs new file mode 100644 index 0000000..bd92a0d --- /dev/null +++ b/1.3/source/SizedApparel/Patch-Animation.cs @@ -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(); + 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(); + 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().SetBreastJiggle(true); + } + } + else + { + foreach (var actor in __instance.actorsInCurrentAnimation) + { + actor.GetComp().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(); + if (comp == null) + return; + comp.SetBreastJiggle(false, -1); + comp.ForceUpdateTickAnimation = false; + comp.SetPenisAngle(0); + + } + } + +} diff --git a/1.3/source/SizedApparel/SizedApparelDubsApparelPatch.cs b/1.3/source/SizedApparel/Patch-DubsApparelPatch.cs similarity index 86% rename from 1.3/source/SizedApparel/SizedApparelDubsApparelPatch.cs rename to 1.3/source/SizedApparel/Patch-DubsApparelPatch.cs index 8cc6e14..5addbe4 100644 --- a/1.3/source/SizedApparel/SizedApparelDubsApparelPatch.cs +++ b/1.3/source/SizedApparel/Patch-DubsApparelPatch.cs @@ -17,7 +17,7 @@ namespace SizedApparel if (graphicSet == null) return; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return; comp.needToCheckApparelGraphicRecords = true; diff --git a/1.3/source/SizedApparel/Patch-Menstruation.cs b/1.3/source/SizedApparel/Patch-Menstruation.cs new file mode 100644 index 0000000..21c4a84 --- /dev/null +++ b/1.3/source/SizedApparel/Patch-Menstruation.cs @@ -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(); + if (breastcomp == null) + return null; + return breastcomp.NippleColor; + } + + public static float? GetNippleSize(Hediff breastHediff) + { + var breastcomp = breastHediff.TryGetComp(); + if (breastcomp == null) + return null; + return breastcomp.NippleSize; + } + + public static float? GetAreolaSize(Hediff breastHediff) + { + var breastcomp = breastHediff.TryGetComp(); + if (breastcomp == null) + return null; + return breastcomp.AreolaSize; + } + } +} diff --git a/1.3/source/SizedApparel/SizedApparelRJWPatch.cs b/1.3/source/SizedApparel/Patch-RimJobWorld.cs similarity index 90% rename from 1.3/source/SizedApparel/SizedApparelRJWPatch.cs rename to 1.3/source/SizedApparel/Patch-RimJobWorld.cs index bc1aecf..06f8ac6 100644 --- a/1.3/source/SizedApparel/SizedApparelRJWPatch.cs +++ b/1.3/source/SizedApparel/Patch-RimJobWorld.cs @@ -18,10 +18,10 @@ namespace SizedApparel { if (!UnityData.IsInMainThread) return; - ApparelRecorderComp comp = pawn?.TryGetComp(); + ApparelRecorderComp comp = pawn?.GetComp(); 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 comp = pawn.GetComp(); if (comp != null) { /* @@ -128,7 +128,7 @@ namespace SizedApparel { if (pawn == null) return; - ApparelRecorderComp comp = pawn.TryGetComp(); + ApparelRecorderComp comp = pawn.GetComp(); if (comp == null) return; comp.SetDirty(); @@ -146,7 +146,7 @@ namespace SizedApparel - ApparelRecorderComp pawnARC = __instance.pawn.TryGetComp(); + ApparelRecorderComp pawnARC = __instance.pawn.GetComp(); 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 partnerARC = partner.GetComp(); if (partnerARC != null) { if (partner.RaceProps.Humanlike) @@ -182,7 +182,7 @@ namespace SizedApparel { - ApparelRecorderComp pawnARC = __instance.pawn.TryGetComp(); + ApparelRecorderComp pawnARC = __instance.pawn.GetComp(); if (pawnARC != null) { @@ -209,7 +209,7 @@ namespace SizedApparel var partner = __instance.Partner as Pawn; if (partner == null) return; - ApparelRecorderComp partnerARC = partner.TryGetComp(); + ApparelRecorderComp partnerARC = partner.GetComp(); if (partnerARC != null) { partnerARC.havingSex = false; diff --git a/1.3/source/SizedApparel/SizedApparelRNWPatch.cs b/1.3/source/SizedApparel/Patch-RimNudeWorld.cs similarity index 90% rename from 1.3/source/SizedApparel/SizedApparelRNWPatch.cs rename to 1.3/source/SizedApparel/Patch-RimNudeWorld.cs index 3971a36..cdc4e93 100644 --- a/1.3/source/SizedApparel/SizedApparelRNWPatch.cs +++ b/1.3/source/SizedApparel/Patch-RimNudeWorld.cs @@ -36,7 +36,7 @@ namespace SizedApparel { if (__result == false) return; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return; if (comp.hasUnsupportedApparel) diff --git a/1.3/source/SizedApparel/Patch-StatueOfColonist.cs b/1.3/source/SizedApparel/Patch-StatueOfColonist.cs new file mode 100644 index 0000000..2aa8860 --- /dev/null +++ b/1.3/source/SizedApparel/Patch-StatueOfColonist.cs @@ -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 + { + + } +} diff --git a/1.3/source/SizedApparel/SizedApparelBodyPart.cs b/1.3/source/SizedApparel/SizedApparelBodyPart.cs index 8ee5cc7..a8ca96e 100644 --- a/1.3/source/SizedApparel/SizedApparelBodyPart.cs +++ b/1.3/source/SizedApparel/SizedApparelBodyPart.cs @@ -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 Addons = new List(); + } + public class BodyPart { - public string partName; - public Depth4Offsets depthOffset; - public List 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 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.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 points; - public Dictionary 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 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 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(); - + var comp = apparelRecorderCompCache; + if (comp == null) + comp = pawn.GetComp(); 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 BodyParts; //defName = raceName ?? could it work? - public List bodyParts; + public List bodies = new List(); - /* - public List penisOffset; - public List vaginaOffset; //TODO - public List udderOffset; //TODO - public List bellyOffset; //TODO - public List breastsOffset; //TODO - public List anusOffset; //TODO - */ + + //public List penisOffset; + //public List vaginaOffset; + //public List pubicHairOffset; + //public List udderOffset; + //public List bellyOffset; + //public List breastsOffset; + //public List anusOffset; + } public class SizedApparelBody @@ -667,4 +1015,10 @@ namespace SizedApparel } } + public class SizedApparelBodyPartOfssetDef : Def + { + //defName IsRaceName + + } + } diff --git a/1.3/source/SizedApparel/SizedApparelBodyPartDef.cs b/1.3/source/SizedApparel/SizedApparelBodyPartDef.cs new file mode 100644 index 0000000..742f3f5 --- /dev/null +++ b/1.3/source/SizedApparel/SizedApparelBodyPartDef.cs @@ -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 graphicBones = new List(); + + //Do Not Directly Use it + public List skeletons = new List(); + + + 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 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(); + + + 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; + } + } + +} diff --git a/1.3/source/SizedApparel/SizedApparelComp.cs b/1.3/source/SizedApparel/SizedApparelComp.cs index ee8cf16..2195d3c 100644 --- a/1.3/source/SizedApparel/SizedApparelComp.cs +++ b/1.3/source/SizedApparel/SizedApparelComp.cs @@ -13,6 +13,9 @@ namespace SizedApparel [StaticConstructorOnStartup] public class ApparelRecorderComp : ThingComp { + Pawn pawn;// Parent Cache + + public bool recentClothFlag = true; public bool isDrawAge = true; @@ -24,36 +27,63 @@ namespace SizedApparel public bool needToCheckApparelGraphicRecords = false; public bool isDirty = true; - + public bool isHediffDirty = true; + public bool isApparelDirty = true; + public bool isSkeletonDirty = true; + public bool isBodyAddonDirty = true; // reset all body addon graphics. public bool hasUnsupportedApparel = true; public bool havingSex = false;//Obsolete public bool hasUpdateForSex = false;//Obsolete + string cachedBodytype; public List cachedApparelGraphicRecord = new List(); - public Hediff breastHediff = null; //TODO: Make this as List + public Hediff breastHediff = null; public Hediff vaginaHediff = null; public List penisHediffs = null; // RJW can attach multiple penis public Hediff anusHediff = null; - public Hediff udderHediff = null;//RJW 4.6.8: Udder is not partof chest's breast. it attached to torso. + public Color? nippleColor; //for menstruation cycles Mod + + //TODO Optimize Update Hediff Filter + private bool hasBreastsAddon = false; + private bool hasVaginaAddon = false; + private bool hasPenisAddon = false; + private bool hasAnusAddon = false; + private bool hasUdderAddon = false; + private bool hasPubicHairAddon = false; + public float breastSeverity = -1; - public float breastSeverityCapToDraw = 1000; public float BreastSeverityCache = 0; //public float BiggestBreastSeverityInAvailableTextures = 0; //for breasts animation or something. + public bool ForceUpdateTickAnimation = false; + public bool ForceBlockTickAnimation = false; // useful when you have make fixed pose + public bool PrePositionCache; public Vector3? prePositionCache; public float? preAngleCache; public int? preTickCache; + public Vector3 preVelocity = Vector3.zero; + public float preRotation = 0; + public Dictionary tickCache = new Dictionary(); + + public BodyDef bodyDef = null; + public List bodyAddons = new List(); // BodyParts Added form Defs + + public SkeletonDef skeletonDef; // for rebuild Skeleton + public Skeleton skeleton; + public bool skipSkeleton = false; + + //native BodyParts public SizedApparelBodyPart bodyPartBreasts;//TODO: Make this as List public SizedApparelBodyPart bodyPartNipple;//TODO public List bodyPartPenises = new List(); @@ -63,54 +93,35 @@ namespace SizedApparel public SizedApparelBodyPart bodyPartBelly; public SizedApparelBodyPart bodyPartMuscleOverlay;//TODO public SizedApparelBodyPart bodyPartUdder; - public SizedApparelBodyPart bodyPartPubicHair; //TODO + + public SizedApparelBodyPart bodyPartHips; public List bodyPartThighs = new List(); public List bodyPartHands = new List(); public List bodyPartFeet = new List(); + public PubicHairDef pubicHairDef = null; + public PubicHairDef initialPubicHairDef = null; // For StyleStaitionWork + public PubicHairDef nextPubicHairDef = null; // For StyleStaitionWork + public SizedApparelBodyPart bodyPartPubicHair; + + public Graphic graphicSourceNaked = null; //original Graphic public Graphic graphicSourceRotten = null; //original Graphic + public Graphic graphicSourceFurCovered = null; //original Graphic + public Graphic graphicbaseBodyNaked = null; + public SizedApparelTexturePointDef baseBodyNakedPoints; + public Graphic graphicbaseBodyCorpse = null; + public SizedApparelTexturePointDef baseBodyCorpsePoints; public Graphic graphicbaseBodyRotten = null; + public SizedApparelTexturePointDef baseBodyRottenPoints; + public Graphic graphicbaseBodyFurCovered = null; + public SizedApparelTexturePointDef baseBodyFurCoveredPoints; - [Obsolete] - public Graphic graphicBreasts = null; - [Obsolete] - public Graphic graphicBreasts_horny = null; - [Obsolete] - public Graphic graphicVagina = null; - [Obsolete] - public Graphic graphicVagina_horny = null; - [Obsolete] - public Graphic graphicAnus = null; - [Obsolete] - public Graphic graphicAnus_horny = null; - [Obsolete] - public List graphicPenises = new List(); - [Obsolete] - public List graphicBallsOfPenises = new List(); - [Obsolete] - public Graphic graphicBelly = null; - [Obsolete] - public Graphic graphicUdder = null; //RJW 4.6.8: Udder is not partof chest's breast. it attached to torso. - [Obsolete] - public Graphic graphicUdder_horny = null; - [Obsolete] - public List graphicPenises_horny = new List(); - [Obsolete] - public List graphicBalls_horny = new List();//Does it need? - //size uncapped breasts graphics. - [Obsolete] - public Graphic graphicBreastsNude = null; - [Obsolete] - public Graphic graphicBreastsNude_horny = null; - - private bool drawingBreastsAddon = false; - - public AlienRaceSetting raceSetting = new AlienRaceSetting(); + public AlienRaceSetting raceSetting = null; public string customPose = null; public SizedApparelPose currentCustomPose = null; @@ -124,97 +135,403 @@ namespace SizedApparel public bool canDrawVaginaAndAnus = false; public bool canDrawTorsoParts = false; //belly and udder + + //this may reset skeleton animation. also little have process + public void InitSkeleton() + { + skeletonDef = DefDatabase.GetNamedSilentFail(pawn.def.defName); + if (skeletonDef == null) + { + if (raceSetting != null && raceSetting.asHuman == true) //old: !SizedApparelSettings.UnsupportedRaceToUseHumanlike + { + skeletonDef = DefDatabase.GetNamedSilentFail("Human"); + } + } + if (skeletonDef != null) + { + if (this.pawn.story == null || this.pawn.story.bodyType == null) + { + foreach (Skeleton s in skeletonDef.skeletons) + { + if (s.bodyType == null) + { + this.skeleton = new Skeleton(s); + if (SizedApparelSettings.Debug) + Log.Message("[SizedApparel] Apply SkeletonDef: pawn withouth bodytype " + pawn.Name); + return; + } + } + } + else + { + //Setting Up Skeleton + foreach (Skeleton s in skeletonDef.skeletons) + { + if (s.bodyType == this.pawn.story.bodyType.defName) + { + this.skeleton = new Skeleton(s); + if (SizedApparelSettings.Debug) + Log.Message("[SizedApparel] Apply SkeletonDef: pawn with bodytype " + pawn.Name + " with SkeletonDef : " + this.pawn.story.bodyType.defName); + return; + } + } + } + this.skeleton = null; + } + if (SizedApparelSettings.Debug) + Log.Message("[SizedApparel] Apply SkeletonDef: No Skeleton Found for " + pawn.Name); + isSkeletonDirty = false; + } + + public void InitBodyAddons() + { + + bodyAddons.Clear(); + + //TODO + //bodyDef = DefDatabase.GetNamed(pawn.def.defName); + + bodyDef = DefDatabase.GetNamedSilentFail(pawn.def.defName); + + //bodyDef can be null + + if (bodyDef == null) + { + if (raceSetting != null && raceSetting.asHuman) //old: !SizedApparelSettings.UnsupportedRaceToUseHumanlike + { + bodyDef = DefDatabase.GetNamedSilentFail("Human"); + } + } + + + if (bodyDef != null && bodyDef.bodies != null) + { + if (pawn.story?.bodyType == null) + { + if(SizedApparelSettings.Debug) + Log.Message("[SizedApparel] Apply BodyDef: pawn has no bodytype " + pawn.Name); + BodyWithBodyType body = null; + if(!bodyDef.bodies.NullOrEmpty()) + body = bodyDef.bodies[0]; + if (body != null && body.Addons != null) + { + foreach (var bodyaddon in body.Addons) + { + if (bodyaddon == null) + continue; + var a = new SizedApparelBodyPart(pawn, this, bodyaddon.partName, bodyaddon.bodyPartOf, bodyaddon.defaultHediffName, bodyaddon.isBreasts, false, bodyaddon.customPath, bodyaddon.colorType, bodyaddon.mustHaveBone); + a.SetDepthOffsets(bodyaddon.depthOffset.south, bodyaddon.depthOffset.north, bodyaddon.depthOffset.east, bodyaddon.depthOffset.west); + //a.SetDepthOffsets(bodyaddon.depthOffset); + a.SetCenteredTexture(bodyaddon.centeredTexture); + bodyAddons.Add(a); + break; + } + } + } + else + { + foreach (BodyWithBodyType body in bodyDef.bodies) + { + if (body.bodyType != null && body.bodyType == this.pawn.story.bodyType.defName) + { + if (SizedApparelSettings.Debug) + Log.Message("[SizedApparel] Apply BodyDef: matched BodyTyped Body for " + pawn.Name); + if (body != null && body.Addons != null) + { + foreach (var bodyaddon in body.Addons) + { + if (bodyaddon == null) + continue; + var a = new SizedApparelBodyPart(pawn, this, bodyaddon.partName, bodyaddon.bodyPartOf, bodyaddon.defaultHediffName, bodyaddon.isBreasts, false, bodyaddon.customPath, bodyaddon.colorType, bodyaddon.mustHaveBone); + a.SetDepthOffsets(bodyaddon.depthOffset.south, bodyaddon.depthOffset.north, bodyaddon.depthOffset.east, bodyaddon.depthOffset.west); + //a.SetDepthOffsets(bodyaddon.depthOffset); + a.SetCenteredTexture(bodyaddon.centeredTexture); + bodyAddons.Add(a); + } + } + break; + } + + } + + } + + } + else + { + if (SizedApparelSettings.Debug) + Log.Message("[SizedApparel] Cannot find BodyDef for " + pawn.def.defName); + } + + //bodyPartBreasts = new SizedApparelBodyPart(pawn, this, "Breasts", SizedApparelBodyPartOf.Breasts, "Breasts", true, false, null); + //bodyPartBreasts.SetDepthOffsets(0.0113f, 0.001f, 0.0113f, 0.0113f); + + //bodyPartBreasts.SetPositionOffsets(Vector2.one, Vector2.one, Vector2.one, Vector2.one); + //bodyPartBreasts.scale = 2f; + //Nipple. should I separate from Breats? + //bodyPartNipple = new SizedApparelBodyPart(pawn, this, "Nippple", SizedApparelBodyPartOf.Breasts, "Breasts", true, false); + //bodyPartBreasts.SetDepthOffsets(0.0114f, 0.000f, 0.0114f, 0.0114f); + + //bodyPartUdder = new SizedApparelBodyPart(pawn, this, "Udder", SizedApparelBodyPartOf.Udder, "UdderBreasts", true, false); + //bodyPartUdder.SetDepthOffsets(0.0112f, 0.0005f, 0.0112f, 0.0112f); + + //UdderNipple...? + //bodyPartUdder = new SizedApparelBodyPart(p, "Udder", SizedApparelBodyPartOf.Udder, "UdderBreasts", true, false); + //bodyPartUdder.SetDepthOffsets(0.0112f, 0.0005f, 0.0112f, 0.0112f);\ + + //bodyPartVagina = new SizedApparelBodyPart(pawn, this, "Vagina", SizedApparelBodyPartOf.Vagina, "Vagina", false, false); + //bodyPartVagina.SetDepthOffsets(0.0088f, 0.0100f, 0.0088f, 0.0088f); + + //bodyPartAnus = new SizedApparelBodyPart(pawn, this, "Anus", SizedApparelBodyPartOf.Anus, "Anus", false, false); + //bodyPartAnus.SetDepthOffsets(0.0093f, 0.0105f, 0.0093f, 0.0093f); + + //bodyPartBelly = new SizedApparelBodyPart(pawn, this, "Belly", SizedApparelBodyPartOf.Belly, "BellyBulge", false, false); + //bodyPartBelly.SetDepthOffsets(0.0098f, 0.0002f, 0.0098f, 0.0098f); + + //bodyPartPubicHair = new SizedApparelBodyPart(pawn, this, "PubicHair", SizedApparelBodyPartOf.PubicHair, "Default", false, false, null, ColorType.Hair); + //bodyPartPubicHair.SetDepthOffsets(0.0099f, 0.0099f, 0.0089f, 0.0089f); + } + + public void ResetBodyAddonBoneLink() + { + string s; + foreach(var a in bodyAddons) + { + s = a.bone?.name; + if (s == null) + continue; + a.SetBone(skeleton.FindBone(s)); + } + } + public override void Initialize(CompProperties props) { base.Initialize(props); - Pawn p = parent as Pawn; - - bodyPartBreasts = new SizedApparelBodyPart(p, "Breasts", SizedApparelBodyPartOf.Breasts, "Breasts", true, false); - bodyPartBreasts.SetDepthOffsets(0.0113f, 0.001f, 0.0113f, 0.0113f); - bodyPartNipple = new SizedApparelBodyPart(p, "Nippple", SizedApparelBodyPartOf.Breasts, "Breasts", true, false); - bodyPartBreasts.SetDepthOffsets(0.0114f, 0.000f, 0.0114f, 0.0114f); + this.pawn = this.parent as Pawn; - bodyPartUdder = new SizedApparelBodyPart(p, "Udder", SizedApparelBodyPartOf.Udder, "UdderBreasts", true, false); - bodyPartUdder.SetDepthOffsets(0.0112f, 0.0005f, 0.0112f, 0.0112f); - //UdderNipple...? - //bodyPartUdder = new SizedApparelBodyPart(p, "Udder", SizedApparelBodyPartOf.Udder, "UdderBreasts", true, false); - //bodyPartUdder.SetDepthOffsets(0.0112f, 0.0005f, 0.0112f, 0.0112f); - bodyPartVagina = new SizedApparelBodyPart(p, "Vagina", SizedApparelBodyPartOf.Vagina, "Vagina", false, false); - bodyPartVagina.SetDepthOffsets(0.0088f, 0.0100f, 0.0088f, 0.0088f); - - bodyPartAnus = new SizedApparelBodyPart(p, "Anus", SizedApparelBodyPartOf.Anus, "Anus", false, false); - bodyPartAnus.SetDepthOffsets(0.0093f, 0.0105f, 0.0093f, 0.0093f); - - bodyPartBelly = new SizedApparelBodyPart(p, "Belly", SizedApparelBodyPartOf.Belly, "BellyBulge", false, false); - bodyPartBelly.SetDepthOffsets(0.0098f, 0.0002f, 0.0098f, 0.0098f); } + public override void PostDeSpawn(Map map) + { + base.PostDeSpawn(map); + } + + public override void PostSpawnSetup(bool respawningAfterLoad) + { + base.PostSpawnSetup(respawningAfterLoad); + + UpdateRaceSettingData(); // include race Setting + InitSkeleton(); + InitBodyAddons(); + } + + public override void PostExposeData() { base.PostExposeData(); - Scribe_Values.Look(ref customPose, "customPose"); // save pawn's custom pose + Scribe_Values.Look(ref customPose, "customPose"); // save pawn's custom pose. Each bodyparts will not saved. + Scribe_Defs.Look(ref pubicHairDef, "PubicHairDef"); + if (pubicHairDef == null) + { + pubicHairDef = SizedApparelUtility.GetRandomPubicHair(); + } + //Scribe_Values.Look<>(); //TODO: save pubic hair data } + /* public override void CompTick() { + if (PrePositionCache) + { + + } base.CompTick(); - - - } - + }*/ + /* public override void CompTickRare() { base.CompTickRare(); }*/ + + + float penisAngle = 0; + public void SetPenisAngle(float angle) + { + penisAngle = angle; + + if(this.skeleton != null) + { + Bone penisBone = skeleton.FindBone("Penis"); + if (penisBone != null) + { + //Log.Message("SetPenisAngle : " + angle.ToString()); + penisBone.SetAngle(angle); + } + } + + + bool penisDown = false; + if (angle >= 120 && angle <= 250) + penisDown = true; + foreach (var p in bodyPartPenises) + { + if (penisDown) + { + p.SetCustomPose("PenisDown"); + } + else + { + p.SetCustomPose(null); + } + } + } + //do not call this in character creation from new game. + public void SetBreastJiggle(bool jiggle, int cooltime = 5, bool checkApparelForCanPose = false) + { + //SetJiggle has cooltime. + + + bool flag1 = true; + + //should set apparels pose? + //Use First BodyAddon which is partof Breasts + foreach(var a in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Breasts)) + { + if (flag1) + { + if (Find.TickManager.TicksGame < a.lastPoseTick + cooltime) + return; + flag1 = false; + } + + + if (jiggle) + { + bool flag2 = true; + if (flag2 && checkApparelForCanPose) + { + if (!a.CheckCanPose("JiggleUp", true, false, true, true, false)) + return; + flag2 = false; + } + + //may need to check apparels for aply pose + //bodyPartBreasts.CheckCanPose("JiggleUp",) + a.SetCustomPose("JiggleUp"); + } + else + { + //SetPoseFromPoseSet(null); + a.SetCustomPose(null); + } + } + + + } + string[] testPose = { null, "JiggleUp", "JiggleCenter" }; string[] testPose2 = { null, "PenisDown" }; - public void DrawUpdate(Vector3 rootLoc, float angle) // call this in DrawPawnBody + public void UpdateTickAnim(Vector3 rootLoc, float angle) // call this in DrawPawnBody <- only called when it rendered { + if (ForceBlockTickAnimation)// prevent breasts jiggle from other pose + return; + + if (skeleton == null) + return; + + if (Find.CameraDriver == null) + return; + + //do not calculate physics camera is far + if (Find.CameraDriver.CurrentZoom >= CameraZoomRange.Furthest) + return; //int IdTick = parent.thingIDNumber * 20; //hint from yayo animation mod - if (SizedApparelSettings.autoJiggleBreasts) + + if (!SizedApparelUtility.CanApplySizedApparel(pawn)) + return; + + + if (SizedApparelSettings.breastsPhysics || ForceUpdateTickAnimation)//SizedApparelSettings.autoJiggleBreasts { - Vector3 velocity; - if (this.prePositionCache != null) - velocity = this.prePositionCache.Value - rootLoc; - else - velocity = Vector3.zero; - - - - float rotation; - if (this.preAngleCache != null) - rotation = this.preAngleCache.Value - angle; - else - rotation = 0; int tick; if (this.preTickCache != null) tick = Find.TickManager.TicksGame - this.preTickCache.Value; else - tick = 1; + tick = Find.TickManager.TicksGame; + + //if tick is not updated, don't update animation. + if (tick == 0) + return; + + Vector3 velocity; + if (this.prePositionCache != null) + velocity = (rootLoc - this.prePositionCache.Value);// /tick + else + velocity = Vector3.zero; + + float rotation; + + if (this.preAngleCache != null) + rotation = angle - this.preAngleCache.Value; + else + rotation = 0; + + float rotAcc = rotation - preRotation; + + + //Log.Message(velocity.ToString() + " , " + preVelocity.ToString()); + //UnityEngine's vector.normalize is safe for zero vector + //(Vector3.Dot(velocity.normalized, preVelocity.normalized)) < 0.2f + + float dotV = Vector3.Dot(velocity.normalized, preVelocity.normalized); + float velocityOffset = (velocity - preVelocity).magnitude; + + //Log.Message(pawn.ToString()); + //Log.Message("rotAcc : " + rotAcc.ToString()); + //Log.Message("Velocity.x : " + velocity.x.ToString()); + //Log.Message("Velocity.z : " + velocity.z.ToString()); + //Log.Message("dotV : " + dotV.ToString()); + //Log.Message("velocityOffset : " + velocityOffset.ToString()); + //&& dotV > 0.4f + if (((preVelocity != Vector3.zero && velocityOffset >= 0.02))|| Mathf.Abs(rotAcc) > 0.5) //(dotV == 0 ? 0:1), Mathf.Abs(dotV) // || Mathf.Abs(rotation) > 20 + { + //tickCache.Add("BreastsJiggleUp", Find.TickManager.TicksGame); + SetBreastJiggle(true,10,true); + + } + else + { + SetBreastJiggle(false,10, false); + } + //cache pre data this.prePositionCache = rootLoc; this.preAngleCache = angle; + this.preRotation = rotation; this.preTickCache = Find.TickManager.TicksGame; + this.preVelocity = velocity; + + + } - SetPoseFromPoseSet(testPose2.RandomElement()); + //SetPoseFromPoseSet(testPose2.RandomElement()); } public bool isApparelGraphicRecordChanged() { - Pawn pawn = parent as Pawn; if (pawn == null) return false; @@ -234,6 +551,111 @@ namespace SizedApparel return false; } + public void DrawAllBodyParts(Vector3 rootLoc, float angle, Rot4 facing, RotDrawMode bodyDrawType, PawnRenderFlags flags, Pawn ___pawn, Mesh bodyMesh) + { + if (this.isDrawAge && (!flags.FlagSet(PawnRenderFlags.Clothes) || !this.hasUnsupportedApparel || SizedApparelUtility.isPawnNaked(___pawn))) //TODO : Move it to CanDraw + { + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawVagina && SizedApparelUtility.CanDrawVagina(___pawn, flags)) + { + //if (this.bodyPartVagina != null) + // this.bodyPartVagina.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Vagina)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + } + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawAnus && SizedApparelUtility.CanDrawAnus(___pawn, flags)) + { + //if (this.bodyPartAnus != null) + // this.bodyPartAnus.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Anus)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + } + + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawBelly && SizedApparelUtility.CanDrawBelly(___pawn, flags)) + { + //if (this.bodyPartBelly != null) + // this.bodyPartBelly.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Belly)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + } + + //Draw Pubic Hair + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawPubicHair && SizedApparelUtility.CanDrawPubicHair(___pawn, flags)) + { + if (this.bodyPartPubicHair != null) + this.bodyPartPubicHair.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.PubicHair)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + } + + + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawUdder && SizedApparelUtility.CanDrawUdder(___pawn, flags)) + { + //if (this.bodyPartUdder != null) + // this.bodyPartUdder.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Udder)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + + } + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawBreasts && SizedApparelUtility.CanDrawBreasts(___pawn, flags) && (SizedApparelSettings.drawSizedApparelBreastsOnlyWorn ? !SizedApparelUtility.isPawnNaked(___pawn, flags) : true)) + { + //if (this.bodyPartBreasts != null) + // this.bodyPartBreasts.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Breasts)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + } + + if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawPenis && SizedApparelUtility.CanDrawPenis(___pawn, flags, true)) + { + + if (SizedApparelSettings.hideBallOfFuta ? !Genital_Helper.is_futa(___pawn) : true) + { + /* + foreach (SizedApparelBodyPart b in this.bodyPartBalls) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + }*/ + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Balls)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + } + /* + foreach (SizedApparelBodyPart p in this.bodyPartPenises) + { + p.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + }*/ + foreach (var b in GetSizedApparelBodyParts(SizedApparelBodyPartOf.Penis)) + { + b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); + } + + }//Draw BodyParts + + //Draw Modular Apparel Parts... TODO...? Is it passible? + if (flags.FlagSet(PawnRenderFlags.Clothes)) + { + + } + + + + + } + + } + //not working public override void PostPostMake() @@ -257,22 +679,20 @@ namespace SizedApparel } */ - } - public void ClearHediffs() + } + public void ClearHediffs() { breastHediff = null; vaginaHediff = null; if(penisHediffs != null) penisHediffs.Clear(); anusHediff = null; - udderHediff = null; } public void ClearBreastCacheValue() { breastHediff = null; breastSeverity = -1; - breastSeverityCapToDraw = 1000; BreastSeverityCache = 0; } public void ClearPenisCacheValue() @@ -288,44 +708,34 @@ namespace SizedApparel } public void ClearGraphics(bool clearBreasts = true) { + //Since Injection of base body is now in Matarial. no need to keep + graphicSourceNaked = null; + graphicSourceFurCovered = null; + graphicSourceRotten = null; + hasGraphicUpdatedBefore = false; graphicbaseBodyNaked = null; graphicbaseBodyRotten = null; + graphicbaseBodyFurCovered = null; + return; //Clear BodyParts - if(clearBreasts) + if (clearBreasts && bodyPartBreasts!= null) bodyPartBreasts.Clear(); - bodyPartAnus.Clear(); - bodyPartBelly.Clear(); - bodyPartVagina.Clear(); + if(bodyPartAnus != null) + bodyPartAnus.Clear(); + if (bodyPartBelly != null) + bodyPartBelly.Clear(); + if (bodyPartVagina != null) + bodyPartVagina.Clear(); + if (bodyPartPubicHair != null) + bodyPartPubicHair.Clear(); + + foreach(var a in bodyAddons) + { + a.Clear(); + } - graphicBreasts = null; - graphicVagina = null; - graphicAnus = null; - if (graphicPenises == null) - graphicPenises = new List(); - else - graphicPenises.Clear(); - if (graphicBallsOfPenises == null) - graphicBallsOfPenises = new List(); - else - graphicBallsOfPenises.Clear(); - graphicBelly = null; - - graphicUdder = null; - graphicUdder_horny = null; - - graphicBreasts_horny = null; - graphicVagina_horny = null; - graphicAnus_horny = null; - if (graphicPenises_horny == null) - graphicPenises_horny = new List(); - else - graphicPenises_horny.Clear(); - if (graphicBalls_horny == null) - graphicBalls_horny = new List(); - else - graphicBalls_horny.Clear(); } public void ClearAll(bool clearGraphics = true) { @@ -340,12 +750,15 @@ namespace SizedApparel needToCheckApparelGraphicRecords = false; } - public void SetDirty(bool clearPawnGraphicSet = false) + public void SetDirty(bool clearPawnGraphicSet = false, bool dirtyHediff = true, bool dirtyApparel = true, bool dirtySkeleton = false, bool dirtyBodyAddons = false) { this.isDirty = true; + this.isHediffDirty = dirtyHediff; + this.isApparelDirty = dirtyApparel; + this.isSkeletonDirty = dirtySkeleton; + this.isBodyAddonDirty = dirtyBodyAddons; if (clearPawnGraphicSet) { - Pawn pawn = parent as Pawn; if (pawn == null) return; if (pawn.Drawer == null) @@ -353,42 +766,29 @@ namespace SizedApparel if (pawn.Drawer.renderer == null) return; pawn.Drawer.renderer.graphics.ClearCache(); - } } - - public void UpdateIfDirty() + public void UpdateRaceSettingData() { - - } - - public void UpdateBodyGraphics() - { - - } - public void UpdateSettingData() - { - Pawn pawn = parent as Pawn; if (pawn == null) return; var loc_raceSetting = SizedApparelSettings.alienRaceSettings.FirstOrDefault((AlienRaceSetting s) => s.raceName == pawn.def.defName); - if (raceSetting == null) + if (loc_raceSetting == null) return; raceSetting = loc_raceSetting; } public void CheckAgeChanged() { - Pawn pawn = parent as Pawn; if (pawn == null) return; if (pawn.ageTracker == null) return; //TODO. Cleanup - UpdateSettingData(); + UpdateRaceSettingData(); if (raceSetting == null) return; @@ -398,44 +798,320 @@ namespace SizedApparel isDrawAge = false; } + public void FindAndApplyBodyGraphic(Pawn pawn, Graphic sourceGraphic, ref Graphic targetGraphicBaseBody, ref Graphic cachedSourceGraphic, string debugName) + { + const string baseBodyString = "_BaseBody"; + string baseBodyStringWithSex; + + if (SizedApparelSettings.useGenderSpecificTexture) + { + if (pawn.gender == Gender.Female) + { + baseBodyStringWithSex = baseBodyString + "F"; + } + else if (pawn.gender == Gender.Male) + { + baseBodyStringWithSex = baseBodyString + "M"; + } + else + { + baseBodyStringWithSex = baseBodyString; // + "N" //Does it need to add N? + } + } + else + baseBodyStringWithSex = baseBodyString; + string targetGraphicPath = null; + if (sourceGraphic != null) + { + //path = path.Insert(Math.Max(path.LastIndexOf('/'), 0), "/CustomPose/"+ customPose); + if (cachedSourceGraphic == null) + cachedSourceGraphic = sourceGraphic; + targetGraphicPath = cachedSourceGraphic.path; + + if (customPose != null) + targetGraphicPath = targetGraphicPath.Insert(Math.Max(targetGraphicPath.LastIndexOf('/'), 0), "/CustomPose/" + customPose); + + if (!targetGraphicPath.Contains(baseBodyString)) + { + if (SizedApparelSettings.useGenderSpecificTexture && pawn.gender != Gender.None) + { + if (targetGraphicBaseBody == null) + { + if (ContentFinder.Get((targetGraphicPath + baseBodyStringWithSex + "_south"), false) != null) + { + //cachedSourceGraphic = sourceGraphic; + Shader shader = sourceGraphic.Shader; + //if (!ShaderUtility.SupportsMaskTex(shader)) + // shader = ShaderDatabase.CutoutSkinOverlay; + targetGraphicBaseBody = GraphicDatabase.Get(targetGraphicPath + baseBodyStringWithSex, shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); + //sourceGraphic = targetGraphicBaseBody; + } + else if (customPose != null) + { + targetGraphicPath = sourceGraphic.path; + if (ContentFinder.Get((targetGraphicPath + baseBodyStringWithSex + "_south"), false) != null) + { + //cachedSourceGraphic = sourceGraphic; + Shader shader = sourceGraphic.Shader; + //if (!ShaderUtility.SupportsMaskTex(shader)) + // shader = ShaderDatabase.CutoutSkinOverlay; + targetGraphicBaseBody = GraphicDatabase.Get(targetGraphicPath + baseBodyStringWithSex, shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); + //sourceGraphic = targetGraphicBaseBody; + } + else + { + if (SizedApparelSettings.Debug) + Log.Warning("[SizedApparel] Missing BaseBodyTexture for "+ debugName + " Graphic: " + targetGraphicPath + baseBodyStringWithSex + "_south"); + } + } + } + } + if (targetGraphicBaseBody == null) + { + if (ContentFinder.Get((targetGraphicPath + baseBodyString + "_south"), false) != null) + { + // cachedSourceGraphic = sourceGraphic; + Shader shader = sourceGraphic.Shader; + //if (!ShaderUtility.SupportsMaskTex(shader)) + // shader = ShaderDatabase.CutoutSkinOverlay; + targetGraphicBaseBody = GraphicDatabase.Get(targetGraphicPath + baseBodyString, shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); + //sourceGraphic = targetGraphicBaseBody; + } + else if (customPose != null) + { + targetGraphicPath = sourceGraphic.path; + if (ContentFinder.Get((targetGraphicPath + baseBodyString + "_south"), false) != null) + { + //cachedSourceGraphic = sourceGraphic; + Shader shader = sourceGraphic.Shader; + //if (!ShaderUtility.SupportsMaskTex(shader)) + // shader = ShaderDatabase.CutoutSkinOverlay; + targetGraphicBaseBody = GraphicDatabase.Get(targetGraphicPath + baseBodyString, shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); + //sourceGraphic = targetGraphicBaseBody; + } + else + { + if (SizedApparelSettings.Debug) + Log.Warning("[SizedApparel] Missing BaseBodyTexture for " + debugName + " Graphic: " + targetGraphicPath + baseBodyString + "_south"); + } + + } + } + + } + else + targetGraphicBaseBody = sourceGraphic; + + } + + } + public void Update(bool cache = true, bool fromGraphicRecord = true, bool updateGraphics = true, bool CheckApparel = true) { + if (cache) + recentClothFlag = CheckApparel; + + + isDirty = false; bool flag = fromGraphicRecord; needToCheckApparelGraphicRecords = false; //flag = false; //TODO:fromGraphicRecord is forced not to do for a while. it will update later - hasUpdateBefore = true; - Pawn pawn = parent as Pawn; - if (pawn == null) + + + + UpdateRaceSettingData(); + + + + if (!hasUpdateBefore) + { + InitSkeleton(); + InitBodyAddons(); + hasUpdateBefore = true; + } + else + { + //check is bodytype changed + if(cachedBodytype != pawn.story?.bodyType?.defName) + { + isSkeletonDirty = true; + } + if (isSkeletonDirty) + { + InitSkeleton(); + + if (isBodyAddonDirty) + InitBodyAddons(); + else + ResetBodyAddonBoneLink(); + } + else + { + if (isBodyAddonDirty) + InitBodyAddons(); + } + } + + if (skeleton == null) + { + if (Find.CurrentMap != null) + return; + } + + + if (!SizedApparelUtility.CanApplySizedApparel(pawn)) return; + + + if (pubicHairDef == null) + { + pubicHairDef = SizedApparelUtility.GetRandomPubicHair(); + } + + if (SizedApparelSettings.Debug) Log.Message("[SizedApparel] Updating Component of " + pawn.Name); if (updateGraphics) { ClearGraphics(); - ClearHediffs(); + //ClearHediffs(); } + + + + //float breastSeverityCapped = 1000; + string bodyTypeDefName = null; + if (pawn.story != null) + bodyTypeDefName = pawn.story.bodyType?.defName; + float bellySeverity = 0; + + if (isHediffDirty) //Update Hediff Data + { + ClearHediffs(); + + + if(SizedApparelSettings.drawPenis || SizedApparelSettings.drawVagina || SizedApparelSettings.drawAnus) + { + BodyPartRecord genitalPart = Genital_Helper.get_genitalsBPR(pawn); + if (genitalPart != null) + { + var genitalList = Genital_Helper.get_PartsHediffList(pawn, genitalPart); + if (!genitalList.NullOrEmpty()) + { + if (SizedApparelSettings.Debug) + { + foreach (var g in genitalList) + { + Log.Message(" [SizedApparel] " + pawn.Name + "has hediff in genital (" + g.def.defName + ")"); + } + } + + //penisHediffs = genitalList.FindAll((Hediff h) => SizedApparelUtility.isPenis(h.def.defName)); + penisHediffs = genitalList.FindAll((Hediff h) => Genital_Helper.is_penis(h)); + //vaginaHediff = genitalList.FirstOrDefault((Hediff h) => SizedApparelUtility.isVagina(h.def.defName)); + vaginaHediff = genitalList.FirstOrDefault((Hediff h) => Genital_Helper.is_vagina(h)); + + } + } + } + + if (SizedApparelSettings.drawBelly) + { + //EggImplement as Pregnant + //need to Optimize... TODO... + List pregnancies = pawn.health?.hediffSet?.hediffs?.FindAll((Hediff h) => SizedApparelUtility.isPragnencyHediff(h) || SizedApparelUtility.isRJWEggHediff(h));//pregnancy and pregnant. has some issue with "pregnancy mood" + if (!pregnancies.NullOrEmpty()) + { + foreach (Hediff h in pregnancies) + { + //Set Labor Belly as Big Belly. + + //Code for 1.4 + /* + if (h.def == HediffDefOf.PregnancyLabor || h.def == HediffDefOf.PregnancyLaborPushing) + bellySeverity = Math.Max(bellySeverity, 1f); + else + bellySeverity = Math.Max(bellySeverity, h.Severity); + */ + bellySeverity = Math.Max(bellySeverity, h.Severity); + } + } + + //Licentia Lab Hediff + if (SizedApparelPatch.LicentiaActive) + { + Hediff cumflation = pawn.health?.hediffSet?.GetFirstHediffOfDef(HediffDef.Named("Cumflation")); + Hediff cumstuffed = pawn.health?.hediffSet?.GetFirstHediffOfDef(HediffDef.Named("Cumstuffed")); + bellySeverity += cumflation != null ? cumflation.Severity : 0; + bellySeverity += cumstuffed != null ? cumstuffed.Severity : 0; + } + + + } + + + + } + CheckAgeChanged(); - SizedApparelUtility.GetBreastSeverity(pawn, out breastSeverity, out breastHediff); + if (SizedApparelSettings.drawBreasts) + { + SizedApparelUtility.GetBreastSeverity(pawn, out breastSeverity, out breastHediff); + + } + if (breastHediff != null) { - BreastSeverityCache = 1000; - if (CheckApparel) + + //get nipple color from Menstruation. + if (SizedApparelPatch.MenstruationActive) + { + nippleColor = Patch_Menstruation.GetNippleColor(breastHediff); + } + + + + if (pawn.gender == Gender.Male && !SizedApparelSettings.ApplyApparelPatchForMale) + { + CheckApparel = false; + } + + + if (CheckApparel || this.isApparelDirty) + { hasUnsupportedApparel = SizedApparelUtility.hasUnSupportedApparelFromWornData(pawn, breastSeverity, breastHediff, true, flag); + + } else + { hasUnsupportedApparel = false; + + } //float validBreastTextureSeverity = SizedApparelUtility.GetBreastSeverityValidTextures(pawn, breastHediff); - if (hasUnsupportedApparel) - BreastSeverityCache = breastSeverity; + if (SizedApparelSettings.useBreastSizeCapForApparels) // && hasUnsupportedApparel + { + BreastSeverityCache = Math.Min(BreastSeverityCache, breastSeverity); + + } + else + { + BreastSeverityCache = 1000; + } + //if (SizedApparelSettings.useBreastSizeCapForApparels) //SizedApparelSettings.useBreastSizeCapForApparels //wip + // breastSeverityCapped = Math.Min(BreastSeverityCache, breastSeverityCapped); + + //float validBreastTextureSeverity = SizedApparelUtility.GetBreastSeverityValidTextures(pawn, breastHediff); //breast cache forApparel brests Check. This ignore variation! //SizedApparelMod.CheckAndLoadAlienRaces(); - + var key = new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType?.defName, breastHediff.def.defName, "Breasts", pawn.gender ,SizedApparelUtility.BreastSeverityInt(breastHediff.Severity)); var raceSetting = SizedApparelSettings.alienRaceSettings.FirstOrDefault((AlienRaceSetting s) => s.raceName == key.raceName); + //TODO? Remove ValidBreastsTextureCheck... float validBreastTextureSeverity = SizedApparelUtility.BreastSizeIndexToSeverity(SizedApparelsDatabase.GetSupportedBodyPartPath(key,true,"Breasts","Breasts").size); //if (validBreastTextureSeverity < -5 && SizedApparelSettings.alienRaceSettings.settings[key.raceName].asHumanlike)//old: SizedApparelSettings.UnsupportedRaceToUseHumanlike // validBreastTextureSeverity = SizedApparelUtility.GetBreastSeverityValidTextures(pawn, breastHediff, "Humanlike"); @@ -447,28 +1123,7 @@ namespace SizedApparel //since rjw race support's part name are too variation, not handling it. - BodyPartRecord genitalPart = Genital_Helper.get_genitalsBPR(pawn); - if (genitalPart != null) - { - var genitalList = Genital_Helper.get_PartsHediffList(pawn, genitalPart); - if (!genitalList.NullOrEmpty()) - { - if (SizedApparelSettings.Debug) - { - foreach (var g in genitalList) - { - Log.Message(" [SizedApparel] "+ pawn.Name + "has hediff in genital (" + g.def.defName + ")"); - } - } - //penisHediffs = genitalList.FindAll((Hediff h) => SizedApparelUtility.isPenis(h.def.defName)); - penisHediffs = genitalList.FindAll((Hediff h) => Genital_Helper.is_penis(h)); - //vaginaHediff = genitalList.FirstOrDefault((Hediff h) => SizedApparelUtility.isVagina(h.def.defName)); - vaginaHediff = genitalList.FirstOrDefault((Hediff h) => Genital_Helper.is_vagina(h)); - - } - - } var anusList = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)); if(!anusList.NullOrEmpty()) anusHediff = anusList.FirstOrDefault((Hediff h) => h.def.defName.ToLower().Contains("anus")); @@ -480,35 +1135,39 @@ namespace SizedApparel if (updateGraphics) { - string baseBodyString = "_BaseBody"; - string baseBodyStringWithSex; - - if (SizedApparelSettings.useGenderSpecificTexture) - { - if (pawn.gender == Gender.Female) - { - baseBodyStringWithSex = baseBodyString + "F"; - } - else if (pawn.gender == Gender.Male) - { - baseBodyStringWithSex = baseBodyString + "M"; - } - else - { - baseBodyStringWithSex = baseBodyString; // + "N" //Does it need to add N? - } - } - else - baseBodyStringWithSex = baseBodyString; - if (pawnRenderer != null) { //pawnRenderer.ResolveAllGraphics(); + //TODO Use Function To Make Clear Code + /* + FindAndApplyBodyGraphic(pawn, pawnRenderer.nakedGraphic, ref graphicbaseBodyNaked, ref graphicSourceNaked,"Naked"); + FindAndApplyBodyGraphic(pawn, pawnRenderer.rottingGraphic, ref graphicbaseBodyRotten, ref graphicSourceRotten, "Rotting"); + FindAndApplyBodyGraphic(pawn, pawnRenderer.nakedGraphic, ref graphicbaseBodyFurCovered, ref graphicSourceFurCovered, "FurCuvered"); + */ + const string baseBodyString = "_BaseBody"; + string baseBodyStringWithSex; + + if (SizedApparelSettings.useGenderSpecificTexture) + { + if (pawn.gender == Gender.Female) + { + baseBodyStringWithSex = baseBodyString + "F"; + } + else if (pawn.gender == Gender.Male) + { + baseBodyStringWithSex = baseBodyString + "M"; + } + else + { + baseBodyStringWithSex = baseBodyString; // + "N" //Does it need to add N? + } + } + else + baseBodyStringWithSex = baseBodyString; - //TODO. Move BodyTextureSearch to utility string nakedGraphicPath = null; if (pawnRenderer.nakedGraphic != null) { @@ -522,20 +1181,10 @@ namespace SizedApparel if (!nakedGraphicPath.Contains(baseBodyString)) { - if (graphicbaseBodyNaked == null) + if (SizedApparelSettings.useGenderSpecificTexture & pawn.gender != Gender.None) { - if (ContentFinder.Get((nakedGraphicPath + baseBodyStringWithSex + "_south"), false) != null) + if (graphicbaseBodyNaked == null) { - //graphicSourceNaked = pawnRenderer.nakedGraphic; - Shader shader = pawnRenderer.nakedGraphic.Shader; - //if (!ShaderUtility.SupportsMaskTex(shader)) - // shader = ShaderDatabase.CutoutSkinOverlay; - graphicbaseBodyNaked = GraphicDatabase.Get(nakedGraphicPath + baseBodyStringWithSex, shader, pawnRenderer.nakedGraphic.drawSize, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo, pawnRenderer.nakedGraphic.data); - //pawnRenderer.nakedGraphic = graphicbaseBodyNaked; - } - else if (customPose != null) - { - nakedGraphicPath = pawnRenderer.nakedGraphic.path; if (ContentFinder.Get((nakedGraphicPath + baseBodyStringWithSex + "_south"), false) != null) { //graphicSourceNaked = pawnRenderer.nakedGraphic; @@ -545,10 +1194,23 @@ namespace SizedApparel graphicbaseBodyNaked = GraphicDatabase.Get(nakedGraphicPath + baseBodyStringWithSex, shader, pawnRenderer.nakedGraphic.drawSize, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo, pawnRenderer.nakedGraphic.data); //pawnRenderer.nakedGraphic = graphicbaseBodyNaked; } - else + else if (customPose != null) { - if (SizedApparelSettings.Debug) - Log.Warning("[SizedApparel] Missing BaseBodyTexture for naked Graphic: " + nakedGraphicPath + baseBodyStringWithSex + "_south"); + nakedGraphicPath = pawnRenderer.nakedGraphic.path; + if (ContentFinder.Get((nakedGraphicPath + baseBodyStringWithSex + "_south"), false) != null) + { + //graphicSourceNaked = pawnRenderer.nakedGraphic; + Shader shader = pawnRenderer.nakedGraphic.Shader; + //if (!ShaderUtility.SupportsMaskTex(shader)) + // shader = ShaderDatabase.CutoutSkinOverlay; + graphicbaseBodyNaked = GraphicDatabase.Get(nakedGraphicPath + baseBodyStringWithSex, shader, pawnRenderer.nakedGraphic.drawSize, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo, pawnRenderer.nakedGraphic.data); + //pawnRenderer.nakedGraphic = graphicbaseBodyNaked; + } + else + { + if (SizedApparelSettings.Debug) + Log.Warning("[SizedApparel] Missing BaseBodyTexture for naked Graphic: " + nakedGraphicPath + baseBodyStringWithSex + "_south"); + } } } } @@ -589,6 +1251,18 @@ namespace SizedApparel graphicbaseBodyNaked = pawnRenderer.nakedGraphic; } + //Finding Texture Points + if (false && graphicbaseBodyNaked != null) + { + SizedApparelTexturePointDef PointsDef = DefDatabase.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphicbaseBodyNaked.path); + if (SizedApparelSettings.Debug && PointsDef != null) + { + Log.Message("[SizedApparel] : NakedBaseBody Texture Points Def Found : " + PointsDef.defName); + } + baseBodyNakedPoints = PointsDef; + } + else + baseBodyNakedPoints = null; string rottingGraphicPath = null; if (pawnRenderer.rottingGraphic != null) @@ -628,7 +1302,7 @@ namespace SizedApparel else { if (SizedApparelSettings.Debug) - Log.Warning("[SizedApparel] Missing BaseBodyTexture for naked Graphic: " + rottingGraphicPath + baseBodyStringWithSex + "_south"); + Log.Warning("[SizedApparel] Missing BaseBodyTexture for rotting Graphic: " + rottingGraphicPath + baseBodyStringWithSex + "_south"); } } if (graphicbaseBodyRotten == null) @@ -657,7 +1331,7 @@ namespace SizedApparel else { if (SizedApparelSettings.Debug) - Log.Warning("[SizedApparel] Missing BaseBodyTexture for naked Graphic: " + rottingGraphicPath + baseBodyString + "_south"); + Log.Warning("[SizedApparel] Missing BaseBodyTexture for rotting Graphic: " + rottingGraphicPath + baseBodyString + "_south"); } } } @@ -667,6 +1341,35 @@ namespace SizedApparel graphicbaseBodyRotten = pawnRenderer.rottingGraphic; } + //Finding Texture Points + if (false && graphicbaseBodyRotten != null) + { + SizedApparelTexturePointDef PointsDef = DefDatabase.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphicbaseBodyRotten.path); + if (SizedApparelSettings.Debug && PointsDef != null) + { + Log.Message("[SizedApparel] : RottenBaseBody Texture Points Def Found : " + PointsDef.defName); + } + baseBodyRottenPoints = PointsDef; + } + else + baseBodyRottenPoints = null; + + + string furCoveredGraphicPath = null; + + //Finding Texture Points + if (false && graphicbaseBodyFurCovered != null) + { + SizedApparelTexturePointDef PointsDef = DefDatabase.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphicbaseBodyFurCovered.path); + if (SizedApparelSettings.Debug && PointsDef != null) + { + Log.Message("[SizedApparel] : FurCoveredBaseBody Texture Points Def Found : " + PointsDef.defName); + } + baseBodyFurCoveredPoints = PointsDef; + } + else + baseBodyFurCoveredPoints = null; + /* //Try to find sized Body if it's valid @@ -763,361 +1466,309 @@ namespace SizedApparel //graphicBreasts = SizedApparelUtility.GetBodyPartGraphic(pawn, breastHediff, true, "Breasts", "Breasts"); //if(graphicBreasts == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) // graphicBreasts = SizedApparelUtility.GetBodyPartGraphic(pawn, breastHediff, true, "Breasts", "Breasts", false, true, "Humanlike"); - string bodyPartPath = null; - SizedApparelsDatabase.PathAndSize cachedPathAndSize; - float breastSeverityCapped = breastSeverity; - if (SizedApparelSettings.useBreastSizeCapForApparels) //SizedApparelSettings.useBreastSizeCapForApparels //wip - breastSeverityCapped = Math.Min(BreastSeverityCache, breastSeverityCapped); - - string bodyTypeDefName = null; - if (pawn.story != null) - bodyTypeDefName = pawn.story.bodyType?.defName; - - if(breastHediff != null) + if (SizedApparelSettings.drawBodyParts)//body parts update { - var breastvar = breastHediff.TryGetComp(); - - bodyPartBreasts.SetHediffData(breastHediff.def.defName, SizedApparelUtility.BreastSeverityInt(breastHediff.Severity), SizedApparelUtility.BreastSeverityInt(breastSeverityCapped), breastvar?.variation); - bodyPartBreasts.UpdateGraphic(); - - - } - - - - - - if (udderHediff != null) - { - var udderVar = udderHediff.TryGetComp(); - - bodyPartUdder.SetHediffData(udderHediff.def.defName, SizedApparelUtility.BreastSeverityInt(udderHediff.Severity), 1000, udderVar?.variation); - bodyPartUdder.UpdateGraphic(); - - } - else - bodyPartUdder.SetHediffData(null, -1); - - - - float bellySeverity = 0; - List pregnancies = pawn.health?.hediffSet?.hediffs?.FindAll((Hediff h) => h.def.defName.ToLower().Contains("pregnancy")); - if (!pregnancies.NullOrEmpty()) - { - foreach (Hediff h in pregnancies) + if (SizedApparelSettings.drawBreasts) { - bellySeverity = Math.Max(bellySeverity, h.Severity); - } - } - /* - List eggs = pawn.health?.hediffSet?.hediffs?.FindAll((Hediff h) => h.def.defName.ToLower().Contains("rjw") && h.def.defName.ToLower().Contains("egg")); - if (!eggs.NullOrEmpty()) - { - foreach (Hediff h in eggs) - { - bellySeverity = Math.Max(bellySeverity, h.Severity); - } - } - List mech = pawn.health?.hediffSet?.hediffs?.FindAll((Hediff h) => h.def.defName.ToLower().Contains("rjw") && h.def.defName.ToLower().Contains("mech")); - if (!mech.NullOrEmpty()) - { - foreach (Hediff h in mech) - { - bellySeverity = Math.Max(bellySeverity, h.Severity); - } - } - List parasite = pawn.health?.hediffSet?.hediffs?.FindAll((Hediff h) => h.def.defName.ToLower().Contains("parasite")); - if (!parasite.NullOrEmpty()) - { - foreach (Hediff h in parasite) - { - bellySeverity = Math.Max(bellySeverity, h.Severity); - } - }*/ - //Licentia Lab Hediff - if (SizedApparelPatch.LicentiaActive) - { - Hediff cumflation = pawn.health?.hediffSet?.GetFirstHediffOfDef(HediffDef.Named("Cumflation")); - Hediff cumstuffed = pawn.health?.hediffSet?.GetFirstHediffOfDef(HediffDef.Named("Cumstuffed")); - bellySeverity += cumflation != null ? cumflation.Severity : 0; - bellySeverity += cumstuffed != null ? cumstuffed.Severity : 0; - } - - if (bellySeverity >= 0) - { - //var bellyVar = breastHediff.TryGetComp(); - string BellyVar = null; - - bodyPartBelly.SetHediffData("BellyBulge", SizedApparelUtility.PrivatePartSeverityInt(bellySeverity),1000, BellyVar); - bodyPartBelly.UpdateGraphic(); - /* - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, "BellyBulge", "Belly", SizedApparelUtility.PrivatePartSeverityInt(bellySeverity), false), false, "Belly", "BellyBulge"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) - { - if (cachedPathAndSize.isUnsupportedHumanlikePath) + if (breastHediff != null) { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - graphicBelly = GraphicDatabase.Get(bodyPartPath); + var breastvar = breastHediff.TryGetComp(); + + foreach(var addon in bodyAddons) + { + if(addon.bodyPartOf == SizedApparelBodyPartOf.Breasts) + { + addon.SetHediffData(breastHediff.def.defName, SizedApparelUtility.BreastSeverityInt(breastHediff.Severity), SizedApparelUtility.BreastSeverityInt(BreastSeverityCache), breastvar?.variation); + addon.SetBone(skeleton?.FindBone("Breasts")); + addon.UpdateGraphic(); + } + } + //bodyPartBreasts.SetHediffData(breastHediff.def.defName, SizedApparelUtility.BreastSeverityInt(breastHediff.Severity), SizedApparelUtility.BreastSeverityInt(breastSeverityCapped), breastvar?.variation); + //bodyPartBreasts.UpdateGraphic(); } else - graphicBelly = GraphicDatabase.Get(bodyPartPath); - }*/ - //if (graphicVagina_horny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, vaginaHediff.def.defName, "Vagina", SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity), true), false, "Vagina", "Vagina", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // graphicVagina_horny = GraphicDatabase.Get(bodyPartPath); - //} - } - - - - //graphicVagina = SizedApparelUtility.GetBodyPartGraphic(pawn, vaginaHediff, false, "Vagina", "Vagina"); - //if(graphicVagina == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - // graphicVagina = SizedApparelUtility.GetBodyPartGraphic(pawn, vaginaHediff, false, "Vagina", "Vagina", false, true,"Humanlike"); - if (vaginaHediff != null) - { - var vaginaVar = vaginaHediff.TryGetComp(); - bodyPartVagina.SetHediffData(vaginaHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity),1000, vaginaVar?.variation); - bodyPartVagina.UpdateGraphic(); - /* - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, vaginaHediff.def.defName, "Vagina", SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity), false), false, "Vagina", "Vagina"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) - { - if (cachedPathAndSize.isUnsupportedHumanlikePath) { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - graphicVagina = GraphicDatabase.Get(bodyPartPath); + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Breasts) + { + addon.SetHediffData(null, -1); + } + } } - else - graphicVagina = GraphicDatabase.Get(bodyPartPath); + } - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, vaginaHediff.def.defName, "Vagina", SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity), true), false, "Vagina", "Vagina"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) + + + + + if (SizedApparelSettings.drawUdder) { - if (cachedPathAndSize.isUnsupportedHumanlikePath) + if (udderHediff != null) { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - graphicVagina_horny = GraphicDatabase.Get(bodyPartPath); + var udderVar = udderHediff.TryGetComp(); + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Udder) + { + addon.SetHediffData(udderHediff.def.defName, SizedApparelUtility.BreastSeverityInt(udderHediff.Severity), 1000, udderVar?.variation); + addon.SetBone(skeleton?.FindBone("Udder")); + addon.UpdateGraphic(); + } + } + //bodyPartUdder.SetHediffData(udderHediff.def.defName, SizedApparelUtility.BreastSeverityInt(udderHediff.Severity), 1000, udderVar?.variation); + //bodyPartUdder.UpdateGraphic(); + } else - graphicVagina_horny = GraphicDatabase.Get(bodyPartPath); - }*/ - //if (graphicVagina_horny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, vaginaHediff.def.defName, "Vagina", SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity), true), false, "Vagina", "Vagina", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // graphicVagina_horny = GraphicDatabase.Get(bodyPartPath); - //} - } - else - bodyPartVagina.SetHediffData(null, -1); - - //graphicVagina_horny = SizedApparelUtility.GetBodyPartGraphic(pawn, vaginaHediff, false, "Vagina", "Vagina", true); - //if(graphicVagina_horny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - // graphicVagina_horny = SizedApparelUtility.GetBodyPartGraphic(pawn, vaginaHediff, false, "Vagina", "Vagina", true, true, "Humanlike"); - /* - graphicPenises.Clear(); - graphicPenises_horny.Clear(); - graphicBallsOfPenises.Clear(); - */ - - //TODO: Optimize - bodyPartPenises.Clear(); - bodyPartBalls.Clear(); - if (penisHediffs != null) - { + { + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Udder) + { + addon.SetHediffData(null, -1); + } + } + } - for (int i = 0; i < penisHediffs.Count; i++) + } + + + if (SizedApparelSettings.drawBelly) { - Hediff penisHediff = penisHediffs[i]; - float offsetX = 0; // right and left - float offsetZ = 0; // up and down - float t = (i + 1f) / (penisHediffs.Count + 1); - offsetX = Mathf.Lerp(-0.05f, 0.05f, t); - offsetZ = Mathf.Lerp(-0.02f, 0.02f, t); - - if (penisHediff == null) - continue; - - var penisVar = penisHediff.TryGetComp(); - - SizedApparelBodyPart penis = new SizedApparelBodyPart(pawn, "Penis", SizedApparelBodyPartOf.Penis, "Penis", false, false); - penis.SetDepthOffsets(0.0108f, 0.0025f, 0.0108f, 0.0108f); - penis.SetPositionOffsets(new Vector2(offsetX, 0), new Vector2(-offsetX, 0), new Vector2(offsetX, offsetZ), new Vector2(offsetX, -offsetZ)); - penis.SetHediffData(penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity),1000,penisVar?.variation); - penis.UpdateGraphic(); - bodyPartPenises.Add(penis); - SizedApparelBodyPart balls = new SizedApparelBodyPart(pawn, "Balls", SizedApparelBodyPartOf.Penis, "Penis", false, false, "Penis/Balls"); - balls.SetDepthOffsets(0.0096f, 0.0085f, 0.0096f, 0.0096f); - balls.SetPositionOffsets(new Vector2(offsetX, 0), new Vector2(-offsetX, 0), new Vector2(offsetX, offsetZ), new Vector2(offsetX, -offsetZ)); - balls.SetHediffData(penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), 1000, penisVar?.variation); - balls.UpdateGraphic(); - bodyPartBalls.Add(balls); + if (bellySeverity >= 0) + { + //var bellyVar = breastHediff.GetComp(); + string BellyVar = null; + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Belly) + { + addon.SetHediffData("BellyBulge", SizedApparelUtility.PrivatePartSeverityInt(bellySeverity), 1000, BellyVar); + addon.SetBone(skeleton?.FindBone("Belly")); + addon.UpdateGraphic(); + } + } + //bodyPartBelly.SetHediffData("BellyBulge", SizedApparelUtility.PrivatePartSeverityInt(bellySeverity), 1000, BellyVar); + //bodyPartBelly.UpdateGraphic(); + } + else + { + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Belly) + { + addon.SetHediffData(null, -1); + } + } + } + + } + + + if (SizedApparelSettings.drawVagina) + { + if (vaginaHediff != null) + { + var vaginaVar = vaginaHediff.TryGetComp(); + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Vagina) + { + addon.SetHediffData(vaginaHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity), 1000, vaginaVar?.variation); + addon.SetBone(skeleton?.FindBone("Vagina")); + addon.UpdateGraphic(); + + } + } + //bodyPartVagina.SetHediffData(vaginaHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(vaginaHediff.Severity), 1000, vaginaVar?.variation); + //bodyPartVagina.UpdateGraphic(); + + } + else + { + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Vagina) + { + addon.SetHediffData(null, -1); + } + } + } + } + + if (SizedApparelSettings.drawPubicHair) + { + if (pubicHairDef != null && pubicHairDef.defName != "None") // pubicHairDef != null // for testing + { + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.PubicHair) + { + addon.SetHediffData(pubicHairDef.defName, 0, 1000, null); + addon.SetBone(skeleton?.FindBone("PubicHair")); + addon.UpdateGraphic(); + } + } + + //bodyPartPubicHair.SetHediffData(pubicHairDef.defName, 0, 1000, null); + //bodyPartPubicHair.UpdateGraphic(); + } + else + { + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.PubicHair) + { + addon.SetHediffData(null, -1); + } + } + } + } + + if (SizedApparelSettings.drawPenis) + { + //TODO: Optimize.... memory leak issue? + //bodyPartPenises.Clear(); + //bodyPartBalls.Clear(); + if (!penisHediffs.NullOrEmpty()) + { + var penisHediff = penisHediffs[0]; + + if (penisHediff != null) + { + var penisVar = penisHediff.TryGetComp(); + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Penis) + { + addon.SetHediffData(penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), 1000, penisVar?.variation); + addon.SetBone(skeleton?.FindBone("Penis")); + addon.UpdateGraphic(); + } + if (addon.bodyPartOf == SizedApparelBodyPartOf.Balls) + { + addon.SetHediffData(penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), 1000, penisVar?.variation); + addon.SetBone(skeleton?.FindBone("Balls")); + addon.UpdateGraphic(); + } + } + } + else + { + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Penis) + { + addon.SetHediffData(null, -1); + } + if (addon.bodyPartOf == SizedApparelBodyPartOf.Balls) + { + addon.SetHediffData(null, -1); + } + } + } + + + // Multiple Penis Drawing. obsolte + /* + for (int i = 0; i < penisHediffs.Count; i++) + { + penisHediff = penisHediffs[i]; + float offsetX = 0; // right and left + float offsetZ = 0; // up and down + float t = (i + 1f) / (penisHediffs.Count + 1); + offsetX = Mathf.Lerp(-0.05f, 0.05f, t); + offsetZ = Mathf.Lerp(-0.02f, 0.02f, t); + + if (penisHediff == null) + continue; + + Bone penisBone = null; + Bone ballsBone = null; + if(skeleton != null) + { + penisBone = skeleton.FindBone("Penis"); + ballsBone = skeleton.FindBone("Balls"); + if (ballsBone == null) + ballsBone = penisBone; + } + + + + var penisVar = penisHediff.TryGetComp(); + + SizedApparelBodyPart penis = new SizedApparelBodyPart(pawn, this, "Penis", SizedApparelBodyPartOf.Penis, "Penis", false, false, null,ColorType.Skin, penisBone); + penis.SetDepthOffsets(0.0108f, 0.0025f, 0.0108f, 0.0108f); + penis.SetPositionOffsets(new Vector2(offsetX, 0), new Vector2(-offsetX, 0), new Vector2(offsetX, offsetZ), new Vector2(offsetX, -offsetZ)); + penis.SetHediffData(penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), 1000, penisVar?.variation); + penis.centeredTexture = true; // Test Bone + penis.UpdateGraphic(); + bodyPartPenises.Add(penis); + + SizedApparelBodyPart balls = new SizedApparelBodyPart(pawn, this, "Balls", SizedApparelBodyPartOf.Balls, "Penis", false, false, "Penis/Balls", ColorType.Skin, ballsBone); + balls.SetDepthOffsets(0.0096f, 0.0085f, 0.0096f, 0.0096f); + balls.SetPositionOffsets(new Vector2(offsetX, 0), new Vector2(-offsetX, 0), new Vector2(offsetX, offsetZ), new Vector2(offsetX, -offsetZ)); + balls.SetHediffData(penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), 1000, penisVar?.variation); + balls.centeredTexture = true; // Test Bone + balls.UpdateGraphic(); + bodyPartBalls.Add(balls); + */ + + } + } + + else + { + bodyPartPenises.Clear(); + bodyPartBalls.Clear(); + } + + if (SizedApparelSettings.drawAnus) + { /* - Graphic penisGraphic = SizedApparelUtility.GetBodyPartGraphic(pawn, penisHediff, false, "Penis", "Penis"); - if (penisGraphic == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - penisGraphic = SizedApparelUtility.GetBodyPartGraphic(pawn, penisHediff, false, "Penis", "Penis", false, true, "Humanlike"); + graphicAnus = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus"); + if (graphicAnus == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) + graphicAnus = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus", false, true, "Humanlike"); - Graphic penisGraphicHorny = SizedApparelUtility.GetBodyPartGraphic(pawn, penisHediff, false, "Penis", "Penis", true); - if (penisGraphicHorny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - penisGraphicHorny = SizedApparelUtility.GetBodyPartGraphic(pawn, penisHediff, false, "Penis", "Penis", true, true, "Humanlike"); + graphicAnus_horny = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus", true); + if (graphicAnus_horny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) + graphicAnus_horny = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus", true, true, "Humanlike"); */ - /* - Graphic penisGraphic = null; - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, penisHediff.def.defName, "Penis", SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), false), false, "Penis", "Penis"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) + if (anusHediff != null) { - if (cachedPathAndSize.isUnsupportedHumanlikePath) + var anusVar = anusHediff.TryGetComp(); + foreach (var addon in bodyAddons) { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - penisGraphic = GraphicDatabase.Get(bodyPartPath); + if (addon.bodyPartOf == SizedApparelBodyPartOf.Anus) + { + addon.SetHediffData(anusHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(anusHediff.Severity), 1000, anusVar?.variation); + addon.SetBone(skeleton?.FindBone("Anus")); + addon.UpdateGraphic(); + } } - else - penisGraphic = GraphicDatabase.Get(bodyPartPath); - } - //if (penisGraphic == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, penisHediff.def.defName, "Penis", SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), false), false, "Penis", "Penis", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // penisGraphic = GraphicDatabase.Get(bodyPartPath); - //} - Graphic penisGraphicHorny = null; - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, penisHediff.def.defName, "Penis", SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), true), false, "Penis", "Penis"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) - { - if (cachedPathAndSize.isUnsupportedHumanlikePath) - { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - penisGraphicHorny = GraphicDatabase.Get(bodyPartPath); - } - else - penisGraphicHorny = GraphicDatabase.Get(bodyPartPath); - } - //if (penisGraphicHorny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, penisHediff.def.defName, "Penis", SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), true), false, "Penis", "Penis", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // penisGraphicHorny = GraphicDatabase.Get(bodyPartPath); - //} - - //balls are no need horny graphic. it wiil share sametime - - //Graphic ballGraphic = SizedApparelUtility.GetBodyPartGraphic(pawn, penisHediff, false, "Penis/Balls", "Penis", false); - //if (ballGraphic == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - // ballGraphic = SizedApparelUtility.GetBodyPartGraphic(pawn, penisHediff, false, "Penis/Balls", "Penis", false, true, "Humanlike"); - - - Graphic ballGraphic = null; - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, "Penis/Balls", penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), false), false, "Penis/Balls", "Penis"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) - { - if (cachedPathAndSize.isUnsupportedHumanlikePath) - { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - ballGraphic = GraphicDatabase.Get(bodyPartPath); - } - else - ballGraphic = GraphicDatabase.Get(bodyPartPath); - } - //if (ballGraphic == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, "Penis/Balls", penisHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(penisHediff.Severity), false), false, "Penis/Balls", "Penis", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // ballGraphic = GraphicDatabase.Get(bodyPartPath); - //} - - - if (true)//penisGraphic != null - { - graphicPenises.Add(penisGraphic); - graphicPenises_horny.Add(penisGraphicHorny); - graphicBallsOfPenises.Add(ballGraphic); - } - */ - } - } - /* - graphicAnus = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus"); - if (graphicAnus == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - graphicAnus = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus", false, true, "Humanlike"); - - graphicAnus_horny = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus", true); - if (graphicAnus_horny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - graphicAnus_horny = SizedApparelUtility.GetBodyPartGraphic(pawn, anusHediff, false, "Anus", "Anus", true, true, "Humanlike"); - */ - if(anusHediff != null) - { - var anusVar = anusHediff.TryGetComp(); - - bodyPartAnus.SetHediffData(anusHediff.def.defName, SizedApparelUtility.PrivatePartSeverityInt(anusHediff.Severity),1000, anusVar?.variation); - bodyPartAnus.UpdateGraphic(); - - /* - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, anusHediff.def.defName, "Anus", SizedApparelUtility.PrivatePartSeverityInt(anusHediff.Severity), false), false, "Anus", "Anus"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) - { - if (cachedPathAndSize.isUnsupportedHumanlikePath) - { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - graphicAnus = GraphicDatabase.Get(bodyPartPath); } else - graphicAnus = GraphicDatabase.Get(bodyPartPath); - } - //if (graphicAnus == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, anusHediff.def.defName, "Anus", SizedApparelUtility.PrivatePartSeverityInt(anusHediff.Severity), false), false, "Anus", "Anus", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // graphicAnus = GraphicDatabase.Get(bodyPartPath); - //} - bodyPartPath = null; - cachedPathAndSize = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, bodyTypeDefName, anusHediff.def.defName, "Anus", SizedApparelUtility.PrivatePartSeverityInt(anusHediff.Severity), true), false, "Anus", "Anus"); - bodyPartPath = cachedPathAndSize.pathWithSizeIndex; - if (bodyPartPath != null) - { - if (cachedPathAndSize.isUnsupportedHumanlikePath) { - if (SizedApparelSettings.UnsupportedRaceToUseHumanlike && pawn.RaceProps.Humanlike) - graphicAnus_horny = GraphicDatabase.Get(bodyPartPath); + foreach (var addon in bodyAddons) + { + if (addon.bodyPartOf == SizedApparelBodyPartOf.Anus) + { + addon.SetHediffData(null, -1); + } + } } - else - graphicAnus_horny = GraphicDatabase.Get(bodyPartPath); } - //if (graphicAnus_horny == null && pawn.RaceProps.Humanlike && SizedApparelSettings.UnsupportedRaceToUseHumanlike) - //{ - // bodyPartPath = SizedApparelsDatabase.GetSupportedBodyPartPath(new SizedApparelsDatabase.BodyPartDatabaseKey(pawn.def.defName, pawn.story?.bodyType.defName, anusHediff.def.defName, "Anus", SizedApparelUtility.PrivatePartSeverityInt(anusHediff.Severity), true), false, "Anus", "Anus", "Humanlike").pathWithSizeIndex; - // if (bodyPartPath != null) - // graphicAnus_horny = GraphicDatabase.Get(bodyPartPath); - //}*/ + } - else - bodyPartAnus.SetHediffData(null, -1); - - - hasGraphicUpdatedBefore = true; } @@ -1127,6 +1778,9 @@ namespace SizedApparel cachedApparelGraphicRecord = new List(); hasUpdateBeforeSuccess = true; + this.isHediffDirty = false; + this.isApparelDirty = false; + this.isSkeletonDirty = false; } @@ -1188,6 +1842,10 @@ namespace SizedApparel { yield return bp; } + foreach (SizedApparelBodyPart bp in bodyAddons) + { + yield return bp; + } } public IEnumerable GetSizedApparelBodyParts(SizedApparelBodyPartOf targetPartOf, bool returnNullPart = false) { @@ -1209,7 +1867,7 @@ namespace SizedApparel public void SetPoseFromPoseSet(string poseSetName, bool autoUpdate = true, bool autoSetPawnGraphicDirty = false) { - if (poseSetName == null) + if (poseSetName.NullOrEmpty()) { ClearAllPose(autoUpdate, autoSetPawnGraphicDirty); return; diff --git a/1.3/source/SizedApparel/SizedApparelDef.cs b/1.3/source/SizedApparel/SizedApparelDef.cs new file mode 100644 index 0000000..524457a --- /dev/null +++ b/1.3/source/SizedApparel/SizedApparelDef.cs @@ -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 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 SizedTextures; + + public ApparelTexture GetApparelTexture(BodyTypeDef bodytype) + { + if(SizedTextures != null) + { + return SizedTextures.FirstOrDefault(a => a.bodytype == bodytype); + } + return null; + } + } + +} diff --git a/1.3/source/SizedApparel/SizedApparelMain.cs b/1.3/source/SizedApparel/SizedApparelMain.cs index 3a5c770..0f80d38 100644 --- a/1.3/source/SizedApparel/SizedApparelMain.cs +++ b/1.3/source/SizedApparel/SizedApparelMain.cs @@ -7,12 +7,12 @@ using Verse; using HarmonyLib; using UnityEngine; using rjw; +using Rimworld_Animations; using System.Reflection; - - //since I test system alot, source cord is very dirty and not optimized. + namespace SizedApparel { public struct supportedIndex @@ -20,8 +20,6 @@ namespace SizedApparel } - - [StaticConstructorOnStartup] [HarmonyPatch(typeof(Pawn_HealthTracker), "Notify_HediffChanged")] public class PawnHealthTrackerPatch @@ -30,7 +28,7 @@ namespace SizedApparel { if (___pawn == null) return; - var comp = ___pawn.TryGetComp(); + var comp = ___pawn.GetComp(); if (comp == null) return; if (hediff == null) @@ -40,7 +38,7 @@ namespace SizedApparel { //comp.ClearAll(); //comp.Update(); - comp.SetDirty(); + comp.SetDirty(false,true,false); //already doing set dirty in hediffchange method. //___pawn.Drawer.renderer.graphics.SetApparelGraphicsDirty(); //PortraitsCache.SetDirty(___pawn); @@ -49,15 +47,27 @@ namespace SizedApparel } if (SizedApparelUtility.isBellyBulgeHediff(hediff)) { - comp.SetDirty(); + comp.SetDirty(false, true, false); return; } } } - - + //for 1.4 + /* + [StaticConstructorOnStartup] + [HarmonyPatch(typeof(Pawn_AgeTracker), "PostResolveLifeStageChange")] + public class PawnAgeTrackerPatch + { + public static void Postfix(Pawn ___pawn) + { + var comp = ___pawn.GetComp(); + if (comp == null) + return; + comp.SetDirty(false,false,false,true,true);//Apparel and Hediff will be changed with other reason. just set skeleton dirty. + } + }*/ @@ -100,18 +110,18 @@ namespace SizedApparel - + [Obsolete] [StaticConstructorOnStartup] public class BodyPatch { - public static void SetBodyGraphic(Pawn pawn,bool drawClothFlag = true, bool fromGraphicRecord = true, bool revert = false) + public static void SetBodyGraphic(Pawn pawn, bool drawClothFlag = true, bool fromGraphicRecord = true, bool revert = false) { //Pawn_ApparelTracker __instance; //GetBreastSeverity(__instance.pawn, out breastSeverity, out breastHediff); //bool flag = hasUnSupportedApparel(__instance.pawn, breastSeverity, breastHediff); - ApparelRecorderComp comp = pawn.TryGetComp(); + ApparelRecorderComp comp = pawn.GetComp(); if (comp == null) return; @@ -132,6 +142,9 @@ namespace SizedApparel pawnRenderer.nakedGraphic = comp.graphicSourceNaked.GetColoredVersion(pawnRenderer.nakedGraphic.Shader, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo); if (comp.graphicSourceRotten != null) pawnRenderer.rottingGraphic = comp.graphicSourceRotten.GetColoredVersion(pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo); + //if (comp.graphicSourceFurCovered != null) + // pawnRenderer.furCoveredGraphic = comp.graphicSourceRotten.GetColoredVersion(pawnRenderer.furCoveredGraphic.Shader, pawnRenderer.furCoveredGraphic.color, pawnRenderer.furCoveredGraphic.colorTwo); + } @@ -157,31 +170,9 @@ namespace SizedApparel { pawnRenderer.ResolveAllGraphics(); }*/ - if (pawnRenderer == null) return; - string nakedGraphicPath = pawnRenderer.nakedGraphic?.path; - //Log.Message("nakedGraphicPath"); - string rottingGraphicPath = pawnRenderer.rottingGraphic?.path; - //Log.Message("rottingGraphicPath"); - int currentBreastSizeIndex = 0; - float currentBreastSeverity = 0; - Graphic nakedGraphic; - Graphic rottingGraphic; - bool validNakedTexture = false; - bool validRottingTexture = false; - int offset = 0; - - - /* - * Obsolete - if (SizedApparelSettings.DontReplaceBodyTextureOnNude == true && SizedApparelUtility.isPawnNaked(pawn)) - { - if (SizedApparelSettings.Debug) - Log.Message("[Sized Apparel] " + pawn.Name + "is Naked. And DontReplaceBodyTextureOnNude Option is active. Changing Body Texture is cancled."); - return; - }*/ if (!comp.hasUnsupportedApparel || SizedApparelUtility.isPawnNaked(pawn) || !drawClothFlag) { @@ -194,7 +185,12 @@ namespace SizedApparel { pawnRenderer.rottingGraphic = comp.graphicbaseBodyRotten.GetColoredVersion(pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo); - } + }/* + if (comp.graphicbaseBodyFurCovered != null) + { + pawnRenderer.furCoveredGraphic = comp.graphicbaseBodyFurCovered.GetColoredVersion(pawnRenderer.furCoveredGraphic.Shader, pawnRenderer.furCoveredGraphic.color, pawnRenderer.furCoveredGraphic.colorTwo); + + }*/ } else { @@ -202,212 +198,92 @@ namespace SizedApparel pawnRenderer.nakedGraphic = comp.graphicSourceNaked.GetColoredVersion(pawnRenderer.nakedGraphic.Shader, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo); if (comp.graphicSourceRotten != null) pawnRenderer.rottingGraphic = comp.graphicSourceRotten.GetColoredVersion(pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo); + //if (comp.graphicSourceFurCovered != null) + // pawnRenderer.furCoveredGraphic = comp.graphicSourceFurCovered.GetColoredVersion(pawnRenderer.furCoveredGraphic.Shader, pawnRenderer.furCoveredGraphic.color, pawnRenderer.furCoveredGraphic.colorTwo); + } return;//no need to replace full body texture anymore. - if (false && comp.hasUnsupportedApparel && SizedApparelSettings.useUnsupportedBodyTexture)//old method. no need to do. - { - //Log.Message("hasUnsupportedApparel"); - // SetBodyGraphic(__instance, true); - if (true) - { - if ((ContentFinder.Get((nakedGraphicPath + "_UnsupportedApparel" + "_south"), false) != null)) - { - nakedGraphic = GraphicDatabase.Get(nakedGraphicPath + "_Unsupported", pawnRenderer.nakedGraphic.Shader, pawnRenderer.nakedGraphic.drawSize, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo, pawnRenderer.nakedGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - pawnRenderer.nakedGraphic = nakedGraphic; - } - if ((ContentFinder.Get((rottingGraphicPath + "_UnsupportedApparel" + "_south"), false) != null)) - { - rottingGraphic = GraphicDatabase.Get(rottingGraphicPath + "_UnsupportedApparel", pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.drawSize, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo, pawnRenderer.rottingGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - pawnRenderer.rottingGraphic = rottingGraphic; - } + /* + if (SizedApparelSettings.useBodyTexture == false) + return; - } + //Log.Message("Hello"); + if (pawnGraphicSet == null) + return; + + if (pawnGraphicSet.pawn.RaceProps.Humanlike == false) + return; + + return; + + + //Log.Message("SetBodyGraphic"); + //pawnGraphicSet.ClearCache(); + string path = pawnGraphicSet.pawn.story.bodyType.bodyNakedGraphicPath; + string path_bodyDessicated = pawnGraphicSet.pawn.story.bodyType.bodyDessicatedGraphicPath; + string filename; + string pathname; + string filename_bodyDessicated; + string pathname_bodyDessicated; + pathname = System.IO.Path.GetDirectoryName(path); + filename = System.IO.Path.GetFileName(path); + filename_bodyDessicated = System.IO.Path.GetFileName(path_bodyDessicated); + pathname_bodyDessicated = System.IO.Path.GetDirectoryName(path_bodyDessicated); + + //Log.Message("SetPath"); + bool validBody = false; + bool validDessicatedBody = false; + + //pawnGraphicSet.pawn.Drawer.renderer.graphics.nakedGraphic + //pawnGraphicSet.pawn.Drawer.renderer.graphics.dessicatedGraphic + + if (hasUnsupportApparel) + { + //Log.Message("IfhasUnsupportApparel"); + //Graphic newBodyGraphic = null; + //Graphic newRottingGraphic = null; + //string path; + + //Log.Message("tryUnsupportedApparelBodyTexture"); + //OLD::pawnGraphicSet.pawn.Drawer.renderer.graphics + if (pawnGraphicSet.nakedGraphic != null) + if (ContentFinder.Get((pawnGraphicSet.pawn.Drawer.renderer.graphics.nakedGraphic.path + "_UnsupportedApparel" + "_south"), false) != null) + { + pawnGraphicSet.pawn.Drawer.renderer.graphics.nakedGraphic = GraphicDatabase.Get(pawnGraphicSet.nakedGraphic.path + "_UnsupportedApparel", pawnGraphicSet.nakedGraphic.Shader, pawnGraphicSet.nakedGraphic.drawSize, pawnGraphicSet.nakedGraphic.color, pawnGraphicSet.nakedGraphic.colorTwo); + validBody = true; + } + if (pawnGraphicSet.dessicatedGraphic != null) + if (ContentFinder.Get((pawnGraphicSet.dessicatedGraphic.path + "_UnsupportedApparel" + "_south"), false) != null) + { + pawnGraphicSet.dessicatedGraphic = GraphicDatabase.Get(pawnGraphicSet.dessicatedGraphic.path + "_UnsupportedApparel", pawnGraphicSet.rottingGraphic.Shader, pawnGraphicSet.rottingGraphic.drawSize, pawnGraphicSet.rottingGraphic.color, pawnGraphicSet.rottingGraphic.colorTwo); + validDessicatedBody = true; + } } else { - if(!comp.hasUnsupportedApparel || SizedApparelUtility.isPawnNaked(pawn)) - { - - } - if (comp.graphicbaseBodyNaked!=null) - pawnRenderer.nakedGraphic = comp.graphicbaseBodyNaked.GetColoredVersion(pawnRenderer.nakedGraphic.Shader, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo); - if (comp.graphicbaseBodyRotten != null) - pawnRenderer.rottingGraphic = comp.graphicbaseBodyRotten.GetColoredVersion(pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo); - - return;//no need to replace full body texture anymore. - while (offset < SizedApparelUtility.size.Length) - { - string breastSeverityStringCache = SizedApparelUtility.BreastSeverityString(breastSeverity, offset, true, ref currentBreastSizeIndex, ref currentBreastSeverity); - //search bigger - //SizedApparelSettings.matchBodyTextureToMinimumApparelSize? currentBreastSizeIndex <= minSupportedBreasSizeIndex:true - if (validNakedTexture == false) + //Log.Message("undo"); + string currentPath = pawnGraphicSet.nakedGraphic.path; + string currentDessicatedPath = pawnGraphicSet.dessicatedGraphic.path; + //Log.Message(currentPath.Substring(0,currentPath.Length - "_UnsupportedApparel".Length)); + if (pawnGraphicSet.nakedGraphic != null) + if (ContentFinder.Get(currentPath.Substring(0, currentPath.Length - "_UnsupportedApparel".Length) + "_south", false) != null) { - if ((ContentFinder.Get((nakedGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? SizedApparelUtility.BreastSizeIndexToSeverity(currentBreastSizeIndex) <= comp.breastSeverityCapToDraw : true) - { - nakedGraphic = GraphicDatabase.Get(nakedGraphicPath + breastSeverityStringCache, pawnRenderer.nakedGraphic.Shader, pawnRenderer.nakedGraphic.drawSize, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo, pawnRenderer.nakedGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - pawnRenderer.nakedGraphic = nakedGraphic; - validNakedTexture = true; - } - } + pawnGraphicSet.nakedGraphic = GraphicDatabase.Get((currentPath.Substring(0, currentPath.Length - "_UnsupportedApparel".Length)), pawnGraphicSet.nakedGraphic.Shader, pawnGraphicSet.nakedGraphic.drawSize, pawnGraphicSet.nakedGraphic.color, pawnGraphicSet.nakedGraphic.colorTwo); + } - if (validRottingTexture == false) + if (pawnGraphicSet.dessicatedGraphic != null) + if (ContentFinder.Get(currentDessicatedPath.Substring(0, currentDessicatedPath.Length - "_UnsupportedApparel".Length) + "_south", false) != null) { - if ((ContentFinder.Get((rottingGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? SizedApparelUtility.BreastSizeIndexToSeverity(currentBreastSizeIndex) <= comp.breastSeverityCapToDraw : true) - { - rottingGraphic = GraphicDatabase.Get(rottingGraphicPath + breastSeverityStringCache, pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.drawSize, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo, pawnRenderer.rottingGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - pawnRenderer.rottingGraphic = rottingGraphic; - validRottingTexture = true; - } - } + pawnGraphicSet.dessicatedGraphic = GraphicDatabase.Get((currentDessicatedPath.Substring(0, currentDessicatedPath.Length - "_UnsupportedApparel".Length)), pawnGraphicSet.nakedGraphic.Shader, pawnGraphicSet.nakedGraphic.drawSize, pawnGraphicSet.nakedGraphic.color, pawnGraphicSet.nakedGraphic.colorTwo); + } - //search smaller - - breastSeverityStringCache = SizedApparelUtility.BreastSeverityString(breastSeverity, offset, false, ref currentBreastSizeIndex, ref currentBreastSeverity); - - if (validNakedTexture == false) - { - if ((ContentFinder.Get((nakedGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? SizedApparelUtility.BreastSizeIndexToSeverity(currentBreastSizeIndex) <= comp.breastSeverityCapToDraw : true) - { - nakedGraphic = GraphicDatabase.Get(nakedGraphicPath + breastSeverityStringCache, pawnRenderer.nakedGraphic.Shader, pawnRenderer.nakedGraphic.drawSize, pawnRenderer.nakedGraphic.color, pawnRenderer.nakedGraphic.colorTwo, pawnRenderer.nakedGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - pawnRenderer.nakedGraphic = nakedGraphic; - validNakedTexture = true; - } - } - } - if (validRottingTexture == false) - { - if ((ContentFinder.Get((rottingGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? SizedApparelUtility.BreastSizeIndexToSeverity(currentBreastSizeIndex) <= comp.breastSeverityCapToDraw : true) - { - rottingGraphic = GraphicDatabase.Get(rottingGraphicPath + breastSeverityStringCache, pawnRenderer.rottingGraphic.Shader, pawnRenderer.rottingGraphic.drawSize, pawnRenderer.rottingGraphic.color, pawnRenderer.rottingGraphic.colorTwo, pawnRenderer.rottingGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - pawnRenderer.rottingGraphic = rottingGraphic; - validRottingTexture = true; - } - } - } - - if (validNakedTexture == true && validRottingTexture == true) - { - if (SizedApparelSettings.Debug) - Log.Message("[Sized Apparel] " + pawn.Name + "'s body texture has changed."); - break; - } - - offset++; - } - - } + }*/ + //pawnGraphicSet.ClearCache(); } - - - - return; - /* - if (SizedApparelSettings.useBodyTexture == false) - return; - - //Log.Message("Hello"); - if (pawnGraphicSet == null) - return; - - if (pawnGraphicSet.pawn.RaceProps.Humanlike == false) - return; - - return; - - - //Log.Message("SetBodyGraphic"); - //pawnGraphicSet.ClearCache(); - string path = pawnGraphicSet.pawn.story.bodyType.bodyNakedGraphicPath; - string path_bodyDessicated = pawnGraphicSet.pawn.story.bodyType.bodyDessicatedGraphicPath; - string filename; - string pathname; - string filename_bodyDessicated; - string pathname_bodyDessicated; - pathname = System.IO.Path.GetDirectoryName(path); - filename = System.IO.Path.GetFileName(path); - filename_bodyDessicated = System.IO.Path.GetFileName(path_bodyDessicated); - pathname_bodyDessicated = System.IO.Path.GetDirectoryName(path_bodyDessicated); - - //Log.Message("SetPath"); - bool validBody = false; - bool validDessicatedBody = false; - - //pawnGraphicSet.pawn.Drawer.renderer.graphics.nakedGraphic - //pawnGraphicSet.pawn.Drawer.renderer.graphics.dessicatedGraphic - - if (hasUnsupportApparel) - { - //Log.Message("IfhasUnsupportApparel"); - //Graphic newBodyGraphic = null; - //Graphic newRottingGraphic = null; - //string path; - - //Log.Message("tryUnsupportedApparelBodyTexture"); - //OLD::pawnGraphicSet.pawn.Drawer.renderer.graphics - if (pawnGraphicSet.nakedGraphic != null) - if (ContentFinder.Get((pawnGraphicSet.pawn.Drawer.renderer.graphics.nakedGraphic.path + "_UnsupportedApparel" + "_south"), false) != null) - { - pawnGraphicSet.pawn.Drawer.renderer.graphics.nakedGraphic = GraphicDatabase.Get(pawnGraphicSet.nakedGraphic.path + "_UnsupportedApparel", pawnGraphicSet.nakedGraphic.Shader, pawnGraphicSet.nakedGraphic.drawSize, pawnGraphicSet.nakedGraphic.color, pawnGraphicSet.nakedGraphic.colorTwo); - validBody = true; - } - if (pawnGraphicSet.dessicatedGraphic != null) - if (ContentFinder.Get((pawnGraphicSet.dessicatedGraphic.path + "_UnsupportedApparel" + "_south"), false) != null) - { - pawnGraphicSet.dessicatedGraphic = GraphicDatabase.Get(pawnGraphicSet.dessicatedGraphic.path + "_UnsupportedApparel", pawnGraphicSet.rottingGraphic.Shader, pawnGraphicSet.rottingGraphic.drawSize, pawnGraphicSet.rottingGraphic.color, pawnGraphicSet.rottingGraphic.colorTwo); - validDessicatedBody = true; - } - } - else - { - //Log.Message("undo"); - string currentPath = pawnGraphicSet.nakedGraphic.path; - string currentDessicatedPath = pawnGraphicSet.dessicatedGraphic.path; - //Log.Message(currentPath.Substring(0,currentPath.Length - "_UnsupportedApparel".Length)); - if (pawnGraphicSet.nakedGraphic != null) - if (ContentFinder.Get(currentPath.Substring(0, currentPath.Length - "_UnsupportedApparel".Length) + "_south", false) != null) - { - pawnGraphicSet.nakedGraphic = GraphicDatabase.Get((currentPath.Substring(0, currentPath.Length - "_UnsupportedApparel".Length)), pawnGraphicSet.nakedGraphic.Shader, pawnGraphicSet.nakedGraphic.drawSize, pawnGraphicSet.nakedGraphic.color, pawnGraphicSet.nakedGraphic.colorTwo); - - } - if (pawnGraphicSet.dessicatedGraphic != null) - if (ContentFinder.Get(currentDessicatedPath.Substring(0, currentDessicatedPath.Length - "_UnsupportedApparel".Length) + "_south", false) != null) - { - pawnGraphicSet.dessicatedGraphic = GraphicDatabase.Get((currentDessicatedPath.Substring(0, currentDessicatedPath.Length - "_UnsupportedApparel".Length)), pawnGraphicSet.nakedGraphic.Shader, pawnGraphicSet.nakedGraphic.drawSize, pawnGraphicSet.nakedGraphic.color, pawnGraphicSet.nakedGraphic.colorTwo); - - } - - }*/ - //pawnGraphicSet.ClearCache(); } @@ -422,62 +298,7 @@ namespace SizedApparel } - - - - - - - - //for worn apparel - - - - - - - - - - - //[HarmonyPatch(typeof(ApparelGraphicRecordGetter), "TryGetGraphicApparel")] - /* - [StaticConstructorOnStartup] - [HarmonyPatch(typeof(PawnGraphicSet), "ResolveAllGraphics")] - class BodyfixForUnsupported - { - static void Prefix(PawnGraphicSet __instance) - { - if (!UnityData.IsInMainThread) - return; - if (__instance.pawn == null) - return; - var comp = __instance.pawn.TryGetComp(); - if (comp == null) - return; - comp.ClearAll(); - //comp.Update(); - } - }*/ - - - /* -[StaticConstructorOnStartup] -[HarmonyPatch(typeof(PawnGenerator), "GeneratePawn", typeof(PawnGenerationRequest) )] -class GeneratePawnPatch -{ - Type[] types = { typeof(PawnGenerationRequest) }; - static void Postfix(PawnGenerationRequest request, Pawn __result) - { - if (!UnityData.IsInMainThread) - return; - if (__result != null) - { - //__result.Drawer.renderer.graphics.ResolveAllGraphics(); - __result.Drawer.renderer.graphics.ResolveApparelGraphics(); - } - } -}*/ + [Obsolete] [StaticConstructorOnStartup] //[HarmonyPatch(typeof(Pawn_ApparelTracker), "ExposeData")] class ApparelTrackerExposePatch @@ -492,7 +313,7 @@ class GeneratePawnPatch return; if (Scribe.mode == LoadSaveMode.PostLoadInit) { - ApparelRecorderComp comp = __instance.pawn.TryGetComp(); + ApparelRecorderComp comp = __instance.pawn.GetComp(); if (comp == null) return; if (!comp.hasUpdateBefore) @@ -527,7 +348,7 @@ class GeneratePawnPatch //GetBreastSeverity(__instance.pawn, out breastSeverity, out breastHediff); //bool flag = hasUnSupportedApparel(__instance.pawn, breastSeverity, breastHediff); - ApparelRecorderComp comp = __instance.pawn.TryGetComp(); + ApparelRecorderComp comp = __instance.pawn.GetComp(); if (comp != null) { //comp.ClearBreastCacheValue(); @@ -543,7 +364,7 @@ class GeneratePawnPatch //comp.Update(true, false);//TODO: Coverd But No Graphic may cause Big Issue!!! //comp.Update(true, true); - comp.SetDirty(); + comp.SetDirty(false,false,true); /* if (SizedApparelSettings.drawBodyParts)//old:SizedApparelSettings.useBodyTexture @@ -641,6 +462,8 @@ class GeneratePawnPatch } + + //Apparel Graphic Texture injection [StaticConstructorOnStartup] [HarmonyPatch(typeof(ApparelGraphicRecordGetter), "TryGetGraphicApparel")] [HarmonyBefore(new string[]{"QualityOfBuilding"})] @@ -657,16 +480,15 @@ class GeneratePawnPatch if (bodyType == null) return; - if (apparel.Wearer != null) { //rec = new ApparelGraphicRecord(null, null); - var comp = apparel.Wearer.TryGetComp(); + var comp = apparel.Wearer.GetComp(); //if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize) // BreastSeverity = comp.BreastSeverityCache; - int currentBreastSizeIndex = 0; - float currentBreastSeverity = -1; + //int currentBreastSizeIndex = 0; + //float currentBreastSeverity = -1; //int minSupportedBreastSizeIndex = 1000; //float minSupportedBreastSeverity = 1000; @@ -708,18 +530,19 @@ class GeneratePawnPatch }*/ } + //Log.Message("1"); var breastHediff = comp.breastHediff; float BreastSeverity = comp.breastSeverity; - + //Log.Message("2"); if (SizedApparelSettings.useBreastSizeCapForApparels) //SizedApparelSettings.useBreastSizeCapForApparels //wip BreastSeverity = Math.Min(comp.BreastSeverityCache, BreastSeverity); - - if (comp.hasUnsupportedApparel == false && (comp.bodyPartBreasts.bodyPartGraphic !=null || comp.bodyPartBreasts.bodyPartGraphicHorny != null))//(comp.graphicBreasts!=null|| comp.graphicBreasts_horny != null) + //Log.Message("3"); + if (comp.hasUnsupportedApparel == false)//&& (comp.bodyPartBreasts.bodyPartGraphic !=null || comp.bodyPartBreasts.bodyPartGraphicHorny != null) { Graphic sizedGraphic = null; - - string resultPath = SizedApparelsDatabase.GetSupportedApparelSizedPath(new SizedApparelsDatabase.SizedApparelDatabaseKey(rec.graphic.path, apparel?.Wearer?.def.defName, breastHediff.def.defName, apparel.Wearer.gender, apparel?.Wearer?.story?.bodyType?.defName, SizedApparelUtility.BreastSeverityInt(BreastSeverity))).pathWithSizeIndex; + //Log.Message("4"); + string resultPath = SizedApparelsDatabase.GetSupportedApparelSizedPath(new SizedApparelsDatabase.SizedApparelDatabaseKey(rec.graphic.path, apparel?.Wearer?.def.defName, breastHediff?.def?.defName, apparel.Wearer.gender, apparel?.Wearer?.story?.bodyType?.defName, SizedApparelUtility.BreastSeverityInt(BreastSeverity))).pathWithSizeIndex; if(resultPath != null) { //sizedGraphic = SizedApparelUtility.GetSizedApparelGraphic(rec.graphic, BreastSeverity, apparel?.Wearer?.def.defName, breastHediff.def.defName); @@ -756,424 +579,17 @@ class GeneratePawnPatch { return; } - var comp = __instance.pawn.TryGetComp(); + var comp = __instance.pawn.GetComp(); if (comp == null) return; //comp.ClearAll(false); //comp.needToCheckApparelGraphicRecords = true; - comp.SetDirty(); + comp.SetDirty(false,true,false,false,false); // Check Hediff. If you don't the crotch will not have graphic on first load } } - - - - //[HarmonyPatch(typeof(PawnGraphicSet))] - //[HarmonyPatch("ResolveApparelGraphics")] - //[HarmonyBefore(new string[] { "rimworld.erdelf.alien_race.main" })] - [StaticConstructorOnStartup] - //[HarmonyPatch(typeof(PawnGraphicSet), "ResolveApparelGraphics")] - class ApparelFix - { - [Obsolete] - public static bool old_old_Prefix(Apparel apparel, BodyTypeDef bodyType, ApparelGraphicRecord rec, ref bool __result) - { - - bool result = true; - bool flag = apparel.def.apparel.wornGraphicPath.NullOrEmpty(); - if (flag) - { - string text = apparel.def.apparel.wornGraphicPath + "_" + bodyType.defName + "_3"; - - bool flag2 = false; - - flag2 = ContentFinder.Get(text + "_north", true) == null || ContentFinder.Get(text + "_east", true) == null || ContentFinder.Get(text + "_south", true) == null; - if (flag2) - { - bool flag3 = apparel.def.apparel.LastLayer != ApparelLayerDefOf.Overhead; - if (flag3) - { - //text = apparel.def.apparel.wornGraphicPath + "_Female"; - Graphic graphic = GraphicDatabase.Get(text, ShaderDatabase.Cutout, apparel.def.graphicData.drawSize, apparel.DrawColor); - rec = new ApparelGraphicRecord(graphic, apparel); - result = false; - __result = true; - } - } - else - { - bool flag4 = apparel.def.apparel.LastLayer == ApparelLayerDefOf.Overhead; - if (flag4) - { - Graphic graphic2 = GraphicDatabase.Get(text, ShaderDatabase.Cutout, apparel.def.graphicData.drawSize, apparel.DrawColor); - rec = new ApparelGraphicRecord(graphic2, apparel); - result = false; - __result = true; - } - } - } - return result; - } - - [Obsolete] - static void old_Postfix(ref PawnGraphicSet __instance) - { - if (Current.Game.World == null) - return; - - // Log.Message("ResolveGraphic"); - if (__instance.pawn.RaceProps.Humanlike) - { - //Log.Message("ResolveApparelGraphics"); - //__instance.pawn.health.hediffSet.HasHediff(Hediff ,BodyPartRecord ,false); - //__instance.pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null).Any((BodyPartRecord bpr) => bpr.untranslatedCustomLabel == label || bpr.def.defName == label); - - var comp = __instance.pawn.TryGetComp(); - if (comp != null) - { - bool flag = false; - float BreastSeverity = -1; - Hediff breastHediff = null; - SizedApparelUtility.GetBreastSeverity(__instance.pawn, out BreastSeverity, out breastHediff); - //Log.Message("hasUnsupported? : "+comp.hasUnsupportedApparel.ToString()); - - if (true) //(!comp.hasUpdateBefore) - { - //Log.Message("UpdateFirst"); - /* - if (comp.havingSex) - comp.hasUnsupportedApparel = SizedApparelUtility.hasUnSupportedApparel(__instance.pawn, BreastSeverity, breastHediff); - else - comp.hasUnsupportedApparel = SizedApparelUtility.hasUnSupportedApparelFromWornData(__instance.pawn, BreastSeverity, breastHediff); - */ - comp.hasUnsupportedApparel = SizedApparelUtility.hasUnSupportedApparelFromWornData(__instance.pawn, BreastSeverity, breastHediff); - comp.hasUpdateBefore = true; - } - if (comp.hasUnsupportedApparel == false) - { - int currentBreastSizeIndex = 0; - int minSupportedBreastSizeIndex = 1000; - float currentBreastSeverity = 0; - float minSupportedBreastSeverity = 1000; - List newAgr = new List(); - foreach (ApparelGraphicRecord agr in __instance.apparelGraphics)//ApparelGraphicRecord agr in curAgr - { - /* - if(apparel != null) - { - ApparelGraphicRecord rec; - if (apparel.def.apparel.wornGraphicPath.NullOrEmpty()) - { - rec = new ApparelGraphicRecord(null, null); - newAgr.Add(rec); - continue; - } - string path; - if (apparel.def.apparel.LastLayer == ApparelLayerDefOf.Overhead || apparel.def.apparel.wornGraphicPath == BaseContent.PlaceholderImagePath) - { - path = apparel.def.apparel.wornGraphicPath; - } - else - { - path = apparel.def.apparel.wornGraphicPath + "_" + __instance.pawn.story.bodyType.defName; - } - Shader shader = ShaderDatabase.Cutout; - if (apparel.def.apparel.useWornGraphicMask) - { - shader = ShaderDatabase.CutoutComplex; - } - Graphic graphic = GraphicDatabase.Get(path, shader, apparel.def.graphicData.drawSize, apparel.DrawColor); - rec = new ApparelGraphicRecord(graphic, apparel); - //string endstring = (gender == Gender.Female && (ContentFinder.Get(apparel.def.apparel.wornGraphicPath + "_" + bodyType.defName + "_fem_south", false) != null)) ? "_fem" : null; - //string path = (apparel.def.apparel.LastLayer != ApparelLayerDefOf.Overhead) ? (apparel.def.apparel.wornGraphicPath + "_" + bodyType.defName + endstring) : apparel.def.apparel.wornGraphicPath; - //path = agr.sourceApparel.def.graphic.path; - - //var path = agr.graphic.path; - var ExtraPath = path; - string targetPath; - } - */ - - - string path; - string extraPath; - //path = agr.sourceApparel.def.apparel.wornGraphicPath + "_" + __instance.pawn.story.bodyType.defName; - path = agr.graphic.path; - if (breastHediff != null) - { - extraPath = path + "_" + breastHediff.def.defName; - - } - else - extraPath = path; - - - int offset = 0; - - - bool validTexture = false; - Graphic graphic = null; - bool findBigger = true; // if false : search smaller first - while (offset < SizedApparelUtility.size.Length) - { - if (breastHediff != null) - { - if (ContentFinder.Get((extraPath + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity) + "_south"), false) != null) // checking special texture like udder - { - minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); - minSupportedBreastSeverity = Math.Min(currentBreastSeverity, minSupportedBreastSeverity); - graphic = new Graphic(); - graphic = GraphicDatabase.Get(extraPath + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity), agr.graphic.Shader, agr.graphic.drawSize, agr.graphic.color, agr.graphic.colorTwo, agr.graphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - validTexture = true; - //Log.Message(extraPath + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Extra Texture Found"); - break; - } - //Log.Warning(extraPath + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Extra Texture Not Found."); - } - - if ((ContentFinder.Get((path + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity) + "_south"), false) != null)) - { - minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); - minSupportedBreastSeverity = Math.Min(currentBreastSeverity, minSupportedBreastSeverity); - graphic = GraphicDatabase.Get(path + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity), agr.graphic.Shader, agr.graphic.drawSize, agr.graphic.color, agr.graphic.colorTwo, agr.graphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Texture Found"); - break; - } - //Log.Warning(path + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Texture Not Found. Try bigger Texture."); - offset++; - - } - - if (validTexture == false) - { - //Log.Warning(path + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Texture Not Found. try smaller instead of bigger ."); - } - - - if (validTexture == false) - { - offset = 0; - while (offset < SizedApparelUtility.size.Length) - { - if (breastHediff != null) - { - if (ContentFinder.Get((extraPath + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, !findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity) + "_south"), false) != null) // checking special texture like udder - { - minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); - minSupportedBreastSeverity = Math.Min(currentBreastSeverity, minSupportedBreastSeverity); - graphic = new Graphic(); - graphic = GraphicDatabase.Get(extraPath + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, !findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity), agr.graphic.Shader, agr.graphic.drawSize, agr.graphic.color, agr.graphic.colorTwo, agr.graphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - validTexture = true; - //Log.Message(extraPath + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Extra Texture Found"); - break; - } - //Log.Warning(extraPath + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Extra Texture Not Found."); - } - - if ((ContentFinder.Get((path + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, !findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity) + "_south"), false) != null)) - { - minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); - minSupportedBreastSeverity = Math.Min(currentBreastSeverity, minSupportedBreastSeverity); - graphic = GraphicDatabase.Get(path + SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, !findBigger, ref currentBreastSizeIndex, ref currentBreastSeverity), agr.graphic.Shader, agr.graphic.drawSize, agr.graphic.color, agr.graphic.colorTwo, agr.graphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - break; - } - //Log.Warning(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Not Found. Try smaller Texture."); - offset++; - } - } - - if (validTexture == false) - { - //Log.Warning(path + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Texture Not Found. try smaller instead of bigger ."); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //graphic = GraphicDatabase.Get(path, ShaderDatabase.Cutout, agr.graphic.drawSize, agr.graphic.color); - graphic = agr.graphic; - } - - - ApparelGraphicRecord _Agr = new ApparelGraphicRecord(graphic, agr.sourceApparel); - - //_Agr.sourceApparel. - newAgr.Add(_Agr); - - - } - __instance.apparelGraphics = newAgr; - comp.breastSeverityCapToDraw = minSupportedBreastSeverity; - - if (SizedApparelSettings.useBodyTexture == true) - { - //Log.Message("useBodyTexture"); - if (__instance.nakedGraphic == null || __instance.rottingGraphic == null) - { - __instance.ResolveAllGraphics(); - return; - } - string nakedGraphicPath = __instance.nakedGraphic.path; - //Log.Message("nakedGraphicPath"); - string rottingGraphicPath = __instance.rottingGraphic.path; - //Log.Message("rottingGraphicPath"); - - Graphic nakedGraphic; - Graphic rottingGraphic; - bool validNakedTexture = false; - bool validRottingTexture = false; - int offset = 0; - if (SizedApparelSettings.DontReplaceBodyTextureOnNude == true && SizedApparelUtility.isPawnNaked(__instance.pawn)) - return; - if (comp.hasUnsupportedApparel && SizedApparelSettings.useUnsupportedBodyTexture) - { - //Log.Message("hasUnsupportedApparel"); - // SetBodyGraphic(__instance, true); - if (true) - { - if ((ContentFinder.Get((nakedGraphicPath + "_UnsupportedApparel" + "_south"), false) != null)) - { - nakedGraphic = GraphicDatabase.Get(nakedGraphicPath + "_Unsupported", __instance.nakedGraphic.Shader, __instance.nakedGraphic.drawSize, __instance.nakedGraphic.color, __instance.nakedGraphic.colorTwo, __instance.nakedGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - __instance.nakedGraphic = nakedGraphic; - } - if ((ContentFinder.Get((rottingGraphicPath + "_UnsupportedApparel" + "_south"), false) != null)) - { - rottingGraphic = GraphicDatabase.Get(rottingGraphicPath + "_UnsupportedApparel", __instance.rottingGraphic.Shader, __instance.rottingGraphic.drawSize, __instance.rottingGraphic.color, __instance.rottingGraphic.colorTwo, __instance.rottingGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - __instance.rottingGraphic = rottingGraphic; - } - - } - } - else - { - while (offset < SizedApparelUtility.size.Length) - { - string breastSeverityStringCache = SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, true, ref currentBreastSizeIndex, ref currentBreastSeverity); - //search bigger - //SizedApparelSettings.matchBodyTextureToMinimumApparelSize? currentBreastSizeIndex <= minSupportedBreasSizeIndex:true - if (validNakedTexture == false) - { - if ((ContentFinder.Get((nakedGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? currentBreastSizeIndex <= minSupportedBreastSizeIndex : true) - { - nakedGraphic = GraphicDatabase.Get(nakedGraphicPath + breastSeverityStringCache, __instance.nakedGraphic.Shader, __instance.nakedGraphic.drawSize, __instance.nakedGraphic.color, __instance.nakedGraphic.colorTwo, __instance.nakedGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - __instance.nakedGraphic = nakedGraphic; - validNakedTexture = true; - } - } - } - if (validRottingTexture == false) - { - if ((ContentFinder.Get((rottingGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? currentBreastSizeIndex <= minSupportedBreastSizeIndex : true) - { - rottingGraphic = GraphicDatabase.Get(rottingGraphicPath + breastSeverityStringCache, __instance.rottingGraphic.Shader, __instance.rottingGraphic.drawSize, __instance.rottingGraphic.color, __instance.rottingGraphic.colorTwo, __instance.rottingGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - __instance.rottingGraphic = rottingGraphic; - validRottingTexture = true; - } - } - } - - //search smaller - - breastSeverityStringCache = SizedApparelUtility.BreastSeverityString(BreastSeverity, offset, false, ref currentBreastSizeIndex, ref currentBreastSeverity); - - if (validNakedTexture == false) - { - if ((ContentFinder.Get((nakedGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? currentBreastSizeIndex <= minSupportedBreastSizeIndex : true) - { - nakedGraphic = GraphicDatabase.Get(nakedGraphicPath + breastSeverityStringCache, __instance.nakedGraphic.Shader, __instance.nakedGraphic.drawSize, __instance.nakedGraphic.color, __instance.nakedGraphic.colorTwo, __instance.nakedGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - __instance.nakedGraphic = nakedGraphic; - validNakedTexture = true; - } - } - } - if (validRottingTexture == false) - { - if ((ContentFinder.Get((rottingGraphicPath + breastSeverityStringCache + "_south"), false) != null)) - { - if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize ? currentBreastSizeIndex <= minSupportedBreastSizeIndex : true) - { - rottingGraphic = GraphicDatabase.Get(rottingGraphicPath + breastSeverityStringCache, __instance.rottingGraphic.Shader, __instance.rottingGraphic.drawSize, __instance.rottingGraphic.color, __instance.rottingGraphic.colorTwo, __instance.rottingGraphic.data); - //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); - //validTexture = true; - //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); - __instance.rottingGraphic = rottingGraphic; - validRottingTexture = true; - } - } - } - - if (validNakedTexture == true && validRottingTexture == true) - break; - - offset++; - } - } - - - - } - } - //SetBodyGraphic(__instance, comp.hasUnsupportedApparel); - } - - - } - - return; - } - - /* - static void Prefix(ref PawnGraphicSet __instance) - { - if (!UnityData.IsInMainThread) - return; - if (__instance.pawn == null) - return; - var comp = __instance.pawn.TryGetComp(); - if (comp == null) - return; - comp.ClearAll(); - comp.Update(); - }*/ - - static void oldPostfix(ref PawnGraphicSet __instance) - { - if (!UnityData.IsInMainThread) - return; - if (false&&SizedApparelSettings.useBodyTexture)//TODO - { - BodyPatch.SetBodyGraphic(__instance.pawn); - } - } - - } - @@ -1198,10 +614,10 @@ class GeneratePawnPatch { public static void Prefix(CompRottable __instance) { - var comp = __instance.parent.TryGetComp(); + var comp = __instance.parent.GetComp(); if (comp == null) return; - comp.SetDirty(); + comp.SetDirty(false,false,false); // should clear graphicSet....? } } @@ -1211,7 +627,7 @@ class GeneratePawnPatch { public static void Postfix(Pawn_AgeTracker __instance, Pawn ___pawn) { - var comp = ___pawn.TryGetComp(); + var comp = ___pawn.GetComp(); if (comp == null) return; comp.CheckAgeChanged(); @@ -1267,24 +683,27 @@ class GeneratePawnPatch } } //RimWorld 1.3 + //WIPWIPWIP TODO [HarmonyPatch(typeof(PawnRenderer), "BaseHeadOffsetAt")] public class BaseHeadOffsetAtPatch { public static void Postfix(ref PawnRenderer __instance, Pawn ___pawn, Rot4 rotation, ref Vector3 __result) { - ApparelRecorderComp apparelRecorder = ___pawn.TryGetComp(); + ApparelRecorderComp apparelRecorder = ___pawn.GetComp(); if (apparelRecorder == null) return; if (apparelRecorder.customPose != null) { - var item = apparelRecorder.currentCustomPose.headOffset.FirstOrDefault(b => b.bodyType == ___pawn.story.bodyType.label); - __result += item.offsets.GetOffset(rotation); + //var item = apparelRecorder.currentCustomPose.headOffset.FirstOrDefault(b => b.bodyType == ___pawn.story.bodyType.label); + //__result += item.offsets.GetOffset(rotation); } } } - //RimWorld 1.3 - [HarmonyPatch(typeof(PawnRenderer), "DrawPawnBody")] + + + //RimWorld 1.3 Only. Not 1.4 + [HarmonyPatch(typeof(PawnRenderer), "DrawPawnBody")] public class DrawPawnBodyPatch { static MethodInfo overrideMatMethod = AccessTools.Method(typeof(PawnRenderer), "OverrideMaterialIfNeeded"); @@ -1296,7 +715,7 @@ class GeneratePawnPatch return; if (___pawn == null) return; - ApparelRecorderComp apparelRecorder = ___pawn.TryGetComp(); + ApparelRecorderComp apparelRecorder = ___pawn.GetComp(); if (apparelRecorder == null) return; //!flags.FlagSet(PawnRenderFlags.StylingStation)&& @@ -1313,10 +732,10 @@ class GeneratePawnPatch { //apparelRecorder.isDirty is allways true - if (false)//StylingStation Doesn't work with cache! patch in postfix + if (true)//StylingStation Doesn't work with cache! patch in postfix { - apparelRecorder.Update(true, true, true, flags.FlagSet(PawnRenderFlags.Clothes)); - //Log.Message(" [Sized Apparel]StylingStation:: isDirty? : " + apparelRecorder.isDirty); + if(apparelRecorder.recentClothFlag != flags.FlagSet(PawnRenderFlags.Clothes)) + apparelRecorder.Update(true, true, true, flags.FlagSet(PawnRenderFlags.Clothes)); if(flags.FlagSet(PawnRenderFlags.Clothes)) SizedApparelUtility.UpdateAllApparel(___pawn, true); } @@ -1341,6 +760,8 @@ class GeneratePawnPatch //SizedApparelUtility.UpdateAllApparel(___pawn, true); } } + return; + //don't change body graphic file. it will inject material in PawnGraphicSet.MatsBodyBaseAt if (SizedApparelSettings.drawBodyParts) BodyPatch.SetBodyGraphic(___pawn, flags.FlagSet(PawnRenderFlags.Clothes), false); else @@ -1351,7 +772,7 @@ class GeneratePawnPatch { if (___pawn == null) return; - ApparelRecorderComp apparelRecorder = ___pawn.TryGetComp(); + ApparelRecorderComp apparelRecorder = ___pawn.GetComp(); if (apparelRecorder == null) return; Quaternion quaternion = Quaternion.AngleAxis(angle, Vector3.up); @@ -1364,6 +785,7 @@ class GeneratePawnPatch string defName = __instance.graphics.pawn.def.defName; + /* Shader shader = ___pawn.Drawer.renderer.graphics.nakedGraphic.Shader; Color skinColor = Color.white; Color skinColor2 = Color.white; @@ -1381,8 +803,19 @@ class GeneratePawnPatch if (!ShaderUtility.SupportsMaskTex(shader)) shader = ShaderDatabase.CutoutSkinOverlay; skinColor = ___pawn.Drawer.renderer.graphics.rottingGraphic.Color; - skinColor2 = ___pawn.Drawer.renderer.graphics.nakedGraphic.ColorTwo; - } + skinColor2 = ___pawn.Drawer.renderer.graphics.rottingGraphic.ColorTwo; + }*/ + + /* + //FurCoveredColor + if(bodyDrawType == RotDrawMode.Fresh && __instance.graphics.furCoveredGraphic != null) + { + shader = ___pawn.Drawer.renderer.graphics.furCoveredGraphic.Shader; + if (!ShaderUtility.SupportsMaskTex(shader)) + shader = ShaderDatabase.CutoutSkinOverlay; + skinColor = ___pawn.Drawer.renderer.graphics.furCoveredGraphic.Color; + skinColor2 = ___pawn.Drawer.renderer.graphics.furCoveredGraphic.ColorTwo; + }*/ @@ -1393,289 +826,88 @@ class GeneratePawnPatch } //breasts are only rendered when all of worn apparels are supported or nude. - if (apparelRecorder.isDrawAge && (!flags.FlagSet(PawnRenderFlags.Clothes) || !apparelRecorder.hasUnsupportedApparel || SizedApparelUtility.isPawnNaked(___pawn))) //TODO : Move it to CanDraw + + if (true)//__instance.graphics.furCoveredGraphic == null { - if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawVagina && SizedApparelUtility.CanDrawVagina(___pawn, flags)) - { - if(apparelRecorder.bodyPartVagina != null) - apparelRecorder.bodyPartVagina.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - /* - //Draw Vagina. AllwaysDraw - Vector3 vector = rootLoc; - if (facing == Rot4.North) - vector.y += 0.0100f;//not sure what to do - else - vector.y += 0.0088f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicVagina_horny; - if (graphic == null) - graphic = apparelRecorder.graphicVagina; - if (graphic != null) - { - Material mat; - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - graphic = graphic.GetColoredVersion(graphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, 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, skinColor, skinColor2); - vector.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { graphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - }*/ - } - if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawAnus && SizedApparelUtility.CanDrawAnus(___pawn, flags)) - { - if (apparelRecorder.bodyPartAnus != null) - apparelRecorder.bodyPartAnus.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - /* - //Draw Anus. //Allways draw - Vector3 vector = rootLoc; - if (facing == Rot4.North) - vector.y += 0.0105f;//not sure what to do - else - vector.y += 0.0093f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicAnus_horny; - if (graphic == null) - graphic = apparelRecorder.graphicAnus; - if (graphic != null) - { - Material mat; - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - graphic = graphic.GetColoredVersion(graphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, 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, skinColor, skinColor2); - vector.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { graphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - }*/ - } - - if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawBelly && SizedApparelUtility.CanDrawBelly(___pawn, flags)) - { - if (apparelRecorder.bodyPartBelly != null) - apparelRecorder.bodyPartBelly.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - /* - //Draw Belly. Need Complex Hiding Calculation - Vector3 vector = rootLoc; - if (facing == Rot4.North) - vector.y += 0.0002f;//not sure what to do - else - vector.y += 0.0098f; - Graphic graphic = apparelRecorder.graphicBelly; - if (graphic != null) - { - Material mat; - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - graphic = graphic.GetColoredVersion(graphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, 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, skinColor, skinColor2); - vector.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { graphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - }*/ - } - - if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawUdder && SizedApparelUtility.CanDrawUdder(___pawn, flags)) - { - if (apparelRecorder.bodyPartUdder != null) - apparelRecorder.bodyPartUdder.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - //Draw Udder. Need Complex Hiding Calculation -> - /* - Vector3 vector = rootLoc; - if (facing == Rot4.North) - vector.y += 0.0015f;//not sure what to do - else - vector.y += 0.0088f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicUdder_horny; - if (graphic == null) - graphic = apparelRecorder.graphicUdder; - if (graphic != null) - { - Material mat; - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - graphic = graphic.GetColoredVersion(graphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, 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, skinColor, skinColor2); - vector.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { graphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - }*/ - } - if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawBreasts && SizedApparelUtility.CanDrawBreasts(___pawn, flags) && (SizedApparelSettings.drawSizedApparelBreastsOnlyWorn ? !SizedApparelUtility.isPawnNaked(___pawn, flags) : true)) - { - if (apparelRecorder.bodyPartBreasts != null) - apparelRecorder.bodyPartBreasts.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - - //Log.Message("DrawBreasts for " + ___pawn.Name); - //if (SizedApparelSettings.Debug) - // Log.Message("trying to draw breasts"); - //Draw Breasts. Allways draw - - /* - Vector3 vector = rootLoc; - if (facing == Rot4.North) - vector.y += 0.001f;//not sure what to do - else - vector.y += 0.0113f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicBreasts_horny; - if (graphic == null) - graphic = apparelRecorder.graphicBreasts; - - - - if (graphic != null) - { - Material mat; - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - graphic = graphic.GetColoredVersion(graphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, 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, skinColor, skinColor2); - vector.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? graphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { graphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - } - else - { - //Log.Warning("[SizedApparel] Missing Breasts Graphic for: " + ___pawn.Name); - - } - */ - - } - - if (bodyDrawType != RotDrawMode.Dessicated && SizedApparelSettings.drawPenis && SizedApparelUtility.CanDrawPenis(___pawn, flags, true)) - { - foreach(SizedApparelBodyPart b in apparelRecorder.bodyPartBalls) - { - b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - } - foreach (SizedApparelBodyPart b in apparelRecorder.bodyPartPenises) - { - b.DrawBodyPart(rootLoc, angle, facing, bodyDrawType, flags, bodyMesh); - } - /* - //Render Penis And Balls - Vector3 vector = rootLoc; - if (facing == Rot4.North) - vector.y += 0.0025f; - else - vector.y += 0.0108f; - - float offsetX = 0; // right and left - float offsetZ = 0; // up and down - - if(apparelRecorder.graphicPenises != null && apparelRecorder.graphicBallsOfPenises != null) - { - for (int i = 0; i < apparelRecorder.graphicPenises.Count; i++) - { - float t = (i + 1f) / (apparelRecorder.graphicPenises.Count + 1); - offsetX = Mathf.Lerp(-0.1f, 0.1f, t); - offsetZ = Mathf.Lerp(-0.05f, 0.05f, t); - - Graphic penisGraphic = null; - Graphic ballGraphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - { - penisGraphic = apparelRecorder.graphicPenises_horny[i]; - } - if (penisGraphic == null) - penisGraphic = apparelRecorder.graphicPenises[i]; - ballGraphic = apparelRecorder.graphicBallsOfPenises[i];//Balls Doesn't support HornyVariation - if (ballGraphic != null && (SizedApparelSettings.hideBallOfFuta ? Genital_Helper.is_futa(___pawn) : true)) - { - Material mat; - //TODO: vector2.y - Vector3 vector2 = vector; - if (facing == Rot4.North) - vector2.y += 0.0060f; - else - vector2.y -= 0.0012f; - if (facing == Rot4.North || facing == Rot4.South) - vector2.x += offsetX; - else - vector2.x += offsetX * 0.5f; - - if (facing == Rot4.East) - vector2.z += offsetZ; - if (facing == Rot4.West) - vector2.z -= offsetZ; - - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - ballGraphic = ballGraphic.GetColoredVersion(ballGraphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? ballGraphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { ballGraphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector2, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); // draw for writeZ data to solve shadow issue - } - ballGraphic = ballGraphic.GetColoredVersion(shader, skinColor, skinColor2); - vector2.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? ballGraphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { ballGraphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector2, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - } - if (penisGraphic != null) - { - Material mat; - Vector3 vector2 = vector; - if (facing == Rot4.North || facing == Rot4.South) - vector2.x += offsetX; - else - vector2.x += offsetX * 0.5f; - - if (facing == Rot4.East) - vector2.z += offsetZ; - if (facing == Rot4.West) - vector2.z -= offsetZ; - - if (!flags.FlagSet(PawnRenderFlags.Cache)) - { - penisGraphic = penisGraphic.GetColoredVersion(penisGraphic.Shader, skinColor, skinColor2); - mat = flags.FlagSet(PawnRenderFlags.Cache) ? penisGraphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { penisGraphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector2, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); // draw for writeZ data to solve shadow issue - } - penisGraphic = penisGraphic.GetColoredVersion(shader, skinColor, skinColor2); - //TODO: vector2.y - vector2.y += 0.00001f; - mat = flags.FlagSet(PawnRenderFlags.Cache) ? penisGraphic.MatAt(facing) : (Material)overrideMatMethod.Invoke(__instance, new object[] { penisGraphic.MatAt(facing), ___pawn, flags.FlagSet(PawnRenderFlags.Portrait) }); - GenDraw.DrawMeshNowOrLater(bodyMesh, vector2, quaternion, mat, flags.FlagSet(PawnRenderFlags.DrawNow)); - } - } - }*/ - - }//Draw BodyParts - - //Draw Modular Apparel Parts - if (flags.FlagSet(PawnRenderFlags.Clothes)) - { - - } - - - + apparelRecorder.UpdateTickAnim(rootLoc, angle); + apparelRecorder.DrawAllBodyParts(rootLoc, angle, facing, bodyDrawType, flags, ___pawn, bodyMesh); } - + //else. the DrawPawnFur will draw bodyparts becaust it should be upper } } + + + //Base Body Graphic Injection + [HarmonyPatch(typeof(PawnGraphicSet), "MatsBodyBaseAt")] + public class MatsBodyBastAtPatch + { + public static void Postfix(ref List __result, PawnGraphicSet __instance, Rot4 facing, RotDrawMode bodyCondition, bool drawClothes) + { + if (!SizedApparelSettings.useBodyTexture) + return; + + if (__result.NullOrEmpty()) + return; + + if (!SizedApparelUtility.CanApplySizedApparel(__instance.pawn)) + return; + + var comp = __instance.pawn.GetComp(); + if (comp == null) // maybe it can be null? but why...? mechanoids? + return; + + if (drawClothes) + { + if (comp.hasUnsupportedApparel) + return; + } + + Material bodyMat = null; + Material sizedApparelBaseBodyMat = null; + switch (bodyCondition) + { + case RotDrawMode.Fresh: + if(__instance.nakedGraphic != null && comp.graphicbaseBodyNaked != null) + { + bodyMat = __instance.nakedGraphic.MatAt(facing, null); + sizedApparelBaseBodyMat = comp.graphicbaseBodyNaked.MatAt(facing, null); + } + break; + case RotDrawMode.Rotting: + if (__instance.rottingGraphic != null && comp.graphicbaseBodyRotten != null) + { + bodyMat = __instance.rottingGraphic.MatAt(facing, null); + sizedApparelBaseBodyMat = comp.graphicbaseBodyRotten.MatAt(facing, null); + } + break; + case RotDrawMode.Dessicated: + return;// //don't inject for Dessicated graphic. it doesn't need to patch for this + break; + default: + bodyMat = null; + sizedApparelBaseBodyMat = null; + break; + } + + if (sizedApparelBaseBodyMat == null) + return; + + //the body mat would be in first index but not sure. so search from start + for (int i = 0; i < __result.Count; i++) + { + if(__result[i] == bodyMat) + { + __result[i] = sizedApparelBaseBodyMat; + //should inject body part graphics here? + break; + } + } + //should do something more? such as add body parts or somthing? + } + } + + //TODO [HarmonyPatch(typeof(PawnRenderer), "BaseHeadOffsetAt")] public class HeadOffsetPatch @@ -1683,7 +915,7 @@ class GeneratePawnPatch public static void Postfix(PawnRenderer __instance, Pawn ___pawn, Rot4 rotation, ref Vector3 __result) { - var comp = ___pawn.TryGetComp(); + var comp = ___pawn.GetComp(); if (comp == null) return; } @@ -1692,355 +924,6 @@ class GeneratePawnPatch - [Obsolete] - public class DrawPawnPatch - { - public static void TryDrawBodyPart(ref PawnRenderer __instance,Graphic graphic,Graphic hornyGraphic, Vector3 rootLoc, Vector3 drawOffset, float angle, bool renderBody, Rot4 bodyFacing, Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible) - { - - } - - - - public static void RenderPawnInternalPrefix(ref PawnRenderer __instance, Vector3 rootLoc, float angle, bool renderBody, Rot4 bodyFacing, Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible, Pawn ___pawn) - { - if (!__instance.graphics.AllResolved) - { - __instance.graphics.ResolveAllGraphics(); - } - - if (!SizedApparelSettings.drawBodyParts) - return; - if (___pawn == null) - return; - ApparelRecorderComp apparelRecorder = ___pawn.TryGetComp(); - if (apparelRecorder == null) - return; - if (!apparelRecorder.hasUpdateBefore || apparelRecorder.isDirty) - { - if (SizedApparelSettings.Debug) - Log.Message("[SizedApparel] trying to draw " + ___pawn.Name + " with unupdated component! Updating it."); - apparelRecorder.Update(true,false); - SizedApparelUtility.UpdateAllApparel(___pawn); - } - if (apparelRecorder.needToCheckApparelGraphicRecords) - { - if(apparelRecorder.isApparelGraphicRecordChanged()) - { - //apparelRecorder.Update(true, true); //1.3 - //SizedApparelUtility.UpdateAllApparel(___pawn, true); - } - - } - if (renderBody) - { - BodyPatch.SetBodyGraphic(___pawn,true, false); - } - } - - //Draw Private parts - public static void RenderPawnInternalPostfix(ref PawnRenderer __instance, Vector3 rootLoc, float angle, bool renderBody, Rot4 bodyFacing, Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible, Pawn ___pawn) - { - - - if (___pawn == null) - return; - ApparelRecorderComp apparelRecorder = ___pawn.TryGetComp(); - if (apparelRecorder == null) - return; - Quaternion quaternion = Quaternion.AngleAxis(angle, Vector3.up); - Mesh mesh = null; - - if (!SizedApparelSettings.drawBodyParts) - { - /* - if (SizedApparelPatch.rimNudeWorldActive && SizedApparelSettings.drawSizedApparelBreastsOnlyWorn && !SizedApparelUtility.isPawnNaked(___pawn)) - { - //TODO - - if (__instance.graphics == null) - return; - if (bodyDrawType == RotDrawMode.Dessicated) //don't draw on skeletone - return; - - if (___pawn.RaceProps.Humanlike)//this.pawn.RaceProps.Humanlike - { - mesh = MeshPool.humanlikeBodySet.MeshAt(bodyFacing); - } - else - { - mesh = __instance.graphics.nakedGraphic.MeshAt(bodyFacing); - } - string defName = __instance.graphics.pawn.def.defName; - - - Vector3 loc = rootLoc; - loc.y += 0.009183673f; - - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.001f;//not sure what to do - else - vector.y += 0.012f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicBreasts_horny; - if (graphic == null) - graphic = apparelRecorder.graphicBreasts; - if (graphic != null) - { - Material breastMat = graphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(breastMat) : breastMat; - breastMat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, breastMat, portrait); - } - } - */ - return; - - } - - if (renderBody) - { - if (__instance.graphics == null) - return; - if (bodyDrawType == RotDrawMode.Dessicated) //don't draw on skeletone - return; - - if (___pawn.RaceProps.Humanlike)//this.pawn.RaceProps.Humanlike - { - mesh = MeshPool.humanlikeBodySet.MeshAt(bodyFacing); - } - else - { - mesh = __instance.graphics.nakedGraphic.MeshAt(bodyFacing); - } - string defName = __instance.graphics.pawn.def.defName; - - - Vector3 loc = rootLoc; - loc.y += 0.009183673f; - - - //breasts are only rendered when all of worn apparels are supported or nude. - if (!apparelRecorder.hasUnsupportedApparel || SizedApparelUtility.isPawnNaked(___pawn)) //TODO : Move it to CanDraw - { - //string bodyPartPath = "SizedApparel/BodyParts"; - //string breastsPath; - - //Hediff breastHediff = apparelRecorder.breastHediff; - - //float breastHediffSeverityCap = apparelRecorder.breastSeverityCapToDraw; - //string breastName = breastHediff.def.defName;//Todo - //breastsPath = "SizedApparel/BodyParts/Breasts/Human/testBodyPart_Female"; - /* - if ((ContentFinder.Get((breastsPath + "_south"), false) != null)) - { - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector = vector; - else - vector.y += 0.0092f; - Graphic bodyPartGraphic = GraphicDatabase.Get(breastsPath, ShaderDatabase.Cutout); - Material bodyPartMat = bodyPartGraphic.MatAt(bodyFacing, null); - //bodyPartMat = __instance.OverrideMaterialIfNeeded_NewTemp(bodyPartMat, __instance.pawn, portrait);//private function and values //for damage mat or somthing more - Material baseMat = (!portrait && pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(bodyPartMat) : bodyPartMat; - bodyPartMat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, bodyPartMat, portrait); - } - else - { - if (SizedApparelSettings.Debug) - Log.Warning("[Sized Apparel] Missing Breast Tesxture: " + breastsPath); - //breastName = "Breasts"; - } - */ - if(SizedApparelSettings.drawBreasts && (SizedApparelSettings.drawSizedApparelBreastsOnlyWorn ? !SizedApparelUtility.isPawnNaked(___pawn): true)) - { - //Log.Message("DrawBreasts for " + ___pawn.Name); - //if (SizedApparelSettings.Debug) - // Log.Message("trying to draw breasts"); - //Draw Breasts. Allways draw - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.001f;//not sure what to do - else - vector.y += 0.012f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicBreasts_horny; - if(graphic == null) - graphic = apparelRecorder.graphicBreasts; - - /* - if(graphic == null) - { - apparelRecorder.Update(); - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicBreasts_horny; - if (graphic == null) - graphic = apparelRecorder.graphicBreasts; - }*/ - - - if (graphic != null) - { - Material mat = graphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, mat, portrait); - } - else - { - //Log.Warning("[SizedApparel] Missing Breasts Graphic for: " + ___pawn.Name); - - } - - - } - if(SizedApparelSettings.drawVagina && SizedApparelUtility.CanDrawVagina(___pawn)) - { - //Draw Vagina. AllwaysDraw - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.0100f;//not sure what to do - else - vector.y += 0.0100f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicVagina_horny; - if (graphic == null) - graphic = apparelRecorder.graphicVagina; - if (graphic != null) - { - Material mat = graphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, mat, portrait); - } - } - if(SizedApparelSettings.drawAnus && SizedApparelUtility.CanDrawAnus(___pawn)) - { - //Draw Anus. //Allways draw - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.0105f;//not sure what to do - else - vector.y += 0.010f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicAnus_horny; - if (graphic == null) - graphic = apparelRecorder.graphicAnus; - if (graphic != null) - { - Material mat = graphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, mat, portrait); - } - } - if (SizedApparelSettings.drawUdder && SizedApparelUtility.CanDrawUdder(___pawn)) - { - //Draw Udder. Need Complex Hiding Calculation -> - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.0015f;//not sure what to do - else - vector.y += 0.0095f; - Graphic graphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - graphic = apparelRecorder.graphicUdder_horny; - if (graphic == null) - graphic = apparelRecorder.graphicUdder; - if (graphic != null) - { - Material mat = graphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, mat, portrait); - } - } - if(SizedApparelSettings.drawBelly && SizedApparelUtility.CanDrawBelly(___pawn)) - { - //Draw Belly. Need Complex Hiding Calculation - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.0002f;//not sure what to do - else - vector.y += 0.0105f; - Graphic graphic = apparelRecorder.graphicBelly; - if (graphic != null) - { - Material mat = graphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector, quaternion, mat, portrait); - } - } - - //Rimworld 1.2 doesn't have PawnRenderFlags! - if (SizedApparelSettings.drawPenis && SizedApparelUtility.CanDrawPenis(___pawn,PawnRenderFlags.None, false)) - { - //Render Penis And Balls - Vector3 vector = rootLoc; - if (bodyFacing == Rot4.North) - vector.y += 0.0025f; - else - vector.y += 0.015f; - - float offsetX = 0; - - for (int i = 0; i < apparelRecorder.graphicPenises.Count; i++) - { - float t = (i + 1f) / (apparelRecorder.graphicPenises.Count + 1); - offsetX = Mathf.Lerp(-0.1f, 0.1f, t); - - - Graphic penisGraphic = null; - Graphic ballGraphic = null; - if (SizedApparelUtility.IsHorny(___pawn)) - { - penisGraphic = apparelRecorder.graphicPenises_horny[i]; - } - if (penisGraphic == null) - penisGraphic = apparelRecorder.graphicPenises[i]; - ballGraphic = apparelRecorder.graphicBallsOfPenises[i];//Balls Doesn't support HornyVariation - if (penisGraphic != null) - { - //TODO: vector2.y - Vector3 vector2 = vector; - vector2.x += offsetX; - Material mat = penisGraphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector2, quaternion, mat, portrait); - } - if (SizedApparelSettings.hideBallOfFuta) - if (Genital_Helper.is_futa(___pawn)) - continue;//skip rendering ball - if (ballGraphic != null) - { - //TODO: vector2.y - Vector3 vector2 = vector; - if (bodyFacing == Rot4.North) - vector2.y += 0.0080f; - else - vector2.y -= 0.002f; - vector2.x += offsetX; - Material mat = ballGraphic.MatAt(bodyFacing, null); - Material baseMat = (!portrait && ___pawn.IsInvisible()) ? InvisibilityMatPool.GetInvisibleMat(mat) : mat; - mat = __instance.graphics.flasher.GetDamagedMat(baseMat); - GenDraw.DrawMeshNowOrLater(mesh, vector2, quaternion, mat, portrait); - } - } - } - - } - - } - } - } } diff --git a/1.3/source/SizedApparel/SizedApparelPoseSet.cs b/1.3/source/SizedApparel/SizedApparelPoseSet.cs index ff7eb81..4356695 100644 --- a/1.3/source/SizedApparel/SizedApparelPoseSet.cs +++ b/1.3/source/SizedApparel/SizedApparelPoseSet.cs @@ -26,7 +26,7 @@ namespace SizedApparel return; /* - var comp = ___pawn.TryGetComp(); + var comp = ___pawn.GetComp(); 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 headOffset; + //public List headOffset; } diff --git a/1.3/source/SizedApparel/SizedApparelPubicHair.cs b/1.3/source/SizedApparel/SizedApparelPubicHair.cs index 38a8ec3..a039c84 100644 --- a/1.3/source/SizedApparel/SizedApparelPubicHair.cs +++ b/1.3/source/SizedApparel/SizedApparelPubicHair.cs @@ -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 { } diff --git a/1.3/source/SizedApparel/SizedApparelSettingcs.cs b/1.3/source/SizedApparel/SizedApparelSettingcs.cs index d2a4b07..155822d 100644 --- a/1.3/source/SizedApparel/SizedApparelSettingcs.cs +++ b/1.3/source/SizedApparel/SizedApparelSettingcs.cs @@ -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(); } + + 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 alienDefList = new List(); // to load aliens and compare with modsetting + private static Vector2 ScrollPosL = Vector2.zero; + private static Vector2 ScrollPosR = Vector2.zero; + public static List alienDefList = new List(); // to load aliens and compare with modsetting public override void WriteSettings() { @@ -264,7 +325,7 @@ namespace SizedApparel { if(alienDefList == null) alienDefList = new List(); - if (alienDefList.Count == 0) + if (true)//alienDefList.Count == 0 { IEnumerable HumanlikeRaces; HumanlikeRaces = DefDatabase.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(); + var comp = pawn.GetComp(); if (comp != null) - comp.SetDirty(clearPawnGraphicSet); + { + comp.UpdateRaceSettingData(); + comp.SetDirty(clearPawnGraphicSet,true,true,true); + } + } } } + + + public SizedApparelMod(ModContentPack content) : base(content) { this.settings = GetSettings(); @@ -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); diff --git a/1.3/source/SizedApparel/SizedApparelStyleStationPatch.cs b/1.3/source/SizedApparel/SizedApparelStyleStationPatch.cs index 8e82e3f..5964db0 100644 --- a/1.3/source/SizedApparel/SizedApparelStyleStationPatch.cs +++ b/1.3/source/SizedApparel/SizedApparelStyleStationPatch.cs @@ -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 ___tabs, Dialog_StylingStation.StylingTab ___curTab, float ___viewRectHeight, List ___tmpStyleItems, bool ___devEditMode, Pawn ___pawn) + public static void Postfix(Rect rect, ref Vector2 ___hairScrollPosition, Dialog_StylingStation __instance, List ___tabs, Dialog_StylingStation.StylingTab ___curTab, float ___viewRectHeight, ref List ___tmpStyleItems, bool ___devEditMode, Pawn ___pawn, Color ___desiredHairColor) { + if (!SizedApparelSettings.drawPubicHair) + return; + + + //Widgets.DrawMenuSection(rect); + //TabDrawer.DrawTabs(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().pubicHairDef = h; + //___pawn.story.hairDef = h; + }, (StyleItemDef h) => ___pawn.GetComp().pubicHairDef == h, (StyleItemDef h) => ___pawn.GetComp().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 tmpStyleItems, bool devEditMode, Pawn pawn, Color desiredHairColor, Rect rect, ref Vector2 scrollPosition, Action drawAction, Action selectAction, Func hasStyleItem, Func hadStyleItem, Func extraValidator = null, bool doColors = false) { + //Color desiredHairColor = AccessTools.FieldRefAccess(dialog_StylingStation, "desiredHairColor"); + + int total_pubes_count = 0; + total_pubes_count = DefDatabase.AllDefs.Count(); + + //need child patch? + if (total_pubes_count <= 0) + { + Widgets.NoneLabelCenteredVertically(rect, "(" + "NoneUsableForPawn".Translate(pawn.Named("PAWN")) + ")"); + return; + } + + ApparelRecorderComp comp = pawn.GetComp(); + + + + 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.AllDefs + where (devEditMode || PawnStyleItemChooser.WantsToUseStyle(pawn, x, null) || hadStyleItem(x)) && (extraValidator == null || extraValidator(x)) + select x);*/ + tmpStyleItems.AddRange(DefDatabase.AllDefs);// just add All Pubic Hair def. + + tmpStyleItems.SortBy((StyleItemDef x) => -PawnStyleItemChooser.StyleItemChoiceLikelihoodFor(x, pawn)); + if (tmpStyleItems.NullOrEmpty()) + { + 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 allHairColors; + private static List AllHairColors + { + get + { + if (allHairColors == null) + { + allHairColors = (from ic in DefDatabase.AllDefsListForReading + select ic.color).ToList(); + allHairColors.SortByColor((Color x) => x); + } + return allHairColors; + } + } + static void AddPubicHairTab(Dialog_StylingStation stylingStation, List 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(); + + //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(); + if (comp == null) + return; + comp.initialPubicHairDef = comp.pubicHairDef; + } + } + } diff --git a/1.3/source/SizedApparel/SizedApparelTexturePointDef.cs b/1.3/source/SizedApparel/SizedApparelTexturePointDef.cs new file mode 100644 index 0000000..f36b5b1 --- /dev/null +++ b/1.3/source/SizedApparel/SizedApparelTexturePointDef.cs @@ -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 SouthBodyPartPoints = new List(); + public List NorthBodyPartPoints = new List(); + public List EastBodyPartPoints = new List(); + + //can be null. then use EastBodyPartPoints + public List WestBodyPartPoints = new List(); + + + + } +} diff --git a/1.3/source/SizedApparel/SizedApparelUtility.cs b/1.3/source/SizedApparel/SizedApparelUtility.cs index 1315215..4bc05cc 100644 --- a/1.3/source/SizedApparel/SizedApparelUtility.cs +++ b/1.3/source/SizedApparel/SizedApparelUtility.cs @@ -32,13 +32,15 @@ namespace SizedApparel static string Tiny = "_1"; static string Nipples = "_0"; //static String[] size = new string[10] { "_0", "_1", "_2", "_3", "_4", "_5" , "_6", "_7", "_8", "_9"}; - public static string[] size = new string[11] { Nipples, Tiny, Small, Average, Large, Huge, Enormous, Massive, Gargantuan, Colossal, Titanic }; + public static string[] breastsSizeStrings = new string[11] { Nipples, Tiny, Small, Average, Large, Huge, Enormous, Massive, Gargantuan, Colossal, Titanic }; + public static string[] commonSizeStrings = new string[6] { Nipples, Tiny, Small, Average, Large, Huge}; + [Obsolete] public static int findAvailableSmallerSizeFromSetting(int current) { int target = current; - target = Math.Min(target, size.Length - 1); + target = Math.Min(target, breastsSizeStrings.Length - 1); while (target > 0) { if (SizedApparelSettings.getUseSettingFromIndex(target) == false) @@ -48,21 +50,23 @@ namespace SizedApparel } return target; } + [Obsolete] public static int findAvailableBiggerSizeFromSetting(int current) { int target = current; - while (target < size.Length) + while (target < breastsSizeStrings.Length) { if (SizedApparelSettings.getUseSettingFromIndex(target) == false) target++; else break; } - target = Math.Min(target, size.Length - 1); + target = Math.Min(target, breastsSizeStrings.Length - 1); return target; } + [Obsolete] public static int findAvailableSizeFromSetting(int current, bool findBigger) { if (findBigger) @@ -195,14 +199,14 @@ namespace SizedApparel int offset = 0; - + //int offsetLimit = 10; bool validTexture = false; Graphic graphic = null; bool findBigger = true; // if false : search smaller first string pathString = ""; - while (offset < SizedApparelUtility.size.Length) + while (offset < SizedApparelUtility.breastsSizeStrings.Length) { if (breastHediffName != null) { @@ -211,7 +215,7 @@ namespace SizedApparel pathString = raceExtraPath + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, findBigger, ref indexOut, ref severityOut); if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); validTexture = true; @@ -226,7 +230,7 @@ namespace SizedApparel pathString = extraPath + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, findBigger, ref indexOut, ref severityOut); if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); validTexture = true; @@ -237,7 +241,7 @@ namespace SizedApparel } } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is missing"); if(racePath != null) @@ -245,7 +249,7 @@ namespace SizedApparel pathString = racePath + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, findBigger, ref indexOut, ref severityOut); if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); validTexture = true; @@ -260,7 +264,7 @@ namespace SizedApparel pathString = path + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, findBigger, ref indexOut, ref severityOut); if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); @@ -270,7 +274,7 @@ namespace SizedApparel //Log.Message(path + BreastSeverityString(breastSeverity, offset, findBigger) + ":Texture Found"); break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is missing"); //Log.Warning(path + BreastSeverityString(breastSeverity, offset, findBigger) + ":Texture Not Found. Try bigger Texture."); @@ -281,7 +285,7 @@ namespace SizedApparel if (validTexture == false) { offset = 0; - while (offset < SizedApparelUtility.size.Length) + while (offset < SizedApparelUtility.breastsSizeStrings.Length) { if (breastHediffName != null) { @@ -290,7 +294,7 @@ namespace SizedApparel pathString = raceExtraPath + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, !findBigger, ref indexOut, ref severityOut); if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); @@ -306,7 +310,7 @@ namespace SizedApparel pathString = extraPath + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, !findBigger, ref indexOut, ref severityOut); if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); @@ -316,7 +320,7 @@ namespace SizedApparel //Log.Message(extraPath + BreastSeverityString(breastSeverity, offset, !findBigger) + ":Extra Texture Found"); break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is missing"); //Log.Warning(extraPath + BreastSeverityString(breastSeverity, offset, !findBigger) + ":Extra Texture Not Found."); @@ -327,7 +331,7 @@ namespace SizedApparel pathString = racePath + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, !findBigger, ref indexOut, ref severityOut); if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); @@ -342,7 +346,7 @@ namespace SizedApparel pathString = path + SizedApparelUtility.BreastSeverityString(breastSeverity, offset, !findBigger, ref indexOut, ref severityOut); if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is found"); graphic = GraphicDatabase.Get(pathString, sourceGraphic.Shader, sourceGraphic.drawSize, sourceGraphic.color, sourceGraphic.colorTwo, sourceGraphic.data); //newAgr.Add(new ApparelGraphicRecord(graphic, agr.sourceApparel)); @@ -352,7 +356,7 @@ namespace SizedApparel //Log.Message(path + BreastSeverityString(breastSeverity, offset, !findBigger) + ":Texture Found"); break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")apparel texture is missing"); //Log.Warning(path + BreastSeverityString(breastSeverity, offset, !findBigger) + ":Texture Not Found. Try smaller Texture."); @@ -393,22 +397,35 @@ namespace SizedApparel } - [Obsolete] - public static SizedApparelBodyPartDef TryGetSizedApparelBodyPart(string bodyPartName) - { - return null; - } - - public static bool isPragnencyHediff(Hediff h) { - return h.def.defName.ToLower().Contains("pregnancy"); + + //1.4 + /* + //TODO. remove contain pregnancy side effect hediffs + if (h.def == HediffDefOf.PregnantHuman || h.def == HediffDefOf.Pregnant) + return true; + + //pawn who Giving birth. the pregnant hediff will be removed when the pawn is in labor + if (h.def == HediffDefOf.PregnancyLabor || h.def == HediffDefOf.PregnancyLaborPushing) + return true; + */ + return h.def.defName.ToLower().Contains("rjw_pregnancy") || h.def.defName.ToLower().EndsWith("pregnant") || h.def.defName.ToLower().EndsWith("pregnancy"); // h.def.defName.ToLower().Contains("pregnancy"); + } + public static bool isRJWEggHediff(Hediff h) + { + var e = h as rjw.Hediff_InsectEgg; + if (e == null) + return false; + return true; } public static bool isBellyBulgeHediff(Hediff h) { if (isPragnencyHediff(h)) return true; + if (isRJWEggHediff(h)) + return true; if (SizedApparelPatch.LicentiaActive) { if (h.def.defName.ToLower().Contains("cumflation")) @@ -417,6 +434,8 @@ namespace SizedApparel return true; } return false; + + } public static bool isRJWParts(Hediff h) @@ -466,7 +485,7 @@ namespace SizedApparel //find valid breasts texture to choose apparel. public static float GetBreastSeverityValidTextures(Pawn pawn, Hediff hediff, string customDefName = null) { - ApparelRecorderComp comp = pawn.TryGetComp(); + ApparelRecorderComp comp = pawn.GetComp(); if (comp == null) return -1; @@ -486,7 +505,7 @@ namespace SizedApparel else defName = customDefName; - string bodyPartsFolderPath = "SizedApparel/BodyParts/"; + const string bodyPartsFolderPath = "SizedApparel/BodyParts/"; string defaultHediffName = "Breasts"; string graphicFolderPath = bodyPartsFolderPath + defName + "/" + "Breasts" + "/"; string fileName; @@ -519,14 +538,14 @@ namespace SizedApparel string pathString = ""; int currentSizeIndex = -1; float currentSeverity = -1; - while (offset < SizedApparelUtility.size.Length) + while (offset < SizedApparelUtility.breastsSizeStrings.Length) { if (hediff != null) { pathString = extraPath + SizedApparelUtility.BreastSeverityString(targetBreastSeverity, offset, findBigger, ref currentSizeIndex, ref currentSeverity); if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is found"); @@ -535,19 +554,19 @@ namespace SizedApparel } } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is missing"); pathString = path + SizedApparelUtility.BreastSeverityString(targetBreastSeverity, offset, findBigger, ref currentSizeIndex, ref currentSeverity); if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is found"); validTexture = true; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is missing"); offset++; @@ -557,20 +576,20 @@ namespace SizedApparel if (validTexture == false) { offset = 0; - while (offset < SizedApparelUtility.size.Length) + while (offset < SizedApparelUtility.breastsSizeStrings.Length) { if (hediff != null) { pathString = extraPath + SizedApparelUtility.BreastSeverityString(targetBreastSeverity, offset, !findBigger, ref currentSizeIndex, ref currentSeverity); if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is found"); validTexture = true; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is missing"); } @@ -578,13 +597,13 @@ namespace SizedApparel pathString = path + SizedApparelUtility.BreastSeverityString(targetBreastSeverity, offset, !findBigger, ref currentSizeIndex, ref currentSeverity); if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is found"); validTexture = true; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")Breasts texture is missing"); offset++; @@ -617,7 +636,7 @@ namespace SizedApparel defName = customRaceDefName; string bodyType = bodyTypeName; - string bodyPartsFolderPath = "SizedApparel/BodyParts/"; + const string bodyPartsFolderPath = "SizedApparel/BodyParts/"; string graphicFolderPath; string targetFolderName = folderName; if (hornyGraphic) @@ -653,7 +672,7 @@ namespace SizedApparel { genderString = "F"; } - if (gender == Gender.Female) + if (gender == Gender.Male) { genderString = "M"; } @@ -667,20 +686,29 @@ namespace SizedApparel int offset = 0; + int offsetLimit = 10 ; // = SizedApparelUtility.breastsSizeStrings.Length; + + float SeverityCapped; if (isBreast) + { SeverityCapped = SizedApparelUtility.BreastSizeIndexToSeverity(sizeIndex); + offsetLimit = SizedApparelUtility.breastsSizeStrings.Length; + } else + { SeverityCapped = SizedApparelUtility.PrivatePartSizeIndexToSeverity(sizeIndex); + offsetLimit = SizedApparelUtility.commonSizeStrings.Length; + } bool validTexture = false; bool findBigger = true; // if false : search smaller first string pathString = ""; string pathStringWithVariatione = ""; - while (offset < SizedApparelUtility.size.Length) + while (offset < offsetLimit) { if (hediffDefName != null) { @@ -694,7 +722,7 @@ namespace SizedApparel pathStringWithVariatione = pathString + "_" + variation; if (ContentFinder.Get((pathStringWithVariatione + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is found"); graphic = GraphicDatabase.Get(pathStringWithVariatione); @@ -702,7 +730,7 @@ namespace SizedApparel hediffResult = hediffDefName; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is missing"); } @@ -710,7 +738,7 @@ namespace SizedApparel if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is found"); @@ -727,7 +755,7 @@ namespace SizedApparel //Log.Warning(extraPath + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Extra Texture Not Found."); } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is missing"); if (isBreast) @@ -740,7 +768,7 @@ namespace SizedApparel pathStringWithVariatione = pathString + "_" + variation; if (ContentFinder.Get((pathStringWithVariatione + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is found"); graphic = GraphicDatabase.Get(pathStringWithVariatione); @@ -748,13 +776,13 @@ namespace SizedApparel hediffResult = hediffDefName; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is missing"); } if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is found"); //minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); @@ -766,7 +794,7 @@ namespace SizedApparel //Log.Message(path + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Texture Found"); break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is missing"); //Log.Warning(path + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Texture Not Found. Try bigger Texture."); @@ -777,7 +805,7 @@ namespace SizedApparel if (validTexture == false) { offset = 0; - while (offset < SizedApparelUtility.size.Length) + while (offset < offsetLimit) { if (hediffDefName != null) { @@ -791,7 +819,7 @@ namespace SizedApparel pathStringWithVariatione = pathString + "_" + variation; if (ContentFinder.Get((pathStringWithVariatione + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is found"); graphic = GraphicDatabase.Get(pathStringWithVariatione); @@ -799,13 +827,13 @@ namespace SizedApparel hediffResult = hediffDefName; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is missing"); } if (ContentFinder.Get((pathString + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is found"); //minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); @@ -818,7 +846,7 @@ namespace SizedApparel //Log.Message(extraPath + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Extra Texture Found"); break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is missing"); //Log.Warning(extraPath + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Extra Texture Not Found."); @@ -833,7 +861,7 @@ namespace SizedApparel pathStringWithVariatione = pathString + "_" + variation; if (ContentFinder.Get((pathStringWithVariatione + "_south"), false) != null) // checking special texture like udder { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is found"); graphic = GraphicDatabase.Get(pathStringWithVariatione); @@ -841,13 +869,13 @@ namespace SizedApparel hediffResult = hediffDefName; break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathStringWithVariatione + ")BodyPart texture is missing"); } if ((ContentFinder.Get((pathString + "_south"), false) != null)) { - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is found"); //minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); @@ -859,7 +887,7 @@ namespace SizedApparel //Log.Message(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Found"); break; } - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] (" + pathString + ")BodyPart texture is missing"); //Log.Warning(path + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Texture Not Found. Try smaller Texture."); @@ -903,138 +931,21 @@ namespace SizedApparel return graphic; } - /* - public static Graphic GetBodyPartGraphic(Pawn pawn, Hediff hediff, bool isBreast, string folderName, string defaultHediffName, bool hornyGraphic = false, bool updateComp = false, string customRaceDefName = null) + + + public static PubicHairDef GetRandomPubicHair() { - int i = -1; - string s = null; - return GetBodyPartGraphic(pawn, hediff, isBreast, folderName, defaultHediffName, out i,out s, hornyGraphic, updateComp, customRaceDefName); + return DefDatabase.GetRandom(); + } + public static PubicHairDef GetPubicHairEmpty() + { + return DefDatabase.GetNamed("None"); } - public static Graphic GetBodyPartGraphic(Pawn pawn, Hediff hediff, bool isBreast, string folderName, string defaultHediffName, out int indexOut,out string hediffResult, bool hornyGraphic = false, bool updateComp = false, string customRaceDefName = null) - { - Graphic graphic = null; //for return - indexOut = -1; - hediffResult = null; - if (pawn == null) - return null; - if (hediff == null) - return null; - //rec = new ApparelGraphicRecord(null, null); - Graphic nakedGraphic = pawn.Drawer?.renderer?.graphics?.nakedGraphic; - if (nakedGraphic == null) - return null; - var rotComp = pawn.TryGetComp(); - if (rotComp!=null) - { - if (rotComp.Stage == RotStage.Rotting) - nakedGraphic = pawn.Drawer.renderer.graphics.rottingGraphic; - } - - ApparelRecorderComp comp = pawn.TryGetComp(); - string defName = pawn.def.defName; - if (customRaceDefName != null) - defName = customRaceDefName; - string bodyType = null; - if (pawn.story != null) - bodyType = pawn.story.bodyType?.defName; - string bodyPartsFolderPath = "SizedApparel/BodyParts/"; - string graphicFolderPath; - if (hornyGraphic) - graphicFolderPath = bodyPartsFolderPath + defName + "/" + folderName + "/Horny/"; - else - graphicFolderPath = bodyPartsFolderPath + defName + "/" + folderName + "/"; - string fileName; - string extraFileName; - if(bodyType != null) - { - fileName = defaultHediffName + ("_" + bodyType); - extraFileName = hediff.def.defName + ("_" + bodyType); - } - else - { - fileName = defaultHediffName; - extraFileName = hediff.def.defName; - } - - //if (SizedApparelSettings.matchBodyTextureToMinimumApparelSize) - // BreastSeverity = comp.BreastSeverityCache; - //int currentSizeIndex = 0; - //float currentSeverity = -1; - //int minSupportedBreastSizeIndex = 1000; - //float minSupportedBreastSeverity = 1000; - - //SizedApparelUtility.GetBreastSeverity(apparel.Wearer, out BreastSeverity, out breastHediff); - if (comp != null) - { - - if (comp.hasUpdateBefore == false) - { - if (updateComp) - { - //SizedApparelUtility.GetBreastSeverity(apparel.Wearer, out BreastSeverity, out breastHediff); - //comp.hasUnsupportedApparel = SizedApparelUtility.hasUnSupportedApparelFromWornData(apparel.Wearer, BreastSeverity, breastHediff); - //comp.breastSeverity = BreastSeverity; - //comp.breastHediff = breastHediff; - //comp.hasUpdateBefore = true; - //comp.Update(true,true,false); - } - - } - float SeverityCapped = hediff.Severity; ; - if (isBreast) - { - if (SizedApparelSettings.useBreastSizeCapForApparels) //SizedApparelSettings.useBreastSizeCapForApparels //wip - SeverityCapped = Math.Min(comp.BreastSeverityCache, SeverityCapped); - } - - - - - - if (comp.hasUnsupportedApparel == false) - { - int index; - if (isBreast) - index = SizedApparelUtility.BreastSeverityInt(hediff.Severity); - else - index = SizedApparelUtility.PrivatePartSeverityInt(hediff.Severity); - - Graphic partGraphic = GetBodyPartGraphic(pawn.def.defName, pawn.story?.bodyType?.defName, hediff.def.defName, hornyGraphic, index, folderName, defaultHediffName,out indexOut, out hediffResult, hornyGraphic, customRaceDefName); - if(partGraphic != null) - { - graphic = GraphicDatabase.Get(partGraphic.path, nakedGraphic.Shader, nakedGraphic.drawSize, nakedGraphic.color, nakedGraphic.colorTwo); - } - - - - - - - //minSupportedBreastSizeIndex = Math.Min(currentBreastSizeIndex, minSupportedBreastSizeIndex); - //comp.breastSeverityCapToDraw = Math.Min(comp.breastSeverityCapToDraw, minSupportedBreastSeverity); - } - } - - else - { - if (SizedApparelSettings.Debug) - Log.Warning("[Sized Apparel] " + pawn.Name + " doesn't have SizedApparel Compoenet!!"); - - } - return graphic; - - }*/ - - //TODO - public static Graphic GetBodyGraphic() - { - return null; - } public static bool IsHorny(Pawn pawn) { - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if(comp != null) { if (comp.forceHorny == true) @@ -1280,7 +1191,7 @@ namespace SizedApparel if (findBigger) { - if (size.Length - (targetIndex + offset) > 0) + if (breastsSizeStrings.Length - (targetIndex + offset) > 0) { //size.Length< targetIndex + offset @@ -1294,14 +1205,14 @@ namespace SizedApparel //targetSeverity = BreastSizeIndexToSeverity(result); targetSeverity = PrivatePartSizeIndexToSeverity(result); outTargetSeverity = targetSeverity; - return size[result]; + return breastsSizeStrings[result]; } } else { if (targetIndex - offset < 0) return "_-1"; - if (size.Length - (targetIndex - offset) > 0) + if (breastsSizeStrings.Length - (targetIndex - offset) > 0) { /* if (size[targetIndex - offset] != null) @@ -1313,7 +1224,7 @@ namespace SizedApparel //targetSeverity = BreastSizeIndexToSeverity(result); targetSeverity = PrivatePartSizeIndexToSeverity(result); outTargetSeverity = targetSeverity; - return size[result]; + return breastsSizeStrings[result]; } } } @@ -1332,108 +1243,6 @@ namespace SizedApparel public static string BreastSeverityString(float BreastSeverity, int offset, bool findBigger, ref int outTargetIndex, ref float outTargetSeverity) { - - { - /* old method - if (offset == 0) - { - if (BreastSeverity <= 0.1f) - return micro; //micro, flat - if (BreastSeverity <= 0.05f) - return small; // small , tight - if (BreastSeverity <= 0.25f) - return average; // average - if (BreastSeverity <= 0.70f) - return large; // large , loose - if (BreastSeverity <= 0.90f) - return huge; // huge , gaping - if (BreastSeverity <= 1.01f) - return oversized; // oversized - return String.Empty; // none - } - if (offset == 1) - { - if (BreastSeverity <= 0.1f) - return micro; //micro, flat - if (BreastSeverity <= 0.05f) - return small; // small , tight - if (BreastSeverity <= 0.25f) - return average; // average - if (BreastSeverity <= 0.70f) - return large; // large , loose - if (BreastSeverity <= 0.90f) - return huge; // huge , gaping - if (BreastSeverity <= 1.01f) - return oversized; // oversized - return String.Empty; // none - } - if (offset == 2) - { - if (BreastSeverity <= 0.1f) - return micro; //micro, flat - if (BreastSeverity <= 0.05f) - return small; // small , tight - if (BreastSeverity <= 0.25f) - return average; // average - if (BreastSeverity <= 0.70f) - return large; // large , loose - if (BreastSeverity <= 0.90f) - return huge; // huge , gaping - if (BreastSeverity <= 1.01f) - return oversized; // oversized - return String.Empty; // none - } - if (offset == 3) - { - if (BreastSeverity <= 0.1f) - return micro; //micro, flat - if (BreastSeverity <= 0.05f) - return small; // small , tight - if (BreastSeverity <= 0.25f) - return average; // average - if (BreastSeverity <= 0.70f) - return large; // large , loose - if (BreastSeverity <= 0.90f) - return huge; // huge , gaping - if (BreastSeverity <= 1.01f) - return oversized; // oversized - return String.Empty; // none - } - if (offset == 4) - { - if (BreastSeverity <= 0.1f) - return micro; //micro, flat - if (BreastSeverity <= 0.05f) - return small; // small , tight - if (BreastSeverity <= 0.25f) - return average; // average - if (BreastSeverity <= 0.70f) - return large; // large , loose - if (BreastSeverity <= 0.90f) - return huge; // huge , gaping - if (BreastSeverity <= 1.01f) - return oversized; // oversized - return String.Empty; // none - } - if (offset == 5) - { - if (BreastSeverity <= 0.1f) - return micro; //micro, flat - if (BreastSeverity <= 0.05f) - return small; // small , tight - if (BreastSeverity <= 0.25f) - return average; // average - if (BreastSeverity <= 0.70f) - return large; // large , loose - if (BreastSeverity <= 0.90f) - return huge; // huge , gaping - if (BreastSeverity <= 1.01f) - return oversized; // oversized - return String.Empty; // none - } - return String.Empty; // none } - */ - }//Old Method int targetIndex = -1; float targetSeverity = 0; int result = -1; @@ -1447,57 +1256,68 @@ namespace SizedApparel } else if (BreastSeverity < 0.02f) { - targetIndex = findAvailableSmallerSizeFromSetting(0); + targetIndex = 0; + //targetIndex = findAvailableSmallerSizeFromSetting(0); targetSeverity = 0.01f; } else if (BreastSeverity < 0.2f) { - targetIndex = findAvailableSmallerSizeFromSetting(1); + targetIndex = 1; + //targetIndex = findAvailableSmallerSizeFromSetting(1); targetSeverity = 0.02f; } else if (BreastSeverity < 0.40f) { - targetIndex = findAvailableSmallerSizeFromSetting(2); + targetIndex = 2; + //targetIndex = findAvailableSmallerSizeFromSetting(2); targetSeverity = 0.2f; } else if (BreastSeverity < 0.60f) { - targetIndex = findAvailableSmallerSizeFromSetting(3); + targetIndex = 3; + //targetIndex = findAvailableSmallerSizeFromSetting(3); targetSeverity = 0.40f; } else if (BreastSeverity < 0.80f) { - targetIndex = findAvailableSmallerSizeFromSetting(4); + targetIndex = 4; + //targetIndex = findAvailableSmallerSizeFromSetting(4); targetSeverity = 0.60f; } else if (BreastSeverity < 1.0f) { - targetIndex = findAvailableSmallerSizeFromSetting(5); + targetIndex = 5; + //targetIndex = findAvailableSmallerSizeFromSetting(5); targetSeverity = 0.80f; } else if (BreastSeverity < 1.2f) { - targetIndex = findAvailableSmallerSizeFromSetting(6); + targetIndex = 6; + //targetIndex = findAvailableSmallerSizeFromSetting(6); targetSeverity = 1.0f; } else if (BreastSeverity < 1.4f) { - targetIndex = findAvailableSmallerSizeFromSetting(7); + targetIndex = 7; + //targetIndex = findAvailableSmallerSizeFromSetting(7); targetSeverity = 1.2f; } else if (BreastSeverity < 1.6f) { - targetIndex = findAvailableSmallerSizeFromSetting(8); + targetIndex = 8; + //targetIndex = findAvailableSmallerSizeFromSetting(8); targetSeverity = 1.4f; } else if (BreastSeverity < 1.8f) { - targetIndex = findAvailableSmallerSizeFromSetting(9); + targetIndex = 9; + //targetIndex = findAvailableSmallerSizeFromSetting(9); targetSeverity = 1.6f; } else { - targetIndex = findAvailableSmallerSizeFromSetting(10); + targetIndex = 10; + //targetIndex = findAvailableSmallerSizeFromSetting(10); targetSeverity = 1.8f; } //if (targetIndex - offset < 0) @@ -1506,7 +1326,7 @@ namespace SizedApparel if (findBigger) { - if (size.Length - (targetIndex + offset) > 0) + if (breastsSizeStrings.Length - (targetIndex + offset) > 0) { //size.Length< targetIndex + offset @@ -1518,14 +1338,14 @@ namespace SizedApparel outTargetIndex = result; targetSeverity = BreastSizeIndexToSeverity(result); outTargetSeverity = targetSeverity; - return size[result]; + return breastsSizeStrings[result]; } } else { if (targetIndex - offset < 0) return "_-1"; - if (size.Length - (targetIndex - offset) > 0) + if (breastsSizeStrings.Length - (targetIndex - offset) > 0) { /* if (size[targetIndex - offset] != null) @@ -1535,7 +1355,7 @@ namespace SizedApparel outTargetIndex = result; targetSeverity = BreastSizeIndexToSeverity(result); outTargetSeverity = targetSeverity; - return size[result]; + return breastsSizeStrings[result]; } } } @@ -1591,7 +1411,7 @@ namespace SizedApparel { /* - ApparelRecorderComp apparelRecorder = pawn.TryGetComp(); + ApparelRecorderComp apparelRecorder = pawn.GetComp(); if(apparelRecorder == null) { Log.Message("No ApparelRecorder Found"); @@ -1642,12 +1462,12 @@ namespace SizedApparel bool validTexture = false; bool findBigger = true; // if false : search smaller first - while (offset < size.Length) + while (offset < breastsSizeStrings.Length) { if (breastHediff != null) { searchingPath = extraPath + BreastSeverityString(BreastSeverity, offset, findBigger,ref currentIndex,ref currentSeverity) + "_south"; - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] " + pawn.Name + ": ApparelSearching: " + searchingPath); if (ContentFinder.Get((searchingPath), false) != null) // checking special texture like udder @@ -1659,7 +1479,7 @@ namespace SizedApparel //Log.Warning(extraPath + BreastSeverityString(BreastSeverity, offset, findBigger) + ":Extra Texture Not Found."); } searchingPath = path + BreastSeverityString(BreastSeverity, offset, findBigger, ref currentIndex,ref currentSeverity) + "_south"; - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] " + pawn.Name + ": ApparelSearching: " + searchingPath); if ((ContentFinder.Get((searchingPath), false) != null)) { @@ -1681,12 +1501,12 @@ namespace SizedApparel if (validTexture == false) { offset = 0; - while (offset < size.Length) + while (offset < breastsSizeStrings.Length) { if (breastHediff != null) { searchingPath = extraPath + BreastSeverityString(BreastSeverity, offset, !findBigger, ref currentIndex,ref currentSeverity) + "_south"; - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] " + pawn.Name + ": ApparelSearching: " + searchingPath); if (ContentFinder.Get((searchingPath), false) != null) // checking special texture like udder { @@ -1697,7 +1517,7 @@ namespace SizedApparel //Log.Warning(extraPath + BreastSeverityString(BreastSeverity, offset, !findBigger) + ":Extra Texture Not Found."); } searchingPath = path + BreastSeverityString(BreastSeverity, offset, !findBigger, ref currentIndex, ref currentSeverity) + "_south"; - if (SizedApparelSettings.Debug) + if (SizedApparelSettings.Debug && SizedApparelSettings.DetailLog) Log.Message("[Sized Apparel] " + pawn.Name + ": ApparelSearching: " + searchingPath); if ((ContentFinder.Get((searchingPath), false) != null)) { @@ -1737,7 +1557,7 @@ namespace SizedApparel if (SizedApparelSettings.Debug) Log.Message("[Sized Apparel] " + pawn.Name + ": hasUnSupportedApparel Testing..."); /* - ApparelRecorderComp apparelRecorder = pawn.TryGetComp(); + ApparelRecorderComp apparelRecorder = pawn.GetComp(); if(apparelRecorder == null) { Log.Message("No ApparelRecorder Found"); @@ -1751,9 +1571,15 @@ namespace SizedApparel */ //Log.Message("Check hasUnSupportedApparel"); bool hasUnsupportedApparel = false; - var comp = pawn.TryGetComp(); - if (!pawn.RaceProps.Humanlike) + + /* + if (!pawn.RaceProps.Humanlike) //Animals or Mechanoids would have apparels? return true; + */ + + var comp = pawn.GetComp(); + if (comp == null) + return false; List apparels = new List(); if (!fromGraphicRecord) { @@ -1865,7 +1691,7 @@ namespace SizedApparel bool validTexture = false; bool findBigger = true; // if false : search smaller first - while (offset < size.Length) + while (offset < breastsSizeStrings.Length) { if (breastHediff != null) { @@ -1921,7 +1747,7 @@ namespace SizedApparel if (validTexture == false) { offset = 0; - while (offset < size.Length) + while (offset < breastsSizeStrings.Length) { if (breastHediff != null) { @@ -2001,9 +1827,10 @@ namespace SizedApparel public static void UpdateAllApparel(Pawn pawn, bool onlyGraphicRecords = false)//need to be update before call it { + if (pawn == null) return; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return; PawnGraphicSet pawnGraphicSet = pawn.Drawer?.renderer?.graphics; @@ -2043,7 +1870,7 @@ namespace SizedApparel return; } - pawnGraphicSet.ResolveApparelGraphics(); + //pawnGraphicSet.ResolveApparelGraphics(); } @@ -2051,7 +1878,7 @@ namespace SizedApparel { if (pawn == null) return false; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return false; if (!flags.FlagSet(PawnRenderFlags.Clothes)) @@ -2065,7 +1892,7 @@ namespace SizedApparel { if (pawn == null) return false; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return false; if (!flags.FlagSet(PawnRenderFlags.Clothes)) @@ -2120,7 +1947,20 @@ namespace SizedApparel { if (pawn == null) return false; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); + if (comp == null) + return false; + + if (!flags.FlagSet(PawnRenderFlags.Clothes)) + return true; + return true; + } + + public static bool CanDrawPubicHair(Pawn pawn, PawnRenderFlags flags = PawnRenderFlags.None) + { + if (pawn == null) + return false; + var comp = pawn.GetComp(); if (comp == null) return false; @@ -2133,7 +1973,7 @@ namespace SizedApparel { if (pawn == null) return false; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return false; if (!flags.FlagSet(PawnRenderFlags.Clothes)) @@ -2155,7 +1995,7 @@ namespace SizedApparel { if (pawn == null) return false; - var comp = pawn.TryGetComp(); + var comp = pawn.GetComp(); if (comp == null) return false; @@ -2201,8 +2041,90 @@ namespace SizedApparel } + + public static bool CanApplySizedApparel(Pawn pawn) + { + if (pawn == null) + return false; + + //RaceProps Check + if (!pawn.RaceProps.Humanlike) //apply humanlikes always + { + if (pawn.RaceProps.Animal) + { + if (!SizedApparelSettings.ApplyAnimals) + return false; + } + else if (pawn.RaceProps.IsMechanoid) + { + if (!SizedApparelSettings.ApplyMechanoid) + return false; + } + } + else + { + if (!SizedApparelSettings.ApplyHumanlikes) + return false; + } + //Faction Check TODO + if (pawn.Faction != null && pawn.Faction != Faction.OfPlayer) + { + switch (pawn.Faction.PlayerRelationKind) + { + case FactionRelationKind.Neutral: + break; + case FactionRelationKind.Ally: + break; + case FactionRelationKind.Hostile: + break; + default: + break; + } + } + return true; + } + + + public static bool CanPoseApparels(Pawn pawn, string targetPose, string currentHediffName = null, int currentSeverityInt = 0, int cappedSeverityInt = 1000) + { + if (pawn == null) + return false; + foreach (ApparelGraphicRecord agr in pawn.Drawer.renderer.graphics.apparelGraphics) + { + if (agr.graphic == null) + continue; + /* + 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; + */ + //Only Check Torso Apparel Only + if (!agr.sourceApparel.def.apparel.bodyPartGroups.Contains(BodyPartGroupDefOf.Torso)) + 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; + } + return true; + } + + + + + + + } - - - } diff --git a/1.3/source/SizedApparel/SizedApparelforRJW.csproj b/1.3/source/SizedApparel/SizedApparelforRJW.csproj index 50ddab0..12752c2 100644 --- a/1.3/source/SizedApparel/SizedApparelforRJW.csproj +++ b/1.3/source/SizedApparel/SizedApparelforRJW.csproj @@ -9,7 +9,7 @@ Properties SizedApparel SizedApparelforRJW - v4.7.2 + v4.8 512 true @@ -18,7 +18,7 @@ true full false - ..\..\1.3\Assemblies\ + ..\..\Assemblies\ DEBUG;TRACE prompt 4 @@ -28,7 +28,7 @@ none true - ..\..\1.3\Assemblies\ + ..\..\Assemblies\ TRACE prompt 4 @@ -37,23 +37,31 @@ - ..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll + ..\..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll False - ..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll + ..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False - ..\..\..\..\..\..\workshop\content\294100\818773962\v1.1\Assemblies\HugsLib.dll + ..\..\..\..\..\..\..\workshop\content\294100\818773962\v1.3\Assemblies\HugsLib.dll False - ..\..\..\rimnude-unofficial\1.3 Assembly\Assemblies\RimNudeWorld.dll + ..\..\..\..\rimnude-unofficial\Assembly Folders\1.3 Assembly\Assemblies\RimNudeWorld.dll + False + + + ..\..\..\..\rimworld-animations\1.3\Assemblies\Rimworld-Animations.dll False - ..\..\..\RJW\1.3\Assemblies\RJW.dll + ..\..\..\..\rjw\1.3\Assemblies\RJW.dll + False + + + ..\..\..\..\rjw_menstruation\1.3\Assemblies\RJW_Menstruation.dll False @@ -62,16 +70,16 @@ - - ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False - - ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll + ..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll False - ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll + ..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll + False + + + ..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll False @@ -79,23 +87,29 @@ + + + + - + + - - + + + diff --git a/1.3/source/SizedApparel/SizedApparelsDatabase.cs b/1.3/source/SizedApparel/SizedApparelsDatabase.cs index 0716f00..fd87e80 100644 --- a/1.3/source/SizedApparel/SizedApparelsDatabase.cs +++ b/1.3/source/SizedApparel/SizedApparelsDatabase.cs @@ -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 Data; + } + public class PreDefinedApparelDate : Def + { + public string HediffName; + public bool IsBreasts = false; + public List 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 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 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 ApparelRecordersCache = new Dictionary(); private static Dictionary SizedApparelBodyGraphic = new Dictionary(); // TODO private static Dictionary SupportedApparelResultPath = new Dictionary(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(); // comp can be null + ApparelRecordersCache.Add(pawn, comp); + return comp; + } public static Dictionary AlienRaceUseHumanlike = new Dictionary(); 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.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.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.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.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.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.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.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.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.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 bodyTypes = new List(); + bodyTypes.Add("Female"); + bodyTypes.Add("Thin"); + + + // DefDatabase.AllDefsListForReading + foreach (ThingDef thingDef in DefDatabase.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? + } + + } + } + + + } + + } } diff --git a/1.3/source/SizedApparel/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/1.3/source/SizedApparel/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs similarity index 57% rename from 1.3/source/SizedApparel/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs rename to 1.3/source/SizedApparel/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs index 057ed7f..3cf0af3 100644 --- a/1.3/source/SizedApparel/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs +++ b/1.3/source/SizedApparel/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs @@ -1,4 +1,4 @@ // 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")] diff --git a/1.3/source/SizedApparel/obj/Debug/SizedApparelforRJW.csproj.AssemblyReference.cache b/1.3/source/SizedApparel/obj/Debug/SizedApparelforRJW.csproj.AssemblyReference.cache index 5147ecf..5bd4909 100644 Binary files a/1.3/source/SizedApparel/obj/Debug/SizedApparelforRJW.csproj.AssemblyReference.cache and b/1.3/source/SizedApparel/obj/Debug/SizedApparelforRJW.csproj.AssemblyReference.cache differ diff --git a/1.4/Assemblies/SizedApparelforRJW.dll b/1.4/Assemblies/SizedApparelforRJW.dll index bc1b51b..676158d 100644 Binary files a/1.4/Assemblies/SizedApparelforRJW.dll and b/1.4/Assemblies/SizedApparelforRJW.dll differ diff --git a/1.4/Defs/BodyAddonDefs/AOCBody.xml b/1.4/Defs/BodyAddonDefs/AOCBody.xml new file mode 100644 index 0000000..e46e302 --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/AOCBody.xml @@ -0,0 +1,131 @@ + + + + + AOC + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/BoriBody.xml b/1.4/Defs/BodyAddonDefs/BoriBody.xml new file mode 100644 index 0000000..e219291 --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/BoriBody.xml @@ -0,0 +1,127 @@ + + + + + Alien_Bori + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/MihoBody.xml b/1.4/Defs/BodyAddonDefs/MihoBody.xml new file mode 100644 index 0000000..f059a1f --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/MihoBody.xml @@ -0,0 +1,249 @@ + + + + + Alien_Miho + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/RabbieBody.xml b/1.4/Defs/BodyAddonDefs/RabbieBody.xml new file mode 100644 index 0000000..58682b0 --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/RabbieBody.xml @@ -0,0 +1,249 @@ + + + + + Rabbie + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/RatkinBody.xml b/1.4/Defs/BodyAddonDefs/RatkinBody.xml new file mode 100644 index 0000000..67ec55d --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/RatkinBody.xml @@ -0,0 +1,249 @@ + + + + + Ratkin + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/Ratkin_SuBody.xml b/1.4/Defs/BodyAddonDefs/Ratkin_SuBody.xml new file mode 100644 index 0000000..be80c0c --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/Ratkin_SuBody.xml @@ -0,0 +1,249 @@ + + + + + Ratkin_Su + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/SPBody.xml b/1.4/Defs/BodyAddonDefs/SPBody.xml new file mode 100644 index 0000000..89abc6b --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/SPBody.xml @@ -0,0 +1,131 @@ + + + + + Alien_SP + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + false + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + false + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + false + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + false + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + false + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/_HumanBody.xml b/1.4/Defs/BodyAddonDefs/_HumanBody.xml new file mode 100644 index 0000000..7e7a0a1 --- /dev/null +++ b/1.4/Defs/BodyAddonDefs/_HumanBody.xml @@ -0,0 +1,717 @@ + + + + Human + +
  • + Female + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + + + false + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • + + + + + + + + + + + + + + + + + +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Thin + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Male + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Hulk + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Fat + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + + 0.0096 + 0.0085 + 0.0096 + 0.0096 + +
  • +
  • + PubicHair + PubicHair + Default + PubicHair + Hair + false + true + + + 0.0099 + 0.0099 + 0.0099 + 0.0099 + +
  • + + +
  • + Child + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/BodyAddonDefs/HumanBody.xml.bak b/1.4/Defs/BodyAddonDefs/_HumanBody.xml.bak similarity index 79% rename from 1.4/Defs/BodyAddonDefs/HumanBody.xml.bak rename to 1.4/Defs/BodyAddonDefs/_HumanBody.xml.bak index 6ba9c51..3a6a487 100644 --- a/1.4/Defs/BodyAddonDefs/HumanBody.xml.bak +++ b/1.4/Defs/BodyAddonDefs/_HumanBody.xml.bak @@ -1,5 +1,4 @@ - Human @@ -26,6 +25,23 @@ 0.0113 + + + + + + + + + + + + + + + + +
  • Vagina Vagina @@ -33,6 +49,7 @@ Vagina Skin false + true true @@ -119,8 +136,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099
  • @@ -237,8 +254,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 @@ -355,8 +372,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 @@ -473,8 +490,8 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 @@ -591,8 +608,106 @@ 0.0099 0.0099 - 0.0089 - 0.0089 + 0.0099 + 0.0099 + + + + +
  • + Child + +
  • + Breasts + Breasts + Breasts + Breasts + Skin + true + false + false + + 0.0113 + 0.001 + 0.0113 + 0.0113 + +
  • +
  • + Vagina + Vagina + Vagina + Vagina + Skin + false + true + true + + 0.0088 + 0.0100 + 0.0088 + 0.0088 + +
  • +
  • + Anus + Anus + Anus + Anus + Skin + false + true + + 0.0093 + 0.0105 + 0.0093 + 0.0093 + +
  • +
  • + Belly + Belly + BellyBulge + Belly + Skin + false + false + + 0.0098 + 0.0002 + 0.0098 + 0.0098 + +
  • +
  • + Penis + Penis + Penis + Penis + Skin + false + true + + 0.0108 + 0.0025 + 0.0108 + 0.0108 + +
  • +
  • + Balls + Balls + Penis + Balls + Penis/Balls + Skin + false + true + + 0.0096 + 0.0085 + 0.0096 + 0.0096
  • diff --git a/1.4/Defs/SkeletonDef/AOCSkeletonDef.xml b/1.4/Defs/SkeletonDef/AOCSkeletonDef.xml new file mode 100644 index 0000000..d927691 --- /dev/null +++ b/1.4/Defs/SkeletonDef/AOCSkeletonDef.xml @@ -0,0 +1,123 @@ + + + + AOC + +
  • + Female + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/BoriSkeletonDef.xml b/1.4/Defs/SkeletonDef/BoriSkeletonDef.xml new file mode 100644 index 0000000..11e2645 --- /dev/null +++ b/1.4/Defs/SkeletonDef/BoriSkeletonDef.xml @@ -0,0 +1,123 @@ + + + + Alien_Bori + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/MihoSkeletonDef.xml b/1.4/Defs/SkeletonDef/MihoSkeletonDef.xml new file mode 100644 index 0000000..d13758e --- /dev/null +++ b/1.4/Defs/SkeletonDef/MihoSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Alien_Miho + +
  • + Thin + +
  • + Vagina + + (0, 0, -0.148) + 0 + + + (-0.006, 0, -0.150) + 0 + + + (-0.006, 0, -0.143) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.129) + 0 + + + (-0.006, 0, -0.139 + 0 + + + (-0.061, 0, -0.155) + 0 + +
  • +
  • + Penis + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Balls + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141)) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.121) + 0 + + + (-0.006, 0, -0.109) + 0 + + + (0.004, 0, -0.123) + 0 + +
  • + + +
  • + Female + +
  • + Vagina + + (0, 0, -0.148) + 0 + + + (-0.006, 0, -0.150) + 0 + + + (-0.006, 0, -0.143) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.129) + 0 + + + (-0.006, 0, -0.139) + 0 + + + (-0.061, 0, -0.155) + 0 + +
  • +
  • + Penis + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Balls + + (0, 0, -0.141) + 0 + + + (-0.006, 0, -0.141) + 0 + + + (-0.004, 0, -0.139) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0.004, 0, -0.123)) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.121) + 0 + + + (-0.006, 0, -0.109) + 0 + + + (0.004, 0, -0.123) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/RabbieSkeletonDef.xml b/1.4/Defs/SkeletonDef/RabbieSkeletonDef.xml new file mode 100644 index 0000000..ebb6a16 --- /dev/null +++ b/1.4/Defs/SkeletonDef/RabbieSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Rabbie + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/RatkinSkeletonDef.xml b/1.4/Defs/SkeletonDef/RatkinSkeletonDef.xml new file mode 100644 index 0000000..850f0dd --- /dev/null +++ b/1.4/Defs/SkeletonDef/RatkinSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Ratkin + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/RatkinSuSkeletonDef.xml b/1.4/Defs/SkeletonDef/RatkinSuSkeletonDef.xml new file mode 100644 index 0000000..73bf8f7 --- /dev/null +++ b/1.4/Defs/SkeletonDef/RatkinSuSkeletonDef.xml @@ -0,0 +1,233 @@ + + + + Ratkin_Su + +
  • + Thin + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/SPSkeletonDef.xml b/1.4/Defs/SkeletonDef/SPSkeletonDef.xml new file mode 100644 index 0000000..5dec2cf --- /dev/null +++ b/1.4/Defs/SkeletonDef/SPSkeletonDef.xml @@ -0,0 +1,123 @@ + + + + Alien_SP + +
  • + Female + +
  • + Vagina + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Penis + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Balls + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + +
  • + Child + + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.4/Defs/SkeletonDef/HumanSkeletonDef.xml.bak b/1.4/Defs/SkeletonDef/_HumanSkeletonDef.xml similarity index 80% rename from 1.4/Defs/SkeletonDef/HumanSkeletonDef.xml.bak rename to 1.4/Defs/SkeletonDef/_HumanSkeletonDef.xml index e8ea5cd..cc1a6c7 100644 --- a/1.4/Defs/SkeletonDef/HumanSkeletonDef.xml.bak +++ b/1.4/Defs/SkeletonDef/_HumanSkeletonDef.xml @@ -9,11 +9,11 @@
  • Vagina - (-0.004, 0, -0.340) + (-0.002, 0, -0.340) 0 - (-0.008, 0, -0.346) + (-0.006, 0, -0.346) 0 @@ -556,7 +556,112 @@
  • Child - +
  • + Vagina + + (0.002, 0, -0.209) + 0 + + + (0, 0, -0.205) + 0 + + + (0.043, 0, -0.174) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.289) + 0 + + + (0.002, 0, -0.164) + 0 + + + (-0.084, 0, -0.127) + 0 + +
  • +
  • + Penis + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Balls + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.166) + 0 + + + (-0.002, 0, -0.164) + 0 + + + (0.057, 0, -0.145) + 0 + +
  • + diff --git a/1.4/Defs/SkeletonDef/_HumanSkeletonDef.xml.bak b/1.4/Defs/SkeletonDef/_HumanSkeletonDef.xml.bak new file mode 100644 index 0000000..47e66f0 --- /dev/null +++ b/1.4/Defs/SkeletonDef/_HumanSkeletonDef.xml.bak @@ -0,0 +1,668 @@ + + + + Human + +
  • + Female + +
  • + Vagina + + (-0.002, 0, -0.340) + 0 + + + (-0.006, 0, -0.346) + 0 + + + (0.047, 0, -0.238) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.289) + 0 + + + (-0.006, 0, -0.289) + 0 + + + (-0.174, 0, 0.254) + 0 + +
  • +
  • + Penis + + (0, 0, -0.320) + 0 + + + (-0.01, 0, -0.338) + 0 + + + (0.062, 0, -0.221) + 0 + +
  • +
  • + Balls + + (0, 0, -0.320) + 0 + + + (-0.01, 0, -0.338) + 0 + + + (0.062, 0, -0.221) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.301) + 0 + + + (0, 0, -0.318) + 0 + + + (0.059, 0, -0.186) + 0 + +
  • + + +
  • + Thin + +
  • + Vagina + + (0, 0, -0.312) + 0 + + + (-0.006, 0, -0.318) + 0 + + + (0.006, 0, -0.256) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.260) + 0 + + + (-0.002, 0, -0.266) + 0 + + + (-0.137, 0, -0.211) + 0 + +
  • +
  • + Penis + + (0, 0, -0.307) + 0 + + + (0, 0, -0.305) + 0 + + + (0.008, 0, -0.248) + 0 + +
  • +
  • + Balls + + (0, 0, -0.307) + 0 + + + (0, 0, -0.305) + 0 + + + (0.007, 0, -0.248) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.281) + 0 + + + (0, 0, -0.291) + 0 + + + (0.021, 0, -0.219) + 0 + +
  • + + +
  • + Male + +
  • + Vagina + + (0, 0, -0.320) + 0 + + + (0.002, 0, -0.311) + 0 + + + (0.057, 0, -0.258) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.268) + 0 + + + (0, 0, -0.252) + 0 + + + (-0.113, 0, -0.234) + 0 + +
  • +
  • + Penis + + (0, 0, -0.301) + 0 + + + (0, 0, -0.311) + 0 + + + (0.068, 0, -0.250) + 0 + +
  • +
  • + Balls + + (0.0, 0, -0.301) + 0 + + + (0.0, 0, -0.311) + 0 + + + (0.066, 0, -0.250) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.275) + 0 + + + (0, 0, -0.277) + 0 + + + (0.066, 0, -0.219) + 0 + +
  • + + +
  • + Hulk + +
  • + Vagina + + (0.004, 0, -0.434) + 0 + + + (0, 0, -0.453) + 0 + + + (0.020, 0, -0.395) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0.006, 0, -0.383) + 0 + + + (0, 0, -0.406) + 0 + + + (-0.238, 0, -0.328) + 0 + +
  • +
  • + Penis + + (0, 0, -0.436) + 0 + + + (0.0, 0, -0.445) + 0 + + + (0.029, 0, -0.387) + 0 + +
  • +
  • + Balls + + (0, 0, -0.436) + 0 + + + (0, 0, -0.445) + 0 + + + (0.028, 0, -0.387) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.395) + 0 + + + (0.027, 0, -0.375) + 0 + + + (0, 0, -0.424) + 0 + +
  • + + +
  • + Fat + +
  • + Vagina + + (0.002, 0, -0.352) + 0 + + + (0.002, 0, -0.359) + 0 + + + (0.148, 0, -0.352) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.297) + 0 + + + (0, 0, -0.297) + 0 + + + (-0.238, 0, -0.271) + 0 + +
  • +
  • + Penis + + (0, 0, -0.357) + 0 + + + (0, 0, -0.363) + 0 + + + (0.168, 0, -0.348) + 0 + +
  • +
  • + Balls + + (0, 0, -0.357) + 0 + + + (0, 0, -0.363) + 0 + + + (0.168, 0, -0.348) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + PubicHair + + (0, 0, -0.307) + 0 + + + (0, 0, -0.320) + 0 + + + (0.158, 0, -0.338) + 0 + +
  • + + +
  • + Child + +
  • + Vagina + + (0.002, 0, -0.209) + 0 + + + (0, 0, -0.205) + 0 + + + (0.043, 0, -0.174) + 0 + +
  • +
  • + Breasts + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • +
  • + Anus + + (0, 0, -0.289) + 0 + + + (0.002, 0, -0.164) + 0 + + + (-0.084, 0, -0.127) + 0 + +
  • +
  • + Penis + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Balls + + (-0.002, 0, -0.195) + 0 + + + (-0.002, 0, -0.195) + 0 + + + (0.047, 0, -0.170) + 0 + +
  • +
  • + Belly + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + + + (0, 0, 0) + 0 + +
  • + + + + + + + + + + + + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml b/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml index b380b71..f8e424c 100644 --- a/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml +++ b/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml @@ -27,6 +27,25 @@ +
  • + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags + + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel + + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • + + + + + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • +
    +
    + diff --git a/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak b/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak index 16b1323..08e7f34 100644 --- a/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak +++ b/1.4/Patches/ApparelPatches/VanillaBiotechPatch/BiotechApparelPatch.xml.bak @@ -15,6 +15,7 @@
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • @@ -22,6 +23,26 @@ Defs/ThingDef[defName = "Apparel_Sash"]/apparel/tags
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • +
    + + +
  • + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel/tags + + Defs/ThingDef[defName = "Apparel_Bandolier"]/apparel + + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • + + + + + Defs/ThingDef[defName = "Apparel_HeavyBandolier"]/apparel/tags + +
  • SizedApparel_IgnorBreastSize
  • +
  • SizedApparel_ShowPrivateCrotch
  • diff --git a/About/About.xml b/About/About.xml index fd9d475..97702d9 100644 --- a/About/About.xml +++ b/About/About.xml @@ -32,6 +32,7 @@ zero112
  • rim.job.world
  • shauaputa.rimnudeworld
  • c0ffee.rimworld.animations
  • +
  • tammybee.statueofcolonist
  • diff --git a/About/About.xml.bak b/About/About.xml.bak index 3a468b1..fd9d475 100644 --- a/About/About.xml.bak +++ b/About/About.xml.bak @@ -16,6 +16,7 @@ I'm planning to at least all vanilla apparels will be supported. [special thanks] leoinc +zero112
  • diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_10_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_10_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_10_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_10_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_10_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_10_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_10_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_10_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_10_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_10_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_10_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_10_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_7_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_7_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_7_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_7_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_7_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_7_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_7_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_7_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_7_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_7_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_7_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_7_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_8_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_8_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_8_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_8_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_8_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_8_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_8_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_8_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_8_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_8_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_8_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_8_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_9_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_9_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_9_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_9_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_9_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_9_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_9_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_9_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_9_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_9_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Female_9_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Female_9_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_10_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_10_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_10_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_10_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_10_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_10_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_10_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_10_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_10_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_10_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_10_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_10_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_7_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_7_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_7_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_7_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_7_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_7_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_7_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_7_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_7_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_7_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_7_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_7_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_8_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_8_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_8_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_8_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_8_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_8_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_8_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_8_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_8_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_8_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_8_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_8_south.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_9_east.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_9_east.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_9_east.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_9_east.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_9_north.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_9_north.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_9_north.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_9_north.png diff --git a/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_9_south.png b/Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_9_south.png similarity index 100% rename from Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants/Pants_Thin_9_south.png rename to Textures/Core/Things/Pawn/Humanlike/Apparel/Pants/Pants_Thin_9_south.png diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_east.png new file mode 100644 index 0000000..7460307 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_north.png new file mode 100644 index 0000000..e26bfac Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_south.png new file mode 100644 index 0000000..f7aee7c Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_0_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_east.png new file mode 100644 index 0000000..a07f58a Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_north.png new file mode 100644 index 0000000..e26bfac Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_south.png new file mode 100644 index 0000000..f1bb09d Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_2_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_east.png new file mode 100644 index 0000000..5ae0d4f Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_north.png new file mode 100644 index 0000000..8ecedd8 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_south.png new file mode 100644 index 0000000..d23ed13 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_3_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_east.png new file mode 100644 index 0000000..cef94c4 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_north.png new file mode 100644 index 0000000..2fd6a18 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_south.png new file mode 100644 index 0000000..8cb743f Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_4_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_east.png new file mode 100644 index 0000000..73cce82 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_north.png new file mode 100644 index 0000000..9806fb4 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_south.png new file mode 100644 index 0000000..52e0eed Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_5_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_east.png new file mode 100644 index 0000000..b225dd7 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_north.png new file mode 100644 index 0000000..4ffa89d Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_south.png new file mode 100644 index 0000000..ed4fe27 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Female_6_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_east.png new file mode 100644 index 0000000..7460307 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_north.png new file mode 100644 index 0000000..e26bfac Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_south.png new file mode 100644 index 0000000..f7aee7c Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_0_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_east.png new file mode 100644 index 0000000..a07f58a Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_north.png new file mode 100644 index 0000000..e26bfac Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_south.png new file mode 100644 index 0000000..f1bb09d Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_2_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_east.png new file mode 100644 index 0000000..5ae0d4f Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_north.png new file mode 100644 index 0000000..8ecedd8 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_south.png new file mode 100644 index 0000000..d23ed13 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_3_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_east.png new file mode 100644 index 0000000..cef94c4 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_north.png new file mode 100644 index 0000000..2fd6a18 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_south.png new file mode 100644 index 0000000..8cb743f Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_4_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_east.png new file mode 100644 index 0000000..73cce82 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_north.png new file mode 100644 index 0000000..9806fb4 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_south.png new file mode 100644 index 0000000..52e0eed Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_5_south.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_east.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_east.png new file mode 100644 index 0000000..b225dd7 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_east.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_north.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_north.png new file mode 100644 index 0000000..4ffa89d Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_north.png differ diff --git a/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_south.png b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_south.png new file mode 100644 index 0000000..ed4fe27 Binary files /dev/null and b/Textures/Miho/Apparel/OnSkinHoodieNew/OnSkinHoodie_Thin_6_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_east.png new file mode 100644 index 0000000..8fd8d4e Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_south.png new file mode 100644 index 0000000..91b0549 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_1_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_east.png new file mode 100644 index 0000000..8c5b292 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_south.png new file mode 100644 index 0000000..91b0549 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_2_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_east.png new file mode 100644 index 0000000..d7e5583 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_north.png new file mode 100644 index 0000000..4221f51 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_south.png new file mode 100644 index 0000000..469d773 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_3_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_east.png new file mode 100644 index 0000000..092a1c0 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_south.png new file mode 100644 index 0000000..016bb6a Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_4_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_east.png new file mode 100644 index 0000000..e949ead Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_south.png new file mode 100644 index 0000000..115c755 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_5_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_east.png new file mode 100644 index 0000000..2a8b6cf Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_south.png new file mode 100644 index 0000000..e642e6b Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Female_6_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_east.png new file mode 100644 index 0000000..7f67a15 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_north.png new file mode 100644 index 0000000..4221f51 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_south.png new file mode 100644 index 0000000..469d773 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_0_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_east.png new file mode 100644 index 0000000..8fd8d4e Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_south.png new file mode 100644 index 0000000..91b0549 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_1_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_east.png new file mode 100644 index 0000000..8c5b292 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_south.png new file mode 100644 index 0000000..91b0549 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_2_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_east.png new file mode 100644 index 0000000..d7e5583 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_north.png new file mode 100644 index 0000000..4221f51 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_south.png new file mode 100644 index 0000000..469d773 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_3_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_east.png new file mode 100644 index 0000000..092a1c0 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_south.png new file mode 100644 index 0000000..016bb6a Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_4_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_east.png new file mode 100644 index 0000000..e949ead Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_south.png new file mode 100644 index 0000000..115c755 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_5_south.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_east.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_east.png new file mode 100644 index 0000000..2a8b6cf Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_east.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_north.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_north.png new file mode 100644 index 0000000..8d493e1 Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_north.png differ diff --git a/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_south.png b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_south.png new file mode 100644 index 0000000..e642e6b Binary files /dev/null and b/Textures/Miho/Apparel/ShellSorceress/ShellSorceress_Thin_6_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_east.png new file mode 100644 index 0000000..1193eb6 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_north.png new file mode 100644 index 0000000..f80043e Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_south.png new file mode 100644 index 0000000..7afb41b Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_3_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_east.png new file mode 100644 index 0000000..729fa8c Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_north.png new file mode 100644 index 0000000..ed259fe Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_south.png new file mode 100644 index 0000000..5aa4ae4 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_4_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_east.png new file mode 100644 index 0000000..ddd5a07 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_north.png new file mode 100644 index 0000000..ed259fe Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_south.png new file mode 100644 index 0000000..6722fbc Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_5_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_east.png new file mode 100644 index 0000000..ed02afc Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_north.png new file mode 100644 index 0000000..ed259fe Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_south.png new file mode 100644 index 0000000..9b03b37 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Female_6_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_east.png new file mode 100644 index 0000000..1193eb6 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_north.png new file mode 100644 index 0000000..f80043e Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_south.png new file mode 100644 index 0000000..7afb41b Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_3_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_east.png new file mode 100644 index 0000000..729fa8c Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_north.png new file mode 100644 index 0000000..ed259fe Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_south.png new file mode 100644 index 0000000..5aa4ae4 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_4_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_east.png new file mode 100644 index 0000000..ddd5a07 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_north.png new file mode 100644 index 0000000..ed259fe Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_south.png new file mode 100644 index 0000000..6722fbc Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_5_south.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_east.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_east.png new file mode 100644 index 0000000..ed02afc Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_east.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_north.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_north.png new file mode 100644 index 0000000..ed259fe Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_north.png differ diff --git a/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_south.png b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_south.png new file mode 100644 index 0000000..9b03b37 Binary files /dev/null and b/Textures/Miho/Apparel/UnderwearSorceress/UnderwearSorceress_Thin_6_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_east.png new file mode 100644 index 0000000..e61ddf1 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_eastm.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_eastm.png new file mode 100644 index 0000000..0d0b7e9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_north.png new file mode 100644 index 0000000..c66e258 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_northm.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_northm.png new file mode 100644 index 0000000..f0e7e91 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_south.png new file mode 100644 index 0000000..c9f768b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_southm.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_southm.png new file mode 100644 index 0000000..81ffa72 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Female_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_east.png new file mode 100644 index 0000000..e61ddf1 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_eastm.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_eastm.png new file mode 100644 index 0000000..0d0b7e9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_north.png new file mode 100644 index 0000000..c66e258 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_northm.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_northm.png new file mode 100644 index 0000000..f0e7e91 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_south.png new file mode 100644 index 0000000..f298ceb Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_southm.png b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_southm.png new file mode 100644 index 0000000..81ffa72 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinHunter/source/OnSkinHunter_Thin_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_east.png new file mode 100644 index 0000000..6b1fd35 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_north.png new file mode 100644 index 0000000..b435719 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_south.png new file mode 100644 index 0000000..28a8ebb Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_east.png new file mode 100644 index 0000000..c93f052 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_north.png new file mode 100644 index 0000000..b435719 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_south.png new file mode 100644 index 0000000..3e05ae1 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinMilitia/source/OnSkinMilitia_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_east.png new file mode 100644 index 0000000..47a76d5 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_north.png new file mode 100644 index 0000000..befc75f Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_south.png new file mode 100644 index 0000000..e2a3d0e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_east.png new file mode 100644 index 0000000..11c73d5 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_north.png new file mode 100644 index 0000000..befc75f Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_south.png new file mode 100644 index 0000000..5b20177 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedFighter/source/OnSkinOrnatedFighter_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_east.png new file mode 100644 index 0000000..bd144c6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_north.png new file mode 100644 index 0000000..b390714 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_south.png new file mode 100644 index 0000000..1c2477f Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_east.png new file mode 100644 index 0000000..f54d4fc Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_north.png new file mode 100644 index 0000000..b390714 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_south.png new file mode 100644 index 0000000..eec4807 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedOne/source/OnSkinOrnatedOne_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_east.png new file mode 100644 index 0000000..041aea9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_north.png new file mode 100644 index 0000000..f9e34e6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_south.png new file mode 100644 index 0000000..89620ab Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_west.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_west.png new file mode 100644 index 0000000..58a9822 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Female_west.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_east.png new file mode 100644 index 0000000..25259e4 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_north.png new file mode 100644 index 0000000..f9e34e6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_south.png new file mode 100644 index 0000000..5c8811c Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_west.png b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_west.png new file mode 100644 index 0000000..2c27ff7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinOrnatedTwo/source/OnSkinOrnatedTwo_Thin_west.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_east.png new file mode 100644 index 0000000..0e02b2a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_north.png new file mode 100644 index 0000000..08aa1e2 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_south.png new file mode 100644 index 0000000..d68bc6a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_east.png new file mode 100644 index 0000000..61ae383 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_north.png new file mode 100644 index 0000000..08aa1e2 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_south.png new file mode 100644 index 0000000..462101c Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPMC/source/OnSkinPMC_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_east.png new file mode 100644 index 0000000..7b5b1a0 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_north.png new file mode 100644 index 0000000..617671b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_south.png new file mode 100644 index 0000000..ad0ddad Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_east.png new file mode 100644 index 0000000..d23c3ae Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_north.png new file mode 100644 index 0000000..617671b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_south.png new file mode 100644 index 0000000..aabca0a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuit/source/OnSkinPariah_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_east.png new file mode 100644 index 0000000..021cad9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_north.png new file mode 100644 index 0000000..c27c904 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_south.png new file mode 100644 index 0000000..9d5b22e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_east.png new file mode 100644 index 0000000..dd39847 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_north.png new file mode 100644 index 0000000..c27c904 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_south.png new file mode 100644 index 0000000..95a45d9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinPariahSuitNew/source/OnSkinPariah_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_east.png new file mode 100644 index 0000000..ef35283 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_north.png new file mode 100644 index 0000000..49d9082 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_south.png new file mode 100644 index 0000000..71a44f2 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_east.png new file mode 100644 index 0000000..3414b58 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_north.png new file mode 100644 index 0000000..49d9082 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_south.png new file mode 100644 index 0000000..3ac934a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinRegular/source/OnSkinRegular_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_east.png new file mode 100644 index 0000000..fff4874 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_north.png new file mode 100644 index 0000000..86103ae Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_south.png new file mode 100644 index 0000000..5c351fc Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_east.png new file mode 100644 index 0000000..150b80c Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_north.png new file mode 100644 index 0000000..4741931 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_south.png new file mode 100644 index 0000000..58a45a6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSailor/source/OnSkinSailor_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_east.png new file mode 100644 index 0000000..810190b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_eastm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_eastm.png new file mode 100644 index 0000000..eed6d8d Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_north.png new file mode 100644 index 0000000..fbe9e21 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_northm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_northm.png new file mode 100644 index 0000000..4dd6031 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_south.png new file mode 100644 index 0000000..1b5ae61 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_southm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_southm.png new file mode 100644 index 0000000..aaf2e70 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Female_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_east.png new file mode 100644 index 0000000..070fc99 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_eastm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_eastm.png new file mode 100644 index 0000000..eed6d8d Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_north.png new file mode 100644 index 0000000..fbe9e21 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_northm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_northm.png new file mode 100644 index 0000000..4dd6031 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_south.png new file mode 100644 index 0000000..f0976ad Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_southm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_southm.png new file mode 100644 index 0000000..aaf2e70 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimple/source/OnSkinSimple_Thin_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_east.png new file mode 100644 index 0000000..9f001e6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_north.png new file mode 100644 index 0000000..d88582e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_south.png new file mode 100644 index 0000000..77a1c83 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_east.png new file mode 100644 index 0000000..b67b3b0 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_north.png new file mode 100644 index 0000000..d88582e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_south.png new file mode 100644 index 0000000..398d6f7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleNew/source/OnSkinSimple_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_east.png new file mode 100644 index 0000000..9323aa6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_eastm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_eastm.png new file mode 100644 index 0000000..49300ee Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_north.png new file mode 100644 index 0000000..507bd8e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_northm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_northm.png new file mode 100644 index 0000000..fd52235 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_south.png new file mode 100644 index 0000000..ecb1d0a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_southm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_southm.png new file mode 100644 index 0000000..c8f9e49 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Female_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_east.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_east.png new file mode 100644 index 0000000..5c7e1a8 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_eastm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_eastm.png new file mode 100644 index 0000000..49300ee Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_north.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_north.png new file mode 100644 index 0000000..507bd8e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_northm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_northm.png new file mode 100644 index 0000000..fd52235 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_south.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_south.png new file mode 100644 index 0000000..1e84326 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_southm.png b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_southm.png new file mode 100644 index 0000000..c8f9e49 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/OnSkinSimpleShort/source/OnSkinSimple_Thin_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_east.png b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_east.png new file mode 100644 index 0000000..09c1ab3 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_north.png b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_north.png new file mode 100644 index 0000000..569a467 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_south.png b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_south.png new file mode 100644 index 0000000..18f8563 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_east.png b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_east.png new file mode 100644 index 0000000..09c1ab3 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_north.png b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_north.png new file mode 100644 index 0000000..569a467 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_south.png b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_south.png new file mode 100644 index 0000000..18f8563 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellOrnatedOne/source/ShellOrnatedOne_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_east.png b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_east.png new file mode 100644 index 0000000..5497cfa Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_north.png b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_north.png new file mode 100644 index 0000000..44f6369 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_south.png b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_south.png new file mode 100644 index 0000000..e1cf8af Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_east.png b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_east.png new file mode 100644 index 0000000..5497cfa Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_north.png b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_north.png new file mode 100644 index 0000000..44f6369 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_south.png b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_south.png new file mode 100644 index 0000000..e1cf8af Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPMC/source/ShellPMC_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_east.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_east.png new file mode 100644 index 0000000..25598a4 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_eastm.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_eastm.png new file mode 100644 index 0000000..ab597f7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_north.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_north.png new file mode 100644 index 0000000..b20ae8f Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_northm.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_northm.png new file mode 100644 index 0000000..374faf9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_south.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_south.png new file mode 100644 index 0000000..a26c515 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_southm.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_southm.png new file mode 100644 index 0000000..72a9a8a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Female_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_east.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_east.png new file mode 100644 index 0000000..25598a4 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_eastm.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_eastm.png new file mode 100644 index 0000000..ab597f7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_north.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_north.png new file mode 100644 index 0000000..b20ae8f Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_northm.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_northm.png new file mode 100644 index 0000000..374faf9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_south.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_south.png new file mode 100644 index 0000000..a26c515 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_southm.png b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_southm.png new file mode 100644 index 0000000..72a9a8a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPadding/source/ShellPadding_Thin_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_east.png b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_east.png new file mode 100644 index 0000000..118bca5 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_north.png b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_north.png new file mode 100644 index 0000000..3242f0d Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_south.png b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_south.png new file mode 100644 index 0000000..72ae0ea Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_east.png b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_east.png new file mode 100644 index 0000000..34c2d4a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_north.png b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_north.png new file mode 100644 index 0000000..3242f0d Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_south.png b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_south.png new file mode 100644 index 0000000..72ae0ea Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellPaddingNew/source/ShellPadding_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_east.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_east.png new file mode 100644 index 0000000..9f372d8 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_eastm.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_eastm.png new file mode 100644 index 0000000..486f334 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_north.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_north.png new file mode 100644 index 0000000..0f36eef Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_northm.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_northm.png new file mode 100644 index 0000000..ed05588 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_south.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_south.png new file mode 100644 index 0000000..e26928a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_southm.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_southm.png new file mode 100644 index 0000000..7860b16 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Female_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_east.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_east.png new file mode 100644 index 0000000..9f372d8 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_eastm.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_eastm.png new file mode 100644 index 0000000..486f334 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_eastm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_north.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_north.png new file mode 100644 index 0000000..0f36eef Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_northm.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_northm.png new file mode 100644 index 0000000..ed05588 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_northm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_south.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_south.png new file mode 100644 index 0000000..e26928a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_southm.png b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_southm.png new file mode 100644 index 0000000..7860b16 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinter/source/ShellWinter_Thin_southm.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_east.png b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_east.png new file mode 100644 index 0000000..ccc6057 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_north.png b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_north.png new file mode 100644 index 0000000..6a8b9fc Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_south.png b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_south.png new file mode 100644 index 0000000..b7d2b41 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_east.png b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_east.png new file mode 100644 index 0000000..f6e4711 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_north.png b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_north.png new file mode 100644 index 0000000..6a8b9fc Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_south.png b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_south.png new file mode 100644 index 0000000..b7d2b41 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/ShellWinterNew/source/ShellWinter_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_east.png new file mode 100644 index 0000000..a18344d Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_north.png b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_north.png new file mode 100644 index 0000000..fcdd1fa Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_south.png new file mode 100644 index 0000000..ce816fc Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_east.png new file mode 100644 index 0000000..4f33474 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_north.png new file mode 100644 index 0000000..fcdd1fa Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_south.png new file mode 100644 index 0000000..ed733c7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearArmor/source/UnderwearArmor_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_east.png new file mode 100644 index 0000000..d2ab8f9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_north.png b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_north.png new file mode 100644 index 0000000..1f4b77a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_south.png new file mode 100644 index 0000000..5e9d53a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_east.png new file mode 100644 index 0000000..d2ab8f9 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_north.png new file mode 100644 index 0000000..1f4b77a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_south.png new file mode 100644 index 0000000..5e9d53a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearAssassinSuitMelee/source/UnderwearAssassinSuitMelee_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_east.png new file mode 100644 index 0000000..322700e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_north.png b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_north.png new file mode 100644 index 0000000..332f281 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_south.png new file mode 100644 index 0000000..4ee2878 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_east.png new file mode 100644 index 0000000..bf41b3b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_north.png new file mode 100644 index 0000000..cd72a9b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_south.png new file mode 100644 index 0000000..7dad388 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearEltexOne/source/UnderwearEltexOne_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_east.png new file mode 100644 index 0000000..c660002 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_north.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_north.png new file mode 100644 index 0000000..8765ee6 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_south.png new file mode 100644 index 0000000..749a4a5 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_east.png new file mode 100644 index 0000000..5b52172 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_north.png new file mode 100644 index 0000000..b3d28b3 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_south.png new file mode 100644 index 0000000..ee59381 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrial/source/UnderwearIndustrial_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_0_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_0_east.png new file mode 100644 index 0000000..19e69d0 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_0_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_1_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_1_east.png new file mode 100644 index 0000000..a9fe52b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_1_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_2_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_2_east.png new file mode 100644 index 0000000..ee02f64 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_2_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_east.png new file mode 100644 index 0000000..a2e6a4b Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_north.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_north.png new file mode 100644 index 0000000..d30ebc3 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_south.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_south.png new file mode 100644 index 0000000..f1f4301 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_3_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_4_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_4_east.png new file mode 100644 index 0000000..4a6c65e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_4_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_5_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_5_east.png new file mode 100644 index 0000000..aa606d1 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_5_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_6_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_6_east.png new file mode 100644 index 0000000..f68de87 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/UnderwearIndustrialBlack_Female_6_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_east.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_east.png new file mode 100644 index 0000000..47c299e Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_north.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_north.png new file mode 100644 index 0000000..c0c2448 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_south.png b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_south.png new file mode 100644 index 0000000..82bc3ea Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearIndustrialBlack/source/UnderwearIndustrialBlack_Thin_0_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_east.png new file mode 100644 index 0000000..9a63450 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_north.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_north.png new file mode 100644 index 0000000..2943e07 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_south.png new file mode 100644 index 0000000..0230a8a Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_west.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_west.png new file mode 100644 index 0000000..8f49390 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Female_west.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_east.png new file mode 100644 index 0000000..c52f16f Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_north.png new file mode 100644 index 0000000..604ffde Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_south.png new file mode 100644 index 0000000..5a432af Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_west.png b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_west.png new file mode 100644 index 0000000..bda4ed0 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribal/source/UnderwearTribal_Thin_west.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_ north.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_ north.png new file mode 100644 index 0000000..7165530 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_ north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_east.png new file mode 100644 index 0000000..a968a61 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_south.png new file mode 100644 index 0000000..8186e54 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_west.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_west.png new file mode 100644 index 0000000..2d253eb Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Female_west.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_east.png new file mode 100644 index 0000000..6b037e7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_north.png new file mode 100644 index 0000000..47bd5dd Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_south.png new file mode 100644 index 0000000..801d3ec Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_west.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_west.png new file mode 100644 index 0000000..702158c Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalEltex/source/UnderwearTribalEltexOne_Thin_west.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_east.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_east.png new file mode 100644 index 0000000..3018038 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_north.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_north.png new file mode 100644 index 0000000..7a6e472 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_south.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_south.png new file mode 100644 index 0000000..c9b0fc7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Female_south.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_east.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_east.png new file mode 100644 index 0000000..3018038 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_east.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_north.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_north.png new file mode 100644 index 0000000..7a6e472 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_north.png differ diff --git a/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_south.png b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_south.png new file mode 100644 index 0000000..c9b0fc7 Binary files /dev/null and b/Textures/Miho/Apparel/_Todo/UnderwearTribalTwo/source/UnderwearTribalTwo_Thin_south.png differ diff --git a/Textures/Miho/Body/Naked_Female_BaseBody_east.png b/Textures/Miho/Body/Naked_Female_BaseBody_east.png new file mode 100644 index 0000000..50abe58 Binary files /dev/null and b/Textures/Miho/Body/Naked_Female_BaseBody_east.png differ diff --git a/Textures/Miho/Body/Naked_Female_BaseBody_north.png b/Textures/Miho/Body/Naked_Female_BaseBody_north.png new file mode 100644 index 0000000..78038ae Binary files /dev/null and b/Textures/Miho/Body/Naked_Female_BaseBody_north.png differ diff --git a/Textures/Miho/Body/Naked_Female_BaseBody_south.png b/Textures/Miho/Body/Naked_Female_BaseBody_south.png new file mode 100644 index 0000000..1087522 Binary files /dev/null and b/Textures/Miho/Body/Naked_Female_BaseBody_south.png differ diff --git a/Textures/Miho/Body/Naked_Thin_BaseBody_east.png b/Textures/Miho/Body/Naked_Thin_BaseBody_east.png new file mode 100644 index 0000000..cca867b Binary files /dev/null and b/Textures/Miho/Body/Naked_Thin_BaseBody_east.png differ diff --git a/Textures/Miho/Body/Naked_Thin_BaseBody_north.png b/Textures/Miho/Body/Naked_Thin_BaseBody_north.png new file mode 100644 index 0000000..78038ae Binary files /dev/null and b/Textures/Miho/Body/Naked_Thin_BaseBody_north.png differ diff --git a/Textures/Miho/Body/Naked_Thin_BaseBody_south.png b/Textures/Miho/Body/Naked_Thin_BaseBody_south.png new file mode 100644 index 0000000..98ae14f Binary files /dev/null and b/Textures/Miho/Body/Naked_Thin_BaseBody_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_north.png new file mode 100644 index 0000000..19bd490 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_north.png new file mode 100644 index 0000000..ecc2554 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_north.png new file mode 100644 index 0000000..837dc0e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_north.png new file mode 100644 index 0000000..94f6d6d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_north.png new file mode 100644 index 0000000..70c56d7 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_north.png new file mode 100644 index 0000000..12a0353 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_Donut_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_east.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_north.png new file mode 100644 index 0000000..1cc4018 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_south.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Anus/Anus_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_east.png new file mode 100644 index 0000000..6775361 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_north.png new file mode 100644 index 0000000..6775361 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_south.png new file mode 100644 index 0000000..6775361 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_east.png new file mode 100644 index 0000000..9af7889 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_north.png new file mode 100644 index 0000000..2558627 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_south.png new file mode 100644 index 0000000..2558627 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_east.png new file mode 100644 index 0000000..605f6ec Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_north.png new file mode 100644 index 0000000..52ba6c8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_south.png new file mode 100644 index 0000000..52ba6c8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_east.png new file mode 100644 index 0000000..c382e5e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_north.png new file mode 100644 index 0000000..d5d8a23 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_south.png new file mode 100644 index 0000000..d5d8a23 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_east.png new file mode 100644 index 0000000..a84657d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_north.png new file mode 100644 index 0000000..ef1e368 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_south.png new file mode 100644 index 0000000..ef1e368 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Belly/BellyBulge_Female_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_east.png new file mode 100644 index 0000000..382f32b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_south.png new file mode 100644 index 0000000..647a95b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_east.png new file mode 100644 index 0000000..24e40cd Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_south.png new file mode 100644 index 0000000..06d2c2e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_east.png new file mode 100644 index 0000000..e2a6393 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_south.png new file mode 100644 index 0000000..dba10fd Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_east.png new file mode 100644 index 0000000..48fea23 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_north.png new file mode 100644 index 0000000..f11ec98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_south.png new file mode 100644 index 0000000..6e4055d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_east.png new file mode 100644 index 0000000..48f0f9b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_north.png new file mode 100644 index 0000000..bf68055 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_south.png new file mode 100644 index 0000000..bf8d0e4 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_east.png new file mode 100644 index 0000000..2ade37a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_north.png new file mode 100644 index 0000000..e657c00 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_south.png new file mode 100644 index 0000000..4ac04d3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_east.png new file mode 100644 index 0000000..e2b98a4 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_north.png new file mode 100644 index 0000000..6679c86 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_south.png new file mode 100644 index 0000000..203d89c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/Breasts_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_east.png new file mode 100644 index 0000000..382f32b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_south.png new file mode 100644 index 0000000..647a95b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_east.png new file mode 100644 index 0000000..b6b3fc0 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_south.png new file mode 100644 index 0000000..3e468ee Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_east.png new file mode 100644 index 0000000..4ee962d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_south.png new file mode 100644 index 0000000..dba10fd Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_east.png new file mode 100644 index 0000000..48fea23 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_north.png new file mode 100644 index 0000000..f11ec98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_south.png new file mode 100644 index 0000000..6e4055d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_east.png new file mode 100644 index 0000000..48f0f9b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_north.png new file mode 100644 index 0000000..bf68055 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_south.png new file mode 100644 index 0000000..bf8d0e4 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_east.png new file mode 100644 index 0000000..2ade37a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_north.png new file mode 100644 index 0000000..e657c00 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_south.png new file mode 100644 index 0000000..4ac04d3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_east.png new file mode 100644 index 0000000..e2b98a4 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_north.png new file mode 100644 index 0000000..6679c86 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_south.png new file mode 100644 index 0000000..203d89c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Breasts/CustomPose/JiggleUp/Breasts_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_east.png new file mode 100644 index 0000000..e719be6 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_south.png new file mode 100644 index 0000000..b9476ba Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Balls/Penis_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_east.png new file mode 100644 index 0000000..395151c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_south.png new file mode 100644 index 0000000..e36e999 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_east.png new file mode 100644 index 0000000..d5bd2a8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_south.png new file mode 100644 index 0000000..d0eb1ce Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_east.png new file mode 100644 index 0000000..4e109b9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_south.png new file mode 100644 index 0000000..0bf9571 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_east.png new file mode 100644 index 0000000..f77e312 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_south.png new file mode 100644 index 0000000..3071e8c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_east.png new file mode 100644 index 0000000..5ef392b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_south.png new file mode 100644 index 0000000..2ccf407 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_east.png new file mode 100644 index 0000000..473830b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_north.png new file mode 100644 index 0000000..a1f49f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_south.png new file mode 100644 index 0000000..b533c9a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Horny/Penis_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_east.png new file mode 100644 index 0000000..fffe34c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_south.png new file mode 100644 index 0000000..94b6e0c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_east.png new file mode 100644 index 0000000..fffe34c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_south.png new file mode 100644 index 0000000..94b6e0c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_east.png new file mode 100644 index 0000000..fffe34c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_north.png new file mode 100644 index 0000000..4012944 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_south.png new file mode 100644 index 0000000..94b6e0c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Penis/Penis_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_east.png new file mode 100644 index 0000000..90acea4 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_north.png new file mode 100644 index 0000000..f11ec98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_south.png new file mode 100644 index 0000000..328b92f Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Default_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_east.png new file mode 100644 index 0000000..89d8f17 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_north.png new file mode 100644 index 0000000..f11ec98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_south.png new file mode 100644 index 0000000..e575ca8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Line_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_east.png new file mode 100644 index 0000000..018b141 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_north.png new file mode 100644 index 0000000..f11ec98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_south.png new file mode 100644 index 0000000..44665e1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/PubicHair/Wild_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_east.png new file mode 100644 index 0000000..4f1a5bb Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_north.png new file mode 100644 index 0000000..215e3f9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_south.png new file mode 100644 index 0000000..b20ce79 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_east.png new file mode 100644 index 0000000..4071d87 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_north.png new file mode 100644 index 0000000..0952ca0 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_south.png new file mode 100644 index 0000000..944876b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_east.png new file mode 100644 index 0000000..b604a99 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_north.png new file mode 100644 index 0000000..f734e2a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_south.png new file mode 100644 index 0000000..3c08e9b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_east.png new file mode 100644 index 0000000..fa1d865 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_north.png new file mode 100644 index 0000000..ed8f0b3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_south.png new file mode 100644 index 0000000..9ee5031 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_east.png new file mode 100644 index 0000000..93d770b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_north.png new file mode 100644 index 0000000..7017435 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_south.png new file mode 100644 index 0000000..985fa72 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_east.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_east.png new file mode 100644 index 0000000..677a5a7 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_north.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_north.png new file mode 100644 index 0000000..471b1f0 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_south.png b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_south.png new file mode 100644 index 0000000..673850a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Alien_Miho/Vagina/Vagina_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/Breasts_Female_2_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/Breasts_Female_2_south.png index 2b2a51a..4883923 100644 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/Breasts_Female_2_south.png and b/Textures/SizedApparel/BodyParts/Human/Breasts/Breasts_Female_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_1_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_1_north.png deleted file mode 100644 index 4801d8a..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_1_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_5_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_5_south.png deleted file mode 100644 index da7cde6..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_5_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_east.png deleted file mode 100644 index 4571773..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_north.png deleted file mode 100644 index fdeebd9..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_south.png deleted file mode 100644 index 5ab4f1f..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/backup/Breasts_Female_7_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_east.png new file mode 100644 index 0000000..de3a540 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_north.png similarity index 100% rename from Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_north.png rename to Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_north.png diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_south.png new file mode 100644 index 0000000..7d320a9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_east.png new file mode 100644 index 0000000..97c3325 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_north.png new file mode 100644 index 0000000..06aecf1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_south.png new file mode 100644 index 0000000..05e6a4e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_10_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_east.png new file mode 100644 index 0000000..f003bf1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_north.png similarity index 100% rename from Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_north.png rename to Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_north.png diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_south.png new file mode 100644 index 0000000..f0c7230 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_east.png new file mode 100644 index 0000000..d1dd60d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_north.png new file mode 100644 index 0000000..5dd3cce Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_south.png new file mode 100644 index 0000000..4883923 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_east.png new file mode 100644 index 0000000..22385ee Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_north.png new file mode 100644 index 0000000..c059595 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_south.png new file mode 100644 index 0000000..259db4e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_east.png new file mode 100644 index 0000000..c46cccc Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_north.png new file mode 100644 index 0000000..2ef5161 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_south.png new file mode 100644 index 0000000..56abd02 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_east.png new file mode 100644 index 0000000..fe7eb25 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_north.png new file mode 100644 index 0000000..b79c45f Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_south.png new file mode 100644 index 0000000..e70bfe4 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_east.png new file mode 100644 index 0000000..08b75b3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_north.png new file mode 100644 index 0000000..d6ac83e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_south.png new file mode 100644 index 0000000..0dba4d9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_east.png new file mode 100644 index 0000000..e3e8097 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_north.png new file mode 100644 index 0000000..f2bc10d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_south.png new file mode 100644 index 0000000..e1f8ac3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_InvertedNipple_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_east.png new file mode 100644 index 0000000..2e80d11 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_north.png new file mode 100644 index 0000000..2d0ae19 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_south.png new file mode 100644 index 0000000..cfdce29 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_7_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_east.png new file mode 100644 index 0000000..4e8fc95 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_north.png new file mode 100644 index 0000000..ce604aa Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_south.png new file mode 100644 index 0000000..cd601f2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_8_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_east.png new file mode 100644 index 0000000..9a3c708 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_north.png new file mode 100644 index 0000000..2098247 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_south.png new file mode 100644 index 0000000..01ab259 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Female_9_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_east.png new file mode 100644 index 0000000..a429b49 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_south.png new file mode 100644 index 0000000..20dce85 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_east.png new file mode 100644 index 0000000..910214f Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_north.png new file mode 100644 index 0000000..8dd4426 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_south.png new file mode 100644 index 0000000..746da54 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_10_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_east.png new file mode 100644 index 0000000..3768bfb Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_south.png new file mode 100644 index 0000000..55a8961 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_east.png new file mode 100644 index 0000000..8b3a9e7 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_north.png new file mode 100644 index 0000000..3edefb1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_south.png new file mode 100644 index 0000000..8e8a92d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_east.png new file mode 100644 index 0000000..2daabb8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_north.png new file mode 100644 index 0000000..62642c3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_south.png new file mode 100644 index 0000000..7dcf315 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_east.png new file mode 100644 index 0000000..aa2fc08 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_north.png new file mode 100644 index 0000000..90c6c61 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_south.png new file mode 100644 index 0000000..5073cb1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_east.png new file mode 100644 index 0000000..9cf27a0 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_north.png new file mode 100644 index 0000000..ac6beb2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_south.png new file mode 100644 index 0000000..5f7e2ec Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_east.png new file mode 100644 index 0000000..e01115d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_north.png new file mode 100644 index 0000000..cff2d51 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_south.png new file mode 100644 index 0000000..88ab566 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_east.png new file mode 100644 index 0000000..bfccc08 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_north.png new file mode 100644 index 0000000..b77e824 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_south.png new file mode 100644 index 0000000..c2dfd7e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_7_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_east.png new file mode 100644 index 0000000..f60289a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_north.png new file mode 100644 index 0000000..829f0bd Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_south.png new file mode 100644 index 0000000..ea55a67 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_8_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_east.png new file mode 100644 index 0000000..a5cf5f3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_north.png new file mode 100644 index 0000000..36c26a8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_south.png new file mode 100644 index 0000000..aedebba Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/breasts with nipple (old)/Breasts_Thin_9_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_10_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_10_south.png deleted file mode 100644 index e91c735..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_10_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_5_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_5_south.png deleted file mode 100644 index 39f1084..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_5_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_7_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_7_south.png deleted file mode 100644 index f1c6107..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_7_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_8_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_8_south.png deleted file mode 100644 index 816769e..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_8_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_9_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_9_south.png deleted file mode 100644 index 8df390f..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old/Breasts_Female_9_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_east.png deleted file mode 100644 index c202473..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_north.png deleted file mode 100644 index 2c52289..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_south.png deleted file mode 100644 index 469a104..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Fat_0_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_east.png deleted file mode 100644 index fef9fd1..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_south.png deleted file mode 100644 index 6167244..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_0_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_east.png deleted file mode 100644 index 2ce4683..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_north.png deleted file mode 100644 index ee8ac67..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_south.png deleted file mode 100644 index 0c5c387..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_1_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_east.png deleted file mode 100644 index d45bbac..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_north.png deleted file mode 100644 index 3b9ca59..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_south.png deleted file mode 100644 index 5c0ac19..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_2_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_east.png deleted file mode 100644 index aa14d4d..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_north.png deleted file mode 100644 index d826a19..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_south.png deleted file mode 100644 index 2d0c63b..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_3_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_east.png deleted file mode 100644 index bcedc53..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_north.png deleted file mode 100644 index af67aee..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_south.png deleted file mode 100644 index 965d0a0..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_4_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_east.png deleted file mode 100644 index 4405559..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_north.png deleted file mode 100644 index 1585165..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_south.png deleted file mode 100644 index 77e223a..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_5_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_east.png deleted file mode 100644 index 58c826b..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_north.png deleted file mode 100644 index d705da8..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_south.png deleted file mode 100644 index fb8351f..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Female_6_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_east.png deleted file mode 100644 index bc58487..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_north.png deleted file mode 100644 index b97b635..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_south.png deleted file mode 100644 index adfc3b0..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Male_0_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_east.png deleted file mode 100644 index 944b523..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_south.png deleted file mode 100644 index 7930caf..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_0_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_east.png deleted file mode 100644 index 83c4e13..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_north.png deleted file mode 100644 index ee8ac67..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_south.png deleted file mode 100644 index 0c5c387..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_1_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_east.png deleted file mode 100644 index 3d25b31..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_north.png deleted file mode 100644 index 3b9ca59..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_south.png deleted file mode 100644 index 5c0ac19..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_2_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_east.png deleted file mode 100644 index dd00ca4..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_north.png deleted file mode 100644 index d826a19..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_south.png deleted file mode 100644 index 2d0c63b..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_3_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_east.png deleted file mode 100644 index edfe2ac..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_north.png deleted file mode 100644 index af67aee..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_south.png deleted file mode 100644 index 965d0a0..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_4_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_east.png deleted file mode 100644 index 4405559..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_north.png deleted file mode 100644 index 1585165..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_south.png deleted file mode 100644 index e1d3b79..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_5_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_east.png deleted file mode 100644 index f2a7d16..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_north.png deleted file mode 100644 index b19bed2..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_south.png deleted file mode 100644 index 15443a1..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/old2/Breasts_Thin_6_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/olds.zip b/Textures/SizedApparel/BodyParts/Human/Breasts/olds.zip new file mode 100644 index 0000000..b51d78b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Breasts/olds.zip differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_10_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_10_east.png deleted file mode 100644 index 1264d93..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_10_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_10_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_10_south.png deleted file mode 100644 index 5f8fe6a..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_10_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_east.png deleted file mode 100644 index 4571773..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_north.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_north.png deleted file mode 100644 index fdeebd9..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_north.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_south.png deleted file mode 100644 index 5ab4f1f..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_7_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_9_east.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_9_east.png deleted file mode 100644 index b1bd9e2..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_9_east.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_9_south.png b/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_9_south.png deleted file mode 100644 index 532b851..0000000 Binary files a/Textures/SizedApparel/BodyParts/Human/Breasts/temp/Breasts_Female_9_south.png and /dev/null differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_east.png new file mode 100644 index 0000000..de3a540 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_south.png new file mode 100644 index 0000000..7d320a9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_east.png new file mode 100644 index 0000000..ccfa898 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_south.png new file mode 100644 index 0000000..9385e52 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_10_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_east.png new file mode 100644 index 0000000..c48760b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_south.png new file mode 100644 index 0000000..a4a8461 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_east.png new file mode 100644 index 0000000..d71017d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_south.png new file mode 100644 index 0000000..095ea69 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_east.png new file mode 100644 index 0000000..255e6c9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_south.png new file mode 100644 index 0000000..3d02ff6 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_east.png new file mode 100644 index 0000000..43bb2ed Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_south.png new file mode 100644 index 0000000..61fd6dd Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_east.png new file mode 100644 index 0000000..4f25d5e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_south.png new file mode 100644 index 0000000..43f8f4a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_east.png new file mode 100644 index 0000000..600cc87 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_south.png new file mode 100644 index 0000000..8183018 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_east.png new file mode 100644 index 0000000..0cd8b3d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_north.png new file mode 100644 index 0000000..f11ec98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_south.png new file mode 100644 index 0000000..56d2c53 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_InvertedNipple_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_east.png new file mode 100644 index 0000000..5c4475c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_south.png new file mode 100644 index 0000000..829043e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_7_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_east.png new file mode 100644 index 0000000..49c279d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_south.png new file mode 100644 index 0000000..57aaf9a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_8_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_east.png new file mode 100644 index 0000000..12a536e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_south.png new file mode 100644 index 0000000..31dd236 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/Breasts_Female_9_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_east.png new file mode 100644 index 0000000..de3a540 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_south.png new file mode 100644 index 0000000..7d320a9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_east.png new file mode 100644 index 0000000..ca409e3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_south.png new file mode 100644 index 0000000..5213924 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_10_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_east.png new file mode 100644 index 0000000..cd2eaf6 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_south.png new file mode 100644 index 0000000..b594295 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_east.png new file mode 100644 index 0000000..a75e400 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_south.png new file mode 100644 index 0000000..f4a3827 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_east.png new file mode 100644 index 0000000..de61a98 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_south.png new file mode 100644 index 0000000..050eafa Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_east.png new file mode 100644 index 0000000..d7d30b0 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_south.png new file mode 100644 index 0000000..852245b Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_east.png new file mode 100644 index 0000000..f0a943e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_south.png new file mode 100644 index 0000000..d00e8d7 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_east.png new file mode 100644 index 0000000..b19cb27 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_south.png new file mode 100644 index 0000000..69bfab9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_east.png new file mode 100644 index 0000000..26e3350 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_south.png new file mode 100644 index 0000000..3c76fda Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_7_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_east.png new file mode 100644 index 0000000..1fb2cf9 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_south.png new file mode 100644 index 0000000..71abe36 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_8_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_east.png new file mode 100644 index 0000000..b581a3d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_north.png new file mode 100644 index 0000000..f440c70 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_south.png new file mode 100644 index 0000000..0e6dbab Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/CustomPose/JiggleUp/Breasts_Female_9_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/_ToModders.txt b/Textures/SizedApparel/BodyParts/Human/Nipples/_ToModders.txt new file mode 100644 index 0000000..5965eab --- /dev/null +++ b/Textures/SizedApparel/BodyParts/Human/Nipples/_ToModders.txt @@ -0,0 +1,3 @@ +You can just draw Nipples on Breasts Textures. +But in that case, you cannot color nipples. +this work is for coloring nipples \ No newline at end of file diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_east.png new file mode 100644 index 0000000..a429b49 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_south.png new file mode 100644 index 0000000..20dce85 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_0_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_east.png new file mode 100644 index 0000000..910214f Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_north.png new file mode 100644 index 0000000..8dd4426 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_south.png new file mode 100644 index 0000000..746da54 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_10_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_east.png new file mode 100644 index 0000000..3768bfb Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_north.png new file mode 100644 index 0000000..ffa684c Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_south.png new file mode 100644 index 0000000..55a8961 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_1_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_east.png new file mode 100644 index 0000000..8b3a9e7 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_north.png new file mode 100644 index 0000000..3edefb1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_south.png new file mode 100644 index 0000000..8e8a92d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_2_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_east.png new file mode 100644 index 0000000..2daabb8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_north.png new file mode 100644 index 0000000..62642c3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_south.png new file mode 100644 index 0000000..7dcf315 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_3_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_east.png new file mode 100644 index 0000000..aa2fc08 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_north.png new file mode 100644 index 0000000..90c6c61 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_south.png new file mode 100644 index 0000000..5073cb1 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_4_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_east.png new file mode 100644 index 0000000..9cf27a0 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_north.png new file mode 100644 index 0000000..ac6beb2 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_south.png new file mode 100644 index 0000000..5f7e2ec Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_5_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_east.png new file mode 100644 index 0000000..e01115d Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_north.png new file mode 100644 index 0000000..cff2d51 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_south.png new file mode 100644 index 0000000..88ab566 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_6_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_east.png new file mode 100644 index 0000000..bfccc08 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_north.png new file mode 100644 index 0000000..b77e824 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_south.png new file mode 100644 index 0000000..c2dfd7e Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_7_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_east.png new file mode 100644 index 0000000..f60289a Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_north.png new file mode 100644 index 0000000..829f0bd Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_south.png new file mode 100644 index 0000000..ea55a67 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_8_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_east.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_east.png new file mode 100644 index 0000000..a5cf5f3 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_east.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_north.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_north.png new file mode 100644 index 0000000..36c26a8 Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_north.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_south.png b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_south.png new file mode 100644 index 0000000..aedebba Binary files /dev/null and b/Textures/SizedApparel/BodyParts/Human/Nipples/tmp/Breasts_Thin_9_south.png differ diff --git a/Textures/SizedApparel/BodyParts/Human/Penis/Balls/Penis_2_east.png b/Textures/SizedApparel/BodyParts/Human/Penis/Balls/Penis_2_east.png index cd2a181..4b2cbe6 100644 Binary files a/Textures/SizedApparel/BodyParts/Human/Penis/Balls/Penis_2_east.png and b/Textures/SizedApparel/BodyParts/Human/Penis/Balls/Penis_2_east.png differ diff --git a/Textures/SizedApparel/BodyParts/_RacePreset/Nipples/_ToModders.txt b/Textures/SizedApparel/BodyParts/_RacePreset/Nipples/_ToModders.txt new file mode 100644 index 0000000..5965eab --- /dev/null +++ b/Textures/SizedApparel/BodyParts/_RacePreset/Nipples/_ToModders.txt @@ -0,0 +1,3 @@ +You can just draw Nipples on Breasts Textures. +But in that case, you cannot color nipples. +this work is for coloring nipples \ No newline at end of file diff --git a/Textures/SizedApparel/Masks/Black.png b/Textures/SizedApparel/Masks/Black.png new file mode 100644 index 0000000..4112087 Binary files /dev/null and b/Textures/SizedApparel/Masks/Black.png differ diff --git a/Textures/SizedApparel/Masks/Black_south.png b/Textures/SizedApparel/Masks/Black_south.png new file mode 100644 index 0000000..4112087 Binary files /dev/null and b/Textures/SizedApparel/Masks/Black_south.png differ diff --git a/Textures/SizedApparel/Masks/Blue.png b/Textures/SizedApparel/Masks/Blue.png new file mode 100644 index 0000000..80075bd Binary files /dev/null and b/Textures/SizedApparel/Masks/Blue.png differ diff --git a/Textures/SizedApparel/Masks/Blue_south.png b/Textures/SizedApparel/Masks/Blue_south.png new file mode 100644 index 0000000..80075bd Binary files /dev/null and b/Textures/SizedApparel/Masks/Blue_south.png differ diff --git a/Textures/SizedApparel/Masks/Green.png b/Textures/SizedApparel/Masks/Green.png new file mode 100644 index 0000000..4597ba7 Binary files /dev/null and b/Textures/SizedApparel/Masks/Green.png differ diff --git a/Textures/SizedApparel/Masks/Green_south.png b/Textures/SizedApparel/Masks/Green_south.png new file mode 100644 index 0000000..4597ba7 Binary files /dev/null and b/Textures/SizedApparel/Masks/Green_south.png differ diff --git a/Textures/SizedApparel/Masks/Red.png b/Textures/SizedApparel/Masks/Red.png new file mode 100644 index 0000000..36c0f84 Binary files /dev/null and b/Textures/SizedApparel/Masks/Red.png differ diff --git a/Textures/SizedApparel/Masks/Red_south.png b/Textures/SizedApparel/Masks/Red_south.png new file mode 100644 index 0000000..36c0f84 Binary files /dev/null and b/Textures/SizedApparel/Masks/Red_south.png differ diff --git a/Textures/SizedApparel/Masks/White.png b/Textures/SizedApparel/Masks/White.png new file mode 100644 index 0000000..dcab2ac Binary files /dev/null and b/Textures/SizedApparel/Masks/White.png differ diff --git a/Textures/SizedApparel/Masks/White_south.png b/Textures/SizedApparel/Masks/White_south.png new file mode 100644 index 0000000..dcab2ac Binary files /dev/null and b/Textures/SizedApparel/Masks/White_south.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron.png b/Textures/Things/Apparel/Apron/source/Apron.png new file mode 100644 index 0000000..f14cd70 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Fat_east.png b/Textures/Things/Apparel/Apron/source/Apron_Fat_east.png new file mode 100644 index 0000000..64ce7ed Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Fat_east.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Fat_north.png b/Textures/Things/Apparel/Apron/source/Apron_Fat_north.png new file mode 100644 index 0000000..8f864e5 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Fat_north.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Fat_south.png b/Textures/Things/Apparel/Apron/source/Apron_Fat_south.png new file mode 100644 index 0000000..d085270 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Fat_south.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Female_east.png b/Textures/Things/Apparel/Apron/source/Apron_Female_east.png new file mode 100644 index 0000000..1b3d635 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Female_east.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Female_north.png b/Textures/Things/Apparel/Apron/source/Apron_Female_north.png new file mode 100644 index 0000000..35dc25e Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Female_north.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Female_south.png b/Textures/Things/Apparel/Apron/source/Apron_Female_south.png new file mode 100644 index 0000000..f0ab058 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Female_south.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Hulk_east.png b/Textures/Things/Apparel/Apron/source/Apron_Hulk_east.png new file mode 100644 index 0000000..80f1db2 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Hulk_east.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Hulk_north.png b/Textures/Things/Apparel/Apron/source/Apron_Hulk_north.png new file mode 100644 index 0000000..998760c Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Hulk_north.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Hulk_south.png b/Textures/Things/Apparel/Apron/source/Apron_Hulk_south.png new file mode 100644 index 0000000..56bc7ff Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Hulk_south.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Male_east.png b/Textures/Things/Apparel/Apron/source/Apron_Male_east.png new file mode 100644 index 0000000..0388f48 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Male_east.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Male_north.png b/Textures/Things/Apparel/Apron/source/Apron_Male_north.png new file mode 100644 index 0000000..9a85476 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Male_north.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Male_south.png b/Textures/Things/Apparel/Apron/source/Apron_Male_south.png new file mode 100644 index 0000000..1875e42 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Male_south.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Thin_east.png b/Textures/Things/Apparel/Apron/source/Apron_Thin_east.png new file mode 100644 index 0000000..c75fc8e Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Thin_east.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Thin_north.png b/Textures/Things/Apparel/Apron/source/Apron_Thin_north.png new file mode 100644 index 0000000..624bf31 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Thin_north.png differ diff --git a/Textures/Things/Apparel/Apron/source/Apron_Thin_south.png b/Textures/Things/Apparel/Apron/source/Apron_Thin_south.png new file mode 100644 index 0000000..70dd315 Binary files /dev/null and b/Textures/Things/Apparel/Apron/source/Apron_Thin_south.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse.png b/Textures/Things/Apparel/Blouse/source/Blouse.png new file mode 100644 index 0000000..07da9ed Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Fat_east.png b/Textures/Things/Apparel/Blouse/source/Blouse_Fat_east.png new file mode 100644 index 0000000..168f616 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Fat_east.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Fat_north.png b/Textures/Things/Apparel/Blouse/source/Blouse_Fat_north.png new file mode 100644 index 0000000..20345d2 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Fat_north.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Fat_south.png b/Textures/Things/Apparel/Blouse/source/Blouse_Fat_south.png new file mode 100644 index 0000000..465bd18 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Fat_south.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Female_east.png b/Textures/Things/Apparel/Blouse/source/Blouse_Female_east.png new file mode 100644 index 0000000..2a1cc96 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Female_east.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Female_north.png b/Textures/Things/Apparel/Blouse/source/Blouse_Female_north.png new file mode 100644 index 0000000..1d52595 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Female_north.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Female_south.png b/Textures/Things/Apparel/Blouse/source/Blouse_Female_south.png new file mode 100644 index 0000000..6232a5c Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Female_south.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_east.png b/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_east.png new file mode 100644 index 0000000..977cc21 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_east.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_north.png b/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_north.png new file mode 100644 index 0000000..c1c2871 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_north.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_south.png b/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_south.png new file mode 100644 index 0000000..166b7f7 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Hulk_south.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Male_east.png b/Textures/Things/Apparel/Blouse/source/Blouse_Male_east.png new file mode 100644 index 0000000..8035898 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Male_east.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Male_north.png b/Textures/Things/Apparel/Blouse/source/Blouse_Male_north.png new file mode 100644 index 0000000..53a85eb Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Male_north.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Male_south.png b/Textures/Things/Apparel/Blouse/source/Blouse_Male_south.png new file mode 100644 index 0000000..a8bdcc4 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Male_south.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Thin_east.png b/Textures/Things/Apparel/Blouse/source/Blouse_Thin_east.png new file mode 100644 index 0000000..d7df226 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Thin_east.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Thin_north.png b/Textures/Things/Apparel/Blouse/source/Blouse_Thin_north.png new file mode 100644 index 0000000..1f60da8 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Thin_north.png differ diff --git a/Textures/Things/Apparel/Blouse/source/Blouse_Thin_south.png b/Textures/Things/Apparel/Blouse/source/Blouse_Thin_south.png new file mode 100644 index 0000000..5297b89 Binary files /dev/null and b/Textures/Things/Apparel/Blouse/source/Blouse_Thin_south.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket.png new file mode 100644 index 0000000..1f03472 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_east.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_east.png new file mode 100644 index 0000000..454755d Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_east.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_north.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_north.png new file mode 100644 index 0000000..bd6e7c2 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_north.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_south.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_south.png new file mode 100644 index 0000000..34abe08 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Fat_south.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_east.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_east.png new file mode 100644 index 0000000..e6a1982 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_east.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_north.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_north.png new file mode 100644 index 0000000..93447a5 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_north.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_south.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_south.png new file mode 100644 index 0000000..63ecb82 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Female_south.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_east.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_east.png new file mode 100644 index 0000000..df9bc6d Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_east.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_north.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_north.png new file mode 100644 index 0000000..b8346df Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_north.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_south.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_south.png new file mode 100644 index 0000000..8945e25 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Hulk_south.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_east.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_east.png new file mode 100644 index 0000000..6a87094 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_east.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_north.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_north.png new file mode 100644 index 0000000..3a63316 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_north.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_south.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_south.png new file mode 100644 index 0000000..c4f5100 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Male_south.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_east.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_east.png new file mode 100644 index 0000000..51737e5 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_east.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_north.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_north.png new file mode 100644 index 0000000..d8e05d8 Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_north.png differ diff --git a/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_south.png b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_south.png new file mode 100644 index 0000000..2bdf24f Binary files /dev/null and b/Textures/Things/Apparel/BuildersJacket/source/BuildersJacket_Thin_south.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt.png new file mode 100644 index 0000000..bf2e4de Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_east.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_east.png new file mode 100644 index 0000000..b59a5cc Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_east.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_north.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_north.png new file mode 100644 index 0000000..8d7fdbb Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_north.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_south.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_south.png new file mode 100644 index 0000000..0c43e43 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Fat_south.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_east.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_east.png new file mode 100644 index 0000000..4f76dba Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_east.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_north.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_north.png new file mode 100644 index 0000000..bbaa19e Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_north.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_south.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_south.png new file mode 100644 index 0000000..f3a15b1 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Female_south.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_east.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_east.png new file mode 100644 index 0000000..1b6c67b Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_east.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_north.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_north.png new file mode 100644 index 0000000..38b89c4 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_north.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_south.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_south.png new file mode 100644 index 0000000..0781727 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Hulk_south.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_east.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_east.png new file mode 100644 index 0000000..e5c18ff Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_east.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_north.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_north.png new file mode 100644 index 0000000..01e4982 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_north.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_south.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_south.png new file mode 100644 index 0000000..4c5601b Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Male_south.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_east.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_east.png new file mode 100644 index 0000000..3ea3041 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_east.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_north.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_north.png new file mode 100644 index 0000000..d14ccee Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_north.png differ diff --git a/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_south.png b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_south.png new file mode 100644 index 0000000..cff71c7 Binary files /dev/null and b/Textures/Things/Apparel/CasualTShirt/source/CasualTShirt_Thin_south.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform.png new file mode 100644 index 0000000..49fc930 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_east.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_east.png new file mode 100644 index 0000000..1f09202 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_east.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_north.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_north.png new file mode 100644 index 0000000..ce3231f Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_north.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_south.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_south.png new file mode 100644 index 0000000..f361b1f Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Fat_south.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_east.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_east.png new file mode 100644 index 0000000..a67493a Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_east.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_north.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_north.png new file mode 100644 index 0000000..850c8a3 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_north.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_south.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_south.png new file mode 100644 index 0000000..51f210e Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Female_south.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_east.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_east.png new file mode 100644 index 0000000..23ad9b3 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_east.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_north.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_north.png new file mode 100644 index 0000000..3f6641f Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_north.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_south.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_south.png new file mode 100644 index 0000000..6352cfb Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Hulk_south.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_east.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_east.png new file mode 100644 index 0000000..d873784 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_east.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_north.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_north.png new file mode 100644 index 0000000..1d17634 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_north.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_south.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_south.png new file mode 100644 index 0000000..f4849bd Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Male_south.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_east.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_east.png new file mode 100644 index 0000000..ec3f830 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_east.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_north.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_north.png new file mode 100644 index 0000000..92aca60 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_north.png differ diff --git a/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_south.png b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_south.png new file mode 100644 index 0000000..de0bd04 Binary files /dev/null and b/Textures/Things/Apparel/ChefsUniform/source/ChefsUniform_Thin_south.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie.png b/Textures/Things/Apparel/Hoodie/source/Hoodie.png new file mode 100644 index 0000000..96b5c98 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_east.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_east.png new file mode 100644 index 0000000..d7dbbca Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_east.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_north.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_north.png new file mode 100644 index 0000000..3970918 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_north.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_south.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_south.png new file mode 100644 index 0000000..0092e29 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Fat_south.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_east.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_east.png new file mode 100644 index 0000000..4d073a2 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_east.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_north.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_north.png new file mode 100644 index 0000000..a8ce70d Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_north.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_south.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_south.png new file mode 100644 index 0000000..173fecd Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Female_south.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_east.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_east.png new file mode 100644 index 0000000..b3fb284 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_east.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_north.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_north.png new file mode 100644 index 0000000..461389f Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_north.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_south.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_south.png new file mode 100644 index 0000000..7a6616d Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Hulk_south.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_east.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_east.png new file mode 100644 index 0000000..ed0c5d9 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_east.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_north.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_north.png new file mode 100644 index 0000000..b31c097 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_north.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_south.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_south.png new file mode 100644 index 0000000..bcbe9b5 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Male_south.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_east.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_east.png new file mode 100644 index 0000000..dae8ceb Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_east.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_north.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_north.png new file mode 100644 index 0000000..b0452d4 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_north.png differ diff --git a/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_south.png b/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_south.png new file mode 100644 index 0000000..3b21000 Binary files /dev/null and b/Textures/Things/Apparel/Hoodie/source/Hoodie_Thin_south.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit.png new file mode 100644 index 0000000..673b40d Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_east.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_east.png new file mode 100644 index 0000000..ef4ee2d Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_east.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_north.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_north.png new file mode 100644 index 0000000..66cf08b Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_north.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_south.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_south.png new file mode 100644 index 0000000..6bedcc8 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Fat_south.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_east.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_east.png new file mode 100644 index 0000000..da7762b Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_east.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_north.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_north.png new file mode 100644 index 0000000..d975f0d Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_north.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_south.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_south.png new file mode 100644 index 0000000..5b5d5da Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Female_south.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_east.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_east.png new file mode 100644 index 0000000..0b6376f Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_east.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_north.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_north.png new file mode 100644 index 0000000..ead53d1 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_north.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_south.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_south.png new file mode 100644 index 0000000..af0f957 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Hulk_south.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_east.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_east.png new file mode 100644 index 0000000..9df4110 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_east.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_north.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_north.png new file mode 100644 index 0000000..1e9a0e3 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_north.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_south.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_south.png new file mode 100644 index 0000000..a55add5 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Male_south.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_east.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_east.png new file mode 100644 index 0000000..33ab41e Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_east.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_north.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_north.png new file mode 100644 index 0000000..8a99d74 Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_north.png differ diff --git a/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_south.png b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_south.png new file mode 100644 index 0000000..087827a Binary files /dev/null and b/Textures/Things/Apparel/Jumpsuit/source/Jumpsuit_Thin_south.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat.png b/Textures/Things/Apparel/LabCoat/source/LabCoat.png new file mode 100644 index 0000000..48116eb Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_east.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_east.png new file mode 100644 index 0000000..c1e23be Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_east.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_north.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_north.png new file mode 100644 index 0000000..ca86c8c Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_north.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_south.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_south.png new file mode 100644 index 0000000..4479fd9 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Fat_south.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_east.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_east.png new file mode 100644 index 0000000..09226df Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_east.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_north.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_north.png new file mode 100644 index 0000000..0da1114 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_north.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_south.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_south.png new file mode 100644 index 0000000..359e84b Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Female_south.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_east.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_east.png new file mode 100644 index 0000000..548f9e5 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_east.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_north.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_north.png new file mode 100644 index 0000000..08d461b Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_north.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_south.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_south.png new file mode 100644 index 0000000..1e9965a Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Hulk_south.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_east.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_east.png new file mode 100644 index 0000000..332a289 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_east.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_north.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_north.png new file mode 100644 index 0000000..a465d24 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_north.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_south.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_south.png new file mode 100644 index 0000000..e7600d3 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Male_south.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_east.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_east.png new file mode 100644 index 0000000..e7adcae Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_east.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_north.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_north.png new file mode 100644 index 0000000..19f1339 Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_north.png differ diff --git a/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_south.png b/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_south.png new file mode 100644 index 0000000..96cb6ef Binary files /dev/null and b/Textures/Things/Apparel/LabCoat/source/LabCoat_Thin_south.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket.png new file mode 100644 index 0000000..fad7b51 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_east.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_east.png new file mode 100644 index 0000000..1352606 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_east.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_eastm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_eastm.png new file mode 100644 index 0000000..7b02bd8 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_eastm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_north.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_north.png new file mode 100644 index 0000000..8af346a Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_north.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_northm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_northm.png new file mode 100644 index 0000000..5928eee Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_northm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_south.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_south.png new file mode 100644 index 0000000..263a13b Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_south.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_southm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_southm.png new file mode 100644 index 0000000..f113a60 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Fat_southm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_east.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_east.png new file mode 100644 index 0000000..7c4e8a9 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_east.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_eastm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_eastm.png new file mode 100644 index 0000000..dcff5cb Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_eastm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_north.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_north.png new file mode 100644 index 0000000..5b5569c Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_north.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_northm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_northm.png new file mode 100644 index 0000000..f8c8b12 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_northm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_south.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_south.png new file mode 100644 index 0000000..1fcf64f Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_south.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_southm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_southm.png new file mode 100644 index 0000000..71d08df Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Female_southm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_east.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_east.png new file mode 100644 index 0000000..0045389 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_east.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_eastm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_eastm.png new file mode 100644 index 0000000..a634854 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_eastm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_north.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_north.png new file mode 100644 index 0000000..c64f620 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_north.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_northm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_northm.png new file mode 100644 index 0000000..669ec81 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_northm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_south.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_south.png new file mode 100644 index 0000000..a17dc04 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_south.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_southm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_southm.png new file mode 100644 index 0000000..7a04369 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Hulk_southm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_east.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_east.png new file mode 100644 index 0000000..14e37bd Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_east.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_eastm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_eastm.png new file mode 100644 index 0000000..26ce096 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_eastm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_north.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_north.png new file mode 100644 index 0000000..ecd486e Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_north.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_northm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_northm.png new file mode 100644 index 0000000..02e72dc Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_northm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_south.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_south.png new file mode 100644 index 0000000..fcc9c47 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_south.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_southm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_southm.png new file mode 100644 index 0000000..fa357ea Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Male_southm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_east.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_east.png new file mode 100644 index 0000000..ec070f8 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_east.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_eastm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_eastm.png new file mode 100644 index 0000000..c1487cc Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_eastm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_north.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_north.png new file mode 100644 index 0000000..e645ed1 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_north.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_northm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_northm.png new file mode 100644 index 0000000..35ea3eb Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_northm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_south.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_south.png new file mode 100644 index 0000000..38a6480 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_south.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_southm.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_southm.png new file mode 100644 index 0000000..05d79f6 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_Thin_southm.png differ diff --git a/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_m.png b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_m.png new file mode 100644 index 0000000..1454a74 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryJacket/source/MilitaryJacket_m.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform.png new file mode 100644 index 0000000..d32b5be Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_east.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_east.png new file mode 100644 index 0000000..0455492 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_east.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_north.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_north.png new file mode 100644 index 0000000..8031e8b Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_north.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_south.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_south.png new file mode 100644 index 0000000..3ee6fb9 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Fat_south.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_east.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_east.png new file mode 100644 index 0000000..7510fdf Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_east.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_north.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_north.png new file mode 100644 index 0000000..ef128b7 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_north.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_south.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_south.png new file mode 100644 index 0000000..88a37ba Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Female_south.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_east.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_east.png new file mode 100644 index 0000000..b8549d2 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_east.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_north.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_north.png new file mode 100644 index 0000000..e22a623 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_north.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_south.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_south.png new file mode 100644 index 0000000..794588c Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Hulk_south.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_east.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_east.png new file mode 100644 index 0000000..b9a9e5a Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_east.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_north.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_north.png new file mode 100644 index 0000000..56f4a30 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_north.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_south.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_south.png new file mode 100644 index 0000000..e71f373 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Male_south.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_east.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_east.png new file mode 100644 index 0000000..11ddc73 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_east.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_north.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_north.png new file mode 100644 index 0000000..02e20a4 Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_north.png differ diff --git a/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_south.png b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_south.png new file mode 100644 index 0000000..e66413f Binary files /dev/null and b/Textures/Things/Apparel/MilitaryUniform/source/MilitaryUniform_Thin_south.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls.png b/Textures/Things/Apparel/Overalls/source/Overalls.png new file mode 100644 index 0000000..06e7cf5 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Fat_east.png b/Textures/Things/Apparel/Overalls/source/Overalls_Fat_east.png new file mode 100644 index 0000000..a5270d9 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Fat_east.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Fat_north.png b/Textures/Things/Apparel/Overalls/source/Overalls_Fat_north.png new file mode 100644 index 0000000..ec55d09 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Fat_north.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Fat_south.png b/Textures/Things/Apparel/Overalls/source/Overalls_Fat_south.png new file mode 100644 index 0000000..d1b3a89 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Fat_south.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Female_east.png b/Textures/Things/Apparel/Overalls/source/Overalls_Female_east.png new file mode 100644 index 0000000..e71f039 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Female_east.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Female_north.png b/Textures/Things/Apparel/Overalls/source/Overalls_Female_north.png new file mode 100644 index 0000000..464563c Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Female_north.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Female_south.png b/Textures/Things/Apparel/Overalls/source/Overalls_Female_south.png new file mode 100644 index 0000000..e5159df Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Female_south.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_east.png b/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_east.png new file mode 100644 index 0000000..c23196e Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_east.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_north.png b/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_north.png new file mode 100644 index 0000000..83d3aab Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_north.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_south.png b/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_south.png new file mode 100644 index 0000000..c737fc8 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Hulk_south.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Male_east.png b/Textures/Things/Apparel/Overalls/source/Overalls_Male_east.png new file mode 100644 index 0000000..1c43cc9 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Male_east.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Male_north.png b/Textures/Things/Apparel/Overalls/source/Overalls_Male_north.png new file mode 100644 index 0000000..00b9a23 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Male_north.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Male_south.png b/Textures/Things/Apparel/Overalls/source/Overalls_Male_south.png new file mode 100644 index 0000000..e7dbf66 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Male_south.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Thin_east.png b/Textures/Things/Apparel/Overalls/source/Overalls_Thin_east.png new file mode 100644 index 0000000..201e6fa Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Thin_east.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Thin_north.png b/Textures/Things/Apparel/Overalls/source/Overalls_Thin_north.png new file mode 100644 index 0000000..6d6b99a Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Thin_north.png differ diff --git a/Textures/Things/Apparel/Overalls/source/Overalls_Thin_south.png b/Textures/Things/Apparel/Overalls/source/Overalls_Thin_south.png new file mode 100644 index 0000000..7284240 Binary files /dev/null and b/Textures/Things/Apparel/Overalls/source/Overalls_Thin_south.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat.png new file mode 100644 index 0000000..ef6eb27 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_east.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_east.png new file mode 100644 index 0000000..2aad8be Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_east.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_north.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_north.png new file mode 100644 index 0000000..21e75f4 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_north.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_south.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_south.png new file mode 100644 index 0000000..481cbc6 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Fat_south.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_east.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_east.png new file mode 100644 index 0000000..3b821cb Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_east.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_north.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_north.png new file mode 100644 index 0000000..1eaa7a3 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_north.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_south.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_south.png new file mode 100644 index 0000000..928effe Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Female_south.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_east.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_east.png new file mode 100644 index 0000000..21b26ce Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_east.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_north.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_north.png new file mode 100644 index 0000000..0c9be08 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_north.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_south.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_south.png new file mode 100644 index 0000000..0c6e20e Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Hulk_south.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_east.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_east.png new file mode 100644 index 0000000..5de3203 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_east.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_north.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_north.png new file mode 100644 index 0000000..7340ef3 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_north.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_south.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_south.png new file mode 100644 index 0000000..6b19dc6 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Male_south.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_east.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_east.png new file mode 100644 index 0000000..187bcd8 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_east.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_north.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_north.png new file mode 100644 index 0000000..6f83c06 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_north.png differ diff --git a/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_south.png b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_south.png new file mode 100644 index 0000000..6a863e1 Binary files /dev/null and b/Textures/Things/Apparel/PeltCoat/source/PeltCoat_Thin_south.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs.png b/Textures/Things/Apparel/Scrubs/source/Scrubs.png new file mode 100644 index 0000000..5f5e011 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_east.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_east.png new file mode 100644 index 0000000..5afccca Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_east.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_north.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_north.png new file mode 100644 index 0000000..be92eea Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_north.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_south.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_south.png new file mode 100644 index 0000000..aeacf6f Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Fat_south.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_east.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_east.png new file mode 100644 index 0000000..c19c0e2 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_east.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_north.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_north.png new file mode 100644 index 0000000..4c27928 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_north.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_south.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_south.png new file mode 100644 index 0000000..b2ddf57 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Female_south.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_east.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_east.png new file mode 100644 index 0000000..777d8ba Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_east.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_north.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_north.png new file mode 100644 index 0000000..fa0ca77 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_north.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_south.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_south.png new file mode 100644 index 0000000..0fd7b9d Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Hulk_south.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_east.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_east.png new file mode 100644 index 0000000..dfcefc1 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_east.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_north.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_north.png new file mode 100644 index 0000000..97e16e6 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_north.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_south.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_south.png new file mode 100644 index 0000000..04ecb43 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Male_south.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_east.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_east.png new file mode 100644 index 0000000..f96f043 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_east.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_north.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_north.png new file mode 100644 index 0000000..2aa0c73 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_north.png differ diff --git a/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_south.png b/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_south.png new file mode 100644 index 0000000..6f33bc6 Binary files /dev/null and b/Textures/Things/Apparel/Scrubs/source/Scrubs_Thin_south.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt.png new file mode 100644 index 0000000..a11b17c Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_east.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_east.png new file mode 100644 index 0000000..4bf71a8 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_east.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_north.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_north.png new file mode 100644 index 0000000..8d01258 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_north.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_south.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_south.png new file mode 100644 index 0000000..8d37a31 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Fat_south.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_east.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_east.png new file mode 100644 index 0000000..c9ed4c9 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_east.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_north.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_north.png new file mode 100644 index 0000000..2c76c91 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_north.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_south.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_south.png new file mode 100644 index 0000000..e3c8b12 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Female_south.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_east.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_east.png new file mode 100644 index 0000000..5601157 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_east.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_north.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_north.png new file mode 100644 index 0000000..3f6f759 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_north.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_south.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_south.png new file mode 100644 index 0000000..e303af8 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Hulk_south.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_east.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_east.png new file mode 100644 index 0000000..d6d4b15 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_east.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_north.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_north.png new file mode 100644 index 0000000..6b85099 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_north.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_south.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_south.png new file mode 100644 index 0000000..40e9a54 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Male_south.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_east.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_east.png new file mode 100644 index 0000000..d47face Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_east.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_north.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_north.png new file mode 100644 index 0000000..1355483 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_north.png differ diff --git a/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_south.png b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_south.png new file mode 100644 index 0000000..c93b526 Binary files /dev/null and b/Textures/Things/Apparel/SheriffShirt/source/SheriffShirt_Thin_south.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece.png new file mode 100644 index 0000000..83c677c Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_east.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_east.png new file mode 100644 index 0000000..14aefca Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_east.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_north.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_north.png new file mode 100644 index 0000000..b2ab1bb Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_north.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_south.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_south.png new file mode 100644 index 0000000..ddc8a31 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Fat_south.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_east.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_east.png new file mode 100644 index 0000000..7d6c76b Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_east.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_north.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_north.png new file mode 100644 index 0000000..eecf665 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_north.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_south.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_south.png new file mode 100644 index 0000000..e3b74cc Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Female_south.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_east.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_east.png new file mode 100644 index 0000000..cd714e2 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_east.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_north.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_north.png new file mode 100644 index 0000000..6934531 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_north.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_south.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_south.png new file mode 100644 index 0000000..881dd92 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Hulk_south.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_east.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_east.png new file mode 100644 index 0000000..38a2728 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_east.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_north.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_north.png new file mode 100644 index 0000000..b39b3ce Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_north.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_south.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_south.png new file mode 100644 index 0000000..65c9403 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Male_south.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_east.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_east.png new file mode 100644 index 0000000..31660a3 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_east.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_north.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_north.png new file mode 100644 index 0000000..5887991 Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_north.png differ diff --git a/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_south.png b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_south.png new file mode 100644 index 0000000..7c4f68e Binary files /dev/null and b/Textures/Things/Apparel/ShirtFleece/source/ShirtFleece_Thin_south.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie.png new file mode 100644 index 0000000..2eb23e8 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_east.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_east.png new file mode 100644 index 0000000..f9d1527 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_east.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_north.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_north.png new file mode 100644 index 0000000..25ae417 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_north.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_south.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_south.png new file mode 100644 index 0000000..3b7d42d Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Fat_south.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_east.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_east.png new file mode 100644 index 0000000..431ec9b Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_east.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_north.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_north.png new file mode 100644 index 0000000..6fcef0b Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_north.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_south.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_south.png new file mode 100644 index 0000000..0d95ed1 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Female_south.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_east.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_east.png new file mode 100644 index 0000000..80e613a Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_east.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_north.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_north.png new file mode 100644 index 0000000..94aa5ba Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_north.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_south.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_south.png new file mode 100644 index 0000000..737d89b Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Hulk_south.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_east.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_east.png new file mode 100644 index 0000000..5a1fd5a Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_east.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_north.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_north.png new file mode 100644 index 0000000..7584ae6 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_north.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_south.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_south.png new file mode 100644 index 0000000..5302504 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Male_south.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_east.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_east.png new file mode 100644 index 0000000..17e1d5c Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_east.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_north.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_north.png new file mode 100644 index 0000000..d38851b Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_north.png differ diff --git a/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_south.png b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_south.png new file mode 100644 index 0000000..69c3d08 Binary files /dev/null and b/Textures/Things/Apparel/ShirtandTie/source/ShirtandTie_Thin_south.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket.png new file mode 100644 index 0000000..f382460 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_east.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_east.png new file mode 100644 index 0000000..177fc76 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_east.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_north.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_north.png new file mode 100644 index 0000000..982d13a Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_north.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_south.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_south.png new file mode 100644 index 0000000..65797c1 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Fat_south.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_east.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_east.png new file mode 100644 index 0000000..834cb82 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_east.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_north.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_north.png new file mode 100644 index 0000000..808e671 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_north.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_south.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_south.png new file mode 100644 index 0000000..617afbb Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Female_south.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_east.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_east.png new file mode 100644 index 0000000..5a45cd0 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_east.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_north.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_north.png new file mode 100644 index 0000000..7b8757d Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_north.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_south.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_south.png new file mode 100644 index 0000000..aa9f1ca Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Hulk_south.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_east.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_east.png new file mode 100644 index 0000000..bf1163a Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_east.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_north.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_north.png new file mode 100644 index 0000000..a3ff363 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_north.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_south.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_south.png new file mode 100644 index 0000000..e2e0e44 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Male_south.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_east.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_east.png new file mode 100644 index 0000000..bea1645 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_east.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_north.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_north.png new file mode 100644 index 0000000..1346491 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_north.png differ diff --git a/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_south.png b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_south.png new file mode 100644 index 0000000..45935a0 Binary files /dev/null and b/Textures/Things/Apparel/SuitJacket/source/SuitJacket_Thin_south.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop.png b/Textures/Things/Apparel/TankTop/source/TankTop.png new file mode 100644 index 0000000..3ce4395 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Fat_east.png b/Textures/Things/Apparel/TankTop/source/TankTop_Fat_east.png new file mode 100644 index 0000000..a33b18d Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Fat_east.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Fat_north.png b/Textures/Things/Apparel/TankTop/source/TankTop_Fat_north.png new file mode 100644 index 0000000..4b11faa Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Fat_north.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Fat_south.png b/Textures/Things/Apparel/TankTop/source/TankTop_Fat_south.png new file mode 100644 index 0000000..2409088 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Fat_south.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Female_east.png b/Textures/Things/Apparel/TankTop/source/TankTop_Female_east.png new file mode 100644 index 0000000..e0377d5 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Female_east.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Female_north.png b/Textures/Things/Apparel/TankTop/source/TankTop_Female_north.png new file mode 100644 index 0000000..7e53e34 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Female_north.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Female_south.png b/Textures/Things/Apparel/TankTop/source/TankTop_Female_south.png new file mode 100644 index 0000000..cbfead6 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Female_south.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_east.png b/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_east.png new file mode 100644 index 0000000..3e35af9 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_east.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_north.png b/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_north.png new file mode 100644 index 0000000..440b252 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_north.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_south.png b/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_south.png new file mode 100644 index 0000000..203259b Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Hulk_south.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Male_east.png b/Textures/Things/Apparel/TankTop/source/TankTop_Male_east.png new file mode 100644 index 0000000..ab9f49b Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Male_east.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Male_north.png b/Textures/Things/Apparel/TankTop/source/TankTop_Male_north.png new file mode 100644 index 0000000..22d24f1 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Male_north.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Male_south.png b/Textures/Things/Apparel/TankTop/source/TankTop_Male_south.png new file mode 100644 index 0000000..d95deef Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Male_south.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Thin_east.png b/Textures/Things/Apparel/TankTop/source/TankTop_Thin_east.png new file mode 100644 index 0000000..f18042d Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Thin_east.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Thin_north.png b/Textures/Things/Apparel/TankTop/source/TankTop_Thin_north.png new file mode 100644 index 0000000..47dddb4 Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Thin_north.png differ diff --git a/Textures/Things/Apparel/TankTop/source/TankTop_Thin_south.png b/Textures/Things/Apparel/TankTop/source/TankTop_Thin_south.png new file mode 100644 index 0000000..bb45eee Binary files /dev/null and b/Textures/Things/Apparel/TankTop/source/TankTop_Thin_south.png differ diff --git a/Textures/Things/Pawn/Humanlike/Apparel/Apparel.zip b/Textures/Things/Pawn/Humanlike/Apparel/Apparel.zip new file mode 100644 index 0000000..803d68a Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Apparel/Apparel.zip differ diff --git a/Textures/Things/Pawn/Humanlike/Apparel/ShirtButton.zip b/Textures/Things/Pawn/Humanlike/Apparel/ShirtButton.zip new file mode 100644 index 0000000..182f0f4 Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Apparel/ShirtButton.zip differ diff --git a/Textures/Things/Pawn/Humanlike/Apparel/rename(don't run).py b/Textures/Things/Pawn/Humanlike/Apparel/rename(don't run).py new file mode 100644 index 0000000..3800d76 --- /dev/null +++ b/Textures/Things/Pawn/Humanlike/Apparel/rename(don't run).py @@ -0,0 +1,94 @@ +import os + +files = os.listdir('./') + +for file in files: + if file[-2:] != 'py': + name = file + + new_name = file.replace('_6', '_7') + #new_name = file.replace('_5', '_6') + #new_name = file.replace('_4', '_5') + #new_name = file.replace('_3', '_4') + #new_name = file.replace('_2', '_3') + #new_name = file.replace('_1', '_2') + + name = os.path.join('./', name) + new_name = os.path.join('./', new_name) + os.rename(name, new_name) + +for file in files: + if file[-2:] != 'py': + name = file + + #new_name = file.replace('_6', '_7') + new_name = file.replace('_5', '_6') + #new_name = file.replace('_4', '_5') + #new_name = file.replace('_3', '_4') + #new_name = file.replace('_2', '_3') + #new_name = file.replace('_1', '_2') + + name = os.path.join('./', name) + new_name = os.path.join('./', new_name) + os.rename(name, new_name) + +for file in files: + if file[-2:] != 'py': + name = file + + #new_name = file.replace('_6', '_7') + #new_name = file.replace('_5', '_6') + new_name = file.replace('_4', '_5') + #new_name = file.replace('_3', '_4') + #new_name = file.replace('_2', '_3') + #new_name = file.replace('_1', '_2') + + name = os.path.join('./', name) + new_name = os.path.join('./', new_name) + os.rename(name, new_name) + +for file in files: + if file[-2:] != 'py': + name = file + + #new_name = file.replace('_6', '_7') + #new_name = file.replace('_5', '_6') + #new_name = file.replace('_4', '_5') + new_name = file.replace('_3', '_4') + #new_name = file.replace('_2', '_3') + #new_name = file.replace('_1', '_2') + + name = os.path.join('./', name) + new_name = os.path.join('./', new_name) + os.rename(name, new_name) + +for file in files: + if file[-2:] != 'py': + name = file + + #new_name = file.replace('_6', '_7') + #new_name = file.replace('_5', '_6') + #new_name = file.replace('_4', '_5') + #new_name = file.replace('_3', '_4') + new_name = file.replace('_2', '_3') + #new_name = file.replace('_1', '_2') + + name = os.path.join('./', name) + new_name = os.path.join('./', new_name) + os.rename(name, new_name) + +for file in files: + if file[-2:] != 'py': + name = file + + #new_name = file.replace('_6', '_7') + #new_name = file.replace('_5', '_6') + #new_name = file.replace('_4', '_5') + #new_name = file.replace('_3', '_4') + #new_name = file.replace('_2', '_3') + new_name = file.replace('_1', '_2') + + name = os.path.join('./', name) + new_name = os.path.join('./', new_name) + os.rename(name, new_name) + diff --git a/Textures/Things/Pawn/Humanlike/Apparel/renameCapital.py b/Textures/Things/Pawn/Humanlike/Apparel/renameCapital.py new file mode 100644 index 0000000..6cb640b --- /dev/null +++ b/Textures/Things/Pawn/Humanlike/Apparel/renameCapital.py @@ -0,0 +1,9 @@ +import os + +for filename in os.listdir("."): + new_filename = filename.replace("_female", "_Female") + new_filename = new_filename.replace("_thin", "_Thin") + new_filename = new_filename.replace("_male", "_Male") + new_filename = new_filename.replace("_fat", "_Fat") + new_filename = new_filename.replace("_hulk", "_Hulk") + os.rename(filename, new_filename) diff --git a/Textures/Things/Pawn/Humanlike/Bodies.zip b/Textures/Things/Pawn/Humanlike/Bodies.zip new file mode 100644 index 0000000..5787225 Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies.zip differ diff --git a/Tools/SizedApparelTool/.idea/.gitignore b/Tools/SizedApparelTool/.idea/.gitignore new file mode 100644 index 0000000..eaf91e2 --- /dev/null +++ b/Tools/SizedApparelTool/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Tools/SizedApparelTool/.idea/SizedApparelTool.iml b/Tools/SizedApparelTool/.idea/SizedApparelTool.iml new file mode 100644 index 0000000..920fc90 --- /dev/null +++ b/Tools/SizedApparelTool/.idea/SizedApparelTool.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Tools/SizedApparelTool/.idea/inspectionProfiles/profiles_settings.xml b/Tools/SizedApparelTool/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Tools/SizedApparelTool/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Tools/SizedApparelTool/.idea/misc.xml b/Tools/SizedApparelTool/.idea/misc.xml new file mode 100644 index 0000000..8d93904 --- /dev/null +++ b/Tools/SizedApparelTool/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Tools/SizedApparelTool/.idea/modules.xml b/Tools/SizedApparelTool/.idea/modules.xml new file mode 100644 index 0000000..92c6914 --- /dev/null +++ b/Tools/SizedApparelTool/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/source/SizedApparel/HarmonyPatches.cs b/source/SizedApparel/HarmonyPatches.cs index b571cb5..9b8d881 100644 --- a/source/SizedApparel/HarmonyPatches.cs +++ b/source/SizedApparel/HarmonyPatches.cs @@ -21,6 +21,8 @@ namespace SizedApparel 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() { @@ -105,6 +107,18 @@ namespace SizedApparel 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"); var harmony = new Harmony("SizedApparelforRJW"); diff --git a/source/SizedApparel/Patch-Menstruation.cs b/source/SizedApparel/Patch-Menstruation.cs new file mode 100644 index 0000000..21c4a84 --- /dev/null +++ b/source/SizedApparel/Patch-Menstruation.cs @@ -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(); + if (breastcomp == null) + return null; + return breastcomp.NippleColor; + } + + public static float? GetNippleSize(Hediff breastHediff) + { + var breastcomp = breastHediff.TryGetComp(); + if (breastcomp == null) + return null; + return breastcomp.NippleSize; + } + + public static float? GetAreolaSize(Hediff breastHediff) + { + var breastcomp = breastHediff.TryGetComp(); + if (breastcomp == null) + return null; + return breastcomp.AreolaSize; + } + } +} diff --git a/source/SizedApparel/Patch-StatueOfColonist.cs b/source/SizedApparel/Patch-StatueOfColonist.cs new file mode 100644 index 0000000..2aa8860 --- /dev/null +++ b/source/SizedApparel/Patch-StatueOfColonist.cs @@ -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 + { + + } +} diff --git a/source/SizedApparel/SizedApparelBodyPart.cs b/source/SizedApparel/SizedApparelBodyPart.cs index a47dacf..e0696be 100644 --- a/source/SizedApparel/SizedApparelBodyPart.cs +++ b/source/SizedApparel/SizedApparelBodyPart.cs @@ -137,7 +137,7 @@ namespace SizedApparel public enum ColorType { - Skin, Hair, Custom, None + Skin, Hair, Nipple, Custom, None } @@ -294,6 +294,15 @@ namespace SizedApparel 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 + + //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; @@ -420,7 +429,7 @@ namespace SizedApparel } } - public bool CheckCanPose(string targetPose, bool checkApparels, bool checkBodyParts, bool mustMatchSize, bool mustMatchBodytype) + public bool CheckCanPose(string targetPose, bool checkApparels, bool checkBodyParts, bool mustMatchSize, bool mustMatchBodytype, bool mustMatchRace) { if (checkApparels) { @@ -429,8 +438,8 @@ namespace SizedApparel } if (checkBodyParts) { - Graphic graphic = GetBodyPartGraphics(false, mustMatchSize, mustMatchBodytype, targetPose); - Graphic graphicH = GetBodyPartGraphics(true, mustMatchSize, mustMatchBodytype, targetPose); + Graphic graphic = GetBodyPartGraphics(false, mustMatchSize, mustMatchBodytype, mustMatchRace); + Graphic graphicH = GetBodyPartGraphics(true, mustMatchSize, mustMatchBodytype, mustMatchRace); if (graphic != null || graphicH != null) return true; return false; @@ -496,13 +505,13 @@ namespace SizedApparel positionOffsetEast = east; positionOffsetWest = west; } - public Graphic GetBodyPartGraphics(bool isHorny, bool mustMatchSize = false, bool mustMatchBodytype = false, string poseOverride = null) + public Graphic GetBodyPartGraphics(bool isHorny, bool mustMatchSize = false, bool mustMatchBodytype = false, bool mustMatchRace = false, string poseOverride = null) { SizedApparelTexturePointDef var; - return GetBodyPartGraphics(isHorny, out var, mustMatchBodytype, mustMatchSize, poseOverride); + return GetBodyPartGraphics(isHorny, out var, mustMatchBodytype, mustMatchSize, mustMatchRace, poseOverride); } - public Graphic GetBodyPartGraphics(bool isHorny, out SizedApparelTexturePointDef outPoints, bool mustMatchSize = false, bool mustMatchBodyType = 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) { @@ -540,6 +549,14 @@ namespace SizedApparel return null; } } + if (mustMatchRace) + { + if (result.raceName != pawn.def.defName) + { + outPoints = null; + return null; + } + } if (result.pathWithSizeIndex == null) { @@ -625,7 +642,7 @@ namespace SizedApparel PawnRenderer pawnRenderer = pawn.Drawer.renderer; - Shader shader = ShaderDatabase.CutoutComplex; + Shader shader = shader = ShaderDatabase.CutoutSkinOverlay; Color drawColor1 = Color.white; Color drawColor2 = Color.white; @@ -648,7 +665,7 @@ namespace SizedApparel { shader = pawn.Drawer.renderer.graphics.furCoveredGraphic.Shader; if (!ShaderUtility.SupportsMaskTex(shader)) - shader = ShaderDatabase.CutoutSkinOverlay; + shader = shader = ShaderDatabase.CutoutSkinOverlay; shader = pawnRenderer.graphics.furCoveredGraphic.Shader; drawColor1 = pawnRenderer.graphics.furCoveredGraphic.Color; drawColor2 = pawnRenderer.graphics.furCoveredGraphic.ColorTwo; @@ -657,7 +674,7 @@ namespace SizedApparel { shader = pawn.Drawer.renderer.graphics.nakedGraphic.Shader; if (!ShaderUtility.SupportsMaskTex(shader)) - shader = ShaderDatabase.CutoutSkinOverlay; + shader = shader = ShaderDatabase.CutoutSkinOverlay; drawColor1 = pawnRenderer.graphics.nakedGraphic.Color; drawColor2 = pawnRenderer.graphics.nakedGraphic.ColorTwo; } @@ -668,10 +685,63 @@ namespace SizedApparel shader = pawn.Drawer.renderer.graphics.rottingGraphic.Shader; if (!ShaderUtility.SupportsMaskTex(shader)) - shader = ShaderDatabase.CutoutSkinOverlay; + shader = shader = ShaderDatabase.CutoutSkinOverlay; drawColor1 = pawnRenderer.graphics.rottingGraphic.Color; drawColor2 = pawnRenderer.graphics.nakedGraphic.ColorTwo; } + } + else if (colorType == ColorType.Nipple) + { + forceWriteZ = true; + + //Get SkinColor first. + if (bodyDrawType == RotDrawMode.Fresh) + { + if (HasFurSkin) + { + shader = pawn.Drawer.renderer.graphics.furCoveredGraphic.Shader; + if (!ShaderUtility.SupportsMaskTex(shader)) + shader = ShaderDatabase.CutoutSkinOverlay; + shader = pawnRenderer.graphics.furCoveredGraphic.Shader; + drawColor1 = pawnRenderer.graphics.furCoveredGraphic.Color; + drawColor2 = pawnRenderer.graphics.furCoveredGraphic.ColorTwo; + } + 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; + + } + } } @@ -696,7 +766,15 @@ namespace SizedApparel 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; @@ -739,13 +817,13 @@ namespace SizedApparel { //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; - float width = (bodyMesh.vertices[2].x - bodyMesh.vertices[0].x); + drawRotation = boneTransform.InitialAngle + boneTransform.angleOffset; //not sure it work correct Vector3 v = (boneTransform.InitialPosition + boneTransform.positionOffset) * width; @@ -765,20 +843,24 @@ namespace SizedApparel 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; - float width = (bodyMesh.vertices[2].x - bodyMesh.vertices[0].x); - drawRotation = boneTransform.InitialAngle + boneTransform.angleOffset; + 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; + //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) { @@ -877,19 +959,30 @@ namespace SizedApparel Material mat; - if (!flags.FlagSet(PawnRenderFlags.Cache)&&!isOverlay&& forceWriteZ) + //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 = graphic.GetColoredVersion(ShaderDatabase.Cutout, drawColor1, drawColor2); // ShaderDatabase.Cutout - 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)); // draw for writeZ data to solve shadow issue + Graphic Zgraphic = graphic.GetColoredVersion(ShaderDatabase.CutoutComplex, drawColor1, drawColor2); // ShaderDatabase.Cutout + Vector3 drawPositionZ = drawPosition; + drawPositionZ.y = 0; //Send Back of body, but it can still write depth. + + 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); - drawPosition.y += 0.00001f; + + 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)); - } } diff --git a/source/SizedApparel/SizedApparelComp.cs b/source/SizedApparel/SizedApparelComp.cs index 6429dc8..12111ec 100644 --- a/source/SizedApparel/SizedApparelComp.cs +++ b/source/SizedApparel/SizedApparelComp.cs @@ -47,6 +47,8 @@ namespace SizedApparel public Hediff anusHediff = null; public Hediff udderHediff = null;//RJW 4.6.8: Udder is not partof chest's breast. it attached to torso. + public Color? nippleColor; //for menstruation cycles Mod + //TODO Optimize Update Hediff Filter private bool hasBreastsAddon = false; private bool hasVaginaAddon = false; @@ -414,7 +416,7 @@ namespace SizedApparel bool flag2 = true; if (flag2 && checkApparelForCanPose) { - if (!a.CheckCanPose("JiggleUp", true, false, true, true)) + if (!a.CheckCanPose("JiggleUp", true, false, true, true, false)) return; flag2 = false; } @@ -1023,7 +1025,11 @@ namespace SizedApparel { foreach (Hediff h in pregnancies) { - bellySeverity = Math.Max(bellySeverity, h.Severity); + //Set Labor Belly as Big Belly. + if (h.def == HediffDefOf.PregnancyLabor || h.def == HediffDefOf.PregnancyLaborPushing) + bellySeverity = Math.Max(bellySeverity, 1f); + else + bellySeverity = Math.Max(bellySeverity, h.Severity); } } @@ -1053,6 +1059,15 @@ namespace SizedApparel if (breastHediff != null) { + + //get nipple color from Menstruation. + if (SizedApparelPatch.MenstruationActive) + { + nippleColor = Patch_Menstruation.GetNippleColor(breastHediff); + } + + + if (pawn.gender == Gender.Male && !SizedApparelSettings.ApplyApparelPatchForMale) { CheckApparel = false; diff --git a/source/SizedApparel/SizedApparelMain.cs b/source/SizedApparel/SizedApparelMain.cs index adfb228..d9ce337 100644 --- a/source/SizedApparel/SizedApparelMain.cs +++ b/source/SizedApparel/SizedApparelMain.cs @@ -461,6 +461,8 @@ namespace SizedApparel } + + //Apparel Graphic Texture injection [StaticConstructorOnStartup] [HarmonyPatch(typeof(ApparelGraphicRecordGetter), "TryGetGraphicApparel")] [HarmonyBefore(new string[]{"QualityOfBuilding"})] @@ -477,7 +479,6 @@ namespace SizedApparel if (bodyType == null) return; - if (apparel.Wearer != null) { //rec = new ApparelGraphicRecord(null, null); @@ -540,7 +541,7 @@ namespace SizedApparel { Graphic sizedGraphic = null; //Log.Message("4"); - string resultPath = SizedApparelsDatabase.GetSupportedApparelSizedPath(new SizedApparelsDatabase.SizedApparelDatabaseKey(rec.graphic.path, apparel?.Wearer?.def.defName, breastHediff.def.defName, apparel.Wearer.gender, apparel?.Wearer?.story?.bodyType?.defName, SizedApparelUtility.BreastSeverityInt(BreastSeverity))).pathWithSizeIndex; + string resultPath = SizedApparelsDatabase.GetSupportedApparelSizedPath(new SizedApparelsDatabase.SizedApparelDatabaseKey(rec.graphic.path, apparel?.Wearer?.def.defName, breastHediff?.def?.defName, apparel.Wearer.gender, apparel?.Wearer?.story?.bodyType?.defName, SizedApparelUtility.BreastSeverityInt(BreastSeverity))).pathWithSizeIndex; if(resultPath != null) { //sizedGraphic = SizedApparelUtility.GetSizedApparelGraphic(rec.graphic, BreastSeverity, apparel?.Wearer?.def.defName, breastHediff.def.defName); @@ -582,7 +583,7 @@ namespace SizedApparel return; //comp.ClearAll(false); //comp.needToCheckApparelGraphicRecords = true; - comp.SetDirty(); + comp.SetDirty(false,true,false,false,false); // Check Hediff. If you don't the crotch will not have graphic on first load } } @@ -881,6 +882,13 @@ namespace SizedApparel var comp = __instance.pawn.GetComp(); if (comp == null) // maybe it can be null? but why...? mechanoids? return; + + if (drawClothes) + { + if (comp.hasUnsupportedApparel) + return; + } + Material bodyMat = null; Material sizedApparelBaseBodyMat = null; switch (bodyCondition) diff --git a/source/SizedApparel/SizedApparelSettingcs.cs b/source/SizedApparel/SizedApparelSettingcs.cs index 47baab2..155822d 100644 --- a/source/SizedApparel/SizedApparelSettingcs.cs +++ b/source/SizedApparel/SizedApparelSettingcs.cs @@ -16,7 +16,7 @@ namespace SizedApparel { public string raceName = null; public bool overrideDef = false; - public bool asHuman = 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 asHuman, "asHuman", true); + Scribe_Values.Look(ref asHuman, "asHuman", false); Scribe_Values.Look(ref drawMinAge, "drawMinAge", -1); } @@ -218,6 +218,32 @@ namespace SizedApparel { alienRaceSettings = new List(); } + + 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) { @@ -284,8 +310,9 @@ namespace SizedApparel { SizedApparelSettings settings; - private static Vector2 ScrollPos = Vector2.zero; - private static List alienDefList = new List(); // to load aliens and compare with modsetting + private static Vector2 ScrollPosL = Vector2.zero; + private static Vector2 ScrollPosR = Vector2.zero; + public static List alienDefList = new List(); // to load aliens and compare with modsetting public override void WriteSettings() { @@ -298,7 +325,7 @@ namespace SizedApparel { if(alienDefList == null) alienDefList = new List(); - if (alienDefList.Count == 0) + if (true)//alienDefList.Count == 0 { IEnumerable HumanlikeRaces; HumanlikeRaces = DefDatabase.AllDefs.Where(b => b.race?.Humanlike == true); @@ -345,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); @@ -355,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) + 250f); + 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; @@ -451,7 +478,19 @@ 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); @@ -494,6 +533,9 @@ namespace SizedApparel listingStandard.Label(" AlienRace is not Actived ", -1, ""); } + if (alienDefList.NullOrEmpty()) + CheckAndLoadAlienRaces(); + float h = alienDefList.Count * alienRaceSettingHeight; Listing_Standard Race_ListingStandard = listingStandard.BeginSection(h); foreach (var raceName in alienDefList) @@ -516,8 +558,9 @@ namespace SizedApparel raceSetting = new AlienRaceSetting(raceName); SizedApparelSettings.alienRaceSettings.Add(raceSetting); - } - 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"); + } + 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 = Mathf.Round(Race_ListingStandard.Slider(raceSetting.drawMinAge, raceSetting.drawMinAge <= 100 ? -1: 100, raceSetting.drawMinAge >= 100 ? 1000 : 100)); Race_ListingStandard.Gap(); @@ -529,6 +572,7 @@ namespace SizedApparel listingStandard.Gap(8); listingStandard.GapLine(4f); + listingStandard.Gap(8); listingStandard.Gap(8); listingStandard.Label("RimNudeWorld Compatibility (WIP)", -1, ""); @@ -596,6 +640,15 @@ namespace SizedApparel 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)"); @@ -673,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); diff --git a/source/SizedApparel/SizedApparelUtility.cs b/source/SizedApparel/SizedApparelUtility.cs index 1c8dfbc..b59bb02 100644 --- a/source/SizedApparel/SizedApparelUtility.cs +++ b/source/SizedApparel/SizedApparelUtility.cs @@ -403,6 +403,10 @@ namespace SizedApparel if (h.def == HediffDefOf.PregnantHuman || h.def == HediffDefOf.Pregnant) return true; + //pawn who Giving birth. the pregnant hediff will be removed when the pawn is in labor + if (h.def == HediffDefOf.PregnancyLabor || h.def == HediffDefOf.PregnancyLaborPushing) + return true; + return h.def.defName.ToLower().Contains("rjw_pregnancy") || h.def.defName.ToLower().EndsWith("pregnant"); // h.def.defName.ToLower().Contains("pregnancy"); } public static bool isRJWEggHediff(Hediff h) diff --git a/source/SizedApparel/SizedApparelforRJW.csproj b/source/SizedApparel/SizedApparelforRJW.csproj index 28c62db..60ac641 100644 --- a/source/SizedApparel/SizedApparelforRJW.csproj +++ b/source/SizedApparel/SizedApparelforRJW.csproj @@ -45,7 +45,7 @@ False - ..\..\..\..\..\..\workshop\content\294100\818773962\v1.1\Assemblies\HugsLib.dll + ..\..\..\..\..\..\workshop\content\294100\818773962\v1.4\Assemblies\HugsLib.dll False @@ -62,6 +62,10 @@ ..\..\..\rjw\1.4\Assemblies\RJW.dll False + + ..\..\..\rjw_menstruation\1.4\Assemblies\RJW_Menstruation.dll + False + @@ -90,6 +94,8 @@ + + diff --git a/source/SizedApparel/SizedApparelsDatabase.cs b/source/SizedApparel/SizedApparelsDatabase.cs index f827311..fd87e80 100644 --- a/source/SizedApparel/SizedApparelsDatabase.cs +++ b/source/SizedApparel/SizedApparelsDatabase.cs @@ -135,9 +135,10 @@ namespace SizedApparel public bool isCustomPose; public string hediffName; 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, string bodytype = null, SizedApparelTexturePointDef 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; @@ -146,6 +147,7 @@ namespace SizedApparel this.hediffName = hediff; this.bodyType = bodytype; this.points = pointsInput; + this.raceName = raceName; } } private static Dictionary ApparelRecordersCache = new Dictionary(); @@ -294,7 +296,7 @@ namespace SizedApparel //Try Find Different Target Size if (flag == true) { - result = new PathAndSize(graphic.path, indexOut, false, customPose, hediffResult, key.bodyTypeName); + result = new PathAndSize(graphic.path, indexOut, false, customPose, hediffResult, key.bodyTypeName, key.raceName); SupportedApparelResultPath.SetOrAdd(key, result); SupportedApparelOriginalPath.SetOrAdd(result.pathWithSizeIndex, key.pathWithoutSizeIndex); } @@ -326,7 +328,7 @@ namespace SizedApparel 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, key.bodyTypeName); + result = new PathAndSize(graphic.path, currentSize, false, true, hediffResult, key.bodyTypeName, key.raceName); SupportedBodyPartResultPath.SetOrAdd(key, result); //SizedApparelTexturePointDef PointsDef = DefDatabase.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path); //if (SizedApparelSettings.Debug && PointsDef != null) @@ -339,7 +341,7 @@ namespace SizedApparel 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 , null); + result = new PathAndSize(graphic.path, currentSize, false, true, hediffResult , null, key.raceName); SupportedBodyPartResultPath.SetOrAdd(key, result); //SizedApparelTexturePointDef PointsDef = DefDatabase.AllDefs.FirstOrDefault((SizedApparelTexturePointDef s) => s.Path == graphic.path); //if (SizedApparelSettings.Debug && PointsDef != null) @@ -358,7 +360,7 @@ namespace SizedApparel //{ // Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName); //} - result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult , key.bodyTypeName); + result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult , key.bodyTypeName, key.raceName); SupportedBodyPartResultPath.SetOrAdd(key, result); return result; @@ -373,7 +375,7 @@ namespace SizedApparel //{ // Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName); //} - result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult, null); + result = new PathAndSize(graphic.path, currentSize, false, key.customPose == null ? true : false, hediffResult, null, key.raceName); SupportedBodyPartResultPath.SetOrAdd(key, result); return result; } @@ -381,7 +383,8 @@ namespace SizedApparel //SizedApparelMod.CheckAndLoadAlienRaces(); //HumanLike Search - var raceSetting = SizedApparelSettings.alienRaceSettings.FirstOrDefault((AlienRaceSetting s) => s.raceName == key.raceName); + 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 @@ -427,7 +430,7 @@ namespace SizedApparel //{ // Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName); //} - result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult, key.bodyTypeName); + result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult, key.bodyTypeName, "Human"); SupportedBodyPartResultPath.SetOrAdd(key, result); return result; } @@ -441,7 +444,7 @@ namespace SizedApparel //{ // Log.Message("[SizedApparel] : Points Def Found : " + PointsDef.defName); //} - result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult); + result = new PathAndSize(graphic.path, currentSize, true, key.customPose == null ? true : false, hediffResult, null, "Human"); SupportedBodyPartResultPath.SetOrAdd(key, result); return result; }